diff --git a/.gitignore b/.gitignore index 8368fdb..c75eecc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -/node_modules /public diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index ee13637..0000000 --- a/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -pnpm-lock.yaml -templates/macros.html diff --git a/.prettierrc.js b/.prettierrc.js deleted file mode 100644 index 6675528..0000000 --- a/.prettierrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - printWidth: 100, - plugins: ["prettier-plugin-tailwindcss"], -}; diff --git a/README.md b/README.md index 757c8b5..a6d3c1e 100644 --- a/README.md +++ b/README.md @@ -1,719 +1,16 @@ -# Linkita +# Demo for the Linkita theme -A clean and elegant blog theme for [Zola](https://www.getzola.org/). Linkita is based on [Kita](https://github.com/st1020/kita) and [Hugo-Paper](https://github.com/nanxiaobei/hugo-paper) and is multilingual and SEO friendly. +## Links -The source code is available on [Codeberg](https://codeberg.org/salif/linkita) and mirrored on [GitHub](https://github.com/salif/linkita). A live preview can be viewed in [English](https://salif.github.io/linkita/en/), [Bulgarian](https://salif.github.io/linkita/), and [Esperanto](https://salif.github.io/linkita/eo/). Screenshots are provided for both [Light mode](https://codeberg.org/salif/linkita/src/branch/linkita/screenshot.png) and [Dark mode](https://codeberg.org/salif/linkita/src/branch/linkita/screenshot.dark.png). For discussion, you can join the [Matrix chat room](https://matrix.to/#/#linkita:mozilla.org). +- [Demo site](https://salif.github.io/linkita/en/) +- [Demo source on Codeberg](https://codeberg.org/salif/linkita-demo) +- [Demo source on GitHub](https://github.com/salif/linkita/tree/demo) -## Features +- [Linkita source on Codeberg](https://codeberg.org/salif/linkita) +- [Linkita source on GitHub](https://github.com/salif/linkita) -### Kita features +- [Matrix chat room](https://matrix.to/#/#linkita:mozilla.org) -- Easy to use and modify -- No preset limits -- Inject support -- Dark mode -- Responsive design -- Social icons -- Taxonomies support -- Projects page -- Archive page -- Table of Content -- Admonition shortcode -- SEO friendly -- Comments using [Giscus](https://giscus.app/) -- Mathematical notations using [KaTeX](https://katex.org/) -- Diagrams and charts using [Mermaid](https://mermaid.js.org/) - -### Linkita features - -- i18n -- Improved SEO -- Author profiles -- Search (elasticlunr_javascript) -- Keyboard shortcuts - -## Installing - -1. Add this theme as a submodule: - -```sh -git submodule add https://codeberg.org/salif/linkita.git themes/linkita -``` - -Alternatively, clone the repository: `git clone https://codeberg.org/salif/linkita.git themes/linkita`. - -2. Set `linkita` as your theme in your `config.toml` file. - -```toml -theme = "linkita" -``` - -3. Optionally, you can switch from the `linkita` branch to the latest release: - -```sh -cd themes/linkita -npm run switch-to-latest -``` - -## Updating - -```sh -git submodule update --merge --remote themes/linkita -# cd themes/linkita -# npm run switch-to-latest -``` - -## Usage - -### TOML frontmatter - -```toml -+++ -title = "" -description = "" -# date = -# updated = -[taxonomies] -categories = [] -tags = [] -authors = [] -[extra] -# comment = true -# math = true -# mermaid = true -# page_info = [] -[extra.cover] -# image = "" -# alt = "" -+++ -``` - -### YAML frontmatter - -```yaml ---- -title: "" -description: "" -date: -# updated: -taxonomies: - categories: - tags: - authors: -extra: - comment: false - math: false - mermaid: false - cover: - image: "" - alt: "" ---- -``` - -### Open Graph frontmatter options - -```toml -[extra.open_graph] -# MIME type of the cover image. e.g. `image/jpeg`, `image/gif`, `image/png` -cover_type = "" -# Width of the cover image in pixels -cover_width = -# Height of the cover image in pixels -cover_height = -# When the article is out of date after. e.g. `2024-02-29` -expiration_time = -# Describes the tier status for an article. e.g. `free`, `locked`, or `metered` -content_tier = "" -# Defines the location to target for the article. e.g. `["county:COUNTY"]` or `["city:CITY,COUNTY"]` -locations = [] -# A high-level section name. e.g. `Technology` -section = "" -# Tag words associated with this article -tags = [""] -# Indicates whether the article is an opinion piece or not. e.g. `true` or `false` -opinion = -# The URL for the audio -audio = "" -# MIME type of the audio. e.g. `audio/vnd.facebook.bridge`, `audio/mpeg` -audio_type = "" -# The URL for the video -video = "" -# MIME type of the video. e.g. `application/x-shockwave-flash`, `video/mp4` -video_type = "" -# Width of the video in pixels -video_width = -# Height of the video in pixels -video_height = -# Set only if different from canonical page URL -url = "" -``` - -### Sitemap frontmatter options - -```toml -[extra.sitemap] -# Set only if different from `page.updated` -updated = -# Valid values are `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, `never` -changefreq = -# Valid values range from 0.0 to 1.0. The default priority of a page is 0.5 -priority = -``` - -### Home page profile - -Create `content/_index.md` file in your blog and set `extra.profile` to your username: - -```toml -+++ -sort_by = "date" -paginate_by = 5 -[extra] -profile = "your_username" -+++ -``` - -Do it for each language in your blog, for example for French, the file name is `content/_index.fr.md`. - -### Profiles for authors - -You should add `extra.profiles.author_username` table in your `config.toml` file for each author. -Replace `author_username` with author's username. - -### Authors - -#### Option 1: Using `page.authors` - -You don't need to set `page.authors` in the frontmatter if you are the only author. - -Otherwise, set `page.authors`: - -```toml -+++ -authors = ["author_username", "author2_username"] -+++ -``` - -#### Option 2: Using Taxonomies - -If you choose this option you should set taxonomies in each post. - -Examples: - -**If the blog is your personal blog**: - -```toml -+++ -[taxonomies] -authors = ["your_username"] -+++ -``` - -**If the blog has a team of multiple authors**: - -```toml -+++ -[taxonomies] -authors = ["author_username"] -# or: -# authors = ["author_username", "author2_username"] -+++ -``` - -### Archive page - -```toml -+++ -title = "Archive" -template = "archive.html" -[extra] -section = "_index.md" -+++ -``` - -### Inject support - -You can easily use inject to add new features to your side without modifying the theme itself. - -To use inject, you need to add some HTML files to the `templates/injects` directory. - -The available inject points are: `head`, `header_nav`, `body_start`, `body_end`, `page_start`, `page_end`, `footer`. - -### Keyboard shortcuts - -| Action | Shortcut | -| ----------------- | ---------------------------- | -| Home | Alt+\! | -| Search | Alt+\/ | -| Toggle menu | Alt+\+ | -| Toggle dark mode | Alt+\$ | -| Go to prev page | Alt+\, | -| Go to next page | Alt+\. | -| Table of contents | Alt+\= | -| Skip to footer | Alt+\_ | -| Skip to main | Alt+\- | - -## Configuring - -Copy and paste the examples into your `config.toml` file -and comment out the options you don't use instead of setting empty values. - -| key | type | -| ------------------ | ------- | -| default_language | string | -| author | string | -| title | string | -| description | string | -| generate_feeds | boolean | -| feed_filenames | array of strings | -| build_search_index | boolean | -| extra | table | - -Taxonomies with translated names are `tags`, `categories`, and `authors`. - -```toml -# The default language -default_language = "en" - -# The default author for pages -author = "your_username" - -# The site title -title = "" - -# The site description -description = "" - -# Automatically generated feed -generate_feeds = true - -# The filenames to use for the feeds -feed_filenames = ["atom.xml"] # or ["rss.xml"] - -# Enable search -build_search_index = true -``` - -```toml -[[taxonomies]] -name = "categories" -feed = true -paginate_by = 5 - -[[taxonomies]] -name = "tags" -feed = true -paginate_by = 5 - -[[taxonomies]] -name = "authors" -feed = true -paginate_by = 5 -``` - -Add more languages ​​by replacing `fr` from the example with the language code. - -```toml -[languages.fr] -title = "Site title in French" -description = "Site description in French" -generate_feeds = true -feed_filenames = ["atom.xml"] # or ["rss.xml"] - -[[languages.fr.taxonomies]] -name = "authors" -feed = true -paginate_by = 5 -``` - -| key | type | -| ----------------------------- | ------- | -| extra.math | boolean | -| extra.mermaid | boolean | -| extra.comment | boolean | -| extra.title_separator | string | -| extra.header_menu_name | string | -| extra.header_buttons | array of strings | -| extra.page_info | array of strings | -| extra.disable_default_favicon | boolean | -| extra.disable_javascript | boolean | - -Tables: `extra.style`, `extra.menus`, `extra.profiles`, `extra.footer`, `extra.languages`, `extra.goatcounter`, `extra.giscus`. - -The table below lists valid `extra.page_info` values. -Default value is `["date", "date_updated_on_page", "reading_time", "authors"]`. - -| on both | only on page | only on paginator | -| -------------- | ---------------------- | --------------------------- | -| `date` | `date_on_page` | `date_on_paginator` | -| `date_updated` | `date_updated_on_page` | `date_updated_on_paginator` | -| `reading_time` | `reading_time_on_page` | `reading_time_on_paginator` | -| `word_count` | `word_count_on_page` | `word_count_on_paginator` | -| `authors` | `authors_on_page` | `authors_on_paginator` | -| `tags` | `tags_on_page` | `tags_on_paginator` | - -Default `extra.header_buttons` value is `["site_title", "theme_button", "search_button", "translations_button"]`. -You can replace `site_title` with `home_button` if you want. - -```toml -[extra] -# Enable KaTeX math formula support globally -math = false - -# Enable Mermaid support globally -mermaid = false - -# Enable comments globally -comment = false - -# Title separator -title_separator = " | " - -# The top menu. See `extra.menus` -header_menu_name = "menu_name" - -# header_buttons = [] -# page_info = [] -# disable_default_favicon = true -# disable_javascript = false -``` - -### Style config - -| key | type | default value | -| --- | --- | --- | -| extra.style.bg_color | string | `"#f4f4f5"` | -| extra.style.bg_dark_color | string | `"#18181b"` | -| extra.style.header_blur | boolean | false | -| extra.style.header_color | string | `"#e4e4e7"` | -| extra.style.header_dark_color | string | `"#27272a"` | - -```toml -[extra.style] -# The custom background color -bg_color = "#f4f4f5" - -# The custom background color in dark mode -bg_dark_color = "#18181b" - -# Enable header blur -header_blur = false - -# The custom header color, only available when `header_blur` is false -header_color = "#e4e4e7" - -# The custom header color in dark mode, only available when `header_blur` is false -header_dark_color = "#27272a" -``` - -### Menus - -| key | type | -| ----------------------------------------- | ------ | -| extra.menus[menu_name].menu[].url | string | -| extra.menus[menu_name].menu[].name | string | -| extra.menus[menu_name].menu[].names | table | -| extra.menus[menu_name].menu[].names[lang] | string | -| extra.menus[menu_name].menu[].names_i18n | string | - -`$BASE_URL` in `.url` will be automatically replaced with the language specific base url. -You can use `names_i18n` instead of `names[lang]`, see the `static/i18n.json` file, -set `names_i18n` to a `common_` key. - -```toml -[[extra.menus.menu_name]] -url = "$BASE_URL/projects/" -# name = "Projects" -[extra.menus.menu_name.names] -en = "Projects" -# fr = "Projects in French" - -[[extra.menus.menu_name]] -url = "$BASE_URL/archive/" -# name = "Archive" -[extra.menus.menu_name.names] -en = "Archive" -# fr = "Archive in French" - -[[extra.menus.menu_name]] -url = "$BASE_URL/tags/" -# name = "Tags" -[extra.menus.menu_name.names] -en = "Tags" -# fr = "Tags in French" - -[[extra.menus.menu_name]] -url = "$BASE_URL/about/" -# name = "About" -[extra.menus.menu_name.names] -en = "About" -# fr = "About in French" -``` - -### Profiles - -| key | type | -| -------------------------------------- | ------- | -| extra.profiles[username].avatar_url | string | -| extra.profiles[username].avatar_alt | string | -| extra.profiles[username].avatar_invert | boolean | -| extra.profiles[username].name | string | -| extra.profiles[username].bio | string | -| extra.profiles[username].email | string | -| extra.profiles[username].url | string | -| extra.profiles[username].languages | table | -| extra.profiles[username].social | array of tables | -| extra.profiles[username].open_graph | table | - -```toml -[extra.profiles.your_username] -# The URL of avatar -avatar_url = "icons/github.svg" - -# A description of what is in the avatar -avatar_alt = "" - -# Invert avatar color in dark mode -avatar_invert = false - -# Profile name for all languages -name = "" - -# Profile bio for all languages. Supports Markdown. -bio = "" - -# Profile email -# email = "" - -# Profile website -# url = "" -``` - -### Profile translations - -| key | type | -| --------------------------------------------------- | ------ | -| extra.profiles[username].languages[lang].name | string | -| extra.profiles[username].languages[lang].bio | string | -| extra.profiles[username].languages[lang].url | string | -| extra.profiles[username].languages[lang].avatar_alt | string | - -```toml -[extra.profiles.your_username.languages.fr] -# Profile name in French -name = "" - -# Profile bio in French -bio = "" -``` - -### Social icons - -| key | type | -| -------------------------------------- | ------ | -| extra.profiles[username].social[].name | string | -| extra.profiles[username].social[].url | string | - -The `name` should be the file name of `static/icons/*.svg` or the icon name of -[simpleicons.org](https://simpleicons.org/). The `url` supports `$BASE_URL`. - -```toml -[[extra.profiles.your_username.social]] -name = "github" -url = "https://github.com/username" - -[[extra.profiles.your_username.social]] -name = "bluesky" -url = "https://bsky.app/profile/username" - -[[extra.profiles.your_username.social]] -name = "rss" -url = "$BASE_URL/atom.xml" -``` - -### Open Graph - -| key | type | -| ---------------------------------------------- | ------ | -| extra.profiles[username].open_graph.image | string | -| extra.profiles[username].open_graph.image_alt | string | -| extra.profiles[username].open_graph.first_name | string | -| extra.profiles[username].open_graph.last_name | string | -| extra.profiles[username].open_graph.username | string | -| extra.profiles[username].open_graph.gender | string | -| extra.profiles[username].open_graph.fb_app_id | string | -| extra.profiles[username].open_graph.fb_admins | array of strings | -| extra.profiles[username].open_graph.fediverse_creator | table | -| extra.profiles[username].open_graph.fediverse_creator.handle | string | -| extra.profiles[username].open_graph.fediverse_creator.domain | string | -| extra.profiles[username].open_graph.fediverse_creator.url | string | -| extra.profiles[username].open_graph.languages[lang] | table | - -See [the Open Graph protocol](https://ogp.me/). - -```toml -[extra.profiles.your_username.open_graph] -# The URL of social image -image = "" - -# A description of what is in the social image -image_alt = "" - -first_name = "Your first name" -last_name = "Your last name" -username = "Your username" -gender = "female" # or "male" - -# Set if you have a Fediverse account. Example for @user@mastodon.social: -[extra.profiles.your_username.open_graph.fediverse_creator] -# Your Fediverse handle -# handle = "user" -# Your Fediverse instance -# domain = "mastodon.social" -# Your Fediverse account URL -# url = "" - -# [extra.profiles.your_username.open_graph.languages.fr] -# A description in French of what is in the social image -# image_alt = "" -``` - -`fb_app_id` and `fb_admins` are only allowed in the `config.author`'s profile. -In addition, `image` and `image_alt` of the profile will be used as a -fallback open graph image for all pages. - -```toml -[extra.profiles.your_username.open_graph] -fb_app_id = "Your fb app ID" -fb_admins = ["YOUR_USER_ID"] -# image = "" -# image_alt = "" -``` - -### The page footer - -| key | type | -| --------------------------------- | ------ | -| extra.footer.since | number | -| extra.footer.copyright | string | -| extra.footer.license_url | string | -| extra.footer.privacy_policy_url | string | -| extra.footer.terms_of_service_url | string | -| extra.footer.search_page_url | string | - -Currently `privacy_policy_url`, `terms_of_service_url`, and `search_page_url` are not shown. - -`$BASE_URL` is supported in the `_url` options. - -Option `copyright` supports Markdown and: -- `$BASE_URL` -- `$YEAR` (uses `since`) -- `$LICENSE_URL` (uses `license_url`) - -```toml -[extra.footer] -# Replace with the correct year -since = 2024 -# Replace with the url of the license you want -license_url = "https://creativecommons.org/licenses/by-sa/4.0/deed" -# Replace `Your Name` with your name and `CC BY-SA 4.0` with the name of the license you want -copyright = "© $YEAR Your Name | [CC BY-SA 4.0]($LICENSE_URL)" -# privacy_policy_url = "$BASE_URL/privacy-policy/" -# terms_of_service_url = "$BASE_URL/terms-of-service/" -# search_page_url = "$BASE_URL/search/" -``` - -### Locale and Date format - -| key | type | default value | -| ----------------------------------------- | ------ | ------------- | -| extra.languages[lang].locale | string | | -| extra.languages[lang].date_format | string | `%F` | -| extra.languages[lang].date_format_archive | string | `%m-%d` | -| extra.languages[lang].header_menu_name | string | | -| extra.languages[lang].header_buttons | array of strings | | -| extra.languages[lang].art_x_lang | string | | - -For date format, see [chrono docs](https://docs.rs/chrono/0.4/chrono/format/strftime/index.html). - -```toml -[extra.languages.en] -locale = "en_US" -date_format = "%x" -date_format_archive = "%m-%d" - -[extra.languages.fr] -locale = "fr_FR" -date_format = "%x" -date_format_archive = "%m-%d" -``` - -### Web analytics - -| key | type | -| -------------------------- | ------ | -| extra.goatcounter.endpoint | string | -| extra.goatcounter.src | string | - -Set only if you use [GoatCounter](https://www.goatcounter.com/). - -```toml -[extra.goatcounter] -endpoint = "https://MYCODE.goatcounter.com/count" -src = "//gc.zgo.at/count.js" -``` - -### Comments - -| key | type | default value | -| ------------------------------ | ------ | ------------- | -| extra.giscus.repo | string | | -| extra.giscus.repo_id | string | | -| extra.giscus.category | string | | -| extra.giscus.category_id | string | | -| extra.giscus.mapping | string | `pathname` | -| extra.giscus.strict | number | `1` | -| extra.giscus.reactions_enabled | number | `0` | -| extra.giscus.emit_metadata | number | `0` | -| extra.giscus.input_position | string | `top` | -| extra.giscus.theme | string | `light` | -| extra.giscus.lang | string | `en` | -| extra.giscus.loading | string | `lazy` | - -See [giscus.app](https://giscus.app/). -Only available when `extra.comment` in the frontmatter or `extra.comment` in the config is set to `true`. - -```toml -[extra.giscus] -repo = "" -repo_id = "" -category = "" -category_id = "" -mapping = "pathname" -strict = 1 -reactions_enabled = 0 -emit_metadata = 0 -input_position = "top" -theme = "light" -lang = "en" -loading = "lazy" -``` - -## License - -See the [MIT License](https://codeberg.org/salif/linkita/src/branch/linkita/LICENSE) file. - -## Contributing - -Pull requests are welcome on [Codeberg](https://codeberg.org/salif/linkita) and [Github](https://github.com/salif/linkita). -Open bug reports and feature requests on [Codeberg](https://codeberg.org/salif/linkita/issues). - -## Blogs using this theme - -- [salif.eu](https://salif.eu): Personal website - [Zola Themes Collection](https://salif.github.io/zola-themes-collection/) - -If you use Linkita, feel free to create a pull request to add your site to this list. - -See also [Google results](https://www.google.com/search?q=%22Powered+by+Zola+and+Linkita%22+-site%3Ahttps%3A%2F%2Fsalif.github.io%2Flinkita%2F) -and [Bing results](https://www.bing.com/search?q=%22Powered+by+Zola+and+Linkita%22+-site%3Ahttps%3A%2F%2Fsalif.github.io%2Flinkita%2F). +- [Kita theme](https://github.com/st1020/kita) +- [Hugo-Paper theme](https://github.com/nanxiaobei/hugo-paper) diff --git a/config.toml b/config.toml index 740bada..c84d26c 100644 --- a/config.toml +++ b/config.toml @@ -1,16 +1,13 @@ base_url = "https://salif.github.io/linkita" +theme = "linkita" default_language = "bg" author = "your_username" -generate_feeds = true minify_html = true -[languages] - -[languages.bg] title = "Линкита" description = "Линкита е многоезична, SEO оптимизирана, изчистена и елегантна блог тема за Zola." -# generate_feeds = true +generate_feeds = true feed_filenames = ["atom.xml"] taxonomies = [ { name = "tags", feed = true, paginate_by = 5 }, diff --git a/justfile b/justfile index 12c799e..41c372f 100755 --- a/justfile +++ b/justfile @@ -3,22 +3,12 @@ just := just_executable() + " --justfile '" + justfile() + "'" zola := "zola" git := "git" -npm := "npm" browser := "brave" screenshot_url := "http://127.0.0.1:1111" -version_major := "0" -version_minor := `date +%Y_%m_%d` -version_patch := "0" -version := version_major + "." + version_minor + "." + version_patch _: @command {{ just }} --list --unsorted -[group('user')] -switch-to-latest: - command {{ git }} checkout $(command {{ git }} describe --tags $(command {{ git }} \ - rev-list --tags --max-count=1)) - [group('dev')] [private] serve-and args='': @@ -29,36 +19,9 @@ serve-and args='': serve: (serve-and) [group('dev')] -push-linkita: - command {{ git }} push codeberg linkita - command {{ git }} push github linkita - -[group('dev')] -release: (release-json version) && (release-git version) - command {{ npm }} run build - @command {{ git }} add ./static/main.css - command {{ zola }} check - command {{ git }} diff --cached --quiet - @! command {{ git }} show-ref --tags 'v{{ version }}' --quiet - @printf '%s\n' 'Releasing v{{ version }}' - -[confirm("Are you sure?")] -[group('dev')] -[private] -release-git version: - command {{ git }} tag -s -a 'v{{ version }}' -m 'Release v{{ version }}' - command {{ git }} push --follow-tags - -[group('dev')] -[private] -release-json version: - #!/usr/bin/env node - const fs = require("fs"); - const path = require("path"); - const jsonPath = path.join("package.json"); - const packageJson = JSON.parse(fs.readFileSync(jsonPath, "utf8")); - packageJson.version = "{{ version }}"; - fs.writeFileSync(jsonPath, JSON.stringify(packageJson, null, 2) + "\n", "utf8"); +push-demo: + command {{ git }} push codeberg-demo demo + command {{ git }} push github demo [group('dev')] format: @@ -77,8 +40,7 @@ set-screenshot-mode mode='light' schema='org.x.apps.portal': [group('dev')] add-screenshot screenshot_url=screenshot_url browser=browser: - command {{ browser }} --headless --disable-gpu --screenshot=screenshot.png --window-size=1400,936 \ + command {{ browser }} --headless --disable-gpu --screenshot=static/images/screenshot.png --window-size=1400,936 \ --hide-scrollbars --force-device-scale-factor=1.2 "{{ screenshot_url }}/en/" - magick screenshot.png -gravity north -crop '1360x765+0+0' screenshot.png - -mat2 --inplace screenshot.png - cp screenshot.png static/images/ + magick static/images/screenshot.png -gravity north -crop '1360x765+0+0' static/images/screenshot.png + -mat2 --inplace static/images/screenshot.png diff --git a/package.json b/package.json deleted file mode 100644 index 43028af..0000000 --- a/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "linkita", - "version": "0.2024_11_01.0", - "description": "A clean and elegant blog theme for Zola. Linkita is based on Kita and Hugo-Paper and is multilingual and SEO friendly.", - "homepage": "https://codeberg.org/salif/linkita", - "license": "MIT", - "author": { - "name": "Salif Mehmed", - "email": "mail@salif.eu", - "url": "https://salif.eu" - }, - "repository": { - "type": "git", - "url": "https://codeberg.org/salif/linkita.git" - }, - "scripts": { - "dev": "pnpm tailwindcss -i ./static/app.css -o ./static/main.css --watch", - "build": "pnpm tailwindcss -i ./static/app.css -o ./static/main.css --minify", - "switch-to-latest": "git checkout tags/v${npm_package_version}", - "windows-switch-to-latest": "git checkout tags/v%npm_package_version%" - }, - "dependencies": { - "@tailwindcss/typography": "^0.5.15", - "prettier": "^3.3.3", - "prettier-plugin-tailwindcss": "^0.6.8", - "tailwindcss": "^3.4.14", - "terser": "^5.36.0" - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index dcfd20c..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,1008 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@tailwindcss/typography': - specifier: ^0.5.15 - version: 0.5.15(tailwindcss@3.4.14) - prettier: - specifier: ^3.3.3 - version: 3.3.3 - prettier-plugin-tailwindcss: - specifier: ^0.6.8 - version: 0.6.8(prettier@3.3.3) - tailwindcss: - specifier: ^3.4.14 - version: 3.4.14 - terser: - specifier: ^5.36.0 - version: 5.36.0 - -packages: - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@tailwindcss/typography@0.5.15': - resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - cross-spawn@7.0.5: - resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} - engines: {node: '>= 8'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - 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'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} - hasBin: true - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - lodash.castarray@4.4.0: - resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - - prettier-plugin-tailwindcss@0.6.8: - resolution: {integrity: sha512-dGu3kdm7SXPkiW4nzeWKCl3uoImdd5CTZEJGxyypEPL37Wj0HT2pLqjrvSei1nTeuQfO4PUfjeW5cTUNRLZ4sA==} - engines: {node: '>=14.21.3'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - '@zackad/prettier-plugin-twig-melody': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-import-sort: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-multiline-arrays: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-sort-imports: '*' - prettier-plugin-style-order: '*' - prettier-plugin-svelte: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - '@zackad/prettier-plugin-twig-melody': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-multiline-arrays: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true - - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} - engines: {node: '>=14'} - hasBin: true - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - tailwindcss@3.4.14: - resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==} - engines: {node: '>=14.0.0'} - hasBin: true - - terser@5.36.0: - resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} - engines: {node: '>=10'} - hasBin: true - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - yaml@2.6.0: - resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} - engines: {node: '>= 14'} - hasBin: true - -snapshots: - - '@alloc/quick-lru@5.2.0': {} - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@tailwindcss/typography@0.5.15(tailwindcss@3.4.14)': - dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.14 - - acorn@8.14.0: {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - - balanced-match@1.0.2: {} - - binary-extensions@2.3.0: {} - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - buffer-from@1.1.2: {} - - camelcase-css@2.0.1: {} - - 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 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@2.20.3: {} - - commander@4.1.1: {} - - cross-spawn@7.0.5: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - cssesc@3.0.0: {} - - didyoumean@1.2.2: {} - - dlv@1.1.3: {} - - eastasianwidth@0.2.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.5 - signal-exit: 4.1.0 - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-core-module@2.15.1: - dependencies: - hasown: 2.0.2 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - isexe@2.0.0: {} - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jiti@1.21.6: {} - - lilconfig@2.1.0: {} - - lilconfig@3.1.2: {} - - lines-and-columns@1.2.4: {} - - lodash.castarray@4.4.0: {} - - lodash.isplainobject@4.0.6: {} - - lodash.merge@4.6.2: {} - - lru-cache@10.4.3: {} - - merge2@1.4.1: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minipass@7.1.2: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nanoid@3.3.7: {} - - normalize-path@3.0.0: {} - - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - package-json-from-dist@1.0.1: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - pify@2.3.0: {} - - pirates@4.0.6: {} - - postcss-import@15.1.0(postcss@8.4.49): - dependencies: - postcss: 8.4.49 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.49): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.49 - - postcss-load-config@4.0.2(postcss@8.4.49): - dependencies: - lilconfig: 3.1.2 - yaml: 2.6.0 - optionalDependencies: - postcss: 8.4.49 - - postcss-nested@6.2.0(postcss@8.4.49): - dependencies: - postcss: 8.4.49 - postcss-selector-parser: 6.1.2 - - postcss-selector-parser@6.0.10: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.49: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - prettier-plugin-tailwindcss@0.6.8(prettier@3.3.3): - dependencies: - prettier: 3.3.3 - - prettier@3.3.3: {} - - queue-microtask@1.2.3: {} - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - resolve@1.22.8: - dependencies: - is-core-module: 2.15.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - reusify@1.0.4: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@4.1.0: {} - - source-map-js@1.2.1: {} - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - supports-preserve-symlinks-flag@1.0.0: {} - - tailwindcss@3.4.14: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.6 - lilconfig: 2.1.0 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.4.49 - postcss-import: 15.1.0(postcss@8.4.49) - postcss-js: 4.0.1(postcss@8.4.49) - postcss-load-config: 4.0.2(postcss@8.4.49) - postcss-nested: 6.2.0(postcss@8.4.49) - postcss-selector-parser: 6.1.2 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - terser@5.36.0: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.0 - commander: 2.20.3 - source-map-support: 0.5.21 - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - ts-interface-checker@0.1.13: {} - - util-deprecate@1.0.2: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - yaml@2.6.0: {} diff --git a/screenshot.dark.png b/screenshot.dark.png deleted file mode 100644 index eab4823..0000000 Binary files a/screenshot.dark.png and /dev/null differ diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 2bf90c5..0000000 Binary files a/screenshot.png and /dev/null differ diff --git a/static/.nojekyll b/static/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/static/android-icon.png b/static/android-icon.png deleted file mode 100644 index 27c0992..0000000 Binary files a/static/android-icon.png and /dev/null differ diff --git a/static/app.css b/static/app.css deleted file mode 100644 index fb8b2a1..0000000 --- a/static/app.css +++ /dev/null @@ -1,149 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@layer base { - html, - body { - @apply h-full; - } - - html { - --bg: transparent; - --bg-dark: transparent; - --header: transparent; - --header-dark: transparent; - } - - body { - -webkit-tap-highlight-color: transparent; - background: var(--bg); - } - - .dark body { - background: var(--bg-dark); - } - - *, - ::before, - ::after { - /* Auto direction for text */ - unicode-bidi: plaintext; - } - - /* Code block */ - pre mark { - @apply block text-inherit; - } - - pre table { - @apply !m-0 !w-full border-collapse; - } - - pre table tr { - @apply !border-0 !border-none; - } - - pre table td { - @apply !p-0; - } - - pre table td:nth-of-type(1) { - @apply min-w-4 select-none; - } - - .prose .footnote-definition { - @apply flex; - } - - .prose .footnote-definition p { - @apply m-0; - } - - .prose .footnote-definition .footnote-definition-label { - @apply static mr-2 text-base; - } - - .prose .footnote-definition .footnote-definition-label::after { - content: "."; - } - - a { - @apply underline-offset-2; - } - - sup a { - @apply underline-offset-1; - } -} - -@layer utilities { - .not-ready * { - @apply !transition-none; - } - - .btn-menu::before, - .btn-menu::after { - @apply block h-[2px] w-5 bg-black duration-200 content-[''] dark:invert; - } - - .open { - @apply overflow-hidden; - } - - .open .btn-menu::before { - @apply w-6 translate-y-[5.5px] rotate-45; - } - - .open .btn-menu::after { - @apply w-6 -translate-y-[5.5px] -rotate-45; - } - - .nav-wrapper { - @apply hidden lg:flex; - } - - .open .nav-wrapper { - @apply flex; - } - - article { - @apply text-lg; - } - - .header { - background-color: var(--header); - } - - .dark .header { - background: var(--header-dark); - } - - .blur-header { - @apply bg-black/10 backdrop-blur dark:bg-white/10; - } - - .block-bg { - @apply bg-black/[3%] dark:bg-white/[8%]; - } - - .block-hover { - @apply hover:bg-black/[5%] dark:hover:bg-white/[11%]; - } - - .block-hover-mask { - @apply hover:bg-black/[2%] dark:hover:bg-white/[3%]; - } - - .primary-link { - @apply text-black no-underline hover:opacity-80 dark:text-white; - } - - .secondary-link { - @apply text-[var(--tw-prose-body)] no-underline hover:text-black dark:hover:text-white; - } - - .width-scroll { - @apply overflow-x-auto; - } -} diff --git a/static/apple-touch-icon.png b/static/apple-touch-icon.png deleted file mode 100644 index 20d0dd0..0000000 Binary files a/static/apple-touch-icon.png and /dev/null differ diff --git a/static/favicon.ico b/static/favicon.ico deleted file mode 100644 index 1960405..0000000 Binary files a/static/favicon.ico and /dev/null differ diff --git a/static/i18n.json b/static/i18n.json deleted file mode 100644 index ce83cf7..0000000 --- a/static/i18n.json +++ /dev/null @@ -1,423 +0,0 @@ -{ - "common_about": { - "en": "About", - "uwu": "abowt", - "uwu2": "abouwt", - "bg": "Относно", - "eo": "Pri", - "glb": "Tem" - }, - "common_about_me": { - "en": "About Me", - "uwu": "abowt me", - "uwu2": "abouwt me", - "bg": "За мен", - "eo": "Pri mi", - "glb": "Tem mi" - }, - "common_about_us": { - "en": "About Us", - "uwu": "abowt us", - "uwu2": "abouwt us", - "bg": "За нас", - "eo": "Pri ni", - "glb": "Tem imi" - }, - "common_archive": { - "en": "Archive", - "uwu": "awchive", - "uwu2": "awchive", - "bg": "Архив", - "eo": "Arkivo", - "glb": "Arcivo" - }, - "common_archives": { - "en": "Archives", - "uwu": "awchives", - "uwu2": "awchives", - "bg": "Архиви", - "eo": "Arkivoj", - "glb": "Arcivo" - }, - "common_article": { - "en": "Article", - "uwu": "awticwe", - "uwu2": "awticwe", - "bg": "Статия", - "eo": "Artikolo", - "glb": "Makale" - }, - "common_articles": { - "en": "Articles", - "uwu": "awticwes", - "uwu2": "awticwes", - "bg": "Статии", - "eo": "Artikoloj", - "glb": "Makale" - }, - "common_author": { - "en": "Author", - "uwu": "authow-chan", - "uwu2": "authow", - "bg": "Автор", - "eo": "Aŭtoro", - "glb": "Eskriyen" - }, - "common_authors": { - "en": "Authors", - "uwu": "authow-chans", - "uwu2": "authows", - "bg": "Автори", - "eo": "Aŭtoroj", - "glb": "Eskriyen" - }, - "common_blog": { - "en": "Blog", - "uwu": "bwog", - "uwu2": "bwog", - "bg": "Блог", - "eo": "Blogo", - "glb": "Blogu" - }, - "common_blogs": { - "en": "Blogs", - "uwu": "bwogs", - "uwu2": "bwogs", - "bg": "Блогове", - "eo": "Blogoj", - "glb": "Blogu" - }, - "common_category": { - "en": "Category", - "uwu": "categowy", - "uwu2": "categowy", - "bg": "Категория", - "eo": "Kategorio", - "glb": "Klase" - }, - "common_categories": { - "en": "Categories", - "uwu": "categowies", - "uwu2": "categowies", - "bg": "Категории", - "eo": "Kategorioj", - "glb": "Klase" - }, - "common_code": { - "en": "Code", - "uwu": "codey-wodey", - "uwu2": "code", - "bg": "Код", - "eo": "Kodo", - "glb": "Kodi" - }, - "common_comment": { - "en": "Comment", - "uwu": "chatty", - "uwu2": "commyent", - "bg": "Коментар", - "eo": "Komento", - "glb": "Komenta" - }, - "common_comments": { - "en": "Comments", - "uwu": "chatties", - "uwu2": "commyents", - "bg": "Коментари", - "eo": "Komentoj", - "glb": "Komenta" - }, - "common_contacts": { - "en": "Contacts", - "uwu": "fwiend wist", - "uwu2": "contwacts", - "bg": "Контакти", - "eo": "Kontaktoj", - "glb": "Kontato" - }, - "common_do_contact_me": { - "en": "Contact Me", - "uwu": "say hewwo to me", - "uwu2": "contwact me", - "bg": "Контакти", - "eo": "Kontakti min", - "glb": "Kontato mi" - }, - "common_do_contact_us": { - "en": "Contact Us", - "uwu": "say hewwo to us", - "uwu2": "contwact us", - "bg": "Контакти", - "eo": "Kontakti nin", - "glb": "Kontato imi" - }, - "common_do_follow": { - "en": "Follow", - "uwu": "befwiend", - "uwu2": "fowwow", - "bg": "Последвайте", - "eo": "Sekvi", - "glb": "Folo" - }, - "common_do_install": { - "en": "Install", - "uwu": "instaww", - "uwu2": "instaww", - "bg": "Инсталирайте", - "eo": "Instali", - "glb": "Istala" - }, - "common_do_read_more": { - "en": "Read more", - "uwu": "wead mowe", - "uwu2": "wead mowe", - "bg": "Прочетете повече", - "eo": "Legu pli", - "glb": "Doxo max" - }, - "common_do_search": { - "en": "Search", - "uwu": "find stuffies", - "uwu2": "seawch", - "bg": "Търсене", - "eo": "Serĉi", - "glb": "Xerca" - }, - "common_do_subscribe": { - "en": "Subscribe", - "uwu": "subscwibe", - "uwu2": "subscwibe", - "bg": "Абониране", - "eo": "Aboni", - "glb": "Abone" - }, - "common_feed": { - "en": "Feed", - "uwu": "feedy", - "uwu2": "feedy", - "bg": "Емисия", - "eo": "Fluo" - }, - "common_feeds": { - "en": "Feeds", - "uwu": "feeds", - "uwu2": "feeds", - "bg": "Емисии", - "eo": "Fluoj" - }, - "common_forum": { - "en": "Forum", - "uwu": "chatty pwace", - "uwu2": "fowum", - "bg": "Форум", - "eo": "Forumo", - "glb": "Forum" - }, - "common_home": { - "en": "Home", - "uwu": "home sweet home", - "uwu2": "home", - "bg": "Начало", - "eo": "Hejmo", - "glb": "Ogar" - }, - "common_links": { - "en": "Links", - "uwu": "winkies", - "uwu2": "winkies", - "bg": "Връзки", - "eo": "Ligiloj", - "glb": "Linkutul" - }, - "common_more": { - "en": "More", - "uwu": "mowe pwease", - "uwu2": "mowe", - "bg": "Още", - "eo": "Pli", - "glb": "Max to" - }, - "common_news": { - "en": "News", - "uwu": "nyews", - "uwu2": "nyews", - "bg": "Новини", - "eo": "Novaĵoj", - "glb": "Haberi" - }, - "common_photos": { - "en": "Photos", - "uwu": "pictwues", - "uwu2": "photos uwu", - "bg": "Снимки", - "eo": "Fotoj", - "glb": "Foto" - }, - "common_preferences": { - "en": "Preferences", - "uwu": "favowite things", - "uwu2": "pwefewences", - "bg": "Предпочитания", - "eo": "Preferoj", - "glb": "Preferi" - }, - "common_project": { - "en": "Project", - "uwu": "pwoject", - "uwu2": "pwowject", - "bg": "Проект", - "eo": "Projekto", - "glb": "Projeto" - }, - "common_projects": { - "en": "Projects", - "uwu": "pwojects", - "uwu2": "pwowjects", - "bg": "Проекти", - "eo": "Projektoj", - "glb": "Projeto" - }, - "common_settings": { - "en": "Settings", - "uwu": "customize me", - "uwu2": "settin's", - "bg": "Настройки", - "eo": "Agordoj", - "glb": "Setin" - }, - "common_source_code": { - "en": "Source code", - "uwu": "magic spewws", - "uwu2": "souce code", - "bg": "Изходен код", - "eo": "Fontkodo" - }, - "common_tag": { - "en": "Tag", - "uwu": "tag", - "uwu2": "tag", - "bg": "Етикет", - "eo": "Etikedo", - "glb": "Label" - }, - "common_tags": { - "en": "Tags", - "uwu": "tags", - "uwu2": "tags", - "bg": "Етикети", - "eo": "Etikedoj", - "glb": "Label" - }, - "common_team": { - "en": "Team", - "uwu": "fwiend gwoup", - "uwu2": "teamy", - "bg": "Екип", - "eo": "Teamo", - "glb": "Tim" - }, - "language_names": { - "en": "English", - "uwu": "engwish (uwu)", - "uwu2": "Engwish (uwu)", - "bg": "български", - "eo": "Esperanto", - "glb": "Globasa" - }, - "word_translations": { - "en": "Translations", - "uwu": "twanswations", - "uwu2": "twanswations", - "bg": "Преводи", - "eo": "Tradukoj", - "glb": "Basatayti" - }, - "taxonomy_tags": { - "en": "Tags", - "uwu": "tags", - "uwu2": "tags", - "bg": "Етикети", - "eo": "Etikedoj", - "glb": "Label" - }, - "taxonomy_categories": { - "en": "Categories", - "uwu": "categowies", - "uwu2": "categowies", - "bg": "Категории", - "eo": "Kategorioj", - "glb": "Klase" - }, - "taxonomy_authors": { - "en": "Authors", - "uwu": "authow-chans", - "uwu2": "authows", - "bg": "Автори", - "eo": "Aŭtoroj", - "glb": "Eskriyen" - }, - "footer_powered_by": { - "en": "Powered by $$Zola$$ and $$Linkita$$", - "uwu": "made with wuv by $$zola$$ and $$linkita$$", - "uwu2": "powewed by $$zola$$ an' $$linkita$$", - "bg": "Осъществено чрез $$Зола$$ и $$Линкита$$", - "eo": "Funkciigita de $$Zola$$ kaj $$Linkita$$", - "glb": "$$Zola$$ | $$Linkita$$" - }, - "word_prev_page": { - "en": "Prev Page", - "uwu": "pwev page", - "uwu2": "Pwev Page", - "bg": "Предишна страница", - "eo": "Antaŭa paĝo", - "glb": "sayfa" - }, - "word_next_page": { - "en": "Next Page", - "uwu": "nyext page", - "uwu2": "Nyext Page", - "bg": "Следваща страница", - "eo": "Sekva paĝo", - "glb": "sayfa" - }, - "word_toc": { - "en": "Table of Contents", - "uwu": "tabwe of contyents", - "uwu2": "Tabwe of Contyents", - "bg": "Съдържание", - "eo": "Enhavtabelo", - "glb": "Inhare" - }, - "word_minutes": { - "en": "min", - "uwu": "minnyutes", - "uwu2": "minnytes", - "bg": "мин", - "eo": "min", - "glb": "min" - }, - "word_words": { - "en": "words", - "uwu": "wowds", - "uwu2": "wowds", - "bg": "думи", - "eo": "vortoj", - "glb": "lexi" - }, - "word_more": { - "en": "More >>", - "uwu": "mowe >>", - "uwu2": "Mowe >>", - "bg": "Още >>", - "eo": "Pli >>", - "glb": "Max to >>" - }, - "error_not_found": { - "en": "404: Page not found!", - "uwu": "404: page got wost in the void!", - "uwu2": "404: P-page nyot found! >.<", - "bg": "404: Страницата не е намерена!", - "eo": "404: ne trovita!", - "glb": "404" - } -} diff --git a/static/icons/abstract.svg b/static/icons/abstract.svg deleted file mode 100644 index 3f99d72..0000000 --- a/static/icons/abstract.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/bluesky.svg b/static/icons/bluesky.svg deleted file mode 100644 index ce0126e..0000000 --- a/static/icons/bluesky.svg +++ /dev/null @@ -1 +0,0 @@ -Bluesky \ No newline at end of file diff --git a/static/icons/bug.svg b/static/icons/bug.svg deleted file mode 100644 index 26b46fe..0000000 --- a/static/icons/bug.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/codeberg.svg b/static/icons/codeberg.svg deleted file mode 100644 index c560579..0000000 --- a/static/icons/codeberg.svg +++ /dev/null @@ -1 +0,0 @@ -Codeberg \ No newline at end of file diff --git a/static/icons/danger.svg b/static/icons/danger.svg deleted file mode 100644 index a66018a..0000000 --- a/static/icons/danger.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/email.svg b/static/icons/email.svg deleted file mode 100644 index d6f8efd..0000000 --- a/static/icons/email.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/example.svg b/static/icons/example.svg deleted file mode 100644 index 5dee615..0000000 --- a/static/icons/example.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/failure.svg b/static/icons/failure.svg deleted file mode 100644 index 59e0d29..0000000 --- a/static/icons/failure.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/git.svg b/static/icons/git.svg deleted file mode 100644 index 13af359..0000000 --- a/static/icons/git.svg +++ /dev/null @@ -1 +0,0 @@ -Git \ No newline at end of file diff --git a/static/icons/github.svg b/static/icons/github.svg deleted file mode 100644 index 538ec5b..0000000 --- a/static/icons/github.svg +++ /dev/null @@ -1 +0,0 @@ -GitHub \ No newline at end of file diff --git a/static/icons/home.svg b/static/icons/home.svg deleted file mode 100644 index 8376733..0000000 --- a/static/icons/home.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/info.svg b/static/icons/info.svg deleted file mode 100644 index 652acbe..0000000 --- a/static/icons/info.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/note.svg b/static/icons/note.svg deleted file mode 100644 index 664f2cf..0000000 --- a/static/icons/note.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/question.svg b/static/icons/question.svg deleted file mode 100644 index dadbbd2..0000000 --- a/static/icons/question.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/quote.svg b/static/icons/quote.svg deleted file mode 100644 index 5d1ee18..0000000 --- a/static/icons/quote.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/rss.svg b/static/icons/rss.svg deleted file mode 100644 index 7920dc2..0000000 --- a/static/icons/rss.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/static/icons/search.svg b/static/icons/search.svg deleted file mode 100644 index 2be2aec..0000000 --- a/static/icons/search.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/success.svg b/static/icons/success.svg deleted file mode 100644 index 9ba4259..0000000 --- a/static/icons/success.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/theme.svg b/static/icons/theme.svg deleted file mode 100644 index b12bc66..0000000 --- a/static/icons/theme.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/static/icons/tip.svg b/static/icons/tip.svg deleted file mode 100644 index d9a1cc8..0000000 --- a/static/icons/tip.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/translations.svg b/static/icons/translations.svg deleted file mode 100644 index c093f80..0000000 --- a/static/icons/translations.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/icons/warning.svg b/static/icons/warning.svg deleted file mode 100644 index 0a695fd..0000000 --- a/static/icons/warning.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/js/linkita-search.js b/static/js/linkita-search.js deleted file mode 100644 index ad1b62e..0000000 --- a/static/js/linkita-search.js +++ /dev/null @@ -1,83 +0,0 @@ -"use strict"; -(function () { - let searchFiles; - let mySearchIndex; - - function toggleSearch() { - const searchWrapperEl = document.getElementById("linkita-search-wrapper"); - const searchResultsEl = document.getElementById("linkita-search-results"); - if (null == searchWrapperEl || null == searchResultsEl) { - console.error("searchWrapper is null"); - return; - } else { - searchWrapperEl.classList.remove("hidden"); - } - - const q = prompt("Enter your search term"); - if (null == q) { - searchWrapperEl.classList.add("hidden"); - return; - } - - if ("undefined" === typeof (searchIndex) && "undefined" === typeof (elasticlunr)) { - searchResultsEl.innerHTML = "
  • Search: Please wait...
  • "; - Promise.all(searchFiles.map(loadScript)) - .catch(error => { - showError(searchResultsEl, "
  • Search file not found: " + error + "
  • "); - }) - .then((t) => { - mySearchIndex = elasticlunr.Index.load(window.searchIndex); - doSearch(q, searchResultsEl); - }); - } else { - doSearch(q, searchResultsEl); - } - } - - function doSearch(q, searchResultsEl) { - const searchResults = mySearchIndex.search(q); - const searchResultsCount = searchResults.length; - if (searchResultsCount > 0) { - const searchResultsRows = ["
  • " + searchResultsCount + " search " + - (searchResultsCount === 1 ? "result" : "results") + " for " + mySafe(q) + ":
  • "]; - for (let i = 0; i < searchResultsCount; i++) { - const searchResult = searchResults[i]; - searchResultsRows.push("
  • " + - mySafe(searchResult.doc.title) + "
  • "); - } - searchResultsEl.innerHTML = searchResultsRows.join(""); - searchResultsEl.scrollIntoViewIfNeeded(); - } else { - showError(searchResultsEl, "
  • No search results for " + mySafe(q) + ".
  • "); - } - } - - function showError(searchResultsEl, err) { - searchResultsEl.innerHTML = err; - searchResultsEl.scrollIntoViewIfNeeded(); - } - - function mySafe(code) { - return code.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); - } - - function loadScript(fileName) { - return new Promise((resolve, reject) => { - const scriptEl = document.createElement("script"); - scriptEl.onload = () => resolve(fileName); - scriptEl.onerror = () => reject(fileName); - scriptEl.async = true; - scriptEl.src = fileName; - document.head.appendChild(scriptEl); - }); - } - - function initSearchButton(filenames) { - searchFiles = filenames; - } - - if (null == window.linkita) window.linkita = {}; - window.linkita.toggleSearch = toggleSearch; - window.linkita.initSearchButton = initSearchButton; -})(); diff --git a/static/js/linkita.js b/static/js/linkita.js deleted file mode 100644 index c54df7d..0000000 --- a/static/js/linkita.js +++ /dev/null @@ -1,116 +0,0 @@ -"use strict"; -(function () { - const htmlClass = document.documentElement.classList; - const themeColorTag = document.head.querySelector('meta[name="theme-color"]'); - const darkScheme = window.matchMedia("(prefers-color-scheme: dark)"); - - function applyDarkMode(isDark, doDispatchEvent) { - if (isDark) { - htmlClass.add("dark"); - themeColorTag?.setAttribute("content", themeColorTag.dataset.dark); - } else { - htmlClass.remove("dark"); - themeColorTag?.setAttribute("content", themeColorTag.dataset.light); - } - if (doDispatchEvent) { - document.body?.dispatchEvent(new CustomEvent("set-theme", - { detail: isDark ? "dark" : "light" })); - } - } - - function initDarkMode() { - const darkVal = localStorage.getItem("dark"); - if (darkVal) { - applyDarkMode(darkVal === "dark", false); - } else if (htmlClass.contains("dark")) { - applyDarkMode(true, false); - } else { - applyDarkMode(darkScheme.matches, false); - } - - darkScheme.addEventListener("change", (event) => { - applyDarkMode(event.matches, true); - }); - - htmlClass.remove("not-ready"); - } - - function toggleDarkMode() { - const isDark = !htmlClass.contains("dark"); - applyDarkMode(isDark, true); - localStorage.setItem("dark", isDark ? "dark" : "light"); - } - - function resetDarkMode() { - localStorage.removeItem("dark"); - applyDarkMode(darkScheme.matches, true); - } - - function initTranslationsButton(btn) { - let userLanguages = []; - if (navigator.languages) { - userLanguages = navigator.languages; - } else if (navigator.language) { - userLanguages = [navigator.language]; - } else if (navigator.userLanguage) { - userLanguages = [navigator.userLanguage]; - } - const pageLanguage = document.documentElement.getAttribute("lang"); - const pageTranslations = new Map(); - document.head.querySelectorAll("link[rel='alternate'][hreflang]").forEach(el => { - const hreflang = el.getAttribute("hreflang"); - const href = el.getAttribute("href"); - if (hreflang !== pageLanguage) { - pageTranslations.set(hreflang, href); - const hreflangcode = hreflang.split("-")[0]; - if (!pageTranslations.has(hreflangcode)) { - pageTranslations.set(hreflangcode, href); - } - } - }); - for (let i = 0; i < userLanguages.length; i++) { - const userLanguage = userLanguages[i]; - const pageTranslation = pageTranslations.get(userLanguage) || - pageTranslations.get(userLanguage.split("-")[0]); - if (undefined != pageTranslation) { - btn.classList.remove("hidden"); - btn.addEventListener("click", () => { - window.location.href = pageTranslation; - }); - break; - } - } - } - - function toggleHeaderMenu() { - htmlClass.toggle("open"); - } - - function initKatex() { - window.renderMathInElement(document.body, { - // customised options - // • auto-render specific keys, e.g.: - delimiters: [ - { left: "$$", right: "$$", display: true }, - { left: "$", right: "$", display: false }, - ], - // • rendering keys, e.g.: - throwOnError: false, - }) - } - - function main() { - initDarkMode(); - - window.linkita = { - applyDarkMode: applyDarkMode, - toggleDarkMode: toggleDarkMode, - resetDarkMode: resetDarkMode, - initTranslationsButton: initTranslationsButton, - toggleHeaderMenu: toggleHeaderMenu, - initKatex: initKatex, - }; - } - - main(); -})(); diff --git a/static/main.css b/static/main.css deleted file mode 100644 index a9d3949..0000000 --- a/static/main.css +++ /dev/null @@ -1 +0,0 @@ -*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.14 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}body,html{height:100%}html{--bg:transparent;--bg-dark:transparent;--header:transparent;--header-dark:transparent}body{-webkit-tap-highlight-color:transparent;background:var(--bg)}.dark body{background:var(--bg-dark)}*,:after,:before{unicode-bidi:plaintext}pre mark{display:block;color:inherit}pre table{margin:0!important;width:100%!important;border-collapse:collapse}pre table tr{border-width:0!important;border-style:none!important}pre table td{padding:0!important}pre table td:first-of-type{min-width:1rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.prose .footnote-definition{display:flex}.prose .footnote-definition p{margin:0}.prose .footnote-definition .footnote-definition-label{position:static;margin-right:.5rem;font-size:1rem;line-height:1.5rem}.prose .footnote-definition .footnote-definition-label:after{content:"."}a{text-underline-offset:2px}sup a{text-underline-offset:1px}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-neutral{--tw-prose-body:#404040;--tw-prose-headings:#171717;--tw-prose-lead:#525252;--tw-prose-links:#171717;--tw-prose-bold:#171717;--tw-prose-counters:#737373;--tw-prose-bullets:#d4d4d4;--tw-prose-hr:#e5e5e5;--tw-prose-quotes:#171717;--tw-prose-quote-borders:#e5e5e5;--tw-prose-captions:#737373;--tw-prose-kbd:#171717;--tw-prose-kbd-shadows:23 23 23;--tw-prose-code:#171717;--tw-prose-pre-code:#e5e5e5;--tw-prose-pre-bg:#262626;--tw-prose-th-borders:#d4d4d4;--tw-prose-td-borders:#e5e5e5;--tw-prose-invert-body:#d4d4d4;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#a3a3a3;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#a3a3a3;--tw-prose-invert-bullets:#525252;--tw-prose-invert-hr:#404040;--tw-prose-invert-quotes:#f5f5f5;--tw-prose-invert-quote-borders:#404040;--tw-prose-invert-captions:#a3a3a3;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d4d4d4;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#525252;--tw-prose-invert-td-borders:#404040}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-8{left:2rem;right:2rem}.bottom-20{bottom:5rem}.top-0{top:0}.z-40{z-index:40}.z-50{z-index:50}.\!my-0{margin-top:0!important;margin-bottom:0!important}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-1\.5{margin-bottom:.375rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-1\.5{margin-left:.375rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1\.5{margin-right:.375rem}.mr-5{margin-right:1.25rem}.mr-6{margin-right:1.5rem}.mr-auto{margin-right:auto}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.block{display:block}.inline{display:inline}.flex{display:flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-4{height:1rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-auto{height:auto}.h-full{height:100%}.min-h-\[3\.25rem\]{min-height:3.25rem}.min-h-\[calc\(100\%-4rem\)\]{min-height:calc(100% - 4rem)}.w-16{width:4rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-full{width:100%}.min-w-\[50\%\]{min-width:50%}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-full{flex-basis:100%}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-4{gap:1rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border-\[0\.5px\]{border-width:.5px}.border-black\/10{border-color:rgba(0,0,0,.1)}.\!bg-black\/5{background-color:rgba(0,0,0,.05)!important}.bg-\[var\(--admonition-bg\)\]{background-color:var(--admonition-bg)}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-inherit{background-color:inherit}.bg-white\/50{background-color:hsla(0,0%,100%,.5)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-1{padding-bottom:.25rem}.pb-12{padding-bottom:3rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pt-28{padding-top:7rem}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-6xl{font-size:3.75rem;line-height:1}.text-\[0\]{font-size:0}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.\!leading-none{line-height:1!important}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.not-ready *{transition-property:none!important}.btn-menu:after,.btn-menu:before{display:block;height:2px;width:1.25rem;--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity));transition-duration:.2s;--tw-content:"";content:var(--tw-content)}.btn-menu:is(.dark *):after,.btn-menu:is(.dark *):before{--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.open .btn-menu:before{--tw-translate-y:5.5px;--tw-rotate:45deg}.open .btn-menu:after,.open .btn-menu:before{width:1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.open .btn-menu:after{--tw-translate-y:-5.5px;--tw-rotate:-45deg}.nav-wrapper{display:none}@media (min-width:1024px){.nav-wrapper{display:flex}}.open .nav-wrapper{display:flex}article{font-size:1.125rem;line-height:1.75rem}.header{background-color:var(--header)}.dark .header{background:var(--header-dark)}.blur-header{background-color:rgba(0,0,0,.1);--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.blur-header:is(.dark *){background-color:hsla(0,0%,100%,.1)}.block-bg{background-color:rgb(0 0 0/3%)}.block-bg:is(.dark *){background-color:hsla(0,0%,100%,.08)}.block-hover:hover{background-color:rgb(0 0 0/5%)}.block-hover:hover:is(.dark *){background-color:hsla(0,0%,100%,.11)}.block-hover-mask:hover{background-color:rgb(0 0 0/2%)}.block-hover-mask:hover:is(.dark *){background-color:hsla(0,0%,100%,.03)}.primary-link{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity));text-decoration-line:none}.primary-link:hover{opacity:.8}.primary-link:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.secondary-link{color:var(--tw-prose-body);text-decoration-line:none}.secondary-link:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.secondary-link:hover:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.width-scroll{overflow-x:auto}.\[background-image\:var\(--url-dark\)\]{background-image:var(--url-dark)}.\[background\:var\(--url\)_center_center\/cover_no-repeat\]{background:var(--url) center center/cover no-repeat}.\[background\:var\(--url\)_center_center_no-repeat\]{background:var(--url) center center no-repeat}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.first-of-type\:mt-0:first-of-type{margin-top:0}.last-of-type\:mb-0:last-of-type{margin-bottom:0}@keyframes spin{to{transform:rotate(1turn)}}.hover\:animate-spin:hover{animation:spin 1s linear infinite}.hover\:underline:hover{text-decoration-line:underline}.active\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.prose-pre\:rounded-lg :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:.5rem}.prose-img\:rounded-lg :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:.5rem}.dark\:bg-white\/80:is(.dark *){background-color:hsla(0,0%,100%,.8)}.dark\:bg-white\/\[15\%\]:is(.dark *){background-color:hsla(0,0%,100%,.15)}.dark\:text-black:is(.dark *){--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\:invert:is(.dark *){--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.dark\:\[background-image\:var\(--url-light\)\]:is(.dark *){background-image:var(--url-light)}@media (min-width:768px){.md\:min-h-\[18rem\]{min-height:18rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:mb-6{margin-bottom:1.5rem}.lg\:ml-6{margin-left:1.5rem}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-\[4rem\]{height:4rem}.lg\:w-auto{width:auto}.lg\:basis-1\/2{flex-basis:50%}.lg\:flex-row{flex-direction:row}.lg\:justify-end{justify-content:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:self-center{align-self:center}.lg\:p-6{padding:1.5rem}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:py-0{padding-top:0;padding-bottom:0}.lg\:py-1{padding-top:.25rem;padding-bottom:.25rem}.lg\:pt-32{padding-top:8rem}.lg\:text-base{font-size:1rem;line-height:1.5rem}} \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index 36ccdf5..0000000 --- a/tailwind.config.js +++ /dev/null @@ -1,10 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: ["./templates/**/*.html"], - darkMode: "class", - theme: { - extend: {}, - }, - safelist: ["width-scroll"], - plugins: [require("@tailwindcss/typography")], -}; diff --git a/templates/404.html b/templates/404.html deleted file mode 100644 index fec9e11..0000000 --- a/templates/404.html +++ /dev/null @@ -1,5 +0,0 @@ -{% extends "index.html" %} -{% block main %} -

    {{ - macros::translate(key="error_not_found", language=lang, trans_data=trans_data) }}

    -{% endblock main %} diff --git a/templates/archive.html b/templates/archive.html deleted file mode 100644 index b5a7485..0000000 --- a/templates/archive.html +++ /dev/null @@ -1,29 +0,0 @@ -{% extends "index.html" %} -{% block main %} - -

    {{ page.title }}

    - -{% set section = get_section(path=page.extra.section) %} - -{% for year, posts in section.pages | group_by(attribute="year") %} -

    {{ year }} {{ posts | length }}

    - -
    - -
    - -{% endfor %} -{% endblock main %} diff --git a/templates/index.html b/templates/index.html deleted file mode 100644 index 78fdfe9..0000000 --- a/templates/index.html +++ /dev/null @@ -1,35 +0,0 @@ -{% import "macros.html" as macros %} -{%- set trans_data = load_data(path="i18n.json", format="json") -%} - - - {% include "partials/head.html" %} - - {% include "partials/header.html" %} - - - {% include "injects/body_start.html" ignore missing %} - -
    - {%- if config.build_search_index %} - {% include "partials/search.html" %} - {%- endif %} - {% block main %} - - - {%- if paginator is undefined or paginator.current_index == 1 %} - {% include "partials/profile.html" %} - {%- endif %} - - {% include "partials/page_list.html" %} - {% endblock main %} -
    - - {% include "partials/footer.html" %} - - - {% include "injects/body_end.html" ignore missing %} - - diff --git a/templates/macros.html b/templates/macros.html deleted file mode 100644 index 65f1145..0000000 --- a/templates/macros.html +++ /dev/null @@ -1,37 +0,0 @@ -{%- macro get_social_icon(icon) -%} -{%- set path = "icons/" ~ icon ~ ".svg" -%} -{%- set meta = get_image_metadata(path=path, allow_missing=true) -%} -{%- if meta -%} -{{- get_url(path=path) -}} -{%- else -%} -{{- "https://cdn.jsdelivr.net/npm/simple-icons/icons/" ~ icon ~ ".svg" -}} -{%- endif -%} -{%- endmacro get_social_icon -%} - -{%- macro get_profile_name(username) -%} -{%- if config.extra.profiles[username] -%} -{%- set profile_data = config.extra.profiles[username] -%} -{%- if profile_data.languages[lang].name -%} -{%- set profile_name = profile_data.languages[lang].name -%} -{%- elif profile_data.name -%} -{%- set profile_name = profile_data.name -%} -{%- else -%} -{%- set profile_name = username -%} -{%- endif -%} -{%- else -%} -{%- set profile_name = username -%} -{%- endif -%} -{%- if profile_name -%} -{{- profile_name -}} -{%- endif -%} -{%- endmacro get_profile_name -%} - -{%- macro translate(key, language, trans_data) -%} -{%- if trans_data[key][language] -%} -{{- trans_data[key][language] -}} -{%- elif trans_data[key]["en"] -%} -{{- trans_data[key]["en"] -}} -{%- else -%} -{{- trans_data[key][language] -}} -{%- endif -%} -{%- endmacro translate -%} diff --git a/templates/page.html b/templates/page.html deleted file mode 100644 index f83f571..0000000 --- a/templates/page.html +++ /dev/null @@ -1,38 +0,0 @@ -{% extends "index.html" %} -{% block main %} -
    - - {% include "injects/page_start.html" ignore missing %} - -
    -

    {{ page.title }}

    - {% include "partials/page_info.html" %} -
    - - {% if page.extra.cover.image %} -
    - -
    - {% endif %} - - - {% include "partials/toc.html" %} - - -
    {{ page.content | safe }}
    -
    - - {% include "partials/post_taxonomies.html" %} - - {% include "partials/post_navigation.html" %} - - {% if page.extra.comment | default(value=config.extra.comment) %} - {% include "partials/comment.html" %} - {% endif %} - - {% include "injects/page_end.html" ignore missing %} -
    -{% endblock main %} diff --git a/templates/pages.html b/templates/pages.html deleted file mode 100644 index ab016c2..0000000 --- a/templates/pages.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "index.html" %} -{% block main %} -
    -
    -

    {{ page.title }}

    -
    - -
    {{ page.content | safe }}
    -
    -{% endblock main %} diff --git a/templates/partials/comment.html b/templates/partials/comment.html deleted file mode 100644 index 7bae819..0000000 --- a/templates/partials/comment.html +++ /dev/null @@ -1,20 +0,0 @@ -{% if config.extra.giscus.repo and not config.extra.disable_javascript %} -
    - -{% endif %} diff --git a/templates/partials/footer.html b/templates/partials/footer.html deleted file mode 100644 index 4e086bd..0000000 --- a/templates/partials/footer.html +++ /dev/null @@ -1,61 +0,0 @@ - diff --git a/templates/partials/head.html b/templates/partials/head.html deleted file mode 100644 index b9fa830..0000000 --- a/templates/partials/head.html +++ /dev/null @@ -1,358 +0,0 @@ -{% import "macros.html" as macros %} -{%- if section.extra.profile or page.extra.profile %} - {%- set profile_username = page.extra.profile | default(value=section.extra.profile) %} -{%- elif taxonomy.name and taxonomy.name == "authors" and term.name %} - {%- set profile_username = term.name %} -{%- endif %} -{%- if profile_username and config.extra.profiles[profile_username] %} - {%- set profile_data = config.extra.profiles[profile_username] %} -{%- endif %} -{%- if page.taxonomies.authors %} - {%- set page_authors = page.taxonomies.authors %} -{%- elif page.authors %} - {%- set page_authors = page.authors %} -{%- elif config.author %} - {%- set page_authors = [config.author] %} -{%- else %} - {%- set page_authors = [] %} -{%- endif %} - -{%- if lang == config.default_language %} - {%- set base_url_prefix = config.base_url %} -{%- else %} - {%- set base_url_prefix = config.base_url ~ "/" ~ lang %} -{%- endif %} -{%- set config_title = config.title | default(value="") %} -{%- set title_separator = config.extra.title_separator | default(value= " | ") %} - - - - - -{%- if page.title %} - {%- set page_title = page.title %} - {%- if page.description %} - {%- set page_description = page.description %} - {%- elif page.summary %} - {%- set page_description = page.summary | linebreaksbr | striptags %} - {%- endif %} -{%- elif taxonomy.name %} - {%- if taxonomy.name == "tags"%} - {%- set page_title = macros::translate(key="taxonomy_tags", language=lang, trans_data=trans_data) %} - {%- elif taxonomy.name == "categories"%} - {%- set page_title = macros::translate(key="taxonomy_categories", language=lang, trans_data=trans_data) %} - {%- elif taxonomy.name == "authors"%} - {%- set page_title = macros::translate(key="taxonomy_authors", language=lang, trans_data=trans_data) %} - {%- else %} - {%- set page_title = taxonomy.name %} - {%- endif %} - {%- if term.name %} - {%- if taxonomy.name == "authors" %} - {%- set term_name = macros::get_profile_name(username=term.name) %} - {%- set page_title = term_name ~ title_separator ~ page_title %} - {%- else %} - {%- set page_title = term.name ~ title_separator ~ page_title %} - {%- endif %} - {%- endif %} -{%- elif section.title %} - {%- set page_title = section.title %} - {%- if section.description %} - {%- set page_description = section.description %} - {%- endif %} -{%- elif current_url %} - {%- set page_title = config_title %} - {%- set page_description = config.description | default(value="") %} -{%- else %} - {%- set page_title = macros::translate(key="error_not_found", language=lang, trans_data=trans_data) %} - {%- set is_404 = true %} - - -{%- endif %} - -{%- if page_title %} - {%- if config_title %} - {% - if page_title == config_title %}{{ page_title }}{% - else %}{{ page_title ~ title_separator ~ config_title }}{% - endif %} - - {%- else %} - {{ page_title }} - {%- endif %} - -{%- endif %} -{%- if page_description %} - - -{%- endif %} -{%- if current_url %} - {%- if page.extra.open_graph.url %} - - {%- else %} - - {%- endif %} - - -{%- endif %} - -{%- if page.date %} - - {%- if page.date %} - - {%- endif %} - {%- if page.updated %} - - {%- endif %} - {%- if page.extra.expiration_time %} - - {%- endif %} - {%- if page.taxonomies.authors %} - {%- for page_author in page.taxonomies.authors %} - - {%- endfor %} - {%- endif %} - {%- if page.extra.open_graph.content_tier %} - - {%- endif %} - {%- if page.extra.open_graph.section %} - - {%- endif %} - {%- if page.extra.open_graph.opinion is defined %} - - {%- endif %} - - {%- if page.extra.open_graph.locations %} - {%- for og_location in page.extra.open_graph.locations %} - - {%- endfor %} - {%- endif %} - - {%- if page.extra.open_graph.tags %} - {%- for og_tag in page.extra.open_graph.tags %} - - {%- endfor %} - {%- endif %} -{%- elif profile_username %} - - {%- if profile_data.open_graph.first_name %} - - {%- endif %} - {%- if profile_data.open_graph.last_name %} - - {%- endif %} - {%- if profile_data.open_graph.username %} - - {%- endif %} - {%- if profile_data.open_graph.gender %} - - {%- endif %} -{%- else %} - -{%- endif %} - -{%- if page.translations or section.translations %} - {%- set page_translations = page.translations | default(value=section.translations) %} - {%- for page_translation in page_translations %} - {%- if page_translation.lang == lang and config.extra.languages[lang].locale %} - - {%- elif config.extra.languages[page_translation.lang].locale %} - - {%- endif %} - - {%- endfor %} -{%- endif %} - -{%- if paginator.previous %} - -{%- endif %} -{%- if paginator.next %} - -{%- endif %} - -{%- if profile_data or (config.author and config.extra.profiles[config.author]) %} - {#- order is important #} - {%- if config.extra.profiles[config.author].open_graph %} - {%- set profile_og_data = config.extra.profiles[config.author].open_graph %} - {%- if profile_og_data.fb_app_id %} - - {%- endif %} - {%- if profile_og_data.fb_admins %} - {%- for fb_admin in profile_og_data.fb_admins %} - - {%- endfor %} - {%- endif %} - {%- endif %} - {%- if profile_data.open_graph %} - {%- set profile_og_data = profile_data.open_graph %} - {%- endif %} - {%- if profile_og_data.fediverse_creator.handle and profile_og_data.fediverse_creator.domain %} - - {%- if profile_og_data.fediverse_creator.url %} - - {%- else %} - - {%- endif %} - {%- endif %} -{%- endif %} - -{%- if page.extra.cover.image or profile_data.open_graph.image or ( - config.author and config.extra.profiles[config.author].open_graph.image) %} - {%- if page.extra.cover.image %} - {%- set og_image_path = page.extra.cover.image %} - {%- set og_image_alt = page.extra.cover.alt | default(value="cover") %} - {%- elif profile_data.open_graph.image %} - {%- set og_image_path = profile_data.open_graph.image %} - {%- if profile_data.open_graph.languages[lang].image_alt is defined %} - {%- set og_image_alt = profile_data.open_graph.languages[lang].image_alt %} - {%- else %} - {%- set og_image_alt = profile_data.open_graph.image_alt | default(value=profile_username) %} - {%- endif %} - {%- else %} - {%- set og_image_path = config.extra.profiles[config.author].open_graph.image %} - {%- if config.extra.profiles[config.author].open_graph.languages[lang].image_alt is defined %} - {%- set og_image_alt = config.extra.profiles[config.author].open_graph.languages[lang].image_alt %} - {%- else %} - {%- set og_image_alt = config.extra.profiles[config.author].open_graph.image_alt | default(value=config.author) %} - {%- endif %} - {%- endif %} - - - {%- if page.extra.cover_type or page.extra.cover_width or page.extra.cover_height %} - - - > - {%- else %} - {%- set og_image_data = get_image_metadata(path=og_image_path, allow_missing=true) %} - {%- if og_image_data.mime and og_image_data.width and og_image_data.height %} - - - - {%- endif %} - {%- endif %} -{%- endif %} - -{%- if page.extra.open_graph.audio %} - - {%- if page.extra.open_graph.audio_type %} - - {%- endif %} -{%- endif %} - -{%- if page.extra.open_graph.video %} - - {%- if page.extra.open_graph.video_type %} - - - - {%- endif %} -{%- endif %} - -{%- if config.extra.webmanifest %} - -{%- endif %} -{%- if config.extra.footer.license_url %} - -{%- endif %} -{%- if config.extra.footer.privacy_policy_url %} - -{%- endif %} -{%- if config.extra.footer.terms_of_service_url %} - -{%- endif %} -{%- if config.extra.footer.search_page_url %} - -{%- endif %} - -{%- if config.generate_feeds or (taxonomy.feed and term.path) %} - {%- for feed_filename in config.feed_filenames %} - {%- if taxonomy.feed and term.path %} - {%- set feed_title = page_title ~ title_separator %} - {%- set feed_filename = term.path ~ feed_filename %} - {%- elif config_title %} - {%- set feed_title = config_title ~ title_separator %} - {%- else %} - {%- set feed_title = "" %} - {%- endif %} - {%- if feed_filename is ending_with("atom.xml") %} - - {%- elif feed_filename is ending_with("rss.xml") %} - - {%- else %} - - {%- endif %} - {%- endfor %} -{%- endif %} - - - - - - - -{%- if profile_data %} - {%- if profile_data.avatar_url %} - - {%- endif %} - {%- if profile_data.social %} - {%- for image_social in profile_data.social %} - - {%- endfor %} - {%- endif %} -{%- endif %} - -{%- if not config.extra.disable_default_favicon %} - - - -{%- endif %} - -{%- if not config.extra.disable_javascript %} - - {%- if config.build_search_index %} - - {%- endif %} - - {%- if page.extra.math | default(value=config.extra.math) %} - - - - - {%- endif %} -{%- endif %} - - - {% include "injects/head.html" ignore missing %} - diff --git a/templates/partials/header.html b/templates/partials/header.html deleted file mode 100644 index 27741b4..0000000 --- a/templates/partials/header.html +++ /dev/null @@ -1,104 +0,0 @@ -{%- if config.extra.languages[lang].header_buttons is defined %} - {%- set header_buttons = config.extra.languages[lang].header_buttons %} -{%- elif config.extra.header_buttons is defined %} - {%- set header_buttons = config.extra.header_buttons %} -{%- else %} - {%- set header_buttons = ["site_title", "theme_button", "search_button", "translations_button"] %} -{%- endif %} -{%- if config.extra.languages[lang].header_menu_name and config.extra.menus[config.extra.languages[lang].header_menu_name] is defined %} - {%- set header_menu = config.extra.menus[config.extra.languages[lang].header_menu_name] %} -{%- elif config.extra.header_menu_name and config.extra.menus[config.extra.header_menu_name] is defined %} - {%- set header_menu = config.extra.menus[config.extra.header_menu_name] %} -{%- elif config.extra.menu %} - {%- set header_menu = config.extra.menu %} -{%- endif %} -
    -
    -
    -
    - {%- for header_button in header_buttons %} - {%- if header_button == "site_title" and config.title %} - {{ config.title }} - {%- elif header_button == "home_button" or header_button == "site_title" %} - - {%- elif header_button == "theme_button" %} - - {%- elif header_button == "search_button" and config.build_search_index %} - - {%- if not config.extra.disable_javascript %} - - {%- endif %} - {%- elif header_button == "translations_button" and (page.translations or section.translations) %} - - {%- if not config.extra.disable_javascript %} - - {%- endif %} - {%- endif %} - {%- endfor %} -
    - {% if header_menu %} -
    - {% endif %} -
    - {% if header_menu %} - - {% endif %} -
    -
    diff --git a/templates/partials/mermaid.html b/templates/partials/mermaid.html deleted file mode 100644 index 07c91e5..0000000 --- a/templates/partials/mermaid.html +++ /dev/null @@ -1,32 +0,0 @@ - diff --git a/templates/partials/page_info.html b/templates/partials/page_info.html deleted file mode 100644 index 395a5b5..0000000 --- a/templates/partials/page_info.html +++ /dev/null @@ -1,69 +0,0 @@ -
    -{%- if page.extra.page_info is defined %} - {%- set page_info = page.extra.page_info %} -{%- elif config.extra.page_info is defined %} - {%- set page_info = config.extra.page_info %} -{%- else %} - {%- set page_info = ["date", "date_updated_on_page", "reading_time", "authors"] %} -{%- endif %} -{%- set is_page = paginator is not defined %} -{%- set date_format = config.extra.languages[lang].date_format | default(value="%F") %} -{%- for info in page_info %} - {%- if info == "date" or info == "date_on_paginator" or info == "date_on_page" %}{% - if info == "date" or (info == "date_on_paginator" and not is_page) or - (info == "date_on_page" and is_page) %} - {%- if page.date %} - {%- endif %} - {%- endif %} - {%- elif info == "date_updated" or info == "date_updated_on_paginator" or info == "date_updated_on_page" %}{% - if info == "date_updated" or (info == "date_updated_on_paginator" and not is_page) or - (info == "date_updated_on_page" and is_page) %} - {%- if page.updated and page.updated != page.date %} () - {%- endif %} - {%- endif %} - {%- elif info == "reading_time" or info == "reading_time_on_paginator" or info == "reading_time_on_page" %}{% - if info == "reading_time" or (info == "reading_time_on_paginator" and not is_page) or - (info == "reading_time_on_page" and is_page) %}· - {%- set reading_time_minutes = page.reading_time % 60 %} - {%- endif %} - {%- elif info == "word_count" or info == "word_count_on_paginator" or info == "word_count_on_page" %}{% - if info == "word_count" or (info == "word_count_on_paginator" and not is_page) or - (info == "word_count_on_page" and is_page) %}·{{ - page.word_count }} {{ macros::translate(key="word_words", language=lang, trans_data=trans_data) }} - {%- endif %} - {%- elif info == "authors" or info == "authors_on_paginator" or info == "authors_on_page" %}{% - if info == "authors" or (info == "authors_on_paginator" and not is_page) or (info == "authors_on_page" and is_page) %} - {%- if page.taxonomies.authors %} - {%- set page_authors = page.taxonomies.authors %} - {%- elif page.authors %} - {%- set page_authors = page.authors %} - {%- elif config.author %} - {%- set page_authors = [config.author] %} - {%- else %} - {%- set page_authors = [] %} - {%- endif %} - {%- for page_author in page_authors %}·{{ - macros::get_profile_name(username=page_author) }} - {%- endfor %} - {%- endif %} - {%- elif info == "tags" or info == "tags_on_paginator" or info == "tags_on_page" %}{% - if info == "tags" or (info == "tags_on_paginator" and not is_page) or (info == "tags_on_page" and is_page) %} - {%- if page.taxonomies.tags %} - {%- for page_tag in page.taxonomies.tags %}·#{{ page_tag }} - {%- endfor %} - {%- endif %} - {%- endif %} - {%- else %} - {{ info }} - {%- endif %} -{%- endfor %} -
    diff --git a/templates/partials/page_list.html b/templates/partials/page_list.html deleted file mode 100644 index 1aef744..0000000 --- a/templates/partials/page_list.html +++ /dev/null @@ -1,55 +0,0 @@ -{%- if pages is defined %} -{%- elif paginator is defined %} - {%- set pages = paginator.pages %} -{%- elif term is defined %} - {%- set pages = term.pages %} -{%- elif section is defined %} - {%- set pages = section.pages %} -{%- endif %} - -{% for page in pages %} -
    - {% if page.extra.cover.image %} -
    - -
    - {% endif %} - -

    {{ page.title }}

    - -
    - {% if page.description %} -

    {{ page.description }}

    - {% elif page.summary %} - {{ page.summary | striptags | safe }} - {% endif %} -
    - - {% include "partials/page_info.html" %} - - {{ page.title }} -
    -{% endfor %} - - -{% if paginator is defined %} - -{% endif %} diff --git a/templates/partials/post_navigation.html b/templates/partials/post_navigation.html deleted file mode 100644 index 40ade12..0000000 --- a/templates/partials/post_navigation.html +++ /dev/null @@ -1,16 +0,0 @@ -{% if page.lower or page.higher %} - -{% endif %} diff --git a/templates/partials/post_taxonomies.html b/templates/partials/post_taxonomies.html deleted file mode 100644 index d6cac40..0000000 --- a/templates/partials/post_taxonomies.html +++ /dev/null @@ -1,27 +0,0 @@ -{% if page.taxonomies %} - -{% endif %} diff --git a/templates/partials/profile.html b/templates/partials/profile.html deleted file mode 100644 index 158ca4c..0000000 --- a/templates/partials/profile.html +++ /dev/null @@ -1,66 +0,0 @@ -{% if section.extra.profile or page.extra.profile %} - {%- set profile_username = page.extra.profile | default(value=section.extra.profile) %} -{%- elif taxonomy.name and taxonomy.name == "authors" and term.name %} - {%- set profile_username = term.name %} -{%- endif %} - -{%- if profile_username %} -{%- if config.extra.profiles[profile_username] %} - {%- set profile_data = config.extra.profiles[profile_username] %} - {%- if profile_data.languages[lang].name %} - {%- set profile_name = profile_data.languages[lang].name %} - {%- elif profile_data.name %} - {%- set profile_name = profile_data.name %} - {%- endif %} - {%- if profile_data.languages[lang].bio %} - {%- set profile_bio = profile_data.languages[lang].bio %} - {%- elif profile_data.bio %} - {%- set profile_bio = profile_data.bio %} - {%- endif %} -{%- else %} - {%- set profile_name = profile_username %} -{%- endif %} - -{%- if lang == config.default_language %} - {%- set social_base_url = config.base_url %} -{%- else %} - {%- set social_base_url = config.base_url ~ "/" ~ lang %} -{%- endif %} -
    - {%- if profile_data.avatar_url %} -
    - {{ profile_data.languages[lang].avatar_alt | escape_xml | safe }} -
    - {%- endif %} - - {% if profile_name %} -
    -

    {{ profile_name }}

    - {%- if profile_bio %} -
    - {{ profile_bio | markdown(inline=true) | safe }} -
    - {%- endif %} - - {% if profile_data.social %} - - {% endif %} -
    - {% endif %} -
    -{% endif %} diff --git a/templates/partials/search.html b/templates/partials/search.html deleted file mode 100644 index 3a82e94..0000000 --- a/templates/partials/search.html +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/templates/partials/toc.html b/templates/partials/toc.html deleted file mode 100644 index 400291b..0000000 --- a/templates/partials/toc.html +++ /dev/null @@ -1,27 +0,0 @@ -{% if page.toc %} -
    -
    - - {{ macros::translate(key="word_toc", language=lang, trans_data=trans_data) }} - -
    -
      - {%- for h1 in page.toc %} -
    • - {{ h1.title }} - {%- if h1.children %} -
        - {%- for h2 in h1.children %} -
      • - {{ h2.title }} -
      • - {%- endfor %} -
      - {%- endif %} -
    • - {%- endfor %} -
    -
    -
    -
    -{% endif %} diff --git a/templates/projects.html b/templates/projects.html deleted file mode 100644 index 053a709..0000000 --- a/templates/projects.html +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "index.html" %} -{% block main %} - -{% for asset in page.assets %} -{% if asset is ending_with("data.toml") %} -{% set_global data = load_data(path=asset, format="toml") %} -{% endif %} -{% endfor %} - -

    {{ page.title }}

    -{% for project in data.project %} -
    -

    {{ project.name }}

    -

    {{ project.desc | markdown(inline=true) | safe }}

    -
    -
    - {% for tag in project.tags %} - #{{ tag }} - {% endfor %} -
    -
    - {% for link in project.links %} - {{ link.name }} - {% endfor %} -
    -
    -
    -{% endfor %} -{% endblock main %} diff --git a/templates/section.html b/templates/section.html deleted file mode 100644 index 60412f8..0000000 --- a/templates/section.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "index.html" %} -{% block main %} - -

    {{ section.title }}

    - -{% include "partials/page_list.html" %} -{% endblock main %} diff --git a/templates/shortcodes/admonition.html b/templates/shortcodes/admonition.html deleted file mode 100644 index 14a156a..0000000 --- a/templates/shortcodes/admonition.html +++ /dev/null @@ -1,29 +0,0 @@ -{%- if type == "note" %}{% set admonition_bg = "rgba(68, 138, 255, 0.1)" %} -{%- elif type == "abstract" %}{% set admonition_bg = "rgba(0, 176, 255, 0.1)" %} -{%- elif type == "info" %}{% set admonition_bg = "rgba(83, 211, 230, 0.1)" %} -{%- elif type == "tip" %}{% set admonition_bg = "rgba(0, 191, 165, 0.1)" %} -{%- elif type == "success" %}{% set admonition_bg = "rgba(0, 200, 83, 0.1)" %} -{%- elif type == "question" %}{% set admonition_bg = "rgba(100, 221, 23, 0.1)" %} -{%- elif type == "warning" %}{% set admonition_bg = "rgba(255, 145, 0, 0.1)" %} -{%- elif type == "failure" %}{% set admonition_bg = "rgba(255, 82, 82, 0.1)" %} -{%- elif type == "danger" %}{% set admonition_bg = "rgba(255, 23, 68, 0.1)" %} -{%- elif type == "bug" %}{% set admonition_bg = "rgba(255, 23, 68, 0.1)" %} -{%- elif type == "example" %}{% set admonition_bg = "rgba(101, 31, 255, 0.1)" %} -{%- elif type == "quote" %}{% set admonition_bg = "rgba(159, 159, 159, 0.1)" %} -{%- endif %} - -
    -
    -
    - {{ type | safe }} -
    - {{ title | default(value=type | title) }} -
    -
    {{ body | markdown | safe }}
    -
    diff --git a/templates/shortcodes/gallery.html b/templates/shortcodes/gallery.html deleted file mode 100644 index fd7409f..0000000 --- a/templates/shortcodes/gallery.html +++ /dev/null @@ -1,13 +0,0 @@ -
    -{% for asset in page.assets -%} - {%- if asset is matching("[.](jpg|png)$") %} - {%- set image = resize_image(path=asset, width=240, height=180) %} - {%- set asset_name = asset | split(pat="/") | slice(start=-1) | join(sep="/") %} - - {{ alts[asset_name] | escape_xml | safe }} - - {%- endif %} -{%- endfor %} -
    diff --git a/templates/shortcodes/mermaid.html b/templates/shortcodes/mermaid.html deleted file mode 100644 index d94eb1a..0000000 --- a/templates/shortcodes/mermaid.html +++ /dev/null @@ -1,3 +0,0 @@ -
    -  {{ body | trim_start_matches(pat="```mermaid") | trim_start_matches(pat="```") | trim_end_matches(pat="```") }}
    -
    diff --git a/templates/sitemap.xml b/templates/sitemap.xml deleted file mode 100644 index 61b9269..0000000 --- a/templates/sitemap.xml +++ /dev/null @@ -1,19 +0,0 @@ - - -{%- for sitemap_entry in entries %} - - {{ sitemap_entry.permalink | escape_xml | safe }} - {%- if sitemap_entry.extra.sitemap.updated is defined %} - {{ sitemap_entry.extra.sitemap.updated | escape_xml | safe }} - {%- elif sitemap_entry.updated %} - {{ sitemap_entry.updated | escape_xml | safe }} - {%- endif %} - {%- if sitemap_entry.extra.sitemap.changefreq is defined %} - {{ sitemap_entry.extra.sitemap.changefreq | escape_xml | safe }} - {%- endif %} - {%- if sitemap_entry.extra.sitemap.priority is defined %} - {{ sitemap_entry.extra.sitemap.priority | escape_xml | safe }} - {%- endif %} - -{%- endfor %} - diff --git a/templates/split_sitemap_index.xml b/templates/split_sitemap_index.xml deleted file mode 100644 index f873224..0000000 --- a/templates/split_sitemap_index.xml +++ /dev/null @@ -1,8 +0,0 @@ - - -{%- for sitemap in sitemaps %} - - {{ sitemap }} - -{%- endfor %} - diff --git a/templates/taxonomy_list.html b/templates/taxonomy_list.html deleted file mode 100644 index 97327a8..0000000 --- a/templates/taxonomy_list.html +++ /dev/null @@ -1,38 +0,0 @@ -{% extends "index.html" %} -{% block main %} - -

    {% - if taxonomy.name == "tags" %}{{ macros::translate(key="taxonomy_tags", - language=lang, trans_data=trans_data) }}{% - elif taxonomy.name == "categories" %}{{ macros::translate(key="taxonomy_categories", - language=lang, trans_data=trans_data) }}{% - elif taxonomy.name == "authors" %}{{ macros::translate(key="taxonomy_authors", - language=lang, trans_data=trans_data) }}{% - else %}{{ taxonomy.name | title }}{% endif %}

    - -
    - {% for term in terms %} -
    -

    - {% - if taxonomy.name == "authors" %}{{ macros::get_profile_name(username=term.name) }}{% - elif taxonomy.name == "tags" %}#{{ term.name }}{% - elif taxonomy.name == "categories" %}{{ term.name | title }}{% - else %}{{ term.name }}{% endif %} - {{ term.page_count }} -

    - - {% for page in term.pages | slice(end=5) %} - {{ page.title }} - {% endfor %} - - {% if term.pages | length > 5 %} - - {{ - macros::translate(key="word_more", language=lang, trans_data=trans_data) }} - - {% endif %} -
    - {% endfor %} -
    -{% endblock main %} diff --git a/templates/taxonomy_single.html b/templates/taxonomy_single.html deleted file mode 100644 index 9c9b9fe..0000000 --- a/templates/taxonomy_single.html +++ /dev/null @@ -1,19 +0,0 @@ -{% extends "index.html" %} -{% block main %} - -{%- if taxonomy.name == "authors" %} - {%- if paginator is undefined or paginator.current_index == 1 %} -{% include "partials/profile.html" %} - {%- else %} -

    {{ macros::get_profile_name(username=term.name) }}

    - {%- endif %} -{%- elif taxonomy.name == "tags" %} -

    #{{ term.name }}

    -{%- elif taxonomy.name == "categories" %} -

    {{ term.name | title }}

    -{%- else %} -

    {{ term.name }}

    -{%- endif %} - -{% include "partials/page_list.html" %} -{% endblock main %} diff --git a/theme.toml b/theme.toml deleted file mode 100644 index d6739b6..0000000 --- a/theme.toml +++ /dev/null @@ -1,16 +0,0 @@ -name = "Linkita" -description = "A clean and elegant blog theme for Zola. Linkita is based on Kita and Hugo-Paper and is multilingual and SEO friendly." -license = "MIT" -homepage = "https://codeberg.org/salif/linkita" -min_version = "0.19.0" -demo = "https://salif.github.io/linkita/en/" -tags = ["Blog", "Multilingual", "Responsive", "SEO", "Search"] - -[author] -name = "Salif Mehmed" -homepage = "https://salif.eu" - -[original] -author = "st1020" -homepage = "https://st1020.com" -repo = "https://github.com/st1020/kita"