From 10431bd8f5ff71690ae4e5444e8d7894fd401ae5 Mon Sep 17 00:00:00 2001 From: eltrac Date: Tue, 7 Apr 2026 14:53:17 +0800 Subject: chore: move templates out of site repo --- assets/css/_markdown.scss | 275 --- assets/css/components/_libra.scss | 42 - assets/css/components/_toc.scss | 53 - assets/css/main.scss | 7 - assets/css/utils/_reset.scss | 53 - assets/css/utils/_utility.scss | 62 - assets/css/utils/_variables.scss | 48 - assets/js/back2top.js | 60 - assets/js/darkmode.js | 36 - assets/js/fediform.js | 42 - assets/js/instantpage.min.js | 2 - assets/js/toc.js | 40 - assets/js/tooltip.js | 54 - i18n/en.toml | 83 - i18n/zh.toml | 91 - layouts/404.html | 47 - layouts/_markup/render-blockquote.html | 30 - layouts/_markup/render-heading.html | 12 - layouts/_markup/render-image.html | 25 - layouts/_markup/render-link.html | 6 - layouts/_markup/render-table.html | 32 - layouts/_partials/components/back-to-top.html | 16 - layouts/_partials/components/backlinks.html | 37 - layouts/_partials/components/category-pill.html | 7 - layouts/_partials/components/date.html | 31 - layouts/_partials/components/logo.html | 18 - layouts/_partials/components/microformats.html | 9 - layouts/_partials/components/section-title.html | 10 - layouts/_partials/components/shade-mask.html | 7 - layouts/_partials/components/svg-filters.html | 4 - layouts/_partials/components/tags.html | 3 - layouts/_partials/components/wordcount.html | 1 - layouts/_partials/content.html | 9 - layouts/_partials/footer.html | 39 - layouts/_partials/head.html | 10 - layouts/_partials/head/css.html | 19 - layouts/_partials/head/scripts.html | 4 - layouts/_partials/head/siteinfo.html | 59 - layouts/_partials/head/verification.html | 10 - layouts/_partials/header.html | 28 - layouts/_partials/header/navigation.html | 13 - layouts/_partials/header/other-navigation.html | 29 - layouts/_partials/home/home-nav-item.html | 15 - layouts/_partials/home/home-nav.html | 11 - layouts/_partials/home/latest-posts.html | 11 - layouts/_partials/home/microformats.html | 7 - layouts/_partials/home/more-links.html | 15 - layouts/_partials/items/book.html | 36 - layouts/_partials/items/card.html | 19 - layouts/_partials/items/post-small.html | 11 - layouts/_partials/items/post.html | 41 - layouts/_partials/posts/action-area.html | 16 - layouts/_partials/posts/banner.html | 9 - layouts/_partials/posts/comment.html | 38 - layouts/_partials/posts/endnotes.html | 13 - layouts/_partials/posts/fediverse-form.html | 14 - layouts/_partials/posts/toc.html | 10 - layouts/_partials/posts/webmention-form.html | 6 - layouts/_partials/posts/webmention-mentions.html | 56 - layouts/_partials/posts/webmention-replies.html | 69 - layouts/_partials/posts/webmention-summary.html | 54 - layouts/_partials/posts/webmention.html | 73 - layouts/_partials/scripts.html | 43 - layouts/_partials/stats/external-link-rank.html | 37 - layouts/_partials/stats/publish-time-chart.html | 78 - layouts/_partials/stats/stats-table.html | 44 - layouts/_partials/stats/word-count-chart.html | 46 - layouts/_partials/taxonomy/all-categories.html | 33 - layouts/_partials/taxonomy/all-tags.html | 46 - .../_partials/taxonomy/archived-categories.html | 16 - layouts/_partials/taxonomy/pagefind.html | 7 - layouts/_partials/taxonomy/tag-pill.html | 24 - layouts/_partials/template/post-page.html | 45 - layouts/_partials/term/term-books.html | 9 - layouts/_partials/term/term-fictions.html | 10 - layouts/_partials/term/term-posts.html | 6 - layouts/_partials/term/term-weeklies.html | 10 - layouts/_partials/utils/inject-footnotes.html | 70 - layouts/_partials/utils/render.html | 1 - layouts/_shortcodes/book.html | 17 - layouts/_shortcodes/bookcard.html | 28 - layouts/_shortcodes/daysfrom.html | 12 - layouts/_shortcodes/fedicard.html | 148 -- layouts/_shortcodes/float-image.html | 13 - layouts/_shortcodes/gallery.html | 3 - layouts/_shortcodes/link.html | 15 - layouts/_shortcodes/linkding-bookmarks.html | 68 - layouts/_shortcodes/linkrank.html | 2 - layouts/_shortcodes/music.html | 53 - layouts/_shortcodes/opml-links.html | 19 - layouts/_shortcodes/postcount.html | 1 - layouts/_shortcodes/quotecard.html | 11 - layouts/_shortcodes/right.html | 1 - layouts/_shortcodes/wordcount.html | 7 - layouts/archive.html | 23 - layouts/article/page.html | 3 - layouts/article/section.html | 38 - layouts/baseof.404.html | 9 - layouts/baseof.html | 14 - layouts/baseof.page.html | 14 - layouts/baseof.section.html | 15 - layouts/blank.html | 10 - layouts/cards/page.html | 12 - layouts/cards/section.html | 29 - layouts/fiction/page.html | 24 - layouts/fiction/section.html | 25 - layouts/highlights.html | 20 - layouts/home.html | 8 - layouts/library/page.html | 62 - layouts/library/section.html | 85 - layouts/page.html | 9 - layouts/rss.xml | 63 - layouts/stats.html | 30 - layouts/tags/taxonomy.html | 12 - layouts/taxonomy.html | 13 - layouts/term.html | 15 - layouts/uncategorized.html | 22 - layouts/weekly/page.html | 3 - layouts/weekly/section.html | 41 - package.json | 23 - pagefind.yml | 3 - pnpm-lock.yaml | 2191 -------------------- scripts/extract_highlights.go | 120 -- scripts/get_external_link_rank.go | 77 - scripts/get_internal_link_graph.go | 101 - static/_headers | 10 - static/apple-touch-icon.png | Bin 2980 -> 0 bytes static/atom.xsl.xml | 37 - static/favicon.ico | Bin 200116 -> 0 bytes static/favicon.png | Bin 2980 -> 0 bytes static/graph.html | 80 - static/icons/codeberg.svg | 164 -- static/icons/enwiktionary.svg | 1 - static/icons/etymonline.jpg | Bin 1589 -> 0 bytes static/icons/external.svg | 7 - static/icons/forgejo.svg | 1 - static/icons/gatus.svg | 1 - static/icons/github.svg | 19 - static/icons/music/apple.png | Bin 2819 -> 0 bytes static/icons/music/bandcamp.png | Bin 1021 -> 0 bytes static/icons/music/netease.png | Bin 1188 -> 0 bytes static/icons/music/spotify.png | Bin 2599 -> 0 bytes static/icons/music/tidal.png | Bin 587 -> 0 bytes static/icons/rss.svg | 11 - static/icons/wikipedia.svg | 2 - static/img/bat.svg | 6 - static/img/clockwork.svg | 6 - static/img/coffee.svg | 2 - static/img/comments.svg | 16 - static/img/crow.svg | 6 - static/img/fediverse.png | Bin 98385 -> 0 bytes static/img/ghost-window.svg | 59 - static/img/github.svg | 2 - static/img/heart-organ.svg | 2 - static/img/mention.svg | 37 - static/img/potted-skeleton.svg | 61 - static/img/rss.svg | 13 - static/img/thumbs-down.png | Bin 1600 -> 0 bytes static/js/libra.min.js | 2 - uno.config.js | 55 - uno.css | 461 ---- 161 files changed, 7085 deletions(-) delete mode 100644 assets/css/_markdown.scss delete mode 100644 assets/css/components/_libra.scss delete mode 100644 assets/css/components/_toc.scss delete mode 100644 assets/css/main.scss delete mode 100644 assets/css/utils/_reset.scss delete mode 100644 assets/css/utils/_utility.scss delete mode 100644 assets/css/utils/_variables.scss delete mode 100644 assets/js/back2top.js delete mode 100644 assets/js/darkmode.js delete mode 100644 assets/js/fediform.js delete mode 100644 assets/js/instantpage.min.js delete mode 100644 assets/js/toc.js delete mode 100644 assets/js/tooltip.js delete mode 100644 i18n/en.toml delete mode 100644 i18n/zh.toml delete mode 100644 layouts/404.html delete mode 100644 layouts/_markup/render-blockquote.html delete mode 100644 layouts/_markup/render-heading.html delete mode 100644 layouts/_markup/render-image.html delete mode 100644 layouts/_markup/render-link.html delete mode 100644 layouts/_markup/render-table.html delete mode 100644 layouts/_partials/components/back-to-top.html delete mode 100644 layouts/_partials/components/backlinks.html delete mode 100644 layouts/_partials/components/category-pill.html delete mode 100644 layouts/_partials/components/date.html delete mode 100644 layouts/_partials/components/logo.html delete mode 100644 layouts/_partials/components/microformats.html delete mode 100644 layouts/_partials/components/section-title.html delete mode 100644 layouts/_partials/components/shade-mask.html delete mode 100644 layouts/_partials/components/svg-filters.html delete mode 100644 layouts/_partials/components/tags.html delete mode 100644 layouts/_partials/components/wordcount.html delete mode 100644 layouts/_partials/content.html delete mode 100644 layouts/_partials/footer.html delete mode 100644 layouts/_partials/head.html delete mode 100644 layouts/_partials/head/css.html delete mode 100644 layouts/_partials/head/scripts.html delete mode 100644 layouts/_partials/head/siteinfo.html delete mode 100644 layouts/_partials/head/verification.html delete mode 100644 layouts/_partials/header.html delete mode 100644 layouts/_partials/header/navigation.html delete mode 100644 layouts/_partials/header/other-navigation.html delete mode 100644 layouts/_partials/home/home-nav-item.html delete mode 100644 layouts/_partials/home/home-nav.html delete mode 100644 layouts/_partials/home/latest-posts.html delete mode 100644 layouts/_partials/home/microformats.html delete mode 100644 layouts/_partials/home/more-links.html delete mode 100644 layouts/_partials/items/book.html delete mode 100644 layouts/_partials/items/card.html delete mode 100644 layouts/_partials/items/post-small.html delete mode 100644 layouts/_partials/items/post.html delete mode 100644 layouts/_partials/posts/action-area.html delete mode 100644 layouts/_partials/posts/banner.html delete mode 100644 layouts/_partials/posts/comment.html delete mode 100644 layouts/_partials/posts/endnotes.html delete mode 100644 layouts/_partials/posts/fediverse-form.html delete mode 100644 layouts/_partials/posts/toc.html delete mode 100644 layouts/_partials/posts/webmention-form.html delete mode 100644 layouts/_partials/posts/webmention-mentions.html delete mode 100644 layouts/_partials/posts/webmention-replies.html delete mode 100644 layouts/_partials/posts/webmention-summary.html delete mode 100644 layouts/_partials/posts/webmention.html delete mode 100644 layouts/_partials/scripts.html delete mode 100644 layouts/_partials/stats/external-link-rank.html delete mode 100644 layouts/_partials/stats/publish-time-chart.html delete mode 100644 layouts/_partials/stats/stats-table.html delete mode 100644 layouts/_partials/stats/word-count-chart.html delete mode 100644 layouts/_partials/taxonomy/all-categories.html delete mode 100644 layouts/_partials/taxonomy/all-tags.html delete mode 100644 layouts/_partials/taxonomy/archived-categories.html delete mode 100644 layouts/_partials/taxonomy/pagefind.html delete mode 100644 layouts/_partials/taxonomy/tag-pill.html delete mode 100644 layouts/_partials/template/post-page.html delete mode 100644 layouts/_partials/term/term-books.html delete mode 100644 layouts/_partials/term/term-fictions.html delete mode 100644 layouts/_partials/term/term-posts.html delete mode 100644 layouts/_partials/term/term-weeklies.html delete mode 100644 layouts/_partials/utils/inject-footnotes.html delete mode 100644 layouts/_partials/utils/render.html delete mode 100644 layouts/_shortcodes/book.html delete mode 100644 layouts/_shortcodes/bookcard.html delete mode 100644 layouts/_shortcodes/daysfrom.html delete mode 100644 layouts/_shortcodes/fedicard.html delete mode 100644 layouts/_shortcodes/float-image.html delete mode 100644 layouts/_shortcodes/gallery.html delete mode 100644 layouts/_shortcodes/link.html delete mode 100644 layouts/_shortcodes/linkding-bookmarks.html delete mode 100644 layouts/_shortcodes/linkrank.html delete mode 100644 layouts/_shortcodes/music.html delete mode 100644 layouts/_shortcodes/opml-links.html delete mode 100644 layouts/_shortcodes/postcount.html delete mode 100644 layouts/_shortcodes/quotecard.html delete mode 100644 layouts/_shortcodes/right.html delete mode 100644 layouts/_shortcodes/wordcount.html delete mode 100644 layouts/archive.html delete mode 100644 layouts/article/page.html delete mode 100644 layouts/article/section.html delete mode 100644 layouts/baseof.404.html delete mode 100644 layouts/baseof.html delete mode 100644 layouts/baseof.page.html delete mode 100644 layouts/baseof.section.html delete mode 100644 layouts/blank.html delete mode 100644 layouts/cards/page.html delete mode 100644 layouts/cards/section.html delete mode 100644 layouts/fiction/page.html delete mode 100644 layouts/fiction/section.html delete mode 100644 layouts/highlights.html delete mode 100644 layouts/home.html delete mode 100644 layouts/library/page.html delete mode 100644 layouts/library/section.html delete mode 100644 layouts/page.html delete mode 100644 layouts/rss.xml delete mode 100644 layouts/stats.html delete mode 100644 layouts/tags/taxonomy.html delete mode 100644 layouts/taxonomy.html delete mode 100644 layouts/term.html delete mode 100644 layouts/uncategorized.html delete mode 100644 layouts/weekly/page.html delete mode 100644 layouts/weekly/section.html delete mode 100644 package.json delete mode 100644 pagefind.yml delete mode 100644 pnpm-lock.yaml delete mode 100644 scripts/extract_highlights.go delete mode 100644 scripts/get_external_link_rank.go delete mode 100644 scripts/get_internal_link_graph.go delete mode 100644 static/_headers delete mode 100644 static/apple-touch-icon.png delete mode 100644 static/atom.xsl.xml delete mode 100644 static/favicon.ico delete mode 100644 static/favicon.png delete mode 100644 static/graph.html delete mode 100644 static/icons/codeberg.svg delete mode 100644 static/icons/enwiktionary.svg delete mode 100644 static/icons/etymonline.jpg delete mode 100644 static/icons/external.svg delete mode 100644 static/icons/forgejo.svg delete mode 100644 static/icons/gatus.svg delete mode 100644 static/icons/github.svg delete mode 100644 static/icons/music/apple.png delete mode 100644 static/icons/music/bandcamp.png delete mode 100644 static/icons/music/netease.png delete mode 100644 static/icons/music/spotify.png delete mode 100644 static/icons/music/tidal.png delete mode 100644 static/icons/rss.svg delete mode 100644 static/icons/wikipedia.svg delete mode 100644 static/img/bat.svg delete mode 100644 static/img/clockwork.svg delete mode 100644 static/img/coffee.svg delete mode 100644 static/img/comments.svg delete mode 100644 static/img/crow.svg delete mode 100644 static/img/fediverse.png delete mode 100644 static/img/ghost-window.svg delete mode 100644 static/img/github.svg delete mode 100644 static/img/heart-organ.svg delete mode 100644 static/img/mention.svg delete mode 100644 static/img/potted-skeleton.svg delete mode 100644 static/img/rss.svg delete mode 100644 static/img/thumbs-down.png delete mode 100644 static/js/libra.min.js delete mode 100644 uno.config.js delete mode 100644 uno.css diff --git a/assets/css/_markdown.scss b/assets/css/_markdown.scss deleted file mode 100644 index 09089996..00000000 --- a/assets/css/_markdown.scss +++ /dev/null @@ -1,275 +0,0 @@ -.markdown-body { - max-width: 100%; - - p { - hyphens: auto; - text-justify: ideographic; - margin-bottom: 1em; - } - - strong:is([lang="zh-CN"] strong) { - text-emphasis: filled dot; - text-emphasis-position: under; - } - - img:not(p > img) { - max-width: 100%; - display: block; - margin: 1rem auto; - } - - p > img { - width: 1.5rem; - height: auto; - transition: transform .1s; - &:hover { - transform: scale(1.2) - } - } - - ul { - list-style-type: square; - } - - ul, ol { - padding-inline-start: 1.75rem; - li { - padding-left: 0.25rem; - } - ::marker { - color: var(--secondary-text-color); - } - } - - mark { - color: var(--text-color); - background-color: rgba(255, 235, 0, .25); - text-decoration: underline; - text-decoration-color: rgb(255, 235, 0); - text-underline-offset: 5px; - } - - del { - opacity: 0.5 - } - - iframe { - max-width: 100%; - } - - a:not(.footnote-backref, .footnote-ref) { - // color and underline - text-decoration: underline; - text-decoration-style: wavy; - text-decoration-thickness: 1px; - text-underline-offset: 0.25em; - text-decoration-color: var(--border-color); - color: var(--link-color); - - // link hover effects - transition: text-decoration-color 0.1s ease-in-out; - &:hover { - text-decoration-color: var(--secondary-text-color); - } - - // icons with pseudo-elements - &::before, &::after { - display: inline-block; - font-size: 70%; - color: var(--secondary-text-color); - vertical-align: middle; - font-weight: 800; - } - - &::after { - margin-left: 0.05em; - } - - &::before { - --size: 1.25em; - margin-right: 0.25em; - background-size: var(--size); - height: var(--size); - width: var(--size); - border-radius: 3px; - - } - - // external link icon - &.external-link::after { - content: ''; - background-image: url('/icons/external.svg'); - background-size: cover; - opacity: 0.65; - height: 1em; - width: 1em; - @media (prefers-color-scheme: dark) { - filter: invert(1) - } - } - - // icons for specific domains - &:not(.no-icon) { - &[href*="wikipedia.org"]::before { - content: ''; - background-color: #fff; - background-image: url('/icons/wikipedia.svg'); - } - &[href*="wiktionary.org"]::before { - content: ''; - background-color: #fff; - background-image: url('/icons/enwiktionary.svg'); - } - &[href*="etymonline.com"]::before { - content: ''; - background-image: url('/icons/etymonline.jpg'); - } - &[href*="codeberg.org"]::before { - content: ''; - background-image: url('/icons/codeberg.svg'); - } - &[href*="github.com"]::before { - content: ''; - background-image: url('/icons/github.svg'); - .dark & { - filter: invert(1); - } - } - } - } - - a.footnote-ref { - color: var(--secondary-text-color); - margin-right: 0.25rem; - } - - code { - font-size: 90%; - color: var(--secondary-text-color); - font-weight: 600; - } - - pre { - padding: 0.5rem 1rem; - font-size: 1rem; - border-radius: 5px; - border-top-right-radius: 0; - position: relative; - - & > code { - padding: 0; - color: unset; - background-color: inherit; - border: 0; - overflow: auto; - display: block; - line-height: 1.5; - - &:not([data-lang="fallback"])::before { - --width: 1rem; - content: attr(data-lang); - display: block; - box-sizing: border-box; - line-height: 1rem; - - position: absolute; - top: 0; - right: -1rem; - width: var(--width); - min-height: 2.5rem; - writing-mode: vertical-rl; - text-align: center; - - font-size: 0.75em; - background: #333; - color: #fff; - padding: 0.5rem 0; - border-radius: 0 4px 4px 0; - } - } - } - - figure { - display: block; - margin: 0; - figcaption { - max-width: 100%; - h4 { - font-size: 0.9rem; - color: var(--secondary-text-color); - font-weight: 400; - text-align: center; - white-space: normal; - } - } - } - - /* footnotes */ - - .inline-footnote { - p { margin: 0 } - } - - sup[id*="fnref"]:target { - background-color: rgba(255, 235, 0, .25); - } -} - -/* gallery shortcode */ - -.gallery { - display: flex; - overflow-x: auto; - scroll-behavior: smooth; - gap: 0.5rem; - white-space: nowrap; - - & > figure, & > a:has(> figure) { - margin: 0; - flex-shrink: 0; - display: inline-block; - position: relative; - box-shadow: inset 0 -2rem 2rem -2rem rgba(0, 0, 0, 0.1); - img { - height: 20rem; - display: block; - border-radius: 4px; - margin: 0; - } - figcaption { - position: absolute; - bottom: 0; - left: 0; - padding: 0.35rem; - h4 { - font-size: 0.8rem; - margin: 0; - text-align: left; - width: fit-content; - color: var(--text-color); - background-color: oklch(from var(--block-background-color) l c h / calc(alpha - 0.25)); - backdrop-filter: blur(0.5rem); - padding: 0.2rem 0.35rem; - border-radius: 3px; - line-height: 1.2; - } - } - } - & > p { display: none } - - &.center { - justify-content: center; - } - &.full-width { - & > figure { - flex-shrink: unset; - img { - width: 100%; - } - } - } -} - -.webmention-body { - .h-cite { display: none } -} diff --git a/assets/css/components/_libra.scss b/assets/css/components/_libra.scss deleted file mode 100644 index 2912012b..00000000 --- a/assets/css/components/_libra.scss +++ /dev/null @@ -1,42 +0,0 @@ -.libra-overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - padding: 1rem; - transition: opacity ease-in-out; - - backdrop-filter: blur(2rem); - background-color: rgba(255, 255, 255, 0.75); - - display: flex; - justify-content: center; - align-items: center; -} - -.libra-overlay.libra-visible { - opacity: 1; - z-index: 900; -} - -.libra-overlay.libra-hidden { - opacity: 0; - z-index: -100; -} - -@media (prefers-color-scheme: dark) { - .libra-overlay { - background-color: rgba(0, 0, 0, 0.75); - } -} - -.libra-shadow { - position: absolute; - transition-property: transform; - z-index: 1000; -} - -.libra-shadow.open { - box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); -} diff --git a/assets/css/components/_toc.scss b/assets/css/components/_toc.scss deleted file mode 100644 index e8486557..00000000 --- a/assets/css/components/_toc.scss +++ /dev/null @@ -1,53 +0,0 @@ -#toc { - ul { - margin-block-start: 0; - margin-block-end: 0; - padding-inline-start: 1rem; - - overflow: hidden; - position: relative; - li { - list-style: none; - - & > a { - color: var(--secondary-text-color); - text-decoration: none; - transition: color .3s; - display: inline-flex; - align-items: center; - gap: .5rem; - text-overflow: ellipsis; - white-space: nowrap; - &::before { - content: ''; - display: inline-block; - width: 1rem; - height: .3rem; - background-color: var(--block-background-color); - border-radius: .2rem; - transition: background .3s; - flex-shrink: 0; - } - } - - /* nested list */ - ul { - max-height: 25rem; - overflow-y: auto - } - - /* active styles */ - &:not(.active) ul { - max-height: 0 - } - a:hover, - &.active > a { - color: var(--text-color); - } - - &.active > a::before { - background-color: var(--secondary-text-color); - } - } - } -} diff --git a/assets/css/main.scss b/assets/css/main.scss deleted file mode 100644 index 0bc8d722..00000000 --- a/assets/css/main.scss +++ /dev/null @@ -1,7 +0,0 @@ -@import "utils/variables"; -@import "utils/reset"; -@import "utils/utility"; -@import "markdown"; - -@import "components/libra"; -@import "components/toc"; diff --git a/assets/css/utils/_reset.scss b/assets/css/utils/_reset.scss deleted file mode 100644 index 568d8b5b..00000000 --- a/assets/css/utils/_reset.scss +++ /dev/null @@ -1,53 +0,0 @@ -html { - scroll-behavior: smooth; - scroll-padding-top: 3rem; -} - -@view-transition { - navigation: auto; -} - -body { - font-family: var(--serif-font-family); - -webkit-font-smoothing: antialiased; - color: var(--text-color); - position: relative; - - /* background */ - background-color: var(--background-color); - background-size: 5rem; - background-image: url("data:image/svg+xml,%3Csvg width='180' height='180' viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M82.42 180h-1.415L0 98.995v-2.827L6.167 90 0 83.833V81.004L81.005 0h2.827L90 6.167 96.167 0H98.996L180 81.005v2.827L173.833 90 180 96.167V98.996L98.995 180h-2.827L90 173.833 83.833 180H82.42zm0-1.414L1.413 97.58 8.994 90l-7.58-7.58L82.42 1.413 90 8.994l7.58-7.58 81.006 81.005-7.58 7.58 7.58 7.58-81.005 81.006-7.58-7.58-7.58 7.58zM175.196 0h-25.832c1.033 2.924 2.616 5.59 4.625 7.868C152.145 9.682 151 12.208 151 15c0 5.523 4.477 10 10 10 1.657 0 3 1.343 3 3v4h16V0h-4.803c.51.883.803 1.907.803 3 0 3.314-2.686 6-6 6s-6-2.686-6-6c0-1.093.292-2.117.803-3h10.394-13.685C161.18.938 161 1.948 161 3v4c-4.418 0-8 3.582-8 8s3.582 8 8 8c2.76 0 5 2.24 5 5v2h4v-4h2v4h4v-4h2v4h2V0h-4.803zm-15.783 0c-.27.954-.414 1.96-.414 3v2.2c-1.25.254-2.414.74-3.447 1.412-1.716-1.93-3.098-4.164-4.054-6.612h7.914zM180 17h-3l2.143-10H180v10zm-30.635 163c-.884-2.502-1.365-5.195-1.365-8 0-13.255 10.748-24 23.99-24H180v32h-30.635zm12.147 0c.5-1.416 1.345-2.67 2.434-3.66l-1.345-1.48c-1.498 1.364-2.62 3.136-3.186 5.14H151.5c-.97-2.48-1.5-5.177-1.5-8 0-12.15 9.84-22 22-22h8v30h-18.488zm13.685 0c-1.037-1.793-2.976-3-5.197-3-2.22 0-4.16 1.207-5.197 3h10.394zM0 148h8.01C21.26 148 32 158.742 32 172c0 2.805-.48 5.498-1.366 8H0v-32zm0 2h8c12.15 0 22 9.847 22 22 0 2.822-.53 5.52-1.5 8h-7.914c-.567-2.004-1.688-3.776-3.187-5.14l-1.346 1.48c1.09.99 1.933 2.244 2.434 3.66H0v-30zm15.197 30c-1.037-1.793-2.976-3-5.197-3-2.22 0-4.16 1.207-5.197 3h10.394zM0 32h16v-4c0-1.657 1.343-3 3-3 5.523 0 10-4.477 10-10 0-2.794-1.145-5.32-2.992-7.134C28.018 5.586 29.6 2.924 30.634 0H0v32zm0-2h2v-4h2v4h4v-4h2v4h4v-2c0-2.76 2.24-5 5-5 4.418 0 8-3.582 8-8s-3.582-8-8-8V3c0-1.052-.18-2.062-.512-3H0v30zM28.5 0c-.954 2.448-2.335 4.683-4.05 6.613-1.035-.672-2.2-1.16-3.45-1.413V3c0-1.04-.144-2.046-.414-3H28.5zM0 17h3L.857 7H0v10zM15.197 0c.51.883.803 1.907.803 3 0 3.314-2.686 6-6 6S4 6.314 4 3c0-1.093.292-2.117.803-3h10.394zM109 115c-1.657 0-3 1.343-3 3v4H74v-4c0-1.657-1.343-3-3-3-5.523 0-10-4.477-10-10 0-2.793 1.145-5.318 2.99-7.132C60.262 93.638 58 88.084 58 82c0-13.255 10.748-24 23.99-24h16.02C111.26 58 122 68.742 122 82c0 6.082-2.263 11.636-5.992 15.866C117.855 99.68 119 102.206 119 105c0 5.523-4.477 10-10 10zm0-2c-2.76 0-5 2.24-5 5v2h-4v-4h-2v4h-4v-4h-2v4h-4v-4h-2v4h-4v-4h-2v4h-4v-2c0-2.76-2.24-5-5-5-4.418 0-8-3.582-8-8s3.582-8 8-8v-4c0-2.64 1.136-5.013 2.946-6.66L72.6 84.86C70.39 86.874 69 89.775 69 93v2.2c-1.25.254-2.414.74-3.447 1.412C62.098 92.727 60 87.61 60 82c0-12.15 9.84-22 22-22h16c12.15 0 22 9.847 22 22 0 5.61-2.097 10.728-5.55 14.613-1.035-.672-2.2-1.16-3.45-1.413V93c0-3.226-1.39-6.127-3.6-8.14l-1.346 1.48C107.864 87.987 109 90.36 109 93v4c4.418 0 8 3.582 8 8s-3.582 8-8 8zM90.857 97L93 107h-6l2.143-10h1.714zM80 99c3.314 0 6-2.686 6-6s-2.686-6-6-6-6 2.686-6 6 2.686 6 6 6zm20 0c3.314 0 6-2.686 6-6s-2.686-6-6-6-6 2.686-6 6 2.686 6 6 6z' fill='var(--block-background-color)' fill-opacity='0.018' fill-rule='evenodd'/%3E%3C/svg%3E"); - - .dark & { - background-image: url("data:image/svg+xml,%3Csvg width='180' height='180' viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M82.42 180h-1.415L0 98.995v-2.827L6.167 90 0 83.833V81.004L81.005 0h2.827L90 6.167 96.167 0H98.996L180 81.005v2.827L173.833 90 180 96.167V98.996L98.995 180h-2.827L90 173.833 83.833 180H82.42zm0-1.414L1.413 97.58 8.994 90l-7.58-7.58L82.42 1.413 90 8.994l7.58-7.58 81.006 81.005-7.58 7.58 7.58 7.58-81.005 81.006-7.58-7.58-7.58 7.58zM175.196 0h-25.832c1.033 2.924 2.616 5.59 4.625 7.868C152.145 9.682 151 12.208 151 15c0 5.523 4.477 10 10 10 1.657 0 3 1.343 3 3v4h16V0h-4.803c.51.883.803 1.907.803 3 0 3.314-2.686 6-6 6s-6-2.686-6-6c0-1.093.292-2.117.803-3h10.394-13.685C161.18.938 161 1.948 161 3v4c-4.418 0-8 3.582-8 8s3.582 8 8 8c2.76 0 5 2.24 5 5v2h4v-4h2v4h4v-4h2v4h2V0h-4.803zm-15.783 0c-.27.954-.414 1.96-.414 3v2.2c-1.25.254-2.414.74-3.447 1.412-1.716-1.93-3.098-4.164-4.054-6.612h7.914zM180 17h-3l2.143-10H180v10zm-30.635 163c-.884-2.502-1.365-5.195-1.365-8 0-13.255 10.748-24 23.99-24H180v32h-30.635zm12.147 0c.5-1.416 1.345-2.67 2.434-3.66l-1.345-1.48c-1.498 1.364-2.62 3.136-3.186 5.14H151.5c-.97-2.48-1.5-5.177-1.5-8 0-12.15 9.84-22 22-22h8v30h-18.488zm13.685 0c-1.037-1.793-2.976-3-5.197-3-2.22 0-4.16 1.207-5.197 3h10.394zM0 148h8.01C21.26 148 32 158.742 32 172c0 2.805-.48 5.498-1.366 8H0v-32zm0 2h8c12.15 0 22 9.847 22 22 0 2.822-.53 5.52-1.5 8h-7.914c-.567-2.004-1.688-3.776-3.187-5.14l-1.346 1.48c1.09.99 1.933 2.244 2.434 3.66H0v-30zm15.197 30c-1.037-1.793-2.976-3-5.197-3-2.22 0-4.16 1.207-5.197 3h10.394zM0 32h16v-4c0-1.657 1.343-3 3-3 5.523 0 10-4.477 10-10 0-2.794-1.145-5.32-2.992-7.134C28.018 5.586 29.6 2.924 30.634 0H0v32zm0-2h2v-4h2v4h4v-4h2v4h4v-2c0-2.76 2.24-5 5-5 4.418 0 8-3.582 8-8s-3.582-8-8-8V3c0-1.052-.18-2.062-.512-3H0v30zM28.5 0c-.954 2.448-2.335 4.683-4.05 6.613-1.035-.672-2.2-1.16-3.45-1.413V3c0-1.04-.144-2.046-.414-3H28.5zM0 17h3L.857 7H0v10zM15.197 0c.51.883.803 1.907.803 3 0 3.314-2.686 6-6 6S4 6.314 4 3c0-1.093.292-2.117.803-3h10.394zM109 115c-1.657 0-3 1.343-3 3v4H74v-4c0-1.657-1.343-3-3-3-5.523 0-10-4.477-10-10 0-2.793 1.145-5.318 2.99-7.132C60.262 93.638 58 88.084 58 82c0-13.255 10.748-24 23.99-24h16.02C111.26 58 122 68.742 122 82c0 6.082-2.263 11.636-5.992 15.866C117.855 99.68 119 102.206 119 105c0 5.523-4.477 10-10 10zm0-2c-2.76 0-5 2.24-5 5v2h-4v-4h-2v4h-4v-4h-2v4h-4v-4h-2v4h-4v-4h-2v4h-4v-2c0-2.76-2.24-5-5-5-4.418 0-8-3.582-8-8s3.582-8 8-8v-4c0-2.64 1.136-5.013 2.946-6.66L72.6 84.86C70.39 86.874 69 89.775 69 93v2.2c-1.25.254-2.414.74-3.447 1.412C62.098 92.727 60 87.61 60 82c0-12.15 9.84-22 22-22h16c12.15 0 22 9.847 22 22 0 5.61-2.097 10.728-5.55 14.613-1.035-.672-2.2-1.16-3.45-1.413V93c0-3.226-1.39-6.127-3.6-8.14l-1.346 1.48C107.864 87.987 109 90.36 109 93v4c4.418 0 8 3.582 8 8s-3.582 8-8 8zM90.857 97L93 107h-6l2.143-10h1.714zM80 99c3.314 0 6-2.686 6-6s-2.686-6-6-6-6 2.686-6 6 2.686 6 6 6zm20 0c3.314 0 6-2.686 6-6s-2.686-6-6-6-6 2.686-6 6 2.686 6 6 6z' fill='var(--block-background-color)' fill-opacity='0.1' fill-rule='evenodd'/%3E%3C/svg%3E"); - } -} - -article { - max-width: var(--page-width); - margin: 0 auto; - padding: 0 1rem; -} - -a { - color: var(--text-color); - text-decoration: none; - text-underline-offset: 0.25rem; - &:hover { - text-decoration: underline; - } -} - -button { - border: none; - outline: none; - color: var(--text-color); - font-size: 1rem; - font-family: var(--serif-font-family); - cursor: pointer -} - -hr { - margin: 2.5rem auto; - border: 0.05rem dashed var(--border-color); -} diff --git a/assets/css/utils/_utility.scss b/assets/css/utils/_utility.scss deleted file mode 100644 index b37cc742..00000000 --- a/assets/css/utils/_utility.scss +++ /dev/null @@ -1,62 +0,0 @@ -/* container that extends the page width */ -.outbox { - display: flex; - justify-content: center; - width: 100%; - z-index: 10; - position: relative; - - @media screen and (min-width: 768px) { - width: calc(var(--page-width) + 10rem); - margin: 0 -5rem; - } - - @media screen and (min-width: 1200px) { - width: calc(var(--page-width) + 20rem); - margin: 0 -10rem; - } - - &.small { - @media screen and (min-width: 768px) { - width: calc(var(--page-width) + 4rem); - margin: 0 -2rem; - } - - @media screen and (min-width: 1200px) { - width: calc(var(--page-width) + 10rem); - margin: 0 -5rem; - } - } -} - -/* filter that gives element a printed look */ -.xerox { - filter: url(#x); -} - -.writing-vertical { - writing-mode: vertical-lr; -} - -@media (min-width: 768px) { - .md\:writing-vertical { - writing-mode: vertical-lr; - } -} - -details.no-mark summary::marker { content: "" } - -.lazy-render { - content-visibility: auto; - contain-intrinsic-size: auto 500px; -} - -/* Dynamic rotation for webmention avatars */ -.group:hover img[style*="--rotate-amount"] { - transform: rotate(var(--rotate-amount)); -} - -/* Dynamic rotation for fiction section items */ -div[style*="--rotation-deg"]:hover { - transform: rotate(0deg) scale(1.1) !important; -} diff --git a/assets/css/utils/_variables.scss b/assets/css/utils/_variables.scss deleted file mode 100644 index cead160f..00000000 --- a/assets/css/utils/_variables.scss +++ /dev/null @@ -1,48 +0,0 @@ -:root { - /* colors */ - --background-color: oklch(0.9707 0.0027 286.35); - --bright-background-color: oklch(0.9851 0 0); - --block-background-color: oklch(0.933 0.007 295.445); - --border-color: oklch(0.8758 0.0123 247.97); - --text-color: oklch(0.2316 0.0038 286.1); - --secondary-text-color: oklch(0.5399 0.0077 286.14); - --link-color: oklch(0.3147 0.0071 285.99); - - /* fonts */ - --serif-font-family: - "Noto Serif", - "Noto Serif SC", - "Noto Serif TC", - "Noto Serif CJK SC", - "Noto Serif CJK TC", - "Source Han Serif SC", - "Source Han Serif TC", - "Songti SC", - "Times New Roman", - Times, - serif; - - --page-width: 650px; - --page-margin-y: 3rem; - @media screen and (min-width: 768) { - --page-margin-y: 5rem; - } - - /* pagefind custom css */ - --pagefind-ui-primary: var(--text-color); - --pagefind-ui-text: var(--text-color); - --pagefind-ui-background: var(--background-color); - --pagefind-ui-border: var(--border-color); - --pagefind-ui-tag: var(--border-color); -} - -.dark { - --background-color: oklch(0.2408 0.0049 219.67); - --block-background-color: oklch(0.216 0.004 228.978); - --border-color: rgba(255, 255, 255, 0.2); - --text-color: oklch(0.8532 0.0082 73.73); - --secondary-text-color: oklch(0.6863 0.0196 78.19); - --link-color: oklch(0.9054 0.0081 73.74); - --bright-background-color: oklch(0.5103 0 0); -} - diff --git a/assets/js/back2top.js b/assets/js/back2top.js deleted file mode 100644 index 6d7501e1..00000000 --- a/assets/js/back2top.js +++ /dev/null @@ -1,60 +0,0 @@ -// Back2top, the Batrick -// author: Eltrac - -const backToTop = document.getElementById("back2top") -const backToTopButton = document.getElementById("back2top-button") -const backToTopInstruction = document.getElementById("back2top-instruction") -const seenAndUsedBat = localStorage.getItem("geedeapro.ui.seenAndUsedBat") - -if (backToTopInstruction && backToTopButton) { - function hideInstruction() { - backToTopInstruction.remove() - } - if (seenAndUsedBat) hideInstruction() - - // listen to button click and scroll to top - backToTopButton.addEventListener("click", () => { - window.scrollTo({ top: 0, behavior: "smooth" }) - if (!seenAndUsedBat) { - localStorage.setItem("geedeapro.ui.seenAndUsedBat", true); - hideInstruction(); - } - }) - - // listen to scroll and toggle button visibility - let lastOffset = window.scrollY - - window.addEventListener("scroll", () => { - const offset = window.scrollY - const batIsHidden = backToTop.classList.contains("-top-25") - const enoughHeight = offset >= 2000 - const isScrollingUp = offset < lastOffset - const isScrollingDown = offset > lastOffset - - function hide() { - backToTop.classList.remove("top-0") - backToTop.classList.add("-top-25") - backToTop.classList.remove("animate-head-shake") - } - - function show() { - backToTop.classList.remove("-top-25") - backToTop.classList.add("top-0") - backToTop.classList.add("animate-head-shake") - } - - if (enoughHeight && isScrollingUp && batIsHidden) { - // show only when scrolling up - show() - } else if (isScrollingDown && !batIsHidden) { - // hide as soon as user scrolls down again - hide() - } - - // hide no matter what if too close to top - if (!enoughHeight) hide() - - lastOffset = offset - }) -} - diff --git a/assets/js/darkmode.js b/assets/js/darkmode.js deleted file mode 100644 index 6057f357..00000000 --- a/assets/js/darkmode.js +++ /dev/null @@ -1,36 +0,0 @@ -(() => { - const THEME = 'geedeapro.theme' // auto | light | dakr - const mql = window.matchMedia('(prefers-color-scheme: dark)') - - function useDarkMode(store) { - document.documentElement.classList.add('dark') - if (localStorage.getItem(THEME) != 'auto') mql.onchange = null - if (store) localStorage.setItem(THEME, 'dark') - } - - function useLightMode(store) { - document.documentElement.classList.remove('dark') - if (localStorage.getItem(THEME) != 'auto') mql.onchange = null - if (store) localStorage.setItem(THEME, 'light') - } - - function useSystem(store) { - if (mql.matches) useDarkMode() - else useLightMode() - mql.onchange = e => { - console.log("changed when system changed") - if (e.matches) useDarkMode() - else useLightMode() - } - if (store) localStorage.setItem(THEME, 'auto') - } - - window.switchTheme = (theme, store) => { - if (!theme || theme === 'auto') useSystem(store) - else if (theme === 'dark') useDarkMode(store) - else if (theme === 'light') useLightMode(store) - } - - // use preferred theme immediately upon DOM loaded - window.switchTheme(localStorage.getItem(THEME), false) -})(); diff --git a/assets/js/fediform.js b/assets/js/fediform.js deleted file mode 100644 index 30c2815c..00000000 --- a/assets/js/fediform.js +++ /dev/null @@ -1,42 +0,0 @@ -document.addEventListener("DOMContentLoaded", () => { - // open toot in fediverse - const instanceInput = document.getElementById('fediverse-instance') - if (instanceInput) { - const savedInstance = localStorage.getItem("geedeapro.fediInstance") - if (savedInstance) instanceInput.value = savedInstance - - function openInFediverse() { - const instance = instanceInput.value.trim(); - - let url = tootUrl - if (instance) { - url = 'https://' + instance + '/authorize_interaction?uri=' + encodeURIComponent(tootUrl); - // save instance url to localStorage - localStorage.setItem("geedeapro.fediInstance", instance) - } - window.open(url, '_blank'); - } - - const fediformButton = document.getElementById('fediform-button'); - fediformButton.addEventListener("click", openInFediverse) - - instanceInput.addEventListener('keypress', function(event) { - if (event.key === 'Enter') { - event.preventDefault(); - openInFediverse(); - } - }); - } - - - // copy toot link: - const copyBtn = document.getElementById("fediform-copy-button") - if (copyBtn) { - function copyTootLink() { - navigator.clipboard.writeText(tootUrl) - copyBtn.innerText = '✅' - setTimeout(() => copyBtn.innerText = '📋', 3000) - } - copyBtn.addEventListener("click", copyTootLink) - } -}) diff --git a/assets/js/instantpage.min.js b/assets/js/instantpage.min.js deleted file mode 100644 index 761f9d34..00000000 --- a/assets/js/instantpage.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! instant.page v5.2.0 - (C) 2019-2025 Alexandre Dieulot - https://instant.page/license */ -let t,e,n,o,i,r,a=null,s=65,c=new Set;function u(t){i=t;const e=t.target.closest("a");g(e)&&v(e.href,"high")}function d(t){i=t}function l(t){if(h(t))return;if(!("closest"in t.target))return;const e=t.target.closest("a");g(e)&&(e.addEventListener("mouseout",p,{passive:!0}),r=setTimeout(()=>{v(e.href,"high"),r=null},s))}function f(t){if(h(t))return;const e=t.target.closest("a");g(e)&&v(e.href,"high")}function p(t){t.relatedTarget&&t.target.closest("a")==t.relatedTarget.closest("a")||r&&(clearTimeout(r),r=null)}function m(t){if(h(t))return;const e=t.target.closest("a");if(t.which>1||t.metaKey||t.ctrlKey)return;if(!e)return;e.addEventListener("click",function(t){1337!=t.detail&&t.preventDefault()},{capture:!0,passive:!1,once:!0});const n=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1,detail:1337});e.dispatchEvent(n)}function h(t){if(!i||!t)return!1;if(t.target!=i.target)return!1;return t.timeStamp-i.timeStamp<2500}function g(t){if(t&&t.href&&(!o||"instant"in t.dataset)){if(t.origin!=location.origin){if(!(n||"instant"in t.dataset)||!a)return}if(["http:","https:"].includes(t.protocol)&&("http:"!=t.protocol||"https:"!=location.protocol)&&(e||!t.search||"instant"in t.dataset)&&!(t.hash&&t.pathname+t.search==location.pathname+location.search||"noInstant"in t.dataset))return!0}}function v(e,n="auto"){c.has(e)||("none"!=t?function(e){const n=document.createElement("script");n.type="speculationrules",n.textContent=JSON.stringify({[t]:[{source:"list",urls:[e]}]}),document.head.appendChild(n)}(e):function(t,e="auto"){const n=document.createElement("link");n.rel="prefetch",n.href=t,n.fetchPriority=e,n.as="document",document.head.appendChild(n)}(e,n),c.add(e))}!function(){const i=document.createElement("link").relList;if(!i.supports("prefetch"))return;const r="throwIfAborted"in AbortSignal.prototype,c=i.supports("modulepreload"),p=Intl.PluralRules&&"selectRange"in Intl.PluralRules.prototype;if(!r||!c&&!p)return;const h="instantVaryAccept"in document.body.dataset||"Shopify"in window,y=navigator.userAgent.indexOf("Chrome/");y>-1&&(a=parseInt(navigator.userAgent.substring(y+"Chrome/".length)));if(h&&a&&a<110)return;if(t="none",HTMLScriptElement.supports&&HTMLScriptElement.supports("speculationrules")){const e=document.body.dataset.instantSpecrules;"prerender"==e?t="prerender":"no"!=e&&(t="prefetch")}const w="instantMousedownShortcut"in document.body.dataset;e="instantAllowQueryString"in document.body.dataset,n="instantAllowExternalLinks"in document.body.dataset,o="instantWhitelist"in document.body.dataset;let b=!1,E=!1,S=!1;if("instantIntensity"in document.body.dataset){const t=document.body.dataset.instantIntensity;if("mousedown"!=t||w||(b=!0),"mousedown-only"!=t||w||(b=!0,E=!0),"viewport"==t){const t=document.documentElement.clientWidth*document.documentElement.clientHeight<45e4,e=navigator.connection&&navigator.connection.saveData,n=navigator.connection&&navigator.connection.effectiveType&&navigator.connection.effectiveType.includes("2g"),o=!e&&!n;t&&o&&(S=!0)}"viewport-all"==t&&(S=!0);const e=parseInt(t);isNaN(e)||(s=e)}const I={capture:!0,passive:!0};E?document.addEventListener("touchstart",d,I):document.addEventListener("touchstart",u,I);b||document.addEventListener("mouseover",l,I);b&&document.addEventListener("mousedown",f,I);w&&document.addEventListener("mousedown",m,I);if(S){let t=window.requestIdleCallback;t||(t=(t=>{t()})),t(function(){const t=new IntersectionObserver(e=>{e.forEach(e=>{if(e.isIntersecting){const n=e.target;t.unobserve(n),v(n.href)}})});document.querySelectorAll("a").forEach(e=>{g(e)&&t.observe(e)})},{timeout:1500})}}(); \ No newline at end of file diff --git a/assets/js/toc.js b/assets/js/toc.js deleted file mode 100644 index ec0028db..00000000 --- a/assets/js/toc.js +++ /dev/null @@ -1,40 +0,0 @@ -// Animate Hugo-built TOC -// author: Eltrac - -document.addEventListener('DOMContentLoaded', () => { - const toc = document.getElementById('toc'); - if (!toc) return; - - const headings = document.querySelectorAll('h2, h3'); - const observer = new IntersectionObserver(entries => { - entries.forEach(entry => { - if (!entry.isIntersecting) return; - - const id = entry.target.id; - const tocLink = toc.querySelector(`a[href="#${id}"]`); - if (!tocLink) return; - - const listItem = tocLink.parentElement; - const isH2 = entry.target.tagName === 'H2'; - - // Clear all active states when a new H2 is encountered - if (isH2) { - toc.querySelectorAll('li.active').forEach(el => el.classList.remove('active')); - } - - // Set current item as active - listItem.classList.add('active'); - - // If this is an H3, find and activate its parent H2 - if (!isH2) { - const parentH2Item = listItem.closest('ul').previousElementSibling?.closest('li'); - if (parentH2Item) parentH2Item.classList.add('active'); - } - }); - }, { - rootMargin: '0px 0px -50% 0px', - threshold: 0.5 - }); - - headings.forEach(heading => observer.observe(heading)); -}); diff --git a/assets/js/tooltip.js b/assets/js/tooltip.js deleted file mode 100644 index eea5b350..00000000 --- a/assets/js/tooltip.js +++ /dev/null @@ -1,54 +0,0 @@ -(() => { - const allTooltipped = document.querySelectorAll('[data-tooltip]'); - - const createOrUpdateTooltip = (element) => { - const tooltipText = element.getAttribute('data-tooltip') || element.getAttribute('title'); - - if (!tooltipText) return; - - let tooltipElement = element.querySelector('.__generated-tooltip'); - if (!tooltipElement) { - element.classList.add('group', 'relative', 'tooltipped'); - - tooltipElement = document.createElement('div'); - tooltipElement.classList.add( - '__generated-tooltip', - ...'absolute bottom-full left-1/2 transform -translate-x-1/2 translate-y-1 bg-black/80 text-white px-2.5 py-1.5 rounded text-xs whitespace-nowrap opacity-0 invisible transition-all duration-300 pointer-events-none mb-2 z-1000 group-hover:opacity-100 group-hover:visible group-hover:translate-y-0 dark:bg-white/90 dark:text-black'.split(' ') - ); - element.appendChild(tooltipElement); - } - - tooltipElement.textContent = tooltipText; - }; - - const observer = new IntersectionObserver((entries, obs) => { - entries.forEach(entry => { - if (!entry.isIntersecting) return; - - const element = entry.target; - createOrUpdateTooltip(element); - - // listen to tooltip text changes - const mutationObserver = new MutationObserver(mutations => { - for (const mutation of mutations) { - if (mutation.type === 'attributes' && - (mutation.attributeName === 'title' || mutation.attributeName === 'data-tooltip')) { - createOrUpdateTooltip(element); - } - } - }); - - mutationObserver.observe(element, { - attributes: true, - attributeFilter: ['title', 'data-tooltip'], - }); - - obs.unobserve(element); // 不再需要 Intersection 监听 - }); - }, { - rootMargin: '100px', - threshold: 0.1, - }); - - allTooltipped.forEach(el => observer.observe(el)); -})(); diff --git a/i18n/en.toml b/i18n/en.toml deleted file mode 100644 index f15a8c27..00000000 --- a/i18n/en.toml +++ /dev/null @@ -1,83 +0,0 @@ -lang = "en" -seeArchive = "See all pages" -searchInstruction = "⌘+K to search" -backToHome = "Back To Home" -RSS = "RSS" -statsTooltip = "Insights" -back2top = "I'll take you up!" -emailMe = "If you prefer one-on-one communication, or just want to say hello, feel free to email me at" -rss_comment_link = "Come and leave a comment" -viewExternalSource = "View External Source" -ViewOnFediverse = "View on Fediverse" - -[archivePage] -postCountMonthly = "{{ . }} POSTS" -postCountAnnual = "{{ . }} TOTAL POSTS" - -[postPage] -wordcount = "%d words" -commentNotLoaded = "if comment is not loaded, please try refreshing" -staticCommentsSectionHeader = "These are static comments that are stored in frontmatter of this page. They used to be in different comment platforms, but now they are integrated into the page's content." -originallyPostedOn = "originally posted on {{ . }}" - -[footer] -wordCount = "🪦 {{ . }} words are buried here" -licenseStatement = "Licensed under {{ . }}" - -[postNav] -latest = "Latest" -categories = "Categories" -settings = "Settings" - -[moreLinks] -posts = "All Posts" -cards = "All Cards" - -[termPage] -cards = "Cards about this topic" -books = "Books I've read about this topic" - -[library] -viewAllThisYear = "All Books This Year" - -[termFilterButton] -hideWeekly = "I'll deal with scarecrows." -reverseOrder = "Push to reverse time." - -[fuzzyTimes] -afterMidnight = "After Midnight" -earlyMorning = "Early Morning" -morning = "Morning" -noon = "Noon" -afternoon = "Afternoon" -evening = "Evening" -night = "Night" -midnight = "Midnight" - -[actionMenu] -email = "or send me an email!" -interact = "Interact" -fediverse = "Fediverse" -openToot = "Open T{oot" -fediversePlaceholder = "your instance, optional" -webmention = "Webmention" -webmentionPlaceholder = "Your post URL" -send = "Send" - -[webmention] -formPlaceholder = "URL of your post" -submit = "Ping me!" -likedBy = "%d people liked this page" -mentionsHeading = "Mentions" -interactOnFediverse = "Interact on Fediverse" -mentionedThisPost = "mentioned this post" -bridgyNotice = 'Comments from Fediverse might not be bridged yet, see all interaction at %s.' - -[music] -netease = "Netease Music" -bandcamp = "Bandcamp" -apple = "Apple Music" -spotify = "Spotify" -tidal = "TIDAL" -album = "ALBUM" -openIn = "Open in {{ . }}" diff --git a/i18n/zh.toml b/i18n/zh.toml deleted file mode 100644 index e9da65f2..00000000 --- a/i18n/zh.toml +++ /dev/null @@ -1,91 +0,0 @@ -lang = "zh-CN" -seeArchive = "档案馆" -searchInstruction = "⌘+K 搜索" -cards = "最近在学" -backToHome = "返回首页" -RSS = "订阅" -statsTooltip = "洞察" -back2top = "我带你上去!" -emailMe = "如果你偏好一对一的沟通,或者只是想打个招呼,欢迎发邮件到" -rss_comment_link = "读完啦?来坐坐吧" -viewExternalSource = "查看外部来源和完整互动" -ViewOnFediverse = "在联邦宇宙查看" - -[theme] -auto = "自动" -light = "亮色" -dark = "暗色" - -[archivePage] -postCountMonthly = "{{ . }} 篇文章" -postCountAnnual = "共计 {{ . }} 篇文章" -pageCount = "共 {{ . }} 个页面" - -[postPage] -wordcount = "%d 字" -commentNotLoaded = "如果评论未加载,请尝试刷新页面" -staticCommentsSectionHeader = "这些是曾经发布在不同评论平台上的评论,现在它们已经作为静态内容集成到页面中。" -originallyPostedOn = "原本发表于 {{ . }}" - -[footer] -wordCount = "🪦 {{ . }} 字在这里死去" -licenseStatement = "以 {{ . }} 协议授权" - -[postNav] -latest = "最新" -categories = "搜寻" - -[moreLinks] -posts = "所有文章" -cards = "所有卡片" - -[termPage] -books = "我读过的相关书籍" -weeklies = "提及此主题的周刊" -fictions = "我写过的关于这个主题的小说" - -[library] -viewAllThisYear = "查看今年完整书单" - -[termFilterButton] -hideWeekly = "我帮你解决稻草人" -reverseOrder = "按下以逆转时间" - -[fuzzyTimes] -afterMidnight = "凌晨" -earlyMorning = "清晨" -morning = "早上" -noon = "中午" -afternoon = "下午" -evening = "傍晚" -night = "晚上" -midnight = "深夜" - -[actionMenu] -email = "也欢迎邮件交流!" -interact = "互动" -fediverse = "联邦宇宙" -openToot = "打开帖子" -fediversePlaceholder = "实例域名,可留空" -webmention = "Webmention" -webmentionPlaceholder = "你的文章 URL" -send = "发送" - -[webmention] -formPlaceholder = "你的文章的 URL" -submit = "提交" -likedBy = "%d 人喜欢了这篇文章" -repliedAndMentionedBy = ",还有 %d 条回应和提及" -mentionsHeading = "提及这篇文章的" -interactOnFediverse = "在 Fediverse 上互动" -mentionedThisPost = "提及了这篇文章" -bridgyNotice = '来自联邦宇宙的互动不总是会被桥接,你可以到 %s 查看完整互动。' - -[music] -netease = "网易云音乐" -bandcamp = "Bandcamp" -apple = "Apple Music" -spotify = "Spotify" -tidal = "TIDAL" -album = "专辑" -openIn = "在 {{ . }} 中打开" diff --git a/layouts/404.html b/layouts/404.html deleted file mode 100644 index 6f17a145..00000000 --- a/layouts/404.html +++ /dev/null @@ -1,47 +0,0 @@ -{{ define "main" }} - -
- -
-

404

-

Windows 和幽灵偷走了你的页面

-

可恶的微软和能量体生物!

-

Mac 和骷髅为你祈祷

-
-
-{{ end }} diff --git a/layouts/_markup/render-blockquote.html b/layouts/_markup/render-blockquote.html deleted file mode 100644 index 79f57a85..00000000 --- a/layouts/_markup/render-blockquote.html +++ /dev/null @@ -1,30 +0,0 @@ -{{ $emojis := dict - "caution" "🚨" - "important" "☝️" - "note" "ℹ️" - "tip" "💡" - "warning" "⚠️" - "announcement" "📣" -}} - -{{ if eq .Type "alert" }} -
-
- {{ with .AlertTitle }} - {{.}} - {{ else }} - {{ index $emojis .AlertType }} - {{ end }} -
-
- {{ .Text }} -
-
-{{ else }} -
- {{ .Text }} -
-{{ end }} diff --git a/layouts/_markup/render-heading.html b/layouts/_markup/render-heading.html deleted file mode 100644 index 52b2f3ff..00000000 --- a/layouts/_markup/render-heading.html +++ /dev/null @@ -1,12 +0,0 @@ -{{ $size := index (dict - "1" "text-[1.5em] font-extrabold" - "2" "text-[1.25em] font-extrabold" - "3" "text-[1.125em] font-bold" - "4" "text-[1em] font-bold" - "5" "text-[0.9em] font-bold" - "6" "text-[0.875em]") (printf "%d" .Level) }} - - {{- .Text -}} - diff --git a/layouts/_markup/render-image.html b/layouts/_markup/render-image.html deleted file mode 100644 index 49c9fcee..00000000 --- a/layouts/_markup/render-image.html +++ /dev/null @@ -1,25 +0,0 @@ -{{- $src := .Destination -}} -{{- $alt := .Text | default "" -}} -{{- $caption := .Title | default "" -}} -{{- $class := .Attributes.class | default "" -}} - -{{- if and (not (strings.HasPrefix $src "https://")) (not (strings.HasPrefix $src "http://")) -}} - {{- if not (strings.HasPrefix $src "/") -}} - {{- $src = printf "%s/%s%s" site.Params.assetBaseUrl .Page.File.Dir $src -}} - {{- else -}} - {{- $src = printf "%s%s" site.Params.assetBaseUrl $src -}} - {{- end -}} -{{- end -}} - -
- {{ $alt }} - {{- if $caption }} -
-

{{ $caption | markdownify }}

-
- {{- end }} -
diff --git a/layouts/_markup/render-link.html b/layouts/_markup/render-link.html deleted file mode 100644 index 2e8d32f7..00000000 --- a/layouts/_markup/render-link.html +++ /dev/null @@ -1,6 +0,0 @@ -{{ $url := .Destination | safeURL }} -{{ if or (strings.HasPrefix $url "http://") (strings.HasPrefix $url "https://") }} - {{ .Text }} -{{ else }} - {{ .Text }} -{{ end }} diff --git a/layouts/_markup/render-table.html b/layouts/_markup/render-table.html deleted file mode 100644 index 010942f0..00000000 --- a/layouts/_markup/render-table.html +++ /dev/null @@ -1,32 +0,0 @@ -
- - {{- if .THead }} - - {{- range .THead }} - - {{- range . }} - - {{- end }} - - {{- end }} - - {{- end }} - - {{- range .TBody }} - - {{- range . }} - - {{- end }} - - {{- end }} - -
{{ .Text | safeHTML }}
{{ .Text | safeHTML }}
-
diff --git a/layouts/_partials/components/back-to-top.html b/layouts/_partials/components/back-to-top.html deleted file mode 100644 index 157fbe7b..00000000 --- a/layouts/_partials/components/back-to-top.html +++ /dev/null @@ -1,16 +0,0 @@ -
- -
- diff --git a/layouts/_partials/components/backlinks.html b/layouts/_partials/components/backlinks.html deleted file mode 100644 index e97c295c..00000000 --- a/layouts/_partials/components/backlinks.html +++ /dev/null @@ -1,37 +0,0 @@ -{{ $type := .type }} -{{ $filename := .filename }} -{{ $ctx := .context }} -{{ $referencedBy := slice }} - -{{ if eq $type "library" }} - {{ range $ctx.Site.Pages }} - {{ if and (isset .Params "mentioned_books") (in .Params.mentioned_books $filename) }} - {{ $referencedBy = $referencedBy | append . }} - {{ end }} - {{ end }} -{{ else if eq $type "cards" }} - {{ range $ctx.Site.Pages }} - {{ if and (isset .Params "related_cards") (in .Params.related_cards $filename) }} - {{ $referencedBy = $referencedBy | append . }} - {{ end }} - {{ end }} -{{ end }} - -{{- /* 如果有文章引用这个卡片,就显示它们 */ -}} -{{ if gt (len $referencedBy) 0 }} -
-

- 反向链接 - ? -

- -
-{{ end }} diff --git a/layouts/_partials/components/category-pill.html b/layouts/_partials/components/category-pill.html deleted file mode 100644 index 6146f0d4..00000000 --- a/layouts/_partials/components/category-pill.html +++ /dev/null @@ -1,7 +0,0 @@ -{{ with .GetTerms "categories" }} - {{ with index . 0 }} - - 《{{ .LinkTitle }}》 - - {{ end }} -{{ end }} diff --git a/layouts/_partials/components/date.html b/layouts/_partials/components/date.html deleted file mode 100644 index 398e2b1d..00000000 --- a/layouts/_partials/components/date.html +++ /dev/null @@ -1,31 +0,0 @@ -{{ if .Date }} - {{ $hour := .Date.Hour }} - {{ $fuzzyTimes := slice - (dict "limit" 5 "label" (T "fuzzyTimes.afterMidnight")) - (dict "limit" 7 "label" (T "fuzzyTimes.earlyMorning")) - (dict "limit" 11 "label" (T "fuzzyTimes.morning")) - (dict "limit" 13 "label" (T "fuzzyTimes.noon")) - (dict "limit" 17 "label" (T "fuzzyTimes.afternoon")) - (dict "limit" 19 "label" (T "fuzzyTimes.evening")) - (dict "limit" 22 "label" (T "fuzzyTimes.night")) - }} - {{ $fuzzyTime := (T "fuzzyTimes.midnight") }} {{/* default */}} - {{ range $fuzzyTimes }} - {{ if lt $hour .limit }} - {{ $fuzzyTime = .label }} - {{ break }} - {{ end }} - {{ end }} - - -{{ end }} diff --git a/layouts/_partials/components/logo.html b/layouts/_partials/components/logo.html deleted file mode 100644 index 88c2284e..00000000 --- a/layouts/_partials/components/logo.html +++ /dev/null @@ -1,18 +0,0 @@ -{{ $ctx := .ctx }} -{{ $link := .link | default "" }} -{{- $src := - (or .ctx.Params.logo - (printf "%s%s" - (.ctx.Site.Params.assetBaseUrl) - (.ctx.Site.Params.logo))) --}} -{{ $class := .class | default "" }} -{{ $imageClass := .imageClass | default "" }} - - - Logo - diff --git a/layouts/_partials/components/microformats.html b/layouts/_partials/components/microformats.html deleted file mode 100644 index 8cd64f50..00000000 --- a/layouts/_partials/components/microformats.html +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/layouts/_partials/components/section-title.html b/layouts/_partials/components/section-title.html deleted file mode 100644 index 698f71e8..00000000 --- a/layouts/_partials/components/section-title.html +++ /dev/null @@ -1,10 +0,0 @@ -{{ $left := .Left }} -{{ $right := .Right }} -

- {{ $left }} - - {{ $right }} - -

diff --git a/layouts/_partials/components/shade-mask.html b/layouts/_partials/components/shade-mask.html deleted file mode 100644 index c53415d8..00000000 --- a/layouts/_partials/components/shade-mask.html +++ /dev/null @@ -1,7 +0,0 @@ - -
- - -
diff --git a/layouts/_partials/components/svg-filters.html b/layouts/_partials/components/svg-filters.html deleted file mode 100644 index 5e68d6ec..00000000 --- a/layouts/_partials/components/svg-filters.html +++ /dev/null @@ -1,4 +0,0 @@ -
- - -
diff --git a/layouts/_partials/components/tags.html b/layouts/_partials/components/tags.html deleted file mode 100644 index 78d87f5b..00000000 --- a/layouts/_partials/components/tags.html +++ /dev/null @@ -1,3 +0,0 @@ -{{ range .Params.tags }} -#{{ . }} -{{ end }} diff --git a/layouts/_partials/components/wordcount.html b/layouts/_partials/components/wordcount.html deleted file mode 100644 index 526acaa4..00000000 --- a/layouts/_partials/components/wordcount.html +++ /dev/null @@ -1 +0,0 @@ -{{ printf (T "postPage.wordcount") .WordCount }} diff --git a/layouts/_partials/content.html b/layouts/_partials/content.html deleted file mode 100644 index c3c61cd5..00000000 --- a/layouts/_partials/content.html +++ /dev/null @@ -1,9 +0,0 @@ -
- {{ partial "posts/toc" . }} -
- {{ partial "utils/render" .Content }} -
- {{ partial "posts/endnotes" . }} -
- diff --git a/layouts/_partials/footer.html b/layouts/_partials/footer.html deleted file mode 100644 index bf28dc51..00000000 --- a/layouts/_partials/footer.html +++ /dev/null @@ -1,39 +0,0 @@ - diff --git a/layouts/_partials/head.html b/layouts/_partials/head.html deleted file mode 100644 index 3a8cd25c..00000000 --- a/layouts/_partials/head.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - {{ hugo.Generator }} - {{ partial "head/siteinfo" . }} - {{ partial "head/verification" . }} - {{ partial "head/css" . }} - {{ partial "head/scripts" . }} - diff --git a/layouts/_partials/head/css.html b/layouts/_partials/head/css.html deleted file mode 100644 index 7ff49fd5..00000000 --- a/layouts/_partials/head/css.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - -{{ range .Site.Params.extraCSSFiles -}} - -{{- end }} - - -{{ with resources.Get "css/uno.css" | minify }} - -{{ end }} - -{{ with resources.Get "css/main.scss" | css.Sass | minify }} - -{{ end }} diff --git a/layouts/_partials/head/scripts.html b/layouts/_partials/head/scripts.html deleted file mode 100644 index f067944c..00000000 --- a/layouts/_partials/head/scripts.html +++ /dev/null @@ -1,4 +0,0 @@ -{{ with resources.Get "js/darkmode.js" }} - -{{ end }} - diff --git a/layouts/_partials/head/siteinfo.html b/layouts/_partials/head/siteinfo.html deleted file mode 100644 index e251a009..00000000 --- a/layouts/_partials/head/siteinfo.html +++ /dev/null @@ -1,59 +0,0 @@ - -{{- $isHome := .IsHome -}} -{{- $title := cond $isHome .Site.Title .Title -}} -{{- $description := cond $isHome .Site.Params.description (default .Summary .Description | plainify) -}} -{{- $ogType := cond $isHome "website" "article" -}} -{{- $image := cond (isset .Params "banner") - .Params.banner - (cond (isset .Params "cover") - .Params.cover - .Site.Params.favicon) --}} - -{{ $title }} - - - - - - - - - - - - - - - - - diff --git a/layouts/_partials/head/verification.html b/layouts/_partials/head/verification.html deleted file mode 100644 index 11705435..00000000 --- a/layouts/_partials/head/verification.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/layouts/_partials/header.html b/layouts/_partials/header.html deleted file mode 100644 index 279c822b..00000000 --- a/layouts/_partials/header.html +++ /dev/null @@ -1,28 +0,0 @@ -
- - - -
- {{ partial "header/navigation" . }} - {{ partial "header/other-navigation" . }} -
-
diff --git a/layouts/_partials/header/navigation.html b/layouts/_partials/header/navigation.html deleted file mode 100644 index 168d614f..00000000 --- a/layouts/_partials/header/navigation.html +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/layouts/_partials/header/other-navigation.html b/layouts/_partials/header/other-navigation.html deleted file mode 100644 index 4be0dba0..00000000 --- a/layouts/_partials/header/other-navigation.html +++ /dev/null @@ -1,29 +0,0 @@ -{{ $langButtonSize := "w-4 h-4" }} - -
- - - - - {{- $lang := .Site.Language.Lang -}} - {{- $switch := dict - "en" (dict "url" "/zh/" "label" "ZH" "title" "查看中文博客") - "zh" (dict "url" "/en/" "label" "EN" "title" "View English Blog") -}} - {{- $entry := index $switch $lang -}} - - {{ $entry.label }} - -
diff --git a/layouts/_partials/home/home-nav-item.html b/layouts/_partials/home/home-nav-item.html deleted file mode 100644 index b9b70c0f..00000000 --- a/layouts/_partials/home/home-nav-item.html +++ /dev/null @@ -1,15 +0,0 @@ -{{ $active := .active }} -{{ $link := .link }} -{{ $text := .text }} - - - {{ $text }} - {{ if $active }} -
·
- {{ end }} -
diff --git a/layouts/_partials/home/home-nav.html b/layouts/_partials/home/home-nav.html deleted file mode 100644 index ce66e563..00000000 --- a/layouts/_partials/home/home-nav.html +++ /dev/null @@ -1,11 +0,0 @@ -{{ if eq .Site.Language.Lang "zh" }} - -{{ end }} diff --git a/layouts/_partials/home/latest-posts.html b/layouts/_partials/home/latest-posts.html deleted file mode 100644 index ac015111..00000000 --- a/layouts/_partials/home/latest-posts.html +++ /dev/null @@ -1,11 +0,0 @@ - -
- {{ $firstPost := true }} - {{ range first 12 (where site.RegularPages "Type" "in" site.Params.mainSections) }} - {{ partial "items/post" (dict - "ctx" . - "showSummary" $firstPost - ) }} - {{ $firstPost = false }} - {{ end }} -
diff --git a/layouts/_partials/home/microformats.html b/layouts/_partials/home/microformats.html deleted file mode 100644 index 8641b04c..00000000 --- a/layouts/_partials/home/microformats.html +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/layouts/_partials/home/more-links.html b/layouts/_partials/home/more-links.html deleted file mode 100644 index 6201f642..00000000 --- a/layouts/_partials/home/more-links.html +++ /dev/null @@ -1,15 +0,0 @@ - -
-
- - {{ T "seeArchive" }} → - -
- -
diff --git a/layouts/_partials/items/book.html b/layouts/_partials/items/book.html deleted file mode 100644 index 5b6e61c2..00000000 --- a/layouts/_partials/items/book.html +++ /dev/null @@ -1,36 +0,0 @@ -{{ $ctx := .ctx }} -{{ $NoViewTransition := (or .NoViewTransition false) }} - - -{{ $splitURL := split $ctx.Params.cover "/" }} -{{ $cover := "" }} -{{ $i := 0 }} -{{ range $splitURL }} - {{ if eq $i 3 }} - {{ $cover = printf "%s%s" $cover "cdn-cgi/image/width=150,quality=75/" }} - {{ end }} - {{ $cover = printf "%s%s/" $cover . }} - {{ $i = add $i 1 }} -{{ end }} -{{ $cover = strings.TrimSuffix "/" $cover }} - - - - - {{ if eq $ctx.Params.rating 1 }} -
- {{ end }} -
- diff --git a/layouts/_partials/items/card.html b/layouts/_partials/items/card.html deleted file mode 100644 index 01a3cfb8..00000000 --- a/layouts/_partials/items/card.html +++ /dev/null @@ -1,19 +0,0 @@ -{{ $ctx := .context }} -{{ $showSummary := .summary }} -{{ $summaryClass := .summaryClass }} -
-
-

- {{ $ctx.Title }} -

-
{{ partial "components/tags" $ctx }}
-
-
- {{ if $showSummary }}{{ $ctx.Summary }}{{ else }}{{ $ctx.Content }}{{ end }} -
-
diff --git a/layouts/_partials/items/post-small.html b/layouts/_partials/items/post-small.html deleted file mode 100644 index 28a4a995..00000000 --- a/layouts/_partials/items/post-small.html +++ /dev/null @@ -1,11 +0,0 @@ -{{ $isWeekly := (eq .Params.categories "稻草人周刊") }} -
  • - - {{ .Title }}{{ with .Params.subtitle }}:{{. }} - {{ end }} - - -
  • diff --git a/layouts/_partials/items/post.html b/layouts/_partials/items/post.html deleted file mode 100644 index 5527ea6c..00000000 --- a/layouts/_partials/items/post.html +++ /dev/null @@ -1,41 +0,0 @@ -{{ $ctx := .ctx }} -{{ $showSummary := .showSummary }} -
    -
    -
    -

    - - in {{ .ctx.Section }} -

    -

    - - {{ if eq .ctx.Section "library" }} - 读《{{ .ctx.Title }}》 - {{ else }} - {{ .ctx.Title }} - {{ end }} - - {{ if eq .ctx.Section "fictions" }} - 小说 - {{ end }} -

    -
    - {{ with .ctx.Params.categories }} -
    - {{ partial "components/category-pill" $ctx }} -
    - {{ end }} -
    - {{ if or $showSummary .ctx.Params.description }} -
    - {{ if $showSummary }} - {{ .ctx.Summary }} - {{ else if .ctx.Params.description }} - {{ .ctx.Params.description }} - {{ end }} -
    - {{ end }} -
    diff --git a/layouts/_partials/posts/action-area.html b/layouts/_partials/posts/action-area.html deleted file mode 100644 index 06f0003d..00000000 --- a/layouts/_partials/posts/action-area.html +++ /dev/null @@ -1,16 +0,0 @@ -
    -
    - {{ partial "posts/fediverse-form" . }} - {{ partial "posts/webmention-form" . }} -
    -
    -

    📧 {{ T "actionMenu.email" }}

    - {{ if eq .Site.Language.Lang "zh" }} -

    这是什么?

    - {{ end }} -
    -
    diff --git a/layouts/_partials/posts/banner.html b/layouts/_partials/posts/banner.html deleted file mode 100644 index 6acaafdc..00000000 --- a/layouts/_partials/posts/banner.html +++ /dev/null @@ -1,9 +0,0 @@ -{{ $page := . }} -{{ with .Params.banner }} - -{{ end }} diff --git a/layouts/_partials/posts/comment.html b/layouts/_partials/posts/comment.html deleted file mode 100644 index 90757781..00000000 --- a/layouts/_partials/posts/comment.html +++ /dev/null @@ -1,38 +0,0 @@ - -{{ $cutoffDate := time.AsTime "2026-01-30" }} -{{ if .Params.Date.Before $cutoffDate }} - {{ $giscusData := hugo.Data.giscus }} - {{ $pageTitle := .Title }} - {{ range $giscusData }} - {{ if eq .title $pageTitle }} - {{ $url := .url }} - {{ with .comments.nodes }} -
    - 博客的评论区已经被禁用,旧的数据已经导出,可以点击这行字查看。 -
    - {{ range . }} -
    -
    - {{ .author.login }} - {{ .createdAt | time.Format "2006/01/02" }} -
    -
    - {{ .body | markdownify }} -
    -
    - {{ end }} -
    - {{ with $url }} -

    Full GitHub Discussion →

    - {{ end }} -
    -
    - {{ end }} - {{ end }} - {{ end }} -{{ end }} diff --git a/layouts/_partials/posts/endnotes.html b/layouts/_partials/posts/endnotes.html deleted file mode 100644 index 107ffd77..00000000 --- a/layouts/_partials/posts/endnotes.html +++ /dev/null @@ -1,13 +0,0 @@ -{{ if .Params.endnotes }} -
    -
    -
      - {{ range .Params.endnotes }} -
    • - → - {{ . | markdownify }} -
    • - {{ end }} -
    -
    -{{ end }} diff --git a/layouts/_partials/posts/fediverse-form.html b/layouts/_partials/posts/fediverse-form.html deleted file mode 100644 index faff355f..00000000 --- a/layouts/_partials/posts/fediverse-form.html +++ /dev/null @@ -1,14 +0,0 @@ -{{ if .Params.toot }} -
    -

    {{ T "actionMenu.fediverse" }}

    - -
    - - - -
    -
    - -{{ end }} diff --git a/layouts/_partials/posts/toc.html b/layouts/_partials/posts/toc.html deleted file mode 100644 index 0bc96782..00000000 --- a/layouts/_partials/posts/toc.html +++ /dev/null @@ -1,10 +0,0 @@ -{{ $top := cond (eq .Section "posts") "top-[19rem]" (cond (eq .Section "library") "top-[34rem]" "top-[17rem]") }} -{{ if .Params.toc }} - -{{ end }} diff --git a/layouts/_partials/posts/webmention-form.html b/layouts/_partials/posts/webmention-form.html deleted file mode 100644 index 4499f89b..00000000 --- a/layouts/_partials/posts/webmention-form.html +++ /dev/null @@ -1,6 +0,0 @@ -
    -

    {{ T "actionMenu.webmention" }}

    - - - -
    diff --git a/layouts/_partials/posts/webmention-mentions.html b/layouts/_partials/posts/webmention-mentions.html deleted file mode 100644 index e4744bf7..00000000 --- a/layouts/_partials/posts/webmention-mentions.html +++ /dev/null @@ -1,56 +0,0 @@ -{{ with . }} -
    -
      -{{ range . }} - {{ if index . "microformats" }} - {{ $mf := index . "microformats" "properties" }} - {{ $author := dict }} - {{ if $mf.author }} - {{ if reflect.IsSlice $mf.author }} - {{ $authorElem := index $mf.author 0 }} - {{ if reflect.IsMap $authorElem }} - {{ $author = index $authorElem "properties" }} - {{ else }} - {{ $author = $authorElem }} - {{ end }} - {{ else }} - {{ $author = $mf.author }} - {{ end }} - {{ end }} - {{ if eq (index .microformats.type 0) "h-card" }} - {{ $author = $mf }} - {{ end }} - {{ $photo := "" }} - {{ $authorName := "" }} - {{ $authorUrl := "" }} - - {{ if reflect.IsMap $author }} - {{ $photo = or (index . "extra" "proxied-photo") (index $author.photo 0) }} - {{ $authorName = index $author.name 0 }} - {{ $authorUrl = index $author.url 0 }} - {{ else }} - {{ $photo = index . "extra" "proxied-photo" }} - {{ $authorName = $author }} - {{ $authorUrl = .webmention.source }} - {{ end }} - -
    • - {{ if $photo }} - - {{ else }} -
      - {{ end }} - {{ $authorName }} - {{ T "webmention.mentionedThisPost" . }} -
    • - {{ else }} -
    • - {{ $u := urls.Parse .webmention.source }} -
      - {{ $u.Hostname }} - {{ T "webmention.mentionedThisPost" . }}
    • - {{ end }} -{{ end }} -
    -
    -{{ end }} diff --git a/layouts/_partials/posts/webmention-replies.html b/layouts/_partials/posts/webmention-replies.html deleted file mode 100644 index 66b64ef9..00000000 --- a/layouts/_partials/posts/webmention-replies.html +++ /dev/null @@ -1,69 +0,0 @@ -{{ with . }} -
    -{{ range . }} - {{ $reply := index . "microformats" "properties" }} - {{ $author := dict }} - {{ $photo := "" }} - - {{ if $reply.author }} - {{ if reflect.IsSlice $reply.author }} - {{ $authorElem := index $reply.author 0 }} - {{ if reflect.IsMap $authorElem }} - {{ $author = index $authorElem "properties" }} - {{ else }} - {{ $author = $authorElem }} - {{ end }} - {{ $photo = or (index $author.photo 0) (index $reply.photo 0) }} - {{ else }} - {{ $author = $reply.author }} - {{ $photo = index $reply.photo 0 }} - {{ end }} - {{ end }} - -
    -
    -
    - Profile Picture -
    -

    - - {{ if reflect.IsMap $author }} - {{ replaceRE ":.*?:" "" (index $author.name 0) }} - {{ else }} - {{ $author }} - {{ end }} - -

    - {{ $time := (index $reply.published 0) }} - {{ $isFormated := strings.Contains $time " " }} - {{ if not $isFormated }} - {{ $t := time.AsTime $time }} - {{ $time = time.Format "2006-1-2 15:04" $t }} - {{ end }} -

    -
    -
    -
    - ↗ -
    -
    - -
    -
    - {{ index (index $reply.content 0) "html" | safeHTML }} - {{ if strings.Contains .webmention.source "https://brid.gy" }} -

    通过 Bridgy 发送自联邦宇宙

    - {{ end }} -
    -
    -
    -{{ end }} -
    -{{ end }} diff --git a/layouts/_partials/posts/webmention-summary.html b/layouts/_partials/posts/webmention-summary.html deleted file mode 100644 index 18be7344..00000000 --- a/layouts/_partials/posts/webmention-summary.html +++ /dev/null @@ -1,54 +0,0 @@ -{{ $likes := .likes }} -{{ $page := .page }} -{{ $othercount := .othercount }} - -
    - - - - - {{ range $likes }} - {{ $authors := index . "microformats" "properties" "author" }} - {{ $author := dict }} - {{ $photo := "" }} - {{ if $authors }} - {{ if reflect.IsSlice $authors }} - {{ $authorElem := index $authors 0 }} - {{ if reflect.IsMap $authorElem }} - {{ $author = index $authorElem "properties" }} - {{ else }} - {{ $author = $authorElem }} - {{ end }} - {{ else }} - {{ $author = $authors }} - {{ end }} - {{ end }} - {{ $photo = or (index . "extra" "proxied-photo") (index $author.photo 0) }} - - {{ $value := math.Floor (mul math.Rand 80) }} - {{ $rotate := cond (lt $value 40) (sub 10 $value) (sub $value 30) }} - {{ if $photo }} - Profile Picture - {{ else }} -
    - {{ end }} -
    - {{ end }} -
    - {{ printf (T "webmention.likedBy") (len $likes ) }} - {{ if gt $othercount 0 }} - {{ printf (T "webmention.repliedAndMentionedBy") $othercount }} - {{ end }} -
    -
    -
    - diff --git a/layouts/_partials/posts/webmention.html b/layouts/_partials/posts/webmention.html deleted file mode 100644 index 77b89f25..00000000 --- a/layouts/_partials/posts/webmention.html +++ /dev/null @@ -1,73 +0,0 @@ -{{ $page := . }} -{{ $currentPagePath := .RelPermalink }} -{{ $webmentions_url := .Site.Params.webmention.src }} - -{{ with try (resources.GetRemote $webmentions_url) }} - {{ with .Err }} - {{ errorf "%s" . }} - - {{ else with .Value }} - {{ $webmentions := slice }} - {{ $data := . | transform.Unmarshal }} - - {{ range $data }} - {{ $urlObj := urls.Parse .webmention.target }} - {{ $targetPath := $urlObj.Path }} - - {{ if or (strings.Contains $targetPath $currentPagePath) - (strings.Contains $targetPath ($currentPagePath | urlquery)) }} - {{ $webmentions = $webmentions | append . }} - {{ end }} - {{ end }} - - {{ $likes := slice }} - {{ $replies := slice }} - {{ $reposts := slice }} - {{ $mentions := slice }} - - {{ range $webmentions }} - {{ $props := index . "microformats" "properties" }} - {{ $type := index . "microformats" "type" 0 }} - - {{ if eq $type "h-entry" }} - {{ if index $props "like-of" }} - {{ $likes = $likes | append . }} - - - {{ else if index $props "repost-of" }} - {{ $reposts = $mentions | append . }} - - {{ else }} - {{ $replies = $replies | append . }} - - {{ end }} - {{ else }} - {{ $mentions = $mentions | append . }} - {{ end }} - - {{ end }} - - {{ partial "posts/action-area" $page }} -
    - - {{ partial "posts/webmention-summary" (dict - "likes" $likes - "page" $page - "othercount" (add (len $replies) (len $mentions)) - ) }} - - {{ with $page.Params.toot }} -

    - {{ $link := printf "Eucalyptus" . }} - *{{ printf (T "webmention.bridgyNotice") $link | safeHTML }} -

    - {{ end }} -
    - {{ partial "posts/webmention-replies" $replies }} - {{ partial "posts/webmention-mentions" $mentions }} -
    -
    - {{ else }} -

    Unable to fetch webmentions. Please contact webmaster.

    - {{ end }} -{{ end }} diff --git a/layouts/_partials/scripts.html b/layouts/_partials/scripts.html deleted file mode 100644 index 5d782dd7..00000000 --- a/layouts/_partials/scripts.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - -{{ $commonJS := slice - (resources.Get "js/tooltip.js") - (resources.Get "js/instantpage.min.js") -}} -{{ $commonBundle := $commonJS | resources.Concat "js/common-bundle.js" | minify | fingerprint }} - - - -{{ if not .IsHome }} - {{ $articleJS := slice - (resources.Get "js/toc.js") - (resources.Get "js/back2top.js") - (resources.Get "js/fediform.js") - }} - {{ $articleBundle := $articleJS | resources.Concat "js/article-bundle.js" | minify | fingerprint }} - -{{ end }} - - - - - - - diff --git a/layouts/_partials/stats/external-link-rank.html b/layouts/_partials/stats/external-link-rank.html deleted file mode 100644 index 4268d4d9..00000000 --- a/layouts/_partials/stats/external-link-rank.html +++ /dev/null @@ -1,37 +0,0 @@ -{{/* Find the maximum link count */}} -{{ $max := 0 }} -{{ range hugo.Data.externallinks }} - {{ if gt (index . 1) $max }} - {{ $max = index . 1 }} - {{ end }} -{{ end }} - -{{/* Sort by count (descending) */}} -{{ $links := hugo.Data.externallinks }} -{{ $sorted := slice }} -{{ range $links }} - {{ $sorted = $sorted | append (dict "domain" (index . 0) "count" (index . 1)) }} -{{ end }} -{{ $sorted = sort $sorted "count" "desc" }} - - diff --git a/layouts/_partials/stats/publish-time-chart.html b/layouts/_partials/stats/publish-time-chart.html deleted file mode 100644 index 3fa35078..00000000 --- a/layouts/_partials/stats/publish-time-chart.html +++ /dev/null @@ -1,78 +0,0 @@ -{{/* 定义时间段 */}} -{{ $fuzzyTimes := slice - (dict "limit" 5 "label" "凌晨" "class" "dawn") - (dict "limit" 11 "label" "早上" "class" "morning") - (dict "limit" 13 "label" "中午" "class" "noon") - (dict "limit" 17 "label" "下午" "class" "afternoon") - (dict "limit" 22 "label" "晚上" "class" "night") - (dict "limit" 24 "label" "深夜" "class" "late-night") -}} - -{{/* 初始化时间段计数 */}} -{{ $timeCounts := dict - "凌晨" 0 - "清晨" 0 - "早上" 0 - "中午" 0 - "下午" 0 - "傍晚" 0 - "晚上" 0 - "深夜" 0 -}} - -{{/* 统计每个时间段的文章数量 */}} -{{ $total := 0 }} -{{ range .Site.RegularPages }} - {{ if .Date }} - {{ $hour := .Date.Hour }} - {{ $fuzzyTime := "深夜" }} - {{ range $fuzzyTimes }} - {{ if lt $hour .limit }} - {{ $fuzzyTime = .label }} - {{ break }} - {{ end }} - {{ end }} - {{ $total = add $total 1 }} - {{ $currentCount := index $timeCounts $fuzzyTime }} - {{ $timeCounts = merge $timeCounts (dict $fuzzyTime (add $currentCount 1)) }} - {{ end }} -{{ end }} - -
    -
    -
    ☀️
    -
    - {{ range $fuzzyTimes }} - {{ $count := index $timeCounts .label }} - {{ if gt $total 0 }} - {{ $percentage := div (mul $count 100.0) $total }} - {{ if gt $count 0 }} -
    - {{ if gt $percentage 8 }}{{ .label }}{{ end }} -
    - {{ end }} - {{ end }} - {{ end }} -
    -
    🌙
    -
    - -
    - {{ range $fuzzyTimes }} - {{ $count := index $timeCounts .label }} - {{ if gt $count 0 }} - {{ $percentage := div (mul $count 100.0) $total }} -
    - {{ $count }} -
    - {{ end }} - {{ end }} -
    -
    diff --git a/layouts/_partials/stats/stats-table.html b/layouts/_partials/stats/stats-table.html deleted file mode 100644 index bb936721..00000000 --- a/layouts/_partials/stats/stats-table.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - -
    页面总数{{ len .Site.RegularPages }}总字数 - - {{- $words := 0 -}} - {{- range (where .Site.RegularPages "Section" "!=" "") -}} - {{- $words = add $words .WordCount -}} - {{- end -}} - {{ lang.FormatNumber 0 $words }} - -
    标签总数{{ len .Site.Taxonomies.tags }}文章系列数量{{ len .Site.Taxonomies.categories }}
    diff --git a/layouts/_partials/stats/word-count-chart.html b/layouts/_partials/stats/word-count-chart.html deleted file mode 100644 index 835ecbda..00000000 --- a/layouts/_partials/stats/word-count-chart.html +++ /dev/null @@ -1,46 +0,0 @@ -{{/* Group word counts per month */}} -{{ $monthly := dict }} -{{ range .Site.RegularPages }} - {{ $month := .Date.Format "2006-01" }} - {{ $count := .WordCount }} - {{ with index $monthly $month }} - {{ $monthly = merge $monthly (dict $month (add . $count)) }} - {{ else }} - {{ $monthly = merge $monthly (dict $month $count) }} - {{ end }} -{{ end }} - -{{/* Sort months */}} -{{ $months := slice }} -{{ range $month, $_ := $monthly }} - {{ $months = $months | append $month }} -{{ end }} -{{ $months = sort $months }} - -{{/* Find max value */}} -{{ $max := 0 }} -{{ range $month := $months }} - {{ $val := index $monthly $month }} - {{ if gt $val $max }}{{ $max = $val }}{{ end }} -{{ end }} - -
    - {{ range $month := $months }} - {{ $val := index $monthly $month }} - {{ $height := mul (div (float $val) (float $max)) 100 }} - {{ $opacity := add 0.5 (div $height 200) }} -
    -
    -
    {{ $val }}
    -
    -
    -
    {{ $month }}
    -
    - {{ end }} -
    diff --git a/layouts/_partials/taxonomy/all-categories.html b/layouts/_partials/taxonomy/all-categories.html deleted file mode 100644 index 7cb5813a..00000000 --- a/layouts/_partials/taxonomy/all-categories.html +++ /dev/null @@ -1,33 +0,0 @@ -

    * 表示常驻系列,其他系列可能会在完成后停止更新

    - -

    -
    -
    -
    - {{ range sort (sort .Site.Taxonomies.categories ".Count" "desc") ".Page.Params.pinned" "desc" }} - {{ if not .Page.Params.archive }} - -
    -

    - 《{{ .Page.LinkTitle }}》 - {{ if .Page.Params.pinned }}*{{ end }} -

    -

    {{ .Page.Params.description | markdownify }}

    -
    -
    -
    - {{ end }} - {{ end }} -
    -
    -
    - - -

    - - 查看随笔 → - -

    diff --git a/layouts/_partials/taxonomy/all-tags.html b/layouts/_partials/taxonomy/all-tags.html deleted file mode 100644 index efd63fb4..00000000 --- a/layouts/_partials/taxonomy/all-tags.html +++ /dev/null @@ -1,46 +0,0 @@ - -
    - {{ $categorizedTags := dict }} - {{ $uncategorizedTags := slice }} - - - {{ range $tagName, $tagPages := .Site.Taxonomies.tags }} - {{ $tagPage := site.GetPage (printf "/tags/%s" $tagName) }} - {{ $tagData := dict "Name" $tagName "Count" (len $tagPages) "Page" $tagPage }} - {{ if $tagPage.Params.category }} - {{ $category := $tagPage.Params.category }} - {{ $categoryTags := index $categorizedTags $category | default slice }} - {{ $categoryTags = $categoryTags | append $tagData }} - {{ $categorizedTags = merge $categorizedTags (dict $category $categoryTags) }} - {{ else }} - {{ $uncategorizedTags = $uncategorizedTags | append $tagData }} - {{ end }} - {{ end }} - - - {{ $uncategorizedTags = sort $uncategorizedTags "Count" "desc" }} - {{ range $category, $categoryTags := $categorizedTags }} - {{ $categorizedTags = merge $categorizedTags (dict $category (sort $categoryTags "Count" "desc")) }} - {{ end }} - - - {{ if $uncategorizedTags }} -
    - {{ range $uncategorizedTags }} - {{ partial "taxonomy/tag-pill" . }} - {{ end }} -
    - {{ end }} - - - {{ range $category, $categoryTags := $categorizedTags }} -
    -

    {{ $category }}

    -
    - {{ range $categoryTags }} - {{ partial "taxonomy/tag-pill" . }} - {{ end }} -
    -
    - {{ end }} -
    diff --git a/layouts/_partials/taxonomy/archived-categories.html b/layouts/_partials/taxonomy/archived-categories.html deleted file mode 100644 index 26ed68d8..00000000 --- a/layouts/_partials/taxonomy/archived-categories.html +++ /dev/null @@ -1,16 +0,0 @@ - - diff --git a/layouts/_partials/taxonomy/pagefind.html b/layouts/_partials/taxonomy/pagefind.html deleted file mode 100644 index 2c41457d..00000000 --- a/layouts/_partials/taxonomy/pagefind.html +++ /dev/null @@ -1,7 +0,0 @@ -
    - - diff --git a/layouts/_partials/taxonomy/tag-pill.html b/layouts/_partials/taxonomy/tag-pill.html deleted file mode 100644 index ad13c62e..00000000 --- a/layouts/_partials/taxonomy/tag-pill.html +++ /dev/null @@ -1,24 +0,0 @@ - - {{ if .Page.Params.icon }} - {{ if or (hasPrefix .Page.Params.icon "http://") (hasPrefix .Page.Params.icon "https://") }} - - {{ .Page.LinkTitle }} - - {{ else }} - {{ .Page.Params.icon }} - {{ end }} - {{ end }} - {{ if not .Page.Params.icon }}#{{ end }}{{ .Page.LinkTitle }} - {{ .Count }} - diff --git a/layouts/_partials/template/post-page.html b/layouts/_partials/template/post-page.html deleted file mode 100644 index 0b55d48a..00000000 --- a/layouts/_partials/template/post-page.html +++ /dev/null @@ -1,45 +0,0 @@ -
    - -
    - {{ if .Params.banner }} - {{ partial "components/logo" (dict - "class" "block round-sticker w-14 h-14 lg:w-28 lg:h-28 right-2 lg:-right-20 top-2 lg:top-4 absolute rotate-[3.0deg] z-10" - "imageClass" "block w-full" - "ctx" . - ) }} - {{ else }} - {{ partial "components/logo" (dict - "class" "block w-[10rem]" - "imageClass" "block w-full" - "ctx" . - ) }} - {{ end }} - - {{ partial "posts/banner" . }} - -

    - {{ .Title }} - {{ with .Params.subtitle }} - {{ . }} - {{ end }} -

    - -
    - {{ partial "components/date" . }} - {{ if or .Params.categories .Params.tags }}·{{ end }} - {{ partial "components/category-pill" . }} - {{ partial "components/tags" . }} -
    -
    - - {{ partial "content" . }} - {{ partial "posts/webmention" . }} - - {{ partial "posts/comment" . }} - - {{ partial "components/back-to-top" . }} - {{ partial "components/microformats" . }} -
    diff --git a/layouts/_partials/term/term-books.html b/layouts/_partials/term/term-books.html deleted file mode 100644 index 2bd48295..00000000 --- a/layouts/_partials/term/term-books.html +++ /dev/null @@ -1,9 +0,0 @@ -{{ $books := where .Pages "Section" "eq" "library" }} -{{ if gt (len $books) 0 }} -

    {{ T "termPage.books" }}

    -
    - {{ range $books }} - {{ partial "items/book" (dict "ctx" .) }} - {{ end }} -
    -{{ end }} diff --git a/layouts/_partials/term/term-fictions.html b/layouts/_partials/term/term-fictions.html deleted file mode 100644 index 3e3fd4a9..00000000 --- a/layouts/_partials/term/term-fictions.html +++ /dev/null @@ -1,10 +0,0 @@ -{{ $fictions := where .Pages "Section" "fiction" }} -{{ if gt (len $fictions) 0 }} -

    {{ T "termPage.fictions" }}

    - -{{ end }} diff --git a/layouts/_partials/term/term-posts.html b/layouts/_partials/term/term-posts.html deleted file mode 100644 index e9f8136f..00000000 --- a/layouts/_partials/term/term-posts.html +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/layouts/_partials/term/term-weeklies.html b/layouts/_partials/term/term-weeklies.html deleted file mode 100644 index 56697b60..00000000 --- a/layouts/_partials/term/term-weeklies.html +++ /dev/null @@ -1,10 +0,0 @@ -{{ $weeklies := where .Pages "Section" "weekly" }} -{{ if gt (len $weeklies) 0 }} -

    {{ T "termPage.weeklies" }}

    - -{{ end }} diff --git a/layouts/_partials/utils/inject-footnotes.html b/layouts/_partials/utils/inject-footnotes.html deleted file mode 100644 index 31fdae82..00000000 --- a/layouts/_partials/utils/inject-footnotes.html +++ /dev/null @@ -1,70 +0,0 @@ -{{ $content := . }} - -{{ $footnotesPattern := `(?s)
    ]*>.*?
    ` }} -{{ $footnotesMatch := findRE $footnotesPattern $content 1 }} - -{{ if $footnotesMatch }} - {{ $footnotesSection := index $footnotesMatch 0 }} - - {{ $liPattern := `(?s)
  • (.*?)
  • ` }} - {{ $footnoteItems := findRESubmatch $liPattern $footnotesSection }} - - {{ $footnoteMap := dict }} - {{ range $footnoteItems }} - {{ $id := index . 1 }} - {{ $contentRaw := index . 2 }} - {{ $cleanContent := replaceRE `(?s)\s*]*>.*?\s*$` "" $contentRaw }} - {{ $footnoteMap = merge $footnoteMap (dict $id $cleanContent) }} - {{ end }} - - {{ $contentWithoutFootnotes := replaceRE $footnotesPattern "" $content }} - - {{ $refPattern := `` }} - {{ $refs := findRESubmatch $refPattern $contentWithoutFootnotes }} - - {{ $result := $contentWithoutFootnotes }} - {{ $count := len $refs }} - - {{ range seq (sub $count 1) -1 0 }} - {{ $ref := index $refs . }} - {{ $refFull := index $ref 0 }} - {{ $refId := index $ref 1 }} - {{ $noteContent := index $footnoteMap $refId }} - - {{ if $noteContent }} - {{ $inlineFootnote := printf `
    %s.
    %s
    ` $refId $refId $noteContent }} - - {{ $blockTags := slice "p" "li" "td" "th" "blockquote" "h1" "h2" "h3" "h4" "h5" "h6" "figcaption" "dt" "dd" }} - - {{ $found := false }} - - {{ range $blockTags }} - {{ if not $found }} - {{ $tag := . }} - {{ $pattern := printf `(?s)<%s[^>]*>.*?` $tag $tag }} - {{ $matches := findRE $pattern $result }} - - {{ range $matches }} - {{ if not $found }} - {{ $block := . }} - {{ if strings.Contains $block $refFull }} - {{ $newBlock := printf `%s%s` $block $inlineFootnote }} - {{ $result = replace $result $block $newBlock 1 }} - {{ $found = true }} - {{ end }} - {{ end }} - {{ end }} - {{ end }} - {{ end }} - - {{ if not $found }} - {{ $replacement := printf `%s%s` $refFull $inlineFootnote }} - {{ $result = replace $result $refFull $replacement 1 }} - {{ end }} - {{ end }} - {{ end }} - - {{ $content = $result }} -{{ end }} - -{{ $content | safeHTML }} diff --git a/layouts/_partials/utils/render.html b/layouts/_partials/utils/render.html deleted file mode 100644 index bdc4bf2f..00000000 --- a/layouts/_partials/utils/render.html +++ /dev/null @@ -1 +0,0 @@ -{{ partial "utils/inject-footnotes" . }} diff --git a/layouts/_shortcodes/book.html b/layouts/_shortcodes/book.html deleted file mode 100644 index 7ea49089..00000000 --- a/layouts/_shortcodes/book.html +++ /dev/null @@ -1,17 +0,0 @@ -
    -
    - - - -
    -
    -
    -

    {{ .Get "title" }}

    -

    分数:{{ .Get "rating" }}

    -
    -
    - - {{ .Inner | markdownify }} -
    -
    -
    diff --git a/layouts/_shortcodes/bookcard.html b/layouts/_shortcodes/bookcard.html deleted file mode 100644 index 48e6924c..00000000 --- a/layouts/_shortcodes/bookcard.html +++ /dev/null @@ -1,28 +0,0 @@ -{{- $books := where .Site.Pages "Section" "library" -}} -{{- $book := index (where $books "File.BaseFileName" (.Get 0)) 0 -}} - -{{- if $book }} -
    -
    - -
    -

    - {{ $book.Title }} -

    - - {{- $rating := $book.Params.rating -}} - {{- $fullStars := math.Floor $rating -}} -
    - 评分: - {{- range seq $fullStars }} - ★ - {{- end -}} -
    - -
    - {{ $book.Content }} -
    -
    -{{- else }} -

    ⚠️ 无法找到书评: {{ .Get 0 }}

    -{{- end }} diff --git a/layouts/_shortcodes/daysfrom.html b/layouts/_shortcodes/daysfrom.html deleted file mode 100644 index c2750480..00000000 --- a/layouts/_shortcodes/daysfrom.html +++ /dev/null @@ -1,12 +0,0 @@ -{{- $date := .Get 0 -}} -{{- $t := time $date -}} -{{- $now := now -}} -{{- $durSeconds := sub $now.Unix $t.Unix | int -}} - -{{- $days := div $durSeconds 86400 -}} - -{{- if lt $days 0 -}} - {{ mul $days -1 }} -{{- else -}} - {{ $days }} -{{- end -}} diff --git a/layouts/_shortcodes/fedicard.html b/layouts/_shortcodes/fedicard.html deleted file mode 100644 index 1f10ebeb..00000000 --- a/layouts/_shortcodes/fedicard.html +++ /dev/null @@ -1,148 +0,0 @@ -{{- $url := .Get 0 -}} -{{- $parsed := urls.Parse $url -}} -{{- $parts := split $parsed.Path "/" -}} -{{- $id := index $parts (sub (len $parts) 1) -}} -{{- $instance := printf "%s://%s" $parsed.Scheme $parsed.Host -}} -{{- $apiUrl := printf "%s/api/v1/statuses/%s" $instance $id -}} -{{- $data := resources.GetRemote $apiUrl -}} -{{- $json := $data | transform.Unmarshal -}} -{{- $author := $json.account -}} - -{{- $publishedAt := time $json.created_at -}} - -{{- $avatarSrc := $author.avatar -}} -{{- with resources.GetRemote $author.avatar -}} - {{- with .Resize "88x88 q85 webp" -}} - {{- $avatarSrc = .RelPermalink -}} - {{- end -}} -{{- end -}} - -{{- /* Count image attachments */ -}} -{{- $imgCount := 0 -}} -{{- range $json.media_attachments -}}{{- if eq .type "image" -}}{{- $imgCount = add $imgCount 1 -}}{{- end -}}{{- end -}} -{{- $cId := printf "sc-%s" (md5 $url) -}} -{{- $dId := printf "sd-%s" (md5 $url) -}} - - - -{{- /* Shared lightbox — injected once per page via DOM API (no innerHTML) */ -}} - diff --git a/layouts/_shortcodes/float-image.html b/layouts/_shortcodes/float-image.html deleted file mode 100644 index 2c03992d..00000000 --- a/layouts/_shortcodes/float-image.html +++ /dev/null @@ -1,13 +0,0 @@ -{{ $src := .Get 0 }} - -{{ $float := .Get 1 }} -{{ $padding := "" }} -{{ if eq $float "left" }} - {{ $padding = "pr-4 sm:pr-6 md:pr-8" }} -{{ else }} - {{ $padding = "pl-4 sm:pl-6 md:pr-8" }} -{{ end }} - -
    - -
    diff --git a/layouts/_shortcodes/gallery.html b/layouts/_shortcodes/gallery.html deleted file mode 100644 index da8e4ab5..00000000 --- a/layouts/_shortcodes/gallery.html +++ /dev/null @@ -1,3 +0,0 @@ -
    - {{ .Page.RenderString .Inner }} -
    diff --git a/layouts/_shortcodes/link.html b/layouts/_shortcodes/link.html deleted file mode 100644 index 9f7ea3e5..00000000 --- a/layouts/_shortcodes/link.html +++ /dev/null @@ -1,15 +0,0 @@ -{{ if eq (.Get "type") "podcast" }} - - {{ .Get - -{{ else }} - -

    {{ .Get "title" }}

    -
    -{{ end }} diff --git a/layouts/_shortcodes/linkding-bookmarks.html b/layouts/_shortcodes/linkding-bookmarks.html deleted file mode 100644 index fd54c0d2..00000000 --- a/layouts/_shortcodes/linkding-bookmarks.html +++ /dev/null @@ -1,68 +0,0 @@ -{{/* -Shortcode to display Linkding RSS feed bookmarks -Usage: {{< linkding-bookmarks >}} -*/}} - -{{/* Fetch RSS feed from remote URL with caching */}} -{{ $url := "https://links.eltr.ac/feeds/shared?limit=12" }} -{{ $cacheKey := print $url (now.Format "2006-01-02") }} -{{ $rssContent := resources.GetRemote $url - (dict - "key" $cacheKey - "headers" (dict "User-Agent" "Hugo/1.0") - ) -}} - -{{ if $rssContent }} - {{/* Parse RSS XML */}} - {{ $rss := $rssContent.Content | transform.Unmarshal }} - - {{ if $rss }} - {{/* Get channel items */}} - {{ $items := $rss.channel.item }} - - {{ if $items }} -
    - {{ range $items }} -
    -

    - - {{ .title }} - -

    - {{ if .description }} -

    {{ .description }}

    - {{ end }} - {{ if .category }} -
    - {{ if reflect.IsSlice .category }} - {{ range .category }} - - #{{ . }} - - {{ end }} - {{ else }} - - #{{ .category }} - - {{ end }} -
    - {{ end }} -
    - 于 {{ dateFormat "2006-01-02" .pubDate }} 添加至书签 -
    -
    - {{ end }} -
    - {{ else }} -

    No bookmarks found in RSS feed.

    - {{ end }} - {{ else }} -

    Unable to parse RSS feed.

    - {{ end }} -{{ else }} -

    Unable to fetch RSS feed from remote URL.

    -{{ end }} diff --git a/layouts/_shortcodes/linkrank.html b/layouts/_shortcodes/linkrank.html deleted file mode 100644 index 19de1fe6..00000000 --- a/layouts/_shortcodes/linkrank.html +++ /dev/null @@ -1,2 +0,0 @@ -{{ partial "stats/external-link-rank" . }} - diff --git a/layouts/_shortcodes/music.html b/layouts/_shortcodes/music.html deleted file mode 100644 index 8017566d..00000000 --- a/layouts/_shortcodes/music.html +++ /dev/null @@ -1,53 +0,0 @@ -{{ $title := .Get "title" }} -{{ $cover := .Get "cover" }} -{{ $artist := .Get "artist" }} -{{ $isAlbum := .Get "album" }} - -{{ $platforms := slice "bandcamp" "apple" "spotify" "netease" "tidal" }} -{{ $page := . }} - -
    - -
    -
    - {{ $title }} music cover - {{ if $isAlbum }} -
    - {{ end }} -
    -
    -

    - {{ $title }} - {{ if $isAlbum }} - - {{ end }} -

    -

    {{ $artist }}

    -
    -
    - -
    - {{ range $platforms }} - {{ $code := . }} - {{ $langcode := (printf "music.%s" $code) }} - {{ $name := T $langcode }} - {{ with $page.Get . }} - - - {{ $name }} - - {{ end }} - {{ end }} -
    -
    diff --git a/layouts/_shortcodes/opml-links.html b/layouts/_shortcodes/opml-links.html deleted file mode 100644 index 541e0fee..00000000 --- a/layouts/_shortcodes/opml-links.html +++ /dev/null @@ -1,19 +0,0 @@ -{{ $opml := hugo.Data.rss }} - -
    -{{ range shuffle $opml.body.outline }} - {{ $title := index . "-title" }} - {{ $url := index . "-htmlUrl" }} - {{ if and $title $url }} - {{ $parts := split $url "/" }} - {{ $url := printf "%s//%s/" (index $parts 0) (index $parts 2) }} - -

    {{ $title }}

    -
    - {{ end }} -{{ end }} -
    diff --git a/layouts/_shortcodes/postcount.html b/layouts/_shortcodes/postcount.html deleted file mode 100644 index 84c6378f..00000000 --- a/layouts/_shortcodes/postcount.html +++ /dev/null @@ -1 +0,0 @@ -{{ len (where .Site.RegularPages "Section" "!=" "") }} diff --git a/layouts/_shortcodes/quotecard.html b/layouts/_shortcodes/quotecard.html deleted file mode 100644 index 941280ce..00000000 --- a/layouts/_shortcodes/quotecard.html +++ /dev/null @@ -1,11 +0,0 @@ -
    - {{ .Inner | markdownify }} -
    diff --git a/layouts/_shortcodes/right.html b/layouts/_shortcodes/right.html deleted file mode 100644 index 775dcc04..00000000 --- a/layouts/_shortcodes/right.html +++ /dev/null @@ -1 +0,0 @@ -

    {{ index .Params 0 | markdownify }}

    diff --git a/layouts/_shortcodes/wordcount.html b/layouts/_shortcodes/wordcount.html deleted file mode 100644 index b2f5b414..00000000 --- a/layouts/_shortcodes/wordcount.html +++ /dev/null @@ -1,7 +0,0 @@ -{{ $total := 0 }} - -{{ range where .Site.RegularPages "Section" "!=" "" }} - {{ $total = add $total .WordCount }} -{{ end }} - -{{ $total }} diff --git a/layouts/archive.html b/layouts/archive.html deleted file mode 100644 index 82f0f49f..00000000 --- a/layouts/archive.html +++ /dev/null @@ -1,23 +0,0 @@ -{{ define "main" }} -
    - {{ partial "taxonomy/pagefind" . }} -
    - {{ range .Site.RegularPages.GroupByDate "2006" }} - {{ partial "components/section-title" (dict - "Left" .Key - "Right" (T "archivePage.pageCount" (len .Pages)) - )}} -
      - {{ range .Pages }} -
    1. - -
    2. - {{ end }} -
    - {{ end }} -
    -
    -{{ end }} diff --git a/layouts/article/page.html b/layouts/article/page.html deleted file mode 100644 index e093e810..00000000 --- a/layouts/article/page.html +++ /dev/null @@ -1,3 +0,0 @@ -{{ define "main" }} - {{ partial "template/post-page" . }} -{{ end }} diff --git a/layouts/article/section.html b/layouts/article/section.html deleted file mode 100644 index 5072f416..00000000 --- a/layouts/article/section.html +++ /dev/null @@ -1,38 +0,0 @@ -{{ define "main" }} - {{ $pages := .Pages }} - {{ $categories := slice }} - -
    -
    -
    {{ .Content }}
    - - {{ $remainingMonthsToOpen := 3 }} - {{ range $pages.GroupByDate "2006" -}} -
    - {{ partial "components/section-title" (dict - "Left" .Key - "Right" (T "archivePage.postCountAnnual" (len .Pages)) - )}} - - {{ range .Pages.GroupByDate "January" }} -
    - -

    - {{ .Key }} - {{ T "archivePage.postCountMonthly" (len .Pages) }} -

    -
    -
      - {{ range .Pages }} - {{ partial "items/post-small" . }} - {{ end }} -
    -
    - {{ $remainingMonthsToOpen = sub $remainingMonthsToOpen 1 }} - {{ end }} -
    - {{ end }} -
    -
    -{{ end }} diff --git a/layouts/baseof.404.html b/layouts/baseof.404.html deleted file mode 100644 index 5140f5f0..00000000 --- a/layouts/baseof.404.html +++ /dev/null @@ -1,9 +0,0 @@ - - - {{ partial "head.html" . }} - -
    - {{ block "main" . }}{{ end }} -
    - - diff --git a/layouts/baseof.html b/layouts/baseof.html deleted file mode 100644 index f26dea17..00000000 --- a/layouts/baseof.html +++ /dev/null @@ -1,14 +0,0 @@ - - - {{ partial "head.html" . }} - -
    - {{ partial "header.html" . }} - {{ block "main" . }}{{ end }} - {{ partial "footer.html" . }} -
    - {{ partial "components/svg-filters" . }} - {{ partial "components/shade-mask" . }} - {{ partial "scripts.html" . }} - - diff --git a/layouts/baseof.page.html b/layouts/baseof.page.html deleted file mode 100644 index 753d37ff..00000000 --- a/layouts/baseof.page.html +++ /dev/null @@ -1,14 +0,0 @@ - - - {{ partial "head" . }} - -
    - {{ if eq .Section "" }}{{ partial "header" . }}{{ end }} - {{ block "main" . }}{{ end }} - {{ if eq .Section "" }}{{ partial "footer" . }}{{ end }} -
    - {{ partial "components/svg-filters" . }} - {{ partial "components/shade-mask" . }} - {{ partial "scripts" . }} - - diff --git a/layouts/baseof.section.html b/layouts/baseof.section.html deleted file mode 100644 index 5fc6ecef..00000000 --- a/layouts/baseof.section.html +++ /dev/null @@ -1,15 +0,0 @@ - - - {{ partial "head.html" . }} - -
    - {{ partial "header.html" . }} - {{ partial "home/home-nav" . }} - {{ block "main" . }}{{ end }} - {{ partial "footer.html" . }} -
    - {{ partial "components/svg-filters" . }} - {{ partial "components/shade-mask" . }} - {{ partial "scripts.html" . }} - - diff --git a/layouts/blank.html b/layouts/blank.html deleted file mode 100644 index 799c398a..00000000 --- a/layouts/blank.html +++ /dev/null @@ -1,10 +0,0 @@ -{{ define "main" }} -
    - {{ partial "components/logo" (dict "imageClass" "w-20 md:w-[7rem] my-4" "ctx" .) }} -
    - {{ .Content }} -
    -

    * * *

    -
    -{{ end }} diff --git a/layouts/cards/page.html b/layouts/cards/page.html deleted file mode 100644 index 7c97ce1a..00000000 --- a/layouts/cards/page.html +++ /dev/null @@ -1,12 +0,0 @@ -{{ define "main" }} -
    - {{ partial "components/logo" (dict - "link" "cards" - "class" "round-sticker absolute -top-4 -right-4 w-16 h-16 z-1 -rotate-5" - "ctx" . - "imageClass" "w-full" - ) }} - {{ partial "items/card" (dict "context" .) }} - {{ partial "components/backlinks" (dict "filename" .File.BaseFileName "type" "cards" "context" .) }} -
    -{{ end }} diff --git a/layouts/cards/section.html b/layouts/cards/section.html deleted file mode 100644 index 2ea36990..00000000 --- a/layouts/cards/section.html +++ /dev/null @@ -1,29 +0,0 @@ -{{ define "main" }} -
    - -
    -

    「卡片」分区已经弃用,这里的内容不会再更新。

    -
    - - {{- $pages := .RegularPages }} - {{- $featured := first 6 $pages }} - {{- $rest := after 6 $pages }} -
    - {{- range $featured }} - {{ partial "items/card" (dict - "context" . - "summary" true - "summaryClass" "text-base!") }} - {{- end }} -
    - -
    - {{- range $rest }} - {{ .Title }} - {{- end }} -
    -
    -{{ end }} diff --git a/layouts/fiction/page.html b/layouts/fiction/page.html deleted file mode 100644 index 37e91c86..00000000 --- a/layouts/fiction/page.html +++ /dev/null @@ -1,24 +0,0 @@ -{{ define "main" }} -
    -
    - {{ partial "components/logo" (dict - "link" "fiction/" - "ctx" . - "imageClass" "block w-[10rem]" - "class" "flex justify-center" - ) }} -

    {{ .Title }}

    -
    - {{ partial "components/date" . }} · - {{ partial "components/wordcount" . }}
    -
    - - {{ partial "content" . }} - {{ partial "posts/webmention" . }} - {{ partial "components/back-to-top" . }} - {{ partial "components/microformats" . }} -
    -{{ end }} diff --git a/layouts/fiction/section.html b/layouts/fiction/section.html deleted file mode 100644 index 9bbf122f..00000000 --- a/layouts/fiction/section.html +++ /dev/null @@ -1,25 +0,0 @@ -{{ define "main" }} -
    -
    {{ .Content }}
    -
    -
    - {{- range .Pages }} - - {{ $rotationDeg := add (math.Floor (mul (math.Rand) 7)) -4 }} - {{- $deg := int $rotationDeg -}} - - {{ $steps := slice 60 70 80 90 100 }} - {{ $opacity := index $steps (int (math.Floor (mul (math.Rand) 5))) }} - {{ $opacityClass := printf "opacity-%d" $opacity }} - - - {{- end }} -
    -
    -
    -{{ end }} diff --git a/layouts/highlights.html b/layouts/highlights.html deleted file mode 100644 index 0865b063..00000000 --- a/layouts/highlights.html +++ /dev/null @@ -1,20 +0,0 @@ -{{ define "main" }} - -{{ end }} diff --git a/layouts/home.html b/layouts/home.html deleted file mode 100644 index a74fee5d..00000000 --- a/layouts/home.html +++ /dev/null @@ -1,8 +0,0 @@ -{{ define "main" }} - {{ partial "home/microformats" . }} -
    - {{ partial "home/home-nav" . }} - {{ partial "home/latest-posts" . }} - {{ partial "home/more-links" . }} -
    -{{ end }} diff --git a/layouts/library/page.html b/layouts/library/page.html deleted file mode 100644 index fbc5d15f..00000000 --- a/layouts/library/page.html +++ /dev/null @@ -1,62 +0,0 @@ -{{ define "main" }} -
    -
    -
    - - {{ partial "components/logo" - (dict - "link" "library" - "ctx" . - "class" "round-sticker absolute w-8 h-8 md:w-20 md:h-20 top-8 -right-8 md:-right-12" - "imageClass" "w-full") }} -
    -

    {{ .Title }}

    - {{- $rating := .Params.rating -}} - {{- $fullStars := math.Floor $rating -}} -

    - {{ with .Params.authors }}{{ delimit . ", " }}{{ end }} -

    -

    - {{- range seq $fullStars }} - ⭐ - {{- end -}} -

    -
    - - {{ partial "content" . }} - -
    -

    于 {{ partial "components/date" . }} 读完

    -

    {{ partial "components/tags" . }}

    -
    - - {{ partial "components/backlinks" (dict "filename" .File.BaseFileName "type" "library" "context" .) }} - {{ partial "posts/webmention" . }} - {{ partial "components/back-to-top.html" . }} - {{ partial "components/microformats" . }} - - - - {{ with .Params.authors }} - {{ $author := index . 0 }} - {{ $term := index $.Site.Taxonomies.authors $author }} - {{ if and $term (gt (len $term.Pages) 1) }} -

    我读过的 {{ $author }} 的其它书籍

    -
    - {{ range $term.Pages }} - {{ if ne .File.UniqueID $.File.UniqueID }} -
    - {{ partial "items/book" (dict "ctx" .) }} -
    - {{ end }} - {{ end }} -
    - {{ end }} - {{ end }} -
    -{{ end }} diff --git a/layouts/library/section.html b/layouts/library/section.html deleted file mode 100644 index bb297a0d..00000000 --- a/layouts/library/section.html +++ /dev/null @@ -1,85 +0,0 @@ -{{ define "main" }} - -{{ $isLibraryHome := eq .RelPermalink "/library/" }} -{{ $books := .RegularPages }} -{{ if $isLibraryHome }} - {{ $sections := (sort .Sections "value" "asc") }} - {{ range $sections }} - {{ $books = $books | append .RegularPages }} - {{ end }} -{{ end }} - -{{ $years := slice }} -{{ range .Sections }} - {{ $years = $years | append .Title }} -{{ end }} -{{ $years = $years | collections.Reverse }} - -
    -
    {{ .Content }}
    - -
    - - {{ if $isLibraryHome }} - {{ partial "components/section-title" (dict - "Left" "最近读的书" - "Right" (printf "共 %d 篇书评" (len $books)) - )}} - {{ end }} - -
    - {{ $booksToShow := $books }} - {{ if $isLibraryHome }} - {{ $booksToShow = first 18 $books }} - {{ end }} - {{ range $i, $book := $booksToShow }} -
    - {{ partial "items/book" (dict - "ctx" $book - ) }} -
    - {{ end }} -
    - - - - {{ if $isLibraryHome }} - - -
    - - {{ T "library.viewAllThisYear" }} - → - -

    - {{ $currentYear := printf "%d" now.Year }} - {{ range $i, $year := $years }} - {{ if ne $year $currentYear }} - {{ $year }} 年 - {{ if not (eq $i (sub (len $years) 1)) }}·{{ end }} - {{ end }} - {{ end }} -

    -
    - - - {{ $goodBooks := where $books ".Params.rating" "==" 5 }} - {{ partial "components/section-title" (dict - "Left" "推荐好书" - "Right" (printf "共 %d 本" (len $goodBooks)) - )}} -
    - {{ range $goodBooks }} - {{ partial "items/book" (dict - "ctx" . - "NoViewTransition" true - ) }} - {{ end }} -
    - - {{ end }} - - -
    -
    -{{ end }} diff --git a/layouts/page.html b/layouts/page.html deleted file mode 100644 index ab703e2e..00000000 --- a/layouts/page.html +++ /dev/null @@ -1,9 +0,0 @@ -{{ define "main" }} -
    -
    - {{ partial "posts/toc" . }} - {{ partial "utils/render" .Content }} -
    -
    -{{ end }} diff --git a/layouts/rss.xml b/layouts/rss.xml deleted file mode 100644 index 026d9a87..00000000 --- a/layouts/rss.xml +++ /dev/null @@ -1,63 +0,0 @@ -{{- $authorEmail := "" }} -{{- with site.Params.author }} - {{- if reflect.IsMap . }} - {{- with .email }} - {{- $authorEmail = . }} - {{- end }} - {{- end }} -{{- end }} - -{{- $authorName := "" }} -{{- with site.Params.author }} - {{- if reflect.IsMap . }} - {{- with .name }} - {{- $authorName = . }} - {{- end }} - {{- else }} - {{- $authorName = . }} - {{- end }} -{{- end }} - -{{- $pctx := . }} -{{- if .IsHome }}{{ $pctx = .Site }}{{ end }} -{{- $pages := slice }} -{{- if or $.IsHome $.IsSection }} -{{- $pages = $pctx.RegularPages }} -{{- else }} -{{- $pages = $pctx.Pages }} -{{- end }} -{{- $limit := .Site.Config.Services.RSS.Limit }} -{{- if ge $limit 1 }} -{{- $pages = $pages | first $limit }} -{{- end }} -{{- printf "" | safeHTML }} -{{- printf "" | safeHTML }} - - - {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} | {{ end }}{{ .Site.Title }}{{ end }} - {{ .Permalink }} - {{ .Site.Title }}{{ if ne .Title .Site.Title }}{{ with .Title }}:在「{{.}}」分区下的最新内容{{ end }}{{ end }} - Hugo - {{ site.Language.LanguageCode }}{{ with $authorEmail }} - {{.}}{{ with $authorName }} ({{ . }}){{ end }}{{ end }}{{ with $authorEmail }} - {{ . }}{{ with $authorName }} ({{ . }}){{ end }}{{ end }}{{ with .Site.Copyright }} - {{ . }}{{ end }}{{ if not .Date.IsZero }} - {{ (index $pages.ByLastmod.Reverse 0).Lastmod.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}{{ end }} - {{- with .OutputFormats.Get "RSS" }} - {{ printf "" .Permalink .MediaType | safeHTML }} - {{- end }} - {{- range $pages }} - - {{ .Title }} - {{ .Permalink }} - {{ .PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} - {{- with $authorEmail }}{{ . }}{{ with $authorName }} ({{ . }}){{ end }}{{ end }} - {{ .Permalink }} - - {{ .Content | transform.XMLEscape | safeHTML }} - {{ printf `` .Permalink (T "rss_comment_link") | transform.XMLEscape | safeHTML }} - - - {{- end }} - - diff --git a/layouts/stats.html b/layouts/stats.html deleted file mode 100644 index ea0f3e2a..00000000 --- a/layouts/stats.html +++ /dev/null @@ -1,30 +0,0 @@ -{{ define "main" }} -
    -
    - {{ partial "stats/stats-table" . }} -
    - -
    -

    每月文章字数

    - {{ partial "stats/word-count-chart" . }} -
    - -
    -

    文章发布时间段分布

    -
    - {{ partial "stats/publish-time-chart" . }} -
    -
    -
    - -
    -

    内部链接图谱

    -

    站内各个页面之间通过超链接建立起来的联系,你可以通过视觉化的双向链接逛逛我的博客。图谱可以缩放和拖拽,你也可以点击这里全屏浏览。

    -
    - -
    -
    -
    -
    -{{ end }} diff --git a/layouts/tags/taxonomy.html b/layouts/tags/taxonomy.html deleted file mode 100644 index d716e87e..00000000 --- a/layouts/tags/taxonomy.html +++ /dev/null @@ -1,12 +0,0 @@ -{{ define "main" }} -
    -
    - {{ partial "utils/render" .Content }} -
    -

    切面

    - {{ partial "taxonomy/all-tags" . }} -
    -

    开始速切!

    -

    快速切换到你想去的地方。

    - {{ partial "taxonomy/pagefind" . }} -{{ end }} diff --git a/layouts/taxonomy.html b/layouts/taxonomy.html deleted file mode 100644 index 4ae858d9..00000000 --- a/layouts/taxonomy.html +++ /dev/null @@ -1,13 +0,0 @@ -{{ define "main" }} -
    -
    - {{ partial "utils/render" .Content }} -
    -

    文章系列

    - {{ partial "taxonomy/all-categories.html" . }} -
    -

    尘封的系列

    -

    这些文章系列已经不再更新。

    - {{ partial "taxonomy/archived-categories.html" . }} -
    -{{ end }} diff --git a/layouts/term.html b/layouts/term.html deleted file mode 100644 index 743fc69e..00000000 --- a/layouts/term.html +++ /dev/null @@ -1,15 +0,0 @@ -{{ define "main" }} -
    -
    - {{ with .Content }} -
    - {{ . }}
    -
    - {{ end }} - {{ partial "term/term-posts" . }} - {{ partial "term/term-weeklies" . }} - {{ partial "term/term-fictions" . }} - {{ partial "term/term-books" . }} -
    -
    -{{ end }} diff --git a/layouts/uncategorized.html b/layouts/uncategorized.html deleted file mode 100644 index a269a18a..00000000 --- a/layouts/uncategorized.html +++ /dev/null @@ -1,22 +0,0 @@ -{{ define "main" }} -
    - {{ partial "header" . }} - {{ partial "home/home-nav" . }} -
    -

    {{ .Content }}

    -
    - - {{ $posts := .Site.GetPage "section" "posts" }} - {{ $essays := .Site.GetPage "section" "essays" }} - {{ $combined := $posts.Pages | append $essays.Pages }} - {{ $uncategorized := where $combined "Params.categories" "eq" nil }} - {{ if $uncategorized }} -
      - {{ range $uncategorized }} - {{ partial "items/post-small" . }} - {{ end }} -
    - {{ end }} -
    -{{ partial "footer.html" . }} -{{ end }} diff --git a/layouts/weekly/page.html b/layouts/weekly/page.html deleted file mode 100644 index e093e810..00000000 --- a/layouts/weekly/page.html +++ /dev/null @@ -1,3 +0,0 @@ -{{ define "main" }} - {{ partial "template/post-page" . }} -{{ end }} diff --git a/layouts/weekly/section.html b/layouts/weekly/section.html deleted file mode 100644 index c1bc53b9..00000000 --- a/layouts/weekly/section.html +++ /dev/null @@ -1,41 +0,0 @@ -{{ define "main" }} - {{ $pages := .Pages }} - {{ $categories := slice }} - -
    -
    -
    {{ .Content }}
    - - - {{ $remainingMonthsToOpen := 3 }} - {{ range $pages.GroupByDate "2006" -}} -
    - {{ partial "components/section-title" (dict - "Left" .Key - "Right" (T "archivePage.postCountAnnual" (len .Pages)) - )}} - - {{ range .Pages.GroupByDate "January" }} -
    -

    - {{ .Key }} -

    - -
    - {{ $remainingMonthsToOpen = sub $remainingMonthsToOpen 1 }} - {{ end }} -
    - {{ end }} -
    -
    -{{ end }} diff --git a/package.json b/package.json deleted file mode 100644 index 3cf3ad7b..00000000 --- a/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "geek-death-project", - "version": "1.0.0", - "description": "![](screenshot.png)", - "main": "index.js", - "devDependencies": { - "@unocss/cli": "^66.3.3", - "@unocss/preset-wind4": "^66.3.3", - "unocss": "^66.3.3" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build:uno": "unocss \"{layouts,content}/**/*.{html,md}\" -o assets/css/uno.css --watch", - "build:uno:prod": "unocss \"{layouts,content}/**/*.{html,md}\" -o assets/css/uno.css" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@remy/webmention": "^1.5.0", - "pagefind": "1.5.0" - } -} diff --git a/pagefind.yml b/pagefind.yml deleted file mode 100644 index 3419a66f..00000000 --- a/pagefind.yml +++ /dev/null @@ -1,3 +0,0 @@ -site: public -exclude_selectors: - - '.pagefind-exclude' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 4439f762..00000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,2191 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@remy/webmention': - specifier: ^1.5.0 - version: 1.5.0 - pagefind: - specifier: 1.5.0 - version: 1.5.0 - devDependencies: - '@unocss/cli': - specifier: ^66.3.3 - version: 66.3.3 - '@unocss/preset-wind4': - specifier: ^66.3.3 - version: 66.3.3 - unocss: - specifier: ^66.3.3 - version: 66.3.3(postcss@8.5.6)(vite@6.3.5(jiti@2.4.2))(vue@3.5.17) - -packages: - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@antfu/install-pkg@1.1.0': - resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - - '@antfu/utils@8.1.1': - resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} - - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/types@7.28.1': - resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} - engines: {node: '>=6.9.0'} - - '@esbuild/aix-ppc64@0.25.6': - resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.6': - resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.6': - resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.6': - resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.6': - resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.6': - resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.6': - resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.6': - resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.6': - resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.6': - resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.6': - resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.6': - resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.6': - resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.6': - resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.6': - resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.6': - resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.6': - resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.6': - resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.6': - resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.6': - resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.6': - resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.6': - resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.25.6': - resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.6': - resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.6': - resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.6': - resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@iconify/types@2.0.0': - resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - - '@iconify/utils@2.3.0': - resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} - - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} - - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} - - '@pagefind/darwin-arm64@1.5.0': - resolution: {integrity: sha512-OXQVlxALU9+Lz/LxkAa+RvaxY1cnRKUDCuwl9o8PY5Lg/znP573y4WIbVOOIz8Bv7uj7r00TGy7pD+NSLMJGBw==} - cpu: [arm64] - os: [darwin] - - '@pagefind/darwin-x64@1.5.0': - resolution: {integrity: sha512-+LK1Xq5n/B0hHc08DW61SnfIlfLKyXZ1oKcbfZ1MimE7Rn0Q6R0VI/TlC04f/JDPm+67zAOwPGizzvefOi5vqQ==} - cpu: [x64] - os: [darwin] - - '@pagefind/freebsd-x64@1.5.0': - resolution: {integrity: sha512-kicDfUF9gn/z06NimTwNlZXF8z3pLsN3BIPPt6N8unuh0n55fr64tVs2p3a5RKYmQkJGjPfOE/C9GI5YTEpURg==} - cpu: [x64] - os: [freebsd] - - '@pagefind/linux-arm64@1.5.0': - resolution: {integrity: sha512-e5rDB3wPm89bcSLiatKBDTrVTbsMQrrtkXRaAoUJYU0C1suXVvEzZfjmMvrUDvYhZBx/Ls8hGuGxlqSJBz3gDg==} - cpu: [arm64] - os: [linux] - - '@pagefind/linux-x64@1.5.0': - resolution: {integrity: sha512-vh52DcBiF/mRMmq+Rwt3M3RgEWgl00jFk/M5NWhLEHJFq4+papQXwbyKbi7cNlxaeYrKx6wOfW3fm9cftfc/Kg==} - cpu: [x64] - os: [linux] - - '@pagefind/windows-arm64@1.5.0': - resolution: {integrity: sha512-kg+szZwffZdyWn6SL6RHjAYjhSvJ2bT4qkv3KepGsbmD9fuSHUSC+2kydDneDVUA9qEDRf9uSFoEAsXsp1/JKA==} - cpu: [arm64] - os: [win32] - - '@pagefind/windows-x64@1.5.0': - resolution: {integrity: sha512-8eOCmB8lnpyvwz+HrcTXLuBxhj7UseAFh6KGEXRe8UCcAfVQih+qPy/4akJRezViI+ONijz9oi7HpMkw9rdtBg==} - cpu: [x64] - os: [win32] - - '@polka/url@1.0.0-next.29': - resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - - '@quansync/fs@0.1.3': - resolution: {integrity: sha512-G0OnZbMWEs5LhDyqy2UL17vGhSVHkQIfVojMtEWVenvj0V5S84VBgy86kJIuNsGDp2p7sTKlpSIpBUWdC35OKg==} - engines: {node: '>=20.0.0'} - - '@remy/webmention@1.5.0': - resolution: {integrity: sha512-50HD/WfXlykMgQxX5Oz9Kzl8WqBbkdXP58mbd7VkBh4ZcKBixNoObyeCeomtTPW36kUMBe9icF4MofF4FC42mw==} - hasBin: true - - '@rollup/rollup-android-arm-eabi@4.45.0': - resolution: {integrity: sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.45.0': - resolution: {integrity: sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.45.0': - resolution: {integrity: sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.45.0': - resolution: {integrity: sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.45.0': - resolution: {integrity: sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.45.0': - resolution: {integrity: sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.45.0': - resolution: {integrity: sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm-musleabihf@4.45.0': - resolution: {integrity: sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==} - cpu: [arm] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-arm64-gnu@4.45.0': - resolution: {integrity: sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm64-musl@4.45.0': - resolution: {integrity: sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-loongarch64-gnu@4.45.0': - resolution: {integrity: sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-powerpc64le-gnu@4.45.0': - resolution: {integrity: sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-gnu@4.45.0': - resolution: {integrity: sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-musl@4.45.0': - resolution: {integrity: sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-s390x-gnu@4.45.0': - resolution: {integrity: sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-gnu@4.45.0': - resolution: {integrity: sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-musl@4.45.0': - resolution: {integrity: sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rollup/rollup-win32-arm64-msvc@4.45.0': - resolution: {integrity: sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.45.0': - resolution: {integrity: sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.45.0': - resolution: {integrity: sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==} - cpu: [x64] - os: [win32] - - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - - '@unocss/astro@66.3.3': - resolution: {integrity: sha512-q26EfadSMmEXZpWDKsJF9anBCfhYDmWljVpDZ2Wo8K48IbZMUXrWfiAiUc6ijE/A/rADfHk8bp3a3GE01t3I9A==} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 - peerDependenciesMeta: - vite: - optional: true - - '@unocss/cli@66.3.3': - resolution: {integrity: sha512-U0HoDcwi/DetqP5zDT3dfxG94pC3TI0PfxmpdTfPY7xEylIdLbV89fb70CvJVysDSQJIuw6TYwqS1ZlHoYNKTA==} - engines: {node: '>=14'} - hasBin: true - - '@unocss/config@66.3.3': - resolution: {integrity: sha512-D/UxnAmkabapqWU4tF85dWWhNfCUyNutWmd4AD2VsQRZOykufJedLV74r3Z3XhoPJn4IGr3BKZm5/rflf5viDg==} - engines: {node: '>=14'} - - '@unocss/core@66.3.3': - resolution: {integrity: sha512-6WFLd92TJelVQARtCGaF+EgEoHKIVe43gkGXVoWILu0HUDRWdhv+cpcyX0RTJV22Y976AxeneU7/zmhAh+CXNg==} - - '@unocss/extractor-arbitrary-variants@66.3.3': - resolution: {integrity: sha512-TXzjH6FcITQ8V2x7ETHgVOlAHf3ll/ysxL+W4fMROm8jP/o7jvsg36tRfOwU0sDGo/qoCPux82ix9e6/JW0oqQ==} - - '@unocss/inspector@66.3.3': - resolution: {integrity: sha512-NsK1WRWez2Mzk4+ophtBdXel8nGaPkIDa9lYSFMdKLF/1jNW23txeEL8CsD6/CK8K0BsR11rhLKhUrzyrjfBSQ==} - - '@unocss/postcss@66.3.3': - resolution: {integrity: sha512-VKq+BtfPIZbLeAeZFprtKZJAyFBOqA8qpQm+vmWBiBia70JzkwfF2SMNIHiGt022yRo9ZmjnI9uRTxSzqXUsUQ==} - engines: {node: '>=14'} - peerDependencies: - postcss: ^8.4.21 - - '@unocss/preset-attributify@66.3.3': - resolution: {integrity: sha512-22+0Cqqu09q+xHfZ3Wk8Coxe5m6PmpgWz4U5xrEC8056UfG3Q1KEqoCxy2wySJIq8SqxQ30Nlll7oMa31B8Krw==} - - '@unocss/preset-icons@66.3.3': - resolution: {integrity: sha512-Bmhiev05BN/horlgnyZ8gzQWZKd7oVpUBWD66X7U/dgkLdO6B5GIIsdO5Fi7JLeMDmyXm6vlYk0YQhiTbx8l9w==} - - '@unocss/preset-mini@66.3.3': - resolution: {integrity: sha512-pz8rgvHRYS/6fsZNtG7iArLzwANnLy5GkHY/lbuqkWhO2S2Nf7kpJCbR/uV/XeuFsLnYcZW3NLOmelfvZvJamA==} - - '@unocss/preset-tagify@66.3.3': - resolution: {integrity: sha512-L1Ez7Y4uBaW+wiv1BOQygpfhseSt3EZ53jqkl7fxl1EKVsJy6SuZgJxlXEHUYp9xYdSp6EHq2CfL8UevaR+loA==} - - '@unocss/preset-typography@66.3.3': - resolution: {integrity: sha512-aQXiGCObvWD9grfUpm0d5nzN+Cpvag0rHP39UjUKb0xSTzY09VzwDrua4kWVO5wJLNK6/L70osyhEgmC3qToxA==} - - '@unocss/preset-uno@66.3.3': - resolution: {integrity: sha512-Tiho4LidpuMHrB19GHTU6XrL0A5eFELHk9ebQ/3WeTy+K/9a6Hn5zsHJe5UCtOsEcUdKB33oZx0hXUp93hb/YQ==} - - '@unocss/preset-web-fonts@66.3.3': - resolution: {integrity: sha512-ysKZeC7TXxRiqnNL9GxZFGMKFAHXrcaqozPaEOIJ40dvzbJt8IMLyFndZkcFMcgDCV0pFh/y37mGxxxARO9+pQ==} - - '@unocss/preset-wind3@66.3.3': - resolution: {integrity: sha512-iXmjvPqvmPTo4z7epQDqHxzlGRsbLJEgfETqTrRJeagvFG7Gs+ajS8cQhbf6wL01dSRHjvhVXi3MsIvqfHHXOw==} - - '@unocss/preset-wind4@66.3.3': - resolution: {integrity: sha512-JSJTXVJel6kX+u4Ktt6JGnukYWYhKxmjgORTwclUpokRHgEoD+xsh0Rz4YGJ1fWSnzNslNQhWP9yDRByVPHWwA==} - - '@unocss/preset-wind@66.3.3': - resolution: {integrity: sha512-3Mxl/TDPcv8nNKdFe3WKdlXE6de+lCaaizEH86BILW3ZeyPU9aKzWcZIoxohla0a6zMxDQ2+Gf+7EwaOvpqo7Q==} - - '@unocss/reset@66.3.3': - resolution: {integrity: sha512-VIeR/mIcCL89/1uA1KM1QCYca4aeIGqEHMTJL1nCD4v+7wk6XhNXhsp5gMIHo+V804SUSmATWaeHTiKpiFu7AQ==} - - '@unocss/rule-utils@66.3.3': - resolution: {integrity: sha512-QKgVGV5nRRnK44/reUKFLAc5UGyl98vz3hrfk8JI8pVza58vmQWTdAB2rIpNJ5a5j+EkWfDOUlGQaOrIeYGLdg==} - engines: {node: '>=14'} - - '@unocss/transformer-attributify-jsx@66.3.3': - resolution: {integrity: sha512-ENNYFk5wrI4jlxn0tWGeR9QGxflAfZue3X2ABg0KSVOiYyIOsrHqtdoiLYkuCA9idRlBZPQxePJKcPWt1r/tYA==} - - '@unocss/transformer-compile-class@66.3.3': - resolution: {integrity: sha512-VTEFuwp3iajGWyEFwmO5LRvOjgZM1TK+4rX5Q79xyTAPkLAKgOa03Ne8+kU8oG0TQEa4mXVw6ul9McM7UBJh1w==} - - '@unocss/transformer-directives@66.3.3': - resolution: {integrity: sha512-11T7fmYk/XZcqFDn4qiIvs04mJhUtAoha5Y99bVE+L3byWa6BT4jb5aSAKk+24q5aynwgB++4RgfQxarj69WTw==} - - '@unocss/transformer-variant-group@66.3.3': - resolution: {integrity: sha512-uhK81pbJfXJFYaXxOoIFVEG8/Kx1iaAkTwRB6c+WNUfl9GiKyYQcrI7bETgCPPbg230Z68jVICBgBATeLJ31vQ==} - - '@unocss/vite@66.3.3': - resolution: {integrity: sha512-uu3smeEW6q36ri6vydRx2GiTGF5O/J80Fr4GLmLiwfpt2YnPHraO7XHVR5/mwG2Oz5Kov0uGvxVsdgxZABKRgw==} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 - - '@vue/compiler-core@3.5.17': - resolution: {integrity: sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA==} - - '@vue/compiler-dom@3.5.17': - resolution: {integrity: sha512-+2UgfLKoaNLhgfhV5Ihnk6wB4ljyW1/7wUIog2puUqajiC29Lp5R/IKDdkebh9jTbTogTbsgB+OY9cEWzG95JQ==} - - '@vue/compiler-sfc@3.5.17': - resolution: {integrity: sha512-rQQxbRJMgTqwRugtjw0cnyQv9cP4/4BxWfTdRBkqsTfLOHWykLzbOc3C4GGzAmdMDxhzU/1Ija5bTjMVrddqww==} - - '@vue/compiler-ssr@3.5.17': - resolution: {integrity: sha512-hkDbA0Q20ZzGgpj5uZjb9rBzQtIHLS78mMilwrlpWk2Ep37DYntUz0PonQ6kr113vfOEdM+zTBuJDaceNIW0tQ==} - - '@vue/reactivity@3.5.17': - resolution: {integrity: sha512-l/rmw2STIscWi7SNJp708FK4Kofs97zc/5aEPQh4bOsReD/8ICuBcEmS7KGwDj5ODQLYWVN2lNibKJL1z5b+Lw==} - - '@vue/runtime-core@3.5.17': - resolution: {integrity: sha512-QQLXa20dHg1R0ri4bjKeGFKEkJA7MMBxrKo2G+gJikmumRS7PTD4BOU9FKrDQWMKowz7frJJGqBffYMgQYS96Q==} - - '@vue/runtime-dom@3.5.17': - resolution: {integrity: sha512-8El0M60TcwZ1QMz4/os2MdlQECgGoVHPuLnQBU3m9h3gdNRW9xRmI8iLS4t/22OQlOE6aJvNNlBiCzPHur4H9g==} - - '@vue/server-renderer@3.5.17': - resolution: {integrity: sha512-BOHhm8HalujY6lmC3DbqF6uXN/K00uWiEeF22LfEsm9Q93XeJ/plHTepGwf6tqFcF7GA5oGSSAAUock3VvzaCA==} - peerDependencies: - vue: 3.5.17 - - '@vue/shared@3.5.17': - resolution: {integrity: sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==} - - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@0.22.0: - resolution: {integrity: sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==} - engines: {node: '>= 0.6'} - - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - cli-color@0.3.2: - resolution: {integrity: sha512-Ys/nDhHNRcxrS4EUI2RS/QCUE+61AMuEOj3sWDX+EIHkJWj+4XkRbOdwdxJteAJKjXYBbeFJMtfaEPd1MBF9pQ==} - - clui@0.3.6: - resolution: {integrity: sha512-Z4UbgZILlIAjkEkZiDOa2aoYjohKx7fa6DxIh6cE9A6WNWZ61iXfQc6CmdC9SKdS5nO0P0UyQ+WfoXfB65e3HQ==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} - - css-select@1.2.0: - resolution: {integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==} - - css-select@5.2.2: - resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} - - css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-what@2.1.3: - resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==} - - css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - d@0.1.1: - resolution: {integrity: sha512-0SdM9V9pd/OXJHoWmTfNPTAeD+lw6ZqHg+isPyBFuJsZLSE0Ygg1cYZ/0l6DrKQXMOqGOu1oWupMoOfoRfMZrQ==} - - d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} - - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decodeuricomponent@0.3.1: - resolution: {integrity: sha512-8PuirnWM7fdE54vRKoVT60RQlkFXgKsi7ToV4pdVbj9jc9qGSFt4P10Oi3UK+FPHZi+lhqRdPyG2QqhSfIhtQQ==} - - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - - destr@2.0.5: - resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} - - dom-serializer@0.1.1: - resolution: {integrity: sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@1.3.1: - resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@2.4.2: - resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@1.5.1: - resolution: {integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==} - - domutils@1.7.0: - resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - - ent-replace@1.0.4: - resolution: {integrity: sha512-Ki1Xt6aNzgqOf4sFbj+MaeEz/zwJSteP7Z2WgAmpJd3SpsoDie4gLFaaAfVoY0X98n9LWW/mTCU4T8k0NcpK4Q==} - - entities@1.1.2: - resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} - - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} - - es5-ext@0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} - - es6-iterator@0.1.3: - resolution: {integrity: sha512-6TOmbFM6OPWkTe+bQ3ZuUkvqcWUjAnYjKUCLdbvRsAUz2Pr+fYIibwNXNkLNtIK9PPFbNMZZddaRNkyJhlGJhA==} - - es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - - es6-symbol@2.0.1: - resolution: {integrity: sha512-wjobO4zO8726HVU7mI2OA/B6QszqwHJuKab7gKHVx+uRfVVYGcWJkCIFxV2Madqb9/RUSrhJ/r6hPfG7FsWtow==} - - es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} - - es6-weak-map@0.1.4: - resolution: {integrity: sha512-P+N5Cd2TXeb7G59euFiM7snORspgbInS29Nbf3KNO2JQp/DyhvMCDWd58nsVAXwYJ6W3Bx7qDdy6QQ3PCJ7jKQ==} - - esbuild@0.25.6: - resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==} - engines: {node: '>=18'} - hasBin: true - - esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - - exsolve@1.0.7: - resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} - - ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} - engines: {node: '>=18'} - - gzip-size@6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - - htmlparser2@3.10.1: - resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} - - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - - li@1.3.0: - resolution: {integrity: sha512-z34TU6GlMram52Tss5mt1m//ifRIpKH5Dqm7yUVOdHI+BQCs9qGPHFaCUTIzsWX7edN30aa2WrPwR7IO10FHaw==} - - local-pkg@1.1.1: - resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} - engines: {node: '>=14'} - - lodash.assignin@4.2.0: - resolution: {integrity: sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==} - - lodash.bind@4.2.1: - resolution: {integrity: sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==} - - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - - lodash.filter@4.6.0: - resolution: {integrity: sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==} - - lodash.flatten@4.4.0: - resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - - lodash.foreach@4.5.0: - resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} - - lodash.map@4.6.0: - resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.pick@4.4.0: - resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} - deprecated: This package is deprecated. Use destructuring assignment syntax instead. - - lodash.reduce@4.6.0: - resolution: {integrity: sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==} - - lodash.reject@4.6.0: - resolution: {integrity: sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==} - - lodash.some@4.6.0: - resolution: {integrity: sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==} - - lru-queue@0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} - - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - - mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} - - memoizee@0.3.10: - resolution: {integrity: sha512-LLzVUuWwGBKK188spgOK/ukrp5zvd9JGsiLDH41pH9vt5jvhZfsu5pxDuAnYAMG8YEGce72KO07sSBy9KkvOfw==} - - microformat-node@2.0.4: - resolution: {integrity: sha512-mriN4qcfFjwEbzbHnUZEHXFKSC5OxFYZB1hoSFOlW7bNaX/+8tD4Z+F4w3EyovWsTzU/BP3scNAaibCpJ6CxOw==} - - microformat-shiv@2.0.3: - resolution: {integrity: sha512-pktHqCmZsrmogS1egCryvZlAqDdvIQPxsDqa7hZ56nFkovqrszMXWJ94CUE9iWRjQRKOUKqLp62iCVO0+iwM2Q==} - - minimist@0.0.10: - resolution: {integrity: sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==} - - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - - mrmime@2.0.1: - resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} - engines: {node: '>=10'} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - next-tick@0.2.2: - resolution: {integrity: sha512-f7h4svPtl+QidoBv4taKXUjJ70G2asaZ8G28nS0OkqaalX8dwwrtWtyxEDPK62AC00ur/+/E0pUwBwY5EPn15Q==} - - next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - - node-fetch-native@1.6.6: - resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - nth-check@1.0.2: - resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - ofetch@1.4.1: - resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} - - optimist@0.6.1: - resolution: {integrity: sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==} - - package-manager-detector@1.3.0: - resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} - - pagefind@1.5.0: - resolution: {integrity: sha512-7vQ2xh0ZmjPjsuWONR68nqzb+QNfpPh7pdT6n6YDAthWAQiUkSACVegSswY5zPNONGYFWebFVgdnS5/m/Qqn+w==} - hasBin: true - - parse5-htmlparser2-tree-adapter@7.1.0: - resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} - - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - - pkg-types@2.2.0: - resolution: {integrity: sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==} - - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} - - quansync@0.2.10: - resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - rollup@4.45.0: - resolution: {integrity: sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rss-parser@3.13.0: - resolution: {integrity: sha512-7jWUBV5yGN3rqMMj7CZufl/291QAhvrrGpDNE4k/02ZchL0npisiYYqULF71jCEKoIiHvK/Q2e6IkDwPziT7+w==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sax@1.4.4: - resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} - engines: {node: '>=11.0.0'} - - sirv@3.0.1: - resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} - engines: {node: '>=18'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - timers-ext@0.1.8: - resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} - engines: {node: '>=0.12'} - - tinyexec@1.0.1: - resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} - - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} - engines: {node: '>=12.0.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - type@2.7.3: - resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - - unconfig@7.3.2: - resolution: {integrity: sha512-nqG5NNL2wFVGZ0NA/aCFw0oJ2pxSf1lwg4Z5ill8wd7K4KX/rQbHlwbh+bjctXL5Ly1xtzHenHGOK0b+lG6JVg==} - - unocss@66.3.3: - resolution: {integrity: sha512-HSB+K4/EbouwYmxpPU52cg0exua7PUr2IAJZBV3iai6tPdMcJ0c8jXaw7G+2L+ffruVFTcS0e2kE4OrR8BKDLg==} - engines: {node: '>=14'} - peerDependencies: - '@unocss/webpack': 66.3.3 - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 - peerDependenciesMeta: - '@unocss/webpack': - optional: true - vite: - optional: true - - unplugin-utils@0.2.4: - resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} - engines: {node: '>=18.12.0'} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - - vite@6.3.5: - resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - vue-flow-layout@0.1.1: - resolution: {integrity: sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==} - peerDependencies: - vue: ^3.4.37 - - vue@3.5.17: - resolution: {integrity: sha512-LbHV3xPN9BeljML+Xctq4lbz2lVHCR6DtbpTf5XIO6gugpXUN49j2QQPcMj086r9+AkJ0FfUT8xjulKKBkkr9g==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - wordwrap@0.0.3: - resolution: {integrity: sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==} - engines: {node: '>=0.4.0'} - - xml2js@0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} - engines: {node: '>=4.0.0'} - - xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - -snapshots: - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - - '@antfu/install-pkg@1.1.0': - dependencies: - package-manager-detector: 1.3.0 - tinyexec: 1.0.1 - - '@antfu/utils@8.1.1': {} - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.27.1': {} - - '@babel/parser@7.28.0': - dependencies: - '@babel/types': 7.28.1 - - '@babel/types@7.28.1': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - - '@esbuild/aix-ppc64@0.25.6': - optional: true - - '@esbuild/android-arm64@0.25.6': - optional: true - - '@esbuild/android-arm@0.25.6': - optional: true - - '@esbuild/android-x64@0.25.6': - optional: true - - '@esbuild/darwin-arm64@0.25.6': - optional: true - - '@esbuild/darwin-x64@0.25.6': - optional: true - - '@esbuild/freebsd-arm64@0.25.6': - optional: true - - '@esbuild/freebsd-x64@0.25.6': - optional: true - - '@esbuild/linux-arm64@0.25.6': - optional: true - - '@esbuild/linux-arm@0.25.6': - optional: true - - '@esbuild/linux-ia32@0.25.6': - optional: true - - '@esbuild/linux-loong64@0.25.6': - optional: true - - '@esbuild/linux-mips64el@0.25.6': - optional: true - - '@esbuild/linux-ppc64@0.25.6': - optional: true - - '@esbuild/linux-riscv64@0.25.6': - optional: true - - '@esbuild/linux-s390x@0.25.6': - optional: true - - '@esbuild/linux-x64@0.25.6': - optional: true - - '@esbuild/netbsd-arm64@0.25.6': - optional: true - - '@esbuild/netbsd-x64@0.25.6': - optional: true - - '@esbuild/openbsd-arm64@0.25.6': - optional: true - - '@esbuild/openbsd-x64@0.25.6': - optional: true - - '@esbuild/openharmony-arm64@0.25.6': - optional: true - - '@esbuild/sunos-x64@0.25.6': - optional: true - - '@esbuild/win32-arm64@0.25.6': - optional: true - - '@esbuild/win32-ia32@0.25.6': - optional: true - - '@esbuild/win32-x64@0.25.6': - optional: true - - '@iconify/types@2.0.0': {} - - '@iconify/utils@2.3.0': - dependencies: - '@antfu/install-pkg': 1.1.0 - '@antfu/utils': 8.1.1 - '@iconify/types': 2.0.0 - debug: 4.4.1 - globals: 15.15.0 - kolorist: 1.8.0 - local-pkg: 1.1.1 - mlly: 1.7.4 - transitivePeerDependencies: - - supports-color - - '@jridgewell/gen-mapping@0.3.12': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/sourcemap-codec@1.5.4': {} - - '@jridgewell/trace-mapping@0.3.29': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 - - '@pagefind/darwin-arm64@1.5.0': - optional: true - - '@pagefind/darwin-x64@1.5.0': - optional: true - - '@pagefind/freebsd-x64@1.5.0': - optional: true - - '@pagefind/linux-arm64@1.5.0': - optional: true - - '@pagefind/linux-x64@1.5.0': - optional: true - - '@pagefind/windows-arm64@1.5.0': - optional: true - - '@pagefind/windows-x64@1.5.0': - optional: true - - '@polka/url@1.0.0-next.29': {} - - '@quansync/fs@0.1.3': - dependencies: - quansync: 0.2.10 - - '@remy/webmention@1.5.0': - dependencies: - cheerio: 0.22.0 - clui: 0.3.6 - decodeuricomponent: 0.3.1 - follow-redirects: 1.15.11 - li: 1.3.0 - microformat-node: 2.0.4 - ms: 2.1.3 - node-fetch: 2.7.0 - optimist: 0.6.1 - rss-parser: 3.13.0 - uuid: 3.4.0 - transitivePeerDependencies: - - debug - - encoding - - '@rollup/rollup-android-arm-eabi@4.45.0': - optional: true - - '@rollup/rollup-android-arm64@4.45.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.45.0': - optional: true - - '@rollup/rollup-darwin-x64@4.45.0': - optional: true - - '@rollup/rollup-freebsd-arm64@4.45.0': - optional: true - - '@rollup/rollup-freebsd-x64@4.45.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.45.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.45.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.45.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.45.0': - optional: true - - '@rollup/rollup-linux-loongarch64-gnu@4.45.0': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.45.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.45.0': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.45.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.45.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.45.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.45.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.45.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.45.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.45.0': - optional: true - - '@types/estree@1.0.8': {} - - '@unocss/astro@66.3.3(vite@6.3.5(jiti@2.4.2))(vue@3.5.17)': - dependencies: - '@unocss/core': 66.3.3 - '@unocss/reset': 66.3.3 - '@unocss/vite': 66.3.3(vite@6.3.5(jiti@2.4.2))(vue@3.5.17) - optionalDependencies: - vite: 6.3.5(jiti@2.4.2) - transitivePeerDependencies: - - vue - - '@unocss/cli@66.3.3': - dependencies: - '@ampproject/remapping': 2.3.0 - '@unocss/config': 66.3.3 - '@unocss/core': 66.3.3 - '@unocss/preset-uno': 66.3.3 - cac: 6.7.14 - chokidar: 3.6.0 - colorette: 2.0.20 - consola: 3.4.2 - magic-string: 0.30.17 - pathe: 2.0.3 - perfect-debounce: 1.0.0 - tinyglobby: 0.2.14 - unplugin-utils: 0.2.4 - - '@unocss/config@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - unconfig: 7.3.2 - - '@unocss/core@66.3.3': {} - - '@unocss/extractor-arbitrary-variants@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - - '@unocss/inspector@66.3.3(vue@3.5.17)': - dependencies: - '@unocss/core': 66.3.3 - '@unocss/rule-utils': 66.3.3 - colorette: 2.0.20 - gzip-size: 6.0.0 - sirv: 3.0.1 - vue-flow-layout: 0.1.1(vue@3.5.17) - transitivePeerDependencies: - - vue - - '@unocss/postcss@66.3.3(postcss@8.5.6)': - dependencies: - '@unocss/config': 66.3.3 - '@unocss/core': 66.3.3 - '@unocss/rule-utils': 66.3.3 - css-tree: 3.1.0 - postcss: 8.5.6 - tinyglobby: 0.2.14 - - '@unocss/preset-attributify@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - - '@unocss/preset-icons@66.3.3': - dependencies: - '@iconify/utils': 2.3.0 - '@unocss/core': 66.3.3 - ofetch: 1.4.1 - transitivePeerDependencies: - - supports-color - - '@unocss/preset-mini@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - '@unocss/extractor-arbitrary-variants': 66.3.3 - '@unocss/rule-utils': 66.3.3 - - '@unocss/preset-tagify@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - - '@unocss/preset-typography@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - '@unocss/preset-mini': 66.3.3 - '@unocss/rule-utils': 66.3.3 - - '@unocss/preset-uno@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - '@unocss/preset-wind3': 66.3.3 - - '@unocss/preset-web-fonts@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - ofetch: 1.4.1 - - '@unocss/preset-wind3@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - '@unocss/preset-mini': 66.3.3 - '@unocss/rule-utils': 66.3.3 - - '@unocss/preset-wind4@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - '@unocss/extractor-arbitrary-variants': 66.3.3 - '@unocss/rule-utils': 66.3.3 - - '@unocss/preset-wind@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - '@unocss/preset-wind3': 66.3.3 - - '@unocss/reset@66.3.3': {} - - '@unocss/rule-utils@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - magic-string: 0.30.17 - - '@unocss/transformer-attributify-jsx@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - - '@unocss/transformer-compile-class@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - - '@unocss/transformer-directives@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - '@unocss/rule-utils': 66.3.3 - css-tree: 3.1.0 - - '@unocss/transformer-variant-group@66.3.3': - dependencies: - '@unocss/core': 66.3.3 - - '@unocss/vite@66.3.3(vite@6.3.5(jiti@2.4.2))(vue@3.5.17)': - dependencies: - '@ampproject/remapping': 2.3.0 - '@unocss/config': 66.3.3 - '@unocss/core': 66.3.3 - '@unocss/inspector': 66.3.3(vue@3.5.17) - chokidar: 3.6.0 - magic-string: 0.30.17 - pathe: 2.0.3 - tinyglobby: 0.2.14 - unplugin-utils: 0.2.4 - vite: 6.3.5(jiti@2.4.2) - transitivePeerDependencies: - - vue - - '@vue/compiler-core@3.5.17': - dependencies: - '@babel/parser': 7.28.0 - '@vue/shared': 3.5.17 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-dom@3.5.17': - dependencies: - '@vue/compiler-core': 3.5.17 - '@vue/shared': 3.5.17 - - '@vue/compiler-sfc@3.5.17': - dependencies: - '@babel/parser': 7.28.0 - '@vue/compiler-core': 3.5.17 - '@vue/compiler-dom': 3.5.17 - '@vue/compiler-ssr': 3.5.17 - '@vue/shared': 3.5.17 - estree-walker: 2.0.2 - magic-string: 0.30.17 - postcss: 8.5.6 - source-map-js: 1.2.1 - - '@vue/compiler-ssr@3.5.17': - dependencies: - '@vue/compiler-dom': 3.5.17 - '@vue/shared': 3.5.17 - - '@vue/reactivity@3.5.17': - dependencies: - '@vue/shared': 3.5.17 - - '@vue/runtime-core@3.5.17': - dependencies: - '@vue/reactivity': 3.5.17 - '@vue/shared': 3.5.17 - - '@vue/runtime-dom@3.5.17': - dependencies: - '@vue/reactivity': 3.5.17 - '@vue/runtime-core': 3.5.17 - '@vue/shared': 3.5.17 - csstype: 3.1.3 - - '@vue/server-renderer@3.5.17(vue@3.5.17)': - dependencies: - '@vue/compiler-ssr': 3.5.17 - '@vue/shared': 3.5.17 - vue: 3.5.17 - - '@vue/shared@3.5.17': {} - - acorn@8.15.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - binary-extensions@2.3.0: {} - - boolbase@1.0.0: {} - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - cac@6.7.14: {} - - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.2.2 - css-what: 6.2.2 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - - cheerio@0.22.0: - dependencies: - css-select: 1.2.0 - dom-serializer: 0.1.1 - entities: 1.1.2 - htmlparser2: 3.10.1 - lodash.assignin: 4.2.0 - lodash.bind: 4.2.1 - lodash.defaults: 4.2.0 - lodash.filter: 4.6.0 - lodash.flatten: 4.4.0 - lodash.foreach: 4.5.0 - lodash.map: 4.6.0 - lodash.merge: 4.6.2 - lodash.pick: 4.4.0 - lodash.reduce: 4.6.0 - lodash.reject: 4.6.0 - lodash.some: 4.6.0 - - cheerio@1.0.0-rc.12: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.2.2 - htmlparser2: 8.0.2 - parse5: 7.3.0 - parse5-htmlparser2-tree-adapter: 7.1.0 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cli-color@0.3.2: - dependencies: - d: 0.1.1 - es5-ext: 0.10.64 - memoizee: 0.3.10 - timers-ext: 0.1.8 - - clui@0.3.6: - dependencies: - cli-color: 0.3.2 - - colorette@2.0.20: {} - - confbox@0.1.8: {} - - confbox@0.2.2: {} - - consola@3.4.2: {} - - css-select@1.2.0: - dependencies: - boolbase: 1.0.0 - css-what: 2.1.3 - domutils: 1.5.1 - nth-check: 1.0.2 - - css-select@5.2.2: - dependencies: - boolbase: 1.0.0 - css-what: 6.2.2 - domhandler: 5.0.3 - domutils: 3.2.2 - nth-check: 2.1.1 - - css-tree@3.1.0: - dependencies: - mdn-data: 2.12.2 - source-map-js: 1.2.1 - - css-what@2.1.3: {} - - css-what@6.2.2: {} - - csstype@3.1.3: {} - - d@0.1.1: - dependencies: - es5-ext: 0.10.64 - - d@1.0.2: - dependencies: - es5-ext: 0.10.64 - type: 2.7.3 - - debug@4.4.1: - dependencies: - ms: 2.1.3 - - decodeuricomponent@0.3.1: - dependencies: - iconv-lite: 0.4.24 - - defu@6.1.4: {} - - destr@2.0.5: {} - - dom-serializer@0.1.1: - dependencies: - domelementtype: 1.3.1 - entities: 1.1.2 - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@1.3.1: {} - - domelementtype@2.3.0: {} - - domhandler@2.4.2: - dependencies: - domelementtype: 1.3.1 - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@1.5.1: - dependencies: - dom-serializer: 0.1.1 - domelementtype: 1.3.1 - - domutils@1.7.0: - dependencies: - dom-serializer: 0.1.1 - domelementtype: 1.3.1 - - domutils@3.2.2: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - duplexer@0.1.2: {} - - ent-replace@1.0.4: {} - - entities@1.1.2: {} - - entities@2.2.0: {} - - entities@4.5.0: {} - - entities@6.0.1: {} - - es5-ext@0.10.64: - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - esniff: 2.0.1 - next-tick: 1.1.0 - - es6-iterator@0.1.3: - dependencies: - d: 0.1.1 - es5-ext: 0.10.64 - es6-symbol: 2.0.1 - - es6-iterator@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-symbol: 3.1.4 - - es6-symbol@2.0.1: - dependencies: - d: 0.1.1 - es5-ext: 0.10.64 - - es6-symbol@3.1.4: - dependencies: - d: 1.0.2 - ext: 1.7.0 - - es6-weak-map@0.1.4: - dependencies: - d: 0.1.1 - es5-ext: 0.10.64 - es6-iterator: 0.1.3 - es6-symbol: 2.0.1 - - esbuild@0.25.6: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.6 - '@esbuild/android-arm': 0.25.6 - '@esbuild/android-arm64': 0.25.6 - '@esbuild/android-x64': 0.25.6 - '@esbuild/darwin-arm64': 0.25.6 - '@esbuild/darwin-x64': 0.25.6 - '@esbuild/freebsd-arm64': 0.25.6 - '@esbuild/freebsd-x64': 0.25.6 - '@esbuild/linux-arm': 0.25.6 - '@esbuild/linux-arm64': 0.25.6 - '@esbuild/linux-ia32': 0.25.6 - '@esbuild/linux-loong64': 0.25.6 - '@esbuild/linux-mips64el': 0.25.6 - '@esbuild/linux-ppc64': 0.25.6 - '@esbuild/linux-riscv64': 0.25.6 - '@esbuild/linux-s390x': 0.25.6 - '@esbuild/linux-x64': 0.25.6 - '@esbuild/netbsd-arm64': 0.25.6 - '@esbuild/netbsd-x64': 0.25.6 - '@esbuild/openbsd-arm64': 0.25.6 - '@esbuild/openbsd-x64': 0.25.6 - '@esbuild/openharmony-arm64': 0.25.6 - '@esbuild/sunos-x64': 0.25.6 - '@esbuild/win32-arm64': 0.25.6 - '@esbuild/win32-ia32': 0.25.6 - '@esbuild/win32-x64': 0.25.6 - - esniff@2.0.1: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - event-emitter: 0.3.5 - type: 2.7.3 - - estree-walker@2.0.2: {} - - event-emitter@0.3.5: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - - exsolve@1.0.7: {} - - ext@1.7.0: - dependencies: - type: 2.7.3 - - fdir@6.4.6(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - follow-redirects@1.15.11: {} - - fsevents@2.3.3: - optional: true - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - globals@15.15.0: {} - - gzip-size@6.0.0: - dependencies: - duplexer: 0.1.2 - - htmlparser2@3.10.1: - dependencies: - domelementtype: 1.3.1 - domhandler: 2.4.2 - domutils: 1.7.0 - entities: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 4.5.0 - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - jiti@2.4.2: {} - - kolorist@1.8.0: {} - - li@1.3.0: {} - - local-pkg@1.1.1: - dependencies: - mlly: 1.7.4 - pkg-types: 2.2.0 - quansync: 0.2.10 - - lodash.assignin@4.2.0: {} - - lodash.bind@4.2.1: {} - - lodash.defaults@4.2.0: {} - - lodash.filter@4.6.0: {} - - lodash.flatten@4.4.0: {} - - lodash.foreach@4.5.0: {} - - lodash.map@4.6.0: {} - - lodash.merge@4.6.2: {} - - lodash.pick@4.4.0: {} - - lodash.reduce@4.6.0: {} - - lodash.reject@4.6.0: {} - - lodash.some@4.6.0: {} - - lru-queue@0.1.0: - dependencies: - es5-ext: 0.10.64 - - magic-string@0.30.17: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - - mdn-data@2.12.2: {} - - memoizee@0.3.10: - dependencies: - d: 0.1.1 - es5-ext: 0.10.64 - es6-weak-map: 0.1.4 - event-emitter: 0.3.5 - lru-queue: 0.1.0 - next-tick: 0.2.2 - timers-ext: 0.1.8 - - microformat-node@2.0.4: - dependencies: - cheerio: 1.0.0-rc.12 - ent-replace: 1.0.4 - microformat-shiv: 2.0.3 - - microformat-shiv@2.0.3: {} - - minimist@0.0.10: {} - - mlly@1.7.4: - dependencies: - acorn: 8.15.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.1 - - mrmime@2.0.1: {} - - ms@2.1.3: {} - - nanoid@3.3.11: {} - - next-tick@0.2.2: {} - - next-tick@1.1.0: {} - - node-fetch-native@1.6.6: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - normalize-path@3.0.0: {} - - nth-check@1.0.2: - dependencies: - boolbase: 1.0.0 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - ofetch@1.4.1: - dependencies: - destr: 2.0.5 - node-fetch-native: 1.6.6 - ufo: 1.6.1 - - optimist@0.6.1: - dependencies: - minimist: 0.0.10 - wordwrap: 0.0.3 - - package-manager-detector@1.3.0: {} - - pagefind@1.5.0: - optionalDependencies: - '@pagefind/darwin-arm64': 1.5.0 - '@pagefind/darwin-x64': 1.5.0 - '@pagefind/freebsd-x64': 1.5.0 - '@pagefind/linux-arm64': 1.5.0 - '@pagefind/linux-x64': 1.5.0 - '@pagefind/windows-arm64': 1.5.0 - '@pagefind/windows-x64': 1.5.0 - - parse5-htmlparser2-tree-adapter@7.1.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.3.0 - - parse5@7.3.0: - dependencies: - entities: 6.0.1 - - pathe@2.0.3: {} - - perfect-debounce@1.0.0: {} - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - picomatch@4.0.2: {} - - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.7.4 - pathe: 2.0.3 - - pkg-types@2.2.0: - dependencies: - confbox: 0.2.2 - exsolve: 1.0.7 - pathe: 2.0.3 - - postcss@8.5.6: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - quansync@0.2.10: {} - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - rollup@4.45.0: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.45.0 - '@rollup/rollup-android-arm64': 4.45.0 - '@rollup/rollup-darwin-arm64': 4.45.0 - '@rollup/rollup-darwin-x64': 4.45.0 - '@rollup/rollup-freebsd-arm64': 4.45.0 - '@rollup/rollup-freebsd-x64': 4.45.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.45.0 - '@rollup/rollup-linux-arm-musleabihf': 4.45.0 - '@rollup/rollup-linux-arm64-gnu': 4.45.0 - '@rollup/rollup-linux-arm64-musl': 4.45.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.45.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.45.0 - '@rollup/rollup-linux-riscv64-gnu': 4.45.0 - '@rollup/rollup-linux-riscv64-musl': 4.45.0 - '@rollup/rollup-linux-s390x-gnu': 4.45.0 - '@rollup/rollup-linux-x64-gnu': 4.45.0 - '@rollup/rollup-linux-x64-musl': 4.45.0 - '@rollup/rollup-win32-arm64-msvc': 4.45.0 - '@rollup/rollup-win32-ia32-msvc': 4.45.0 - '@rollup/rollup-win32-x64-msvc': 4.45.0 - fsevents: 2.3.3 - - rss-parser@3.13.0: - dependencies: - entities: 2.2.0 - xml2js: 0.5.0 - - safe-buffer@5.2.1: {} - - safer-buffer@2.1.2: {} - - sax@1.4.4: {} - - sirv@3.0.1: - dependencies: - '@polka/url': 1.0.0-next.29 - mrmime: 2.0.1 - totalist: 3.0.1 - - source-map-js@1.2.1: {} - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - timers-ext@0.1.8: - dependencies: - es5-ext: 0.10.64 - next-tick: 1.1.0 - - tinyexec@1.0.1: {} - - tinyglobby@0.2.14: - dependencies: - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - totalist@3.0.1: {} - - tr46@0.0.3: {} - - type@2.7.3: {} - - ufo@1.6.1: {} - - unconfig@7.3.2: - dependencies: - '@quansync/fs': 0.1.3 - defu: 6.1.4 - jiti: 2.4.2 - quansync: 0.2.10 - - unocss@66.3.3(postcss@8.5.6)(vite@6.3.5(jiti@2.4.2))(vue@3.5.17): - dependencies: - '@unocss/astro': 66.3.3(vite@6.3.5(jiti@2.4.2))(vue@3.5.17) - '@unocss/cli': 66.3.3 - '@unocss/core': 66.3.3 - '@unocss/postcss': 66.3.3(postcss@8.5.6) - '@unocss/preset-attributify': 66.3.3 - '@unocss/preset-icons': 66.3.3 - '@unocss/preset-mini': 66.3.3 - '@unocss/preset-tagify': 66.3.3 - '@unocss/preset-typography': 66.3.3 - '@unocss/preset-uno': 66.3.3 - '@unocss/preset-web-fonts': 66.3.3 - '@unocss/preset-wind': 66.3.3 - '@unocss/preset-wind3': 66.3.3 - '@unocss/preset-wind4': 66.3.3 - '@unocss/transformer-attributify-jsx': 66.3.3 - '@unocss/transformer-compile-class': 66.3.3 - '@unocss/transformer-directives': 66.3.3 - '@unocss/transformer-variant-group': 66.3.3 - '@unocss/vite': 66.3.3(vite@6.3.5(jiti@2.4.2))(vue@3.5.17) - optionalDependencies: - vite: 6.3.5(jiti@2.4.2) - transitivePeerDependencies: - - postcss - - supports-color - - vue - - unplugin-utils@0.2.4: - dependencies: - pathe: 2.0.3 - picomatch: 4.0.2 - - util-deprecate@1.0.2: {} - - uuid@3.4.0: {} - - vite@6.3.5(jiti@2.4.2): - dependencies: - esbuild: 0.25.6 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.6 - rollup: 4.45.0 - tinyglobby: 0.2.14 - optionalDependencies: - fsevents: 2.3.3 - jiti: 2.4.2 - - vue-flow-layout@0.1.1(vue@3.5.17): - dependencies: - vue: 3.5.17 - - vue@3.5.17: - dependencies: - '@vue/compiler-dom': 3.5.17 - '@vue/compiler-sfc': 3.5.17 - '@vue/runtime-dom': 3.5.17 - '@vue/server-renderer': 3.5.17(vue@3.5.17) - '@vue/shared': 3.5.17 - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - wordwrap@0.0.3: {} - - xml2js@0.5.0: - dependencies: - sax: 1.4.4 - xmlbuilder: 11.0.1 - - xmlbuilder@11.0.1: {} diff --git a/scripts/extract_highlights.go b/scripts/extract_highlights.go deleted file mode 100644 index c7253d5f..00000000 --- a/scripts/extract_highlights.go +++ /dev/null @@ -1,120 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "io/fs" - "net/url" - "os" - "path/filepath" - "regexp" - "strings" -) - -type HighlightLink struct { - Text string `json:"text"` - Link string `json:"link"` -} - -type Result struct { - Title string `json:"title"` - URL string `json:"url"` - Highlights []HighlightLink `json:"highlights"` -} - -func main() { - const contentDir = "content" - const outputFile = "data/highlights.json" - - highlightPattern := regexp.MustCompile(`==(.+?)==`) - titlePattern := regexp.MustCompile(`(?m)^title:\s*["']?(.+?)["']?\s*$`) - slugPattern := regexp.MustCompile(`(?m)^slug:\s*["']?(.+?)["']?\s*$`) - - var results []Result - - err := filepath.WalkDir(contentDir, func(path string, d fs.DirEntry, err error) error { - if err != nil { - return err - } - if d.IsDir() || !strings.HasSuffix(d.Name(), ".md") { - return nil - } - - contentBytes, err := os.ReadFile(path) - if err != nil { - return err - } - content := string(contentBytes) - - // Title - title := filepath.Base(path) - if m := titlePattern.FindStringSubmatch(content); len(m) > 1 { - title = m[1] - } - - // Slug and URL - urlPath := "" - if m := slugPattern.FindStringSubmatch(content); len(m) > 1 { - slug := strings.Trim(m[1], "/") - relDir, _ := filepath.Rel(contentDir, filepath.Dir(path)) - relDir = filepath.ToSlash(relDir) - if relDir != "." { - urlPath = fmt.Sprintf("/%s/%s/", relDir, slug) - } else { - urlPath = fmt.Sprintf("/%s/", slug) - } - } else { - rel, _ := filepath.Rel(contentDir, path) - rel = filepath.ToSlash(rel) - urlPath = "/" + strings.TrimSuffix(rel, ".md") + "/" - } - - // Highlights - matches := highlightPattern.FindAllStringSubmatch(content, -1) - if len(matches) == 0 { - return nil - } - - var highlightLinks []HighlightLink - for _, m := range matches { - if len(m) > 1 { - h := m[1] - encoded := url.QueryEscape(h) - link := fmt.Sprintf("%s#:~:text=%s", urlPath, encoded) - highlightLinks = append(highlightLinks, HighlightLink{Text: h, Link: link}) - } - } - - results = append(results, Result{ - Title: title, - URL: urlPath, - Highlights: highlightLinks, - }) - - return nil - }) - - if err != nil { - fmt.Println("❌ Error:", err) - return - } - - // Write JSON - if err := os.MkdirAll(filepath.Dir(outputFile), os.ModePerm); err != nil { - fmt.Println("❌ Error creating output directory:", err) - return - } - - jsonData, err := json.MarshalIndent(results, "", " ") - if err != nil { - fmt.Println("❌ Error encoding JSON:", err) - return - } - - if err := os.WriteFile(outputFile, jsonData, 0644); err != nil { - fmt.Println("❌ Error writing JSON file:", err) - return - } - - fmt.Printf("✔ 提取完成,共 %d 篇文章有高亮,已写入 %s\n", len(results), outputFile) -} diff --git a/scripts/get_external_link_rank.go b/scripts/get_external_link_rank.go deleted file mode 100644 index 4189c191..00000000 --- a/scripts/get_external_link_rank.go +++ /dev/null @@ -1,77 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "io/fs" - "net/url" - "os" - "path/filepath" - "regexp" - "sort" - "strings" -) - -func main() { - externalLinks := countExternalLinks("content") - writeJSON("data/externallinks.json", externalLinks) - fmt.Println("✅ External link rank data generated.") -} - -// countExternalLinks scans markdown files and counts occurrences of each external domain. -func countExternalLinks(root string) [][2]interface{} { - linkRegex := regexp.MustCompile(`https?://[^\s)>"']+`) - counts := make(map[string]int) - - filepath.WalkDir(root, func(path string, d fs.DirEntry, err error) error { - if err != nil || d.IsDir() || !strings.HasSuffix(path, ".md") { - return nil - } - data, err := os.ReadFile(path) - if err != nil { - return nil - } - matches := linkRegex.FindAllString(string(data), -1) - for _, match := range matches { - u, err := url.Parse(match) - if err == nil && u.Host != "" { - // skip my domains - if strings.HasSuffix(u.Host, "eltr.ac") || strings.HasSuffix(u.Host, "guhub.cn") { - continue - } - counts[u.Host]++ - } - } - return nil - }) - - // convert map to sorted array (alphabetically by domain) - type kv struct { - Key string - Value int - } - var list []kv - for k, v := range counts { - list = append(list, kv{k, v}) - } - sort.Slice(list, func(i, j int) bool { return list[i].Key < list[j].Key }) - - result := make([][2]interface{}, len(list)) - for i, kv := range list { - result[i] = [2]interface{}{kv.Key, kv.Value} - } - return result -} - -// writeJSON writes the result to file with indentation. -func writeJSON(path string, data interface{}) { - file, err := os.Create(path) - if err != nil { - fmt.Println("Error:", err) - return - } - defer file.Close() - enc := json.NewEncoder(file) - enc.SetIndent("", " ") - enc.Encode(data) -} diff --git a/scripts/get_internal_link_graph.go b/scripts/get_internal_link_graph.go deleted file mode 100644 index 8adf5594..00000000 --- a/scripts/get_internal_link_graph.go +++ /dev/null @@ -1,101 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "io/fs" - "os" - "path/filepath" - "regexp" - "sort" - "strings" -) - -type Node struct { - ID string `json:"id"` - Label string `json:"label"` - URL string `json:"url"` -} - -type Edge struct { - From string `json:"from"` - To string `json:"to"` -} - -func main() { - root := "content" - - nodes := map[string]Node{} - edges := make([]Edge, 0) // non-nil so it becomes [] not null - - err := filepath.WalkDir(root, func(path string, d fs.DirEntry, err error) error { - if err != nil || d.IsDir() || !strings.HasSuffix(strings.ToLower(path), ".md") { - return nil - } - - rel, err := filepath.Rel(root, path) - if err != nil { - return nil - } - rel = filepath.ToSlash(rel) - urlPath := "/" + strings.TrimSuffix(rel, ".md") + "/" - label := strings.TrimSuffix(filepath.Base(path), ".md") - - nodes[urlPath] = Node{ID: urlPath, Label: label, URL: urlPath} - - data, err := os.ReadFile(path) - if err != nil { - return nil - } - content := string(data) - - linkPattern := regexp.MustCompile(`\[[^\]]*\]\((/[^)]+)\)`) - matches := linkPattern.FindAllStringSubmatch(content, -1) - for _, m := range matches { - link := strings.TrimSuffix(m[1], ".md") - if !strings.HasSuffix(link, "/") { - link += "/" - } - edges = append(edges, Edge{From: urlPath, To: link}) - } - - return nil - }) - - if err != nil { - fmt.Println("WalkDir error:", err) - return - } - - nodeKeys := make([]string, 0, len(nodes)) - for k := range nodes { - nodeKeys = append(nodeKeys, k) - } - sort.Strings(nodeKeys) - nodeList := make([]Node, 0, len(nodeKeys)) - for _, k := range nodeKeys { - nodeList = append(nodeList, nodes[k]) - } - - os.MkdirAll("static", os.ModePerm) - output := map[string]interface{}{ - "nodes": nodeList, - "edges": edges, - } - - outfile := "static/link-graph.json" - f, err := os.Create(outfile) - if err != nil { - fmt.Println("create file error:", err) - return - } - defer f.Close() - - enc := json.NewEncoder(f) - enc.SetIndent("", " ") - if err := enc.Encode(output); err != nil { - fmt.Println("json encode error:", err) - } - - fmt.Printf("✅ Link graph written to %s (%d nodes, %d edges)\n", outfile, len(nodeList), len(edges)) -} diff --git a/static/_headers b/static/_headers deleted file mode 100644 index 96b3e133..00000000 --- a/static/_headers +++ /dev/null @@ -1,10 +0,0 @@ -/cal-heatmap.json - Access-Control-Allow-Origin: * - Access-Control-Allow-Methods: GET, POST, OPTIONS - Access-Control-Allow-Headers: * - Cross-Origin-Resource-Policy: cross-origin -/favicon.png - Access-Control-Allow-Origin: * - Access-Control-Allow-Methods: GET, POST, OPTIONS - Access-Control-Allow-Headers: * - Cross-Origin-Resource-Policy: cross-origin diff --git a/static/apple-touch-icon.png b/static/apple-touch-icon.png deleted file mode 100644 index 04dd1341..00000000 Binary files a/static/apple-touch-icon.png and /dev/null differ diff --git a/static/atom.xsl.xml b/static/atom.xsl.xml deleted file mode 100644 index 40604bdc..00000000 --- a/static/atom.xsl.xml +++ /dev/null @@ -1,37 +0,0 @@ -<xsl:value-of select="$title"/>

    - This RSS feed for the - - website. -



    \ No newline at end of file diff --git a/static/favicon.ico b/static/favicon.ico deleted file mode 100644 index 1b116908..00000000 Binary files a/static/favicon.ico and /dev/null differ diff --git a/static/favicon.png b/static/favicon.png deleted file mode 100644 index 04dd1341..00000000 Binary files a/static/favicon.png and /dev/null differ diff --git a/static/graph.html b/static/graph.html deleted file mode 100644 index 9cc77cbc..00000000 --- a/static/graph.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - Page Link Graph - - - - -
    - - - diff --git a/static/icons/codeberg.svg b/static/icons/codeberg.svg deleted file mode 100644 index 028b729f..00000000 --- a/static/icons/codeberg.svg +++ /dev/null @@ -1,164 +0,0 @@ - - - Codeberg logo - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Codeberg logo - - - - Robert Martinez - - - - - Codeberg and the Codeberg Logo are trademarks of Codeberg e.V. - - - 2020-04-09 - - - Codeberg e.V. - - - codeberg.org - - - - - - - - - - - - - diff --git a/static/icons/enwiktionary.svg b/static/icons/enwiktionary.svg deleted file mode 100644 index d239d73d..00000000 --- a/static/icons/enwiktionary.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/etymonline.jpg b/static/icons/etymonline.jpg deleted file mode 100644 index 27dd47a7..00000000 Binary files a/static/icons/etymonline.jpg and /dev/null differ diff --git a/static/icons/external.svg b/static/icons/external.svg deleted file mode 100644 index e7290003..00000000 --- a/static/icons/external.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/static/icons/forgejo.svg b/static/icons/forgejo.svg deleted file mode 100644 index 804b05e2..00000000 --- a/static/icons/forgejo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/gatus.svg b/static/icons/gatus.svg deleted file mode 100644 index 52cc2b84..00000000 --- a/static/icons/gatus.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/github.svg b/static/icons/github.svg deleted file mode 100644 index 2dfec51e..00000000 --- a/static/icons/github.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - github [#142] - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/icons/music/apple.png b/static/icons/music/apple.png deleted file mode 100644 index 834dc364..00000000 Binary files a/static/icons/music/apple.png and /dev/null differ diff --git a/static/icons/music/bandcamp.png b/static/icons/music/bandcamp.png deleted file mode 100644 index 652fdd8d..00000000 Binary files a/static/icons/music/bandcamp.png and /dev/null differ diff --git a/static/icons/music/netease.png b/static/icons/music/netease.png deleted file mode 100644 index 6f26d9bd..00000000 Binary files a/static/icons/music/netease.png and /dev/null differ diff --git a/static/icons/music/spotify.png b/static/icons/music/spotify.png deleted file mode 100644 index abc5f12f..00000000 Binary files a/static/icons/music/spotify.png and /dev/null differ diff --git a/static/icons/music/tidal.png b/static/icons/music/tidal.png deleted file mode 100644 index 41cf7d61..00000000 Binary files a/static/icons/music/tidal.png and /dev/null differ diff --git a/static/icons/rss.svg b/static/icons/rss.svg deleted file mode 100644 index d5698927..00000000 --- a/static/icons/rss.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/static/icons/wikipedia.svg b/static/icons/wikipedia.svg deleted file mode 100644 index e694aada..00000000 --- a/static/icons/wikipedia.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/static/img/bat.svg b/static/img/bat.svg deleted file mode 100644 index 0ca422e1..00000000 --- a/static/img/bat.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - -batwings - - \ No newline at end of file diff --git a/static/img/clockwork.svg b/static/img/clockwork.svg deleted file mode 100644 index 5c3db302..00000000 --- a/static/img/clockwork.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - -clockwork - - \ No newline at end of file diff --git a/static/img/coffee.svg b/static/img/coffee.svg deleted file mode 100644 index e3633def..00000000 --- a/static/img/coffee.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/static/img/comments.svg b/static/img/comments.svg deleted file mode 100644 index 8860c78e..00000000 --- a/static/img/comments.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/static/img/crow.svg b/static/img/crow.svg deleted file mode 100644 index dca15f56..00000000 --- a/static/img/crow.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - -raven - - \ No newline at end of file diff --git a/static/img/fediverse.png b/static/img/fediverse.png deleted file mode 100644 index 2d1f62e8..00000000 Binary files a/static/img/fediverse.png and /dev/null differ diff --git a/static/img/ghost-window.svg b/static/img/ghost-window.svg deleted file mode 100644 index 3a4c0a94..00000000 --- a/static/img/ghost-window.svg +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/img/github.svg b/static/img/github.svg deleted file mode 100644 index a285af8b..00000000 --- a/static/img/github.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/static/img/heart-organ.svg b/static/img/heart-organ.svg deleted file mode 100644 index 0b218639..00000000 --- a/static/img/heart-organ.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/static/img/mention.svg b/static/img/mention.svg deleted file mode 100644 index de633fc2..00000000 --- a/static/img/mention.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/static/img/potted-skeleton.svg b/static/img/potted-skeleton.svg deleted file mode 100644 index deb65179..00000000 --- a/static/img/potted-skeleton.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/img/rss.svg b/static/img/rss.svg deleted file mode 100644 index ffa0ed3f..00000000 --- a/static/img/rss.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/static/img/thumbs-down.png b/static/img/thumbs-down.png deleted file mode 100644 index 37fdbafe..00000000 Binary files a/static/img/thumbs-down.png and /dev/null differ diff --git a/static/js/libra.min.js b/static/js/libra.min.js deleted file mode 100644 index 720dfcd1..00000000 --- a/static/js/libra.min.js +++ /dev/null @@ -1,2 +0,0 @@ -let t={selector:"[data-libra]",margin:50,zeroMarginBreakpoint:768,offset:{x:0,y:0},transitionDuration:200,imageCursor:"zoom-in"};class e{constructor(){let e=document.createElement("div");return e.id="libra-overlay",e.classList.add("libra-overlay","libra-hidden"),e.style.transitionDuration=t.transitionDuration+"ms",this.element=e,document.body.appendChild(e),this}show(){this.element.classList.remove("libra-hidden"),this.element.classList.add("libra-visible")}hide(){this.element.classList.remove("libra-visible"),this.element.classList.add("libra-hidden")}}class i{static calculateFinalState(e){let i={},s=t.margin;window.innerWidth<=t.zeroMarginBreakpoint&&(s=0);let n=e.naturalWidth,o=e.naturalHeight,l=n/o,r=window.innerWidth-2*s,a=window.innerHeight-2*s;return i.width=n>r?r:n,i.height=n>r?r/l:o,i.height>a&&(i.height=a,i.width=a*l),i.top=(a-i.height)/2+window.scrollY+s+t.offset.y,i.left=(r-i.width)/2+window.scrollX+s+t.offset.x,i}static transformMatrix(t,e,i){let s=i.width/e.width,n=i.height/e.height,o=e.left+e.width/2,l=e.top+e.height/2,r=i.left+i.width/2,a=i.top+i.height/2;t.style.transform=`matrix(${s}, 0, 0, ${n}, ${r-o}, ${a-l})`}static resetTransformMatrix(t){t.style.transform="matrix(1, 0, 0, 1, 0, 0)"}}class s{isOpen=!1;constructor(t){return this.original=t,this.fetchOriginalPosition(),this.create(t),this}create(e){let i=document.createElement("img");i.src=e.src,i.id=`libra-shadow-${e.id}`,i.classList.add("libra-shadow"),i.style.transitionDuration=t.transitionDuration+"ms",this.element=i,this.positionShadow(),this.placeItself()}fetchOriginalPosition(){let e=this.original.getBoundingClientRect();this.originalPosition={top:e.top+window.scrollY+t.offset.y,left:e.left+window.scrollX+t.offset.x,width:e.width,height:e.height}}positionShadow(){this.element.style.top=this.originalPosition.top+"px",this.element.style.left=this.originalPosition.left+"px",this.element.style.width=this.originalPosition.width+"px",this.element.style.height=this.originalPosition.height+"px"}open(){this.isOpen=!0,this.element.classList.add("open"),this.fetchOriginalPosition(),this.positionShadow(),this.original.style.visibility="hidden",document.body.contains(this.element)||this.placeItself();let t=()=>i.transformMatrix(this.element,this.originalPosition,i.calculateFinalState(this.element));0===this.element.naturalWidth||0===this.element.naturalHeight?this.element.addEventListener("load",t,{once:!0}):t()}close(){this.isOpen=!1,this.element.classList.remove("open"),i.resetTransformMatrix(this.element),setTimeout(()=>{this.original.style.visibility="visible",this.destroyItself()},t.transitionDuration)}placeItself(){document.body.appendChild(this.element)}destroyItself(){document.body.contains(this.element)&&document.body.removeChild(this.element)}}class n{currentImage=null;shadows={};constructor(e){!function t(e,i){for(let s in i)"object"!=typeof i[s]||null===i[s]||Array.isArray(i[s])?e[s]=i[s]:(e[s]||(e[s]={}),t(e[s],i[s]));return e}(t,e),this.initOverlay(),this.initImages(),this.initControls()}initOverlay(){this.overlay=new e,this.overlay.element.addEventListener("click",()=>{this.closeCurrent()})}initImages(){this.images=document.querySelectorAll(t.selector),this.images.forEach(e=>{"IMG"===e.tagName&&(e.id=crypto.randomUUID(),e.style.cursor=t.imageCursor,e.addEventListener("click",()=>this.open(e)))})}initControls(){document.addEventListener("keydown",t=>{("Escape"===t.key||" "===t.key)&&this.closeCurrent()}),document.body.addEventListener("wheel",t=>this.closeCurrent()),document.body.addEventListener("touchmove",t=>this.closeCurrent())}open(t){this.currentImage=t;let e=this.shadows[t.id]||new s(t);this.shadows[t.id]||(this.shadows[t.id]=e),e.open(),this.overlay.show()}close(t){this.currentImage=null,this.shadows[t.id]&&(this.shadows[t.id].close(),this.overlay.hide())}closeCurrent(){this.currentImage&&this.close(this.currentImage)}}export{n as default}; -//# sourceMappingURL=libra.min.js.map diff --git a/uno.config.js b/uno.config.js deleted file mode 100644 index 61831a43..00000000 --- a/uno.config.js +++ /dev/null @@ -1,55 +0,0 @@ -import { defineConfig, presetWind3, presetAttributify, presetWebFonts } from 'unocss' - -const range = (n, fn) => Array.from({ length: n }, (_, i) => fn(i)); - -function rangeWithPrefixes(n, base, prefixes = ['']) { - return prefixes.flatMap(prefix => - range(n, i => `${prefix}${base}-${i}`) - ); -} - -export default defineConfig({ - content: { - filesystem: ['./**/*.{html,md,js}'], - }, - presets: [ - presetAttributify(), - presetWind3() - ], - theme: { - colors: { - blockBg: 'var(--block-background-color)', - bg: 'var(--background-color)', - textColor: 'var(--text-color)', - secondary: 'var(--secondary-text-color)' - }, - fontFamily: { - mono: ["Courier New", "Courier", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Lucida Console"], - serif: ["Noto Serif", "Noto Serif SC", "serif"], - } - }, - shortcuts: { - 'small-button': 'bg-blockBg px-2 py-1 no-underline hover:no-underline rounded border border-solid border-bg hover:border-textColor transition', - 'round-sticker': 'bg-blockBg rounded-full shadow-sm p-4' - }, - safelist: [ - 'text-sm', 'text-md', 'text-lg', 'text-xl', 'text-2xl', 'text-3xl', 'text-4xl', 'text-5xl', - 'text-base!', 'md:text-size-lg', 'md:text-size-xl', 'md:text-size-2xl', - - 'animate-heart-beat', 'animate-fade-in', - ...'absolute bottom-full left-1/2 transform -translate-x-1/2 translate-y-1 bg-black/80 text-white px-2.5 py-1.5 rounded text-xs whitespace-nowrap opacity-0 invisible transition-all duration-300 pointer-events-none mb-2 z-1000 group-hover:opacity-100 group-hover:visible group-hover:translate-y-0 dark:bg-white/90 dark:text-black'.split(' '), - - ...range(10, i => `opacity-${i * 10}`), - ...rangeWithPrefixes(30, 'w', ['', 'md:', 'lg:']), - ...rangeWithPrefixes(30, 'h', ['', 'md:']), - ...rangeWithPrefixes(30, 'right', ['', 'md:', '-', 'md:-']), - ...rangeWithPrefixes(30, 'top', ['', '-']), - - // special cases - 'absolute', - 'w-[calc(25%_-_1rem)]', - 'w-[calc(50%_-_2rem)]', - 'w-[10rem]', - 'sm:w-full', - ] -}) diff --git a/uno.css b/uno.css deleted file mode 100644 index 383f3716..00000000 --- a/uno.css +++ /dev/null @@ -1,461 +0,0 @@ -/* layer: properties */ -@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*, ::before, ::after, ::backdrop{--un-ease:initial;}} -@property --un-outline-style{syntax:"*";inherits:false;initial-value:solid;} -@property --un-ease{syntax:"*";inherits:false;} -/* layer: theme */ -:root, :host { ---font-mono: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace; ---spacing: 0.25rem; ---ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); ---ease-DEFAULT: cubic-bezier(0.4, 0, 0.2, 1); ---default-transition-timingFunction: cubic-bezier(0.4, 0, 0.2, 1); ---default-transition-duration: 150ms; ---leading-none: 1; ---ease-out: cubic-bezier(0, 0, 0.2, 1); ---font-sans: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; ---default-font-family: var(--font-sans); ---default-monoFont-family: var(--font-mono); -} -/* layer: base */ -/* - 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) - 2. Remove default margins and padding - 3. Reset all borders. -*/ - -*, -::after, -::before, -::backdrop, -::file-selector-button { - box-sizing: border-box; /* 1 */ - margin: 0; /* 2 */ - padding: 0; /* 2 */ - border: 0 solid; /* 3 */ -} - -/* - 1. Use a consistent sensible line-height in all browsers. - 2. Prevent adjustments of font size after orientation changes in iOS. - 3. Use a more readable tab size. - 4. Use the user's configured `sans` font-family by default. - 5. Use the user's configured `sans` font-feature-settings by default. - 6. Use the user's configured `sans` font-variation-settings by default. - 7. Disable tap highlights on iOS. -*/ - -html, -:host { - line-height: 1.5; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ - tab-size: 4; /* 3 */ - font-family: var( - --default-font-family, - ui-sans-serif, - system-ui, - sans-serif, - 'Apple Color Emoji', - 'Segoe UI Emoji', - 'Segoe UI Symbol', - 'Noto Color Emoji' - ); /* 4 */ - font-feature-settings: var(--default-font-featureSettings, normal); /* 5 */ - font-variation-settings: var(--default-font-variationSettings, normal); /* 6 */ - -webkit-tap-highlight-color: transparent; /* 7 */ -} - -/* - 1. Add the correct height in Firefox. - 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) - 3. Reset the default border style to a 1px solid border. -*/ - -hr { - height: 0; /* 1 */ - color: inherit; /* 2 */ - border-top-width: 1px; /* 3 */ -} - -/* - Add the correct text decoration in Chrome, Edge, and Safari. -*/ - -abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; -} - -/* - Remove the default font size and weight for headings. -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/* - Reset links to optimize for opt-in styling instead of opt-out. -*/ - -a { - color: inherit; - -webkit-text-decoration: inherit; - text-decoration: inherit; -} - -/* - Add the correct font weight in Edge and Safari. -*/ - -b, -strong { - font-weight: bolder; -} - -/* - 1. Use the user's configured `mono` font-family by default. - 2. Use the user's configured `mono` font-feature-settings by default. - 3. Use the user's configured `mono` font-variation-settings by default. - 4. Correct the odd `em` font sizing in all browsers. -*/ - -code, -kbd, -samp, -pre { - font-family: var( - --default-monoFont-family, - ui-monospace, - SFMono-Regular, - Menlo, - Monaco, - Consolas, - 'Liberation Mono', - 'Courier New', - monospace - ); /* 1 */ - font-feature-settings: var(--default-monoFont-featureSettings, normal); /* 2 */ - font-variation-settings: var(--default-monoFont-variationSettings, normal); /* 3 */ - font-size: 1em; /* 4 */ -} - -/* - Add the correct font size in all browsers. -*/ - -small { - font-size: 80%; -} - -/* - Prevent `sub` and `sup` elements from affecting the line height in all browsers. -*/ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* - 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) - 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) - 3. Remove gaps between table borders by default. -*/ - -table { - text-indent: 0; /* 1 */ - border-color: inherit; /* 2 */ - border-collapse: collapse; /* 3 */ -} - -/* - Use the modern Firefox focus style for all focusable elements. -*/ - -:-moz-focusring { - outline: auto; -} - -/* - Add the correct vertical alignment in Chrome and Firefox. -*/ - -progress { - vertical-align: baseline; -} - -/* - Add the correct display in Chrome and Safari. -*/ - -summary { - display: list-item; -} - -/* - Make lists unstyled by default. -*/ - -ol, -ul, -menu { - list-style: none; -} - -/* - 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) - 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) - This can trigger a poorly considered lint error in some tools but is included by design. -*/ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; /* 1 */ - vertical-align: middle; /* 2 */ -} - -/* - Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) -*/ - -img, -video { - max-width: 100%; - height: auto; -} - -/* - 1. Inherit font styles in all browsers. - 2. Remove border radius in all browsers. - 3. Remove background color in all browsers. - 4. Ensure consistent opacity for disabled states in all browsers. -*/ - -button, -input, -select, -optgroup, -textarea, -::file-selector-button { - font: inherit; /* 1 */ - font-feature-settings: inherit; /* 1 */ - font-variation-settings: inherit; /* 1 */ - letter-spacing: inherit; /* 1 */ - color: inherit; /* 1 */ - border-radius: 0; /* 2 */ - background-color: transparent; /* 3 */ - opacity: 1; /* 4 */ -} - -/* - Restore default font weight. -*/ - -:where(select:is([multiple], [size])) optgroup { - font-weight: bolder; -} - -/* - Restore indentation. -*/ - -:where(select:is([multiple], [size])) optgroup option { - padding-inline-start: 20px; -} - -/* - Restore space after button. -*/ - -::file-selector-button { - margin-inline-end: 4px; -} - -/* - Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) -*/ - -::placeholder { - opacity: 1; -} - -/* - Set the default placeholder color to a semi-transparent version of the current text color in browsers that do not - crash when using `color-mix(…)` with `currentcolor`. (https://github.com/tailwindlabs/tailwindcss/issues/17194) -*/ - -@supports (not (-webkit-appearance: -apple-pay-button)) /* Not Safari */ or - (contain-intrinsic-size: 1px) /* Safari 17+ */ { - ::placeholder { - color: color-mix(in oklab, currentcolor 50%, transparent); - } -} - -/* - Prevent resizing textareas horizontally by default. -*/ - -textarea { - resize: vertical; -} - -/* - Remove the inner padding in Chrome and Safari on macOS. -*/ - -::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* - 1. Ensure date/time inputs have the same height when empty in iOS Safari. - 2. Ensure text alignment can be changed on date/time inputs in iOS Safari. -*/ - -::-webkit-date-and-time-value { - min-height: 1lh; /* 1 */ - text-align: inherit; /* 2 */ -} - -/* - Prevent height from changing on date/time inputs in macOS Safari when the input is set to `display: block`. -*/ - -::-webkit-datetime-edit { - display: inline-flex; -} - -/* - Remove excess padding from pseudo-elements in date/time inputs to ensure consistent height across browsers. -*/ - -::-webkit-datetime-edit-fields-wrapper { - padding: 0; -} - -::-webkit-datetime-edit, -::-webkit-datetime-edit-year-field, -::-webkit-datetime-edit-month-field, -::-webkit-datetime-edit-day-field, -::-webkit-datetime-edit-hour-field, -::-webkit-datetime-edit-minute-field, -::-webkit-datetime-edit-second-field, -::-webkit-datetime-edit-millisecond-field, -::-webkit-datetime-edit-meridiem-field { - padding-block: 0; -} - -/* - Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) -*/ - -:-moz-ui-invalid { - box-shadow: none; -} - -/* - Correct the inability to style the border radius in iOS Safari. -*/ - -button, -input:where([type='button'], [type='reset'], [type='submit']), -::file-selector-button { - appearance: button; -} - -/* - Correct the cursor style of increment and decrement buttons in Safari. -*/ - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} - -/* - Make elements with the HTML hidden attribute stay hidden by default. -*/ - -[hidden]:where(:not([hidden='until-found'])) { - display: none !important; -} -/* layer: shortcuts */ -.container{width:100%;} -@media (min-width: 40rem){ -.container{max-width:40rem;} -} -@media (min-width: 48rem){ -.container{max-width:48rem;} -} -@media (min-width: 64rem){ -.container{max-width:64rem;} -} -@media (min-width: 80rem){ -.container{max-width:80rem;} -} -@media (min-width: 96rem){ -.container{max-width:96rem;} -} -/* layer: default */ -.font-mono{font-family:var(--font-mono);} -.tab\!{-moz-tab-size:4 !important;-o-tab-size:4 !important;tab-size:4 !important;} -.ma{margin:auto;} -.text-center{text-align:center;} -.outline{outline-style:var(--un-outline-style);outline-width:1px;} -.b, -.border{border-width:1px;} -.underline{text-decoration-line:underline;} -.flex{display:flex;} -.inline-flex{display:inline-flex;} -.flex-shrink{flex-shrink:1;} -.grow{flex-grow:1;} -.h2{height:calc(var(--spacing) * 2);} -.h3{height:calc(var(--spacing) * 3);} -.h4{height:calc(var(--spacing) * 4);} -.h6{height:calc(var(--spacing) * 6);} -.ha{height:auto;} -.block{display:block;} -.inline-block{display:inline-block;} -.hidden{display:none;} -.visible{visibility:visible;} -.collapse{visibility:collapse;} -.resize{resize:both;} -.italic{font-style:italic;} -.rotate-2{rotate:2deg;} -.transform{transform:var(--un-rotate-x) var(--un-rotate-y) var(--un-rotate-z) var(--un-skew-x) var(--un-skew-y);} -.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--un-ease, var(--default-transition-timingFunction));transition-duration:var(--un-duration, var(--default-transition-duration));} -.ease{--un-ease:var(--ease-DEFAULT);transition-timing-function:var(--ease-DEFAULT);} -.ease-in-out{--un-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out);} -.ease-out{--un-ease:var(--ease-out);transition-timing-function:var(--ease-out);} -.absolute{position:absolute;} -.fixed{position:fixed;} -.relative{position:relative;} -.sticky{position:sticky;} -.filter{filter:var(--un-blur,) var(--un-brightness,) var(--un-contrast,) var(--un-grayscale,) var(--un-hue-rotate,) var(--un-invert,) var(--un-saturate,) var(--un-sepia,) var(--un-drop-shadow,);} -.backdrop-filter{-webkit-backdrop-filter:var(--un-backdrop-blur,) var(--un-backdrop-brightness,) var(--un-backdrop-contrast,) var(--un-backdrop-grayscale,) var(--un-backdrop-hue-rotate,) var(--un-backdrop-invert,) var(--un-backdrop-opacity,) var(--un-backdrop-saturate,) var(--un-backdrop-sepia,);backdrop-filter:var(--un-backdrop-blur,) var(--un-backdrop-brightness,) var(--un-backdrop-contrast,) var(--un-backdrop-grayscale,) var(--un-backdrop-hue-rotate,) var(--un-backdrop-invert,) var(--un-backdrop-opacity,) var(--un-backdrop-saturate,) var(--un-backdrop-sepia,);} -.table{display:table;} -.border-collapse{border-collapse:collapse;} -.view-transition-name{view-transition-name:name;} \ No newline at end of file -- cgit v1.2.3