1
0
mirror of https://github.com/cotes2020/jekyll-theme-chirpy.git synced 2026-06-22 07:48:42 +00:00

Compare commits

..

107 Commits

Author SHA1 Message Date
semantic-release-bot 152093879e chore(release): 7.6.0
## [7.6.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.5.0...v7.6.0) (2026-06-20)

### Features

* add edit this post link ([#2517](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2517)) ([6bd446c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6bd446ccdedbe37752cf24b1866e1e2dd9cb82c8))
* **theme:** persist user theme preferences ([#2756](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2756)) ([7496dd4](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7496dd41fa053c4636a82027fe3fb3e38357e385))
* **ui:** optimize design of PWA update notification ([#2757](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2757)) ([5cc9dc6](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5cc9dc66acb1eb9213988d3ac6de5cf5adf1a6f6))

### Bug Fixes

* **giscus:** synchronize theme state during lazy loading ([#2742](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2742)) ([ceb2a41](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ceb2a41463cbb6251fa257b640990a8d9717b0bb))
* prevent Firefox from opening blank page on `mailto` links ([#2642](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2642)) ([2685b91](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2685b91957d0207c2d31dab828430c78a2fcc3d0))
* **pwa:** avoid iOS status bar overlapping PWA content ([#2173](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2173)) ([3823212](https://github.com/cotes2020/jekyll-theme-chirpy/commit/38232120b729de653bfb42909a8dad047559438d))

### Improvements

* **ui:** prevent vertical flickering caused by subtitle loading ([2db0535](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2db053553bcf9606fc80c4a86959d0dd25d0446a))
2026-06-20 13:35:41 +00:00
Cotes Chung 0bf1c724d8 Merge branch 'master' into production 2026-06-20 21:30:15 +08:00
Cotes Chung 2ec2036d37 chore(deps): upgrade static assets 2026-06-20 21:29:37 +08:00
Cotes Chung cd1fb15481 ci(deps): bump the gh-actions group across 2 directories with 5 updates
Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

Updates `actions/github-script` from 8 to 9
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v8...v9)

Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

Updates `actions/configure-pages` from 5 to 6
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](https://github.com/actions/configure-pages/compare/v5...v6)

Updates `actions/upload-pages-artifact` from 4 to 5
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v4...v5)

Updates `actions/deploy-pages` from 4 to 5
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v4...v5)
2026-06-20 21:26:10 +08:00
Cotes Chung 9ea9dcf930 chore(deps-dev): update dependencies
@babel/core                                 ^7.29.0  →   ^7.29.7
 @babel/preset-env                           ^7.29.0  →   ^7.29.7
 @commitlint/cli                             ^20.4.4  →   ^21.0.2
 @commitlint/config-conventional             ^20.4.4  →   ^21.0.2
 @eslint/js                                  ^10.0.0  →   ^10.0.1
 @rollup/plugin-babel                         ^7.0.0  →    ^7.1.0
 concurrently                                 ^9.2.1  →   ^10.0.3
 conventional-changelog-conventionalcommits   ^9.3.0  →    ^9.3.1
 eslint                                      ^10.0.3  →   ^10.5.0
 globals                                     ^17.4.0  →   ^17.6.0
 rollup                                      ^4.59.0  →   ^4.62.2
 semantic-release                            ^25.0.3  →   ^25.0.5
 stylelint                                   ^17.4.0  →  ^17.13.0
2026-06-20 21:22:58 +08:00
Cotes Chung 2db053553b perf(ui): prevent vertical flickering caused by subtitle loading 2026-06-20 20:23:58 +08:00
Cotes Chung 18cf79bdac refactor(ui): reduce the size of the 'close' and 'copy' buttons
- The close button in the TOC popup
- The copy button in the code block
2026-06-20 20:23:33 +08:00
Cotes Chung 5cc9dc66ac feat(ui): optimize design of PWA update notification (#2757) 2026-06-20 05:42:07 +08:00
Cotes Chung 7496dd41fa feat(theme): persist user theme preferences (#2756)
- Migrate theme persistence from `sessionStorage` to `localStorage`
- Rename theme HTML attribute to `data-bs-theme` for Bootstrap compatibility
- Trim and compile CSS according to the chosen theme mode
2026-06-17 23:20:12 +08:00
Cotes Chung ceb2a41463 fix(giscus): synchronize theme state during lazy loading (#2742)
Previously, theme switch events were lost if triggered before the
Giscus iframe was fully loaded (e.g., when deferred by lazy loading
or before the client script executed). This resulted in Giscus
rendering with the outdated initial theme once it finally appeared
in the viewport.

This commit handles these edge cases by:
1. Updating the `data-theme` attribute on the Giscus script node
   if the iframe hasn't been created yet.
2. Modifying the `theme` query parameter in the iframe's `src` URL
   if it is currently in a pending/lazy-loading state.
2026-05-23 23:00:48 +08:00
Cotes Chung 38232120b7 fix(pwa): avoid iOS status bar overlapping PWA content (#2173)
Fixes #2173
2026-05-16 14:39:58 +08:00
Cotes Chung fb3aa94c1f chore: remove funding 2026-05-16 14:37:04 +08:00
Cotes Chung 832b24729d refactor(deps): update CDN URLs to follow production best practices (#2740) 2026-05-15 15:38:08 +08:00
Cotes Chung 97a537e692 chore(deps): bump mathjax from 3.2.2 to 4.x 2026-05-15 15:22:19 +08:00
Cotes Chung 1344e90246 docs: update readme 2026-05-15 15:17:06 +08:00
Cotes Chung 2cfb4bba88 chore: update github issue template 2026-05-15 15:01:34 +08:00
Alexander Fuks 6bd446ccde feat: add edit this post link (#2517) 2026-05-06 22:31:32 +08:00
lynkos 2685b91957 fix: prevent Firefox from opening blank page on mailto links (#2642) 2026-04-10 00:29:33 +08:00
Cotes Chung 6245dec754 docs: improve readme 2026-04-04 02:08:24 +08:00
Shen Lin f20ed1c4b1 chore: ignore hidden system files and editor backups (#2704) 2026-03-28 10:44:48 +08:00
semantic-release-bot 9adb7e352b Merge branch 'production' 2026-03-15 20:14:45 +00:00
semantic-release-bot 297fbde1a2 chore(release): 7.5.0
## [7.5.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.4.1...v7.5.0) (2026-03-15)

### Features

* add support for `fediverse:creator` meta tag ([#2593](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2593)) ([d2db439](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d2db439c169c45ac683fa1c8157c6ea7e0b54b85))

### Bug Fixes

* **i18n:** localize the title ([#2610](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2610)) ([52d160f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/52d160f8574e8d0cddcaa46af114eb382fea1644))
2026-03-15 20:14:32 +00:00
Cotes Chung d760823619 Merge branch 'master' into production 2026-03-16 04:12:56 +08:00
Cotes Chung da4b8cd168 chore(deps): update packages to latest version
@fortawesome/fontawesome-free    7.1.0  ->  7.2.0
 dayjs                          1.11.18  ->  1.11.20
 mermaid                        11.12.0  ->  11.13.0
2026-03-16 04:11:41 +08:00
Cotes Chung 8893a98191 ci: update ruby version to 3.4
Ruby 3.1 and 3.2 are now EOL
See: https://www.ruby-lang.org/en/downloads/branches/
2026-03-15 19:57:33 +08:00
Cotes Chung 6afe5a6d7b refactor: correct typos in comments and identifiers (#2681)
- Rename `loadTooptip` to `loadTooltip` in tooltip-loader.js, components.js, and basic.js
- Fix grammar: "This script make" → "This script makes" in search-display.js
- Fix "HomgPage" → "HomePage" in post-paginator.html
- Fix "CND URL" → "CDN URL" in media-url.html
- Fix "locale-dateime.js" → "locale-datetime.js" in datetime.html
- Fix "LaTex" → "LaTeX" in language-alias.html
- Fix "exist <a> tag" → "existing <a> tag" in refactor-content.html
- Fix "Archvies" → "Archives" in _archives.scss
- Fix "underlinke" → "underline" in _syntax.scss
2026-03-14 19:01:21 +08:00
Cotes Chung 8fd56560a4 docs: fix typos in tutorial 2026-03-14 18:57:52 +08:00
dependabot[bot] fe968a7701 build(deps): bump the gh-actions group across 2 directories with 4 updates (#2678)
Bumps the gh-actions group with 2 updates in the /.github/workflows directory: [actions/checkout](https://github.com/actions/checkout) and [actions/setup-node](https://github.com/actions/setup-node).
Bumps the gh-actions group with 3 updates in the /.github/workflows/starter directory: [actions/checkout](https://github.com/actions/checkout), [actions/configure-pages](https://github.com/actions/configure-pages) and [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact).


Updates `actions/checkout` from 5 to 6
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

Updates `actions/setup-node` from 5 to 6
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

Updates `actions/checkout` from 4 to 6
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

Updates `actions/configure-pages` from 4 to 5
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](https://github.com/actions/configure-pages/compare/v4...v5)

Updates `actions/upload-pages-artifact` from 3 to 4
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/configure-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/upload-pages-artifact
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-12 21:42:58 +08:00
Cotes Chung cc1d44ee3e build(gh-actions): enable dependabot to scan the starter workflow 2026-03-12 21:37:15 +08:00
Cotes Chung ce14e1a087 chore: update ESLint dependencies and improve js style 2026-03-12 21:37:03 +08:00
Cotes Chung 477394b744 style: interpolate sass variable in CSS custom property 2026-03-12 21:37:03 +08:00
Cotes Chung 96da25abbd build(dev-deps): upgrade node packages 2026-03-12 21:37:03 +08:00
Cotes Chung 0fbaa5359b chore: reduce optional config defaults 2026-01-03 07:42:17 +08:00
Corey Goldberg 92e0ff63ec build(deps): update platforms in Gemfile for Windows (#2628) 2025-12-19 02:55:28 +08:00
nakamura 52d160f857 fix(i18n): localize the title (#2610) 2025-12-18 01:51:53 +08:00
Jason Raveling d2db439c16 feat: add support for fediverse:creator meta tag (#2593) 2025-11-17 14:19:16 +08:00
semantic-release-bot cecfc4237f Merge branch 'production' 2025-10-26 21:49:28 +00:00
semantic-release-bot 525c2888c5 chore(release): 7.4.1
## [7.4.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.4.0...v7.4.1) (2025-10-26)

### Bug Fixes

* avoid duplicate base URL for homepage preview images ([#2568](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2568)) ([66bf232](https://github.com/cotes2020/jekyll-theme-chirpy/commit/66bf232951fbe752821b623dc1e7e4e2824c15bf))
2025-10-26 21:49:12 +00:00
Cotes Chung 4950edc75e Merge branch 'master' into production 2025-10-27 05:48:01 +08:00
Cotes 66bf232951 fix: avoid duplicate base URL for homepage preview images (#2568) 2025-10-27 05:39:39 +08:00
Cotes Chung 37377a43e0 Revert "refactor: avoid converting media‘s relative paths to absolute paths (#2552)"
This reverts commit b3d7db3cda.
2025-10-27 05:16:47 +08:00
semantic-release-bot 7f35d8e550 Merge branch 'production' 2025-10-19 23:15:56 +00:00
semantic-release-bot 18ab8fcfdf chore(release): 7.4.0
## [7.4.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.3.1...v7.4.0) (2025-10-19)

### Features

* add support for embed spotify ([#2515](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2515)) ([cda62e2](https://github.com/cotes2020/jekyll-theme-chirpy/commit/cda62e28d1b71ce4018301aacf93532230aa2b3b))
* **i18n:** add Danish locale ([#2410](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2410)) ([f5802b8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f5802b8a8a4fb94cd51a484e438f6ba2ba8d62c9))
* **i18n:** add locale files for some rtl languages ([#2415](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2415)) ([18c48b4](https://github.com/cotes2020/jekyll-theme-chirpy/commit/18c48b4c49f896eeeeb52a8de1dca715add70c6a))

### Bug Fixes

* avoid unconfigured social options in sidebar ([#2507](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2507)) ([5f8ec7f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5f8ec7ffd3b23998bad48c110e809576fe5daf80))
* correct GoatCounter pageviews extraction ([#2420](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2420)) ([c706799](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c706799f9b2e724dee9a3b891dea72dfa587929e))
* resolve discrepancy in lqip between post and main page ([#2453](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2453)) ([1bac96a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1bac96a8e1ae23a7a48f2b7d249bfbfd5d9bfe50))
* restore blurry animation for homepage LQIP ([#2551](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2551)) ([221ca9f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/221ca9f52b55b103900832f3c03ad2ecc4415bcc))
* **search:** restore full-text search for posts with description ([#2557](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2557)) ([604528e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/604528e3ce11ec0278e83f41105ed5949362bb54))
2025-10-19 23:15:40 +00:00
Cotes Chung 078cf86f79 Merge branch 'master' into production 2025-10-20 07:13:19 +08:00
Cotes Chung 45cb428b01 build(deps): upgrade dependencies 2025-10-20 07:11:29 +08:00
Cotes Chung 3578111ecd refactor: resolve various StyleLint warnings 2025-10-20 06:47:30 +08:00
Cotes Chung 022b963403 build(dev-deps): upgrade dependencies 2025-10-20 06:47:29 +08:00
Cotes aa832c29de refactor: update favicon files and documentation (#2558) 2025-10-20 02:55:43 +08:00
Cotes 604528e3ce fix(search): restore full-text search for posts with description (#2557) 2025-10-20 02:24:40 +08:00
Cotes b3d7db3cda refactor: avoid converting media‘s relative paths to absolute paths (#2552) 2025-10-17 00:02:12 +08:00
dependabot[bot] ee6839516e build(deps): bump the gh-actions group across 1 directory with 5 updates (#2550)
Bumps the gh-actions group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `4` | `5` |
| [actions/setup-node](https://github.com/actions/setup-node) | `4` | `5` |
| [github/codeql-action](https://github.com/github/codeql-action) | `3` | `4` |
| [actions/github-script](https://github.com/actions/github-script) | `7` | `8` |
| [actions/stale](https://github.com/actions/stale) | `9` | `10` |



Updates `actions/checkout` from 4 to 5
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

Updates `actions/setup-node` from 4 to 5
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

Updates `github/codeql-action` from 3 to 4
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3...v4)

Updates `actions/github-script` from 7 to 8
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v8)

Updates `actions/stale` from 9 to 10
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v9...v10)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/github-script
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/stale
  dependency-version: '10'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 05:23:24 +08:00
Cotes Chung a385ffabff chore: improve ESLint config 2025-10-14 04:54:48 +08:00
Cotes Chung f51641b541 chore: remove deprecated URL 2025-10-14 04:53:51 +08:00
Cotes 221ca9f52b fix: restore blurry animation for homepage LQIP (#2551) 2025-10-14 04:36:02 +08:00
Alexander Fuks 4d6c788b9c docs: update timezone picker reference (#2518) 2025-09-08 23:48:19 +04:00
Alexander Fuks cda62e28d1 feat: add support for embed spotify (#2515) 2025-09-08 23:45:20 +04:00
Jason Raveling 5f8ec7ffd3 fix: avoid unconfigured social options in sidebar (#2507) 2025-08-31 21:51:01 +08:00
Cotes Chung eaf5e57449 ci: change filter script to ESM format
Because `"type": "module"` was added to `package.json`
2025-07-31 03:37:32 +08:00
Cotes Chung 29bf95e9c7 style: change css color functions to use modern notation
- `rgba()` → `rgb()`
2025-07-27 21:42:49 +08:00
Cotes Chung 648398c63c ci: migrate eslint and stylelint from codacy to gh-actions 2025-07-27 21:42:49 +08:00
Cotes Chung b855e8b6b4 style: unify quote style in rollup config 2025-07-27 00:55:54 +08:00
Cotes Chung 49519d13e5 chore: complete ESLint v9 configuration 2025-07-27 00:53:58 +08:00
semantic-release-bot 8bf72fc234 Merge branch 'production' 2025-07-26 12:25:02 +00:00
semantic-release-bot c0e4756200 chore(release): 7.3.1
## [7.3.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.3.0...v7.3.1) (2025-07-26)

### Bug Fixes

* escape special JSON characters in search results ([#2481](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2481)) ([7615d72](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7615d72e9300a1514ef2fc8ec941ab2974ba7eb4))
2025-07-26 12:24:47 +00:00
Cotes Chung 81886b11c0 Merge branch 'hotfix/7.3.1' into production 2025-07-26 20:23:38 +08:00
Cotes Chung 7615d72e93 fix: escape special JSON characters in search results (#2481)
Also restore full-text search
2025-07-26 20:22:30 +08:00
Josh Wickham 1bac96a8e1 fix: resolve discrepancy in lqip between post and main page (#2453) 2025-06-27 23:58:10 +08:00
Alexander Fuks c706799f9b fix: correct GoatCounter pageviews extraction (#2420) 2025-06-01 04:51:43 +08:00
Zakaria Fatahi 18c48b4c49 feat(i18n): add locale files for some rtl languages (#2415) 2025-05-22 01:06:12 +08:00
Nicolai Skødt Holmgaard f5802b8a8a feat(i18n): add Danish locale (#2410) 2025-05-22 01:03:29 +08:00
Cotes Chung 09948da235 Merge branch 'production' 2025-05-18 21:32:02 +08:00
semantic-release-bot 53770e4923 chore(release): 7.3.0
## [7.3.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.4...v7.3.0) (2025-05-18)

### Features

* **i18n:** add Catalan Spanish locale translation ([#2349](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2349)) ([167c98c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/167c98c781d0607c90ede8fc73eb43dffeea6abd))
* **i18n:** add Dutch locale ([#2076](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2076)) ([981ddba](https://github.com/cotes2020/jekyll-theme-chirpy/commit/981ddba30e57934f9056b8d468f0d17db131e1e8))
* **i18n:** add Japanese locale ([#2295](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2295)) ([571c90f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/571c90f13011eb91d0e1392218f3953060b920c9))
* **i18n:** add persian language ([#2238](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2238)) ([7d4d35c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7d4d35cd10109e78d60fbb6b25a9b205f780ad63))

### Bug Fixes

* avoid `mathjax` loading failure on page refresh ([#2389](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2389)) ([401e2af](https://github.com/cotes2020/jekyll-theme-chirpy/commit/401e2af0f8a173d8437e03027c7aff558e8c0bde))
* improve accuracy of moving `img` element classes ([#2399](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2399)) ([d0f8f95](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d0f8f9553e41536eb84ae2fdd3f3bc9d13f7ef8c))
* prevent the search bar from moving when focused ([#2336](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2336)) ([f744929](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f7449299e88c71da2104f0007f2db23a8fa798be))
* recognize global theme mode ([#2357](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2357)) ([7708adb](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7708adbf30e6dea51a84311b86bc224739f656f6))
* **search:** avoid missing spaces between paragraphs in search results ([#2199](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2199)) ([0eb7efa](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0eb7efa7f53508bf6b48eb9d773d5c5047c3c525))
* **ui:** fix incomplete border color on hover for tags ([#2359](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2359)) ([c626447](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c62644759cb4e0e07f7ee6eb9503ef69be62371b))

### Improvements

* **seo:** improve accessibility and aligns with best practices ([#2289](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2289)) ([54d4d59](https://github.com/cotes2020/jekyll-theme-chirpy/commit/54d4d59d22ac543a14bfbd9bb3d6fb6756056041))
2025-05-18 13:17:30 +00:00
Cotes Chung d84b72706a Merge branch 'master' into production 2025-05-18 21:16:09 +08:00
Cotes Chung 519e4f193a chore: upgrade dependencies to the latest version (#2409) 2025-05-18 21:14:56 +08:00
Cotes Chung d0f8f9553e fix: improve accuracy of moving img element classes (#2399) 2025-05-11 22:19:18 +08:00
Cotes Chung 401e2af0f8 fix: avoid mathjax loading failure on page refresh (#2389) 2025-05-05 11:55:48 +08:00
Cotes Chung ada38aad96 chore: avoid auto-formatting liquid and sass mixed code 2025-05-05 11:15:08 +08:00
Cotes Chung 61ae6cced8 chore(dev-deps): add eslint config file 2025-05-05 11:14:07 +08:00
Cotes Chung 9f38a2dead refactor: move the path of theme.js 2025-05-03 16:18:52 +08:00
Cotes Chung 23d953c313 chore(deps): remove plugin jekyll-redirect-from
Discussed in #2313
2025-05-03 16:14:50 +08:00
iSpeakNerd b48ea68bf7 chore: update linkedin sharing url (#2307) 2025-04-24 20:25:46 +08:00
László Várady c62644759c fix(ui): fix incomplete border color on hover for tags (#2359) 2025-04-24 20:23:43 +08:00
Cotes Chung 7708adbf30 fix: recognize global theme mode (#2357) 2025-04-16 18:08:43 +08:00
Delyn Choong 167c98c781 feat(i18n): add Catalan Spanish locale translation (#2349) 2025-04-13 22:16:47 +08:00
László Várady f7449299e8 fix: prevent the search bar from moving when focused (#2336) 2025-04-07 19:36:32 +08:00
Alejandro db40db6d3d chore: add parameter in search-results.html (#2330) 2025-04-05 07:28:29 +08:00
nakamura 571c90f130 feat(i18n): add Japanese locale (#2295) 2025-03-29 03:54:54 +08:00
Türkalp Burak KAYRANCIOĞLU 54d4d59d22 perf(seo): improve accessibility and aligns with best practices (#2289) 2025-03-08 22:24:47 +08:00
Corey Goldberg e3158642c3 docs: fix typo in 2019-08-08-write-a-new-post.md (#2281)
Signed-off-by: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
2025-03-05 05:06:37 +08:00
MasihGhaznavi 7d4d35cd10 feat(i18n): add persian language (#2238) 2025-02-09 14:28:39 +08:00
algorithmic-parallels 231956d77a docs: using long form Jekyll subcommand (#2231) 2025-02-06 13:27:54 +08:00
Cotes Chung 0eb7efa7f5 fix(search): avoid missing spaces between paragraphs in search results (#2199)
- Use a common post-snippet for search results to avoid line break issues
- Reduce Jekyll include files to speed up the build
- Remove outdated key from search.json
2025-01-20 21:27:18 +08:00
semantic-release-bot e44c048aef Merge branch 'production' 2024-12-21 19:22:37 +00:00
semantic-release-bot 5e41d874b3 chore(release): 7.2.4
## [7.2.4](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.3...v7.2.4) (2024-12-21)

### Bug Fixes

* toc not visible when switching from mobile to desktop mode ([#2139](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2139)) ([32051da](https://github.com/cotes2020/jekyll-theme-chirpy/commit/32051dad03cb8f60fa4206969377b9674f9a3f0c))
* **ui:** left borderline of TOC is notched ([#2140](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2140)) ([8a4d0bc](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8a4d0bc4ee9e142a11401cad80bc9605878f121d))
2024-12-21 19:22:22 +00:00
Cotes Chung 774ee93d78 Release v7.2.4 (#2141) 2024-12-22 03:21:28 +08:00
Cotes Chung 8a4d0bc4ee fix(ui): left borderline of TOC is notched (#2140) 2024-12-22 03:11:20 +08:00
Cotes Chung 1b93f6db9b docs: update the setting name for the comments 2024-12-22 02:32:03 +08:00
Cotes Chung 32051dad03 fix: toc not visible when switching from mobile to desktop mode (#2139) 2024-12-22 02:29:29 +08:00
semantic-release-bot c12875fdba Merge branch 'production' 2024-12-15 13:06:04 +00:00
semantic-release-bot c174f62f26 chore(release): 7.2.3
## [7.2.3](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.2...v7.2.3) (2024-12-15)

### Bug Fixes

* refreshing mermaid theme may fail ([#2113](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2113)) ([2f00d41](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2f00d41861f1b06c2ff7fa4e67e14e647c3c34b0))
* **ui:** gap between TOC entries is inconsistent ([#2119](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2119)) ([1b4e318](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1b4e318dc1cd57da812e11bf69ebb06083c213fc))
* **ui:** slow script loading hides TOC fade-up effect in desktop ([#2120](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2120)) ([e0c3faf](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e0c3fafa470eb12bd04ffdf198018bc28b6de20d))
2024-12-15 13:05:48 +00:00
Cotes Chung e741aa43cf Merge branch 'hotfix/7.2.3' into production 2024-12-15 21:04:09 +08:00
Cotes Chung e0c3fafa47 fix(ui): slow script loading hides TOC fade-up effect in desktop (#2120) 2024-12-15 14:51:51 +08:00
Cotes Chung 1b4e318dc1 fix(ui): gap between TOC entries is inconsistent (#2119)
In desktop mode, H2 and the first sub-level H3 in the TOC are too close.
2024-12-15 14:43:07 +08:00
Cotes Chung 2f00d41861 fix: refreshing mermaid theme may fail (#2113) 2024-12-12 01:24:37 +08:00
semantic-release-bot f40fa6a13c Merge branch 'production' 2024-12-06 17:04:04 +00:00
cheese 981ddba30e feat(i18n): add Dutch locale (#2076) 2024-12-05 21:38:06 +08:00
semantic-release-bot 4925a58bf5 Merge branch 'production' 2024-12-05 13:34:00 +00:00
134 changed files with 2200 additions and 664 deletions
-2
View File
@@ -1,2 +0,0 @@
ko_fi: coteschung
custom: https://sponsor.cotes.page
+1 -1
View File
@@ -53,7 +53,7 @@ body:
value: |
- Ruby: <!-- run `ruby -v` -->
- Jekyll: <!-- run `bundle exec jekyll -v` -->
- Chirpy: <!-- run `bundle info jekyll-theme-chirpy` -->
- Chirpy: <!-- run `bundle info --version jekyll-theme-chirpy` -->
validations:
required: true
+2 -1
View File
@@ -15,7 +15,8 @@ updates:
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/"
directories:
- "/.github/workflows/**"
groups:
gh-actions:
update-types:
+3 -3
View File
@@ -14,14 +14,14 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3
ruby-version: 3.4
bundler-cache: true
- uses: actions/setup-node@v4
- uses: actions/setup-node@v6
with:
node-version: lts/*
+3 -3
View File
@@ -27,11 +27,11 @@ jobs:
strategy:
matrix:
ruby: ["3.1", "3.2", "3.3"]
ruby: ["3.3", "3.4"]
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
fetch-depth: 0 # for posts's lastmod
@@ -42,7 +42,7 @@ jobs:
bundler-cache: true
- name: Setup Node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: lts/*
+4 -4
View File
@@ -24,11 +24,11 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v7
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: "${{ matrix.language }}"
config-file: .github/codeql/codeql-config.yml
@@ -36,9 +36,9 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v3
uses: github/codeql-action/autobuild@v4
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{ matrix.language }}"
+1 -1
View File
@@ -11,5 +11,5 @@ jobs:
commitlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: wagoid/commitlint-github-action@v6
+30
View File
@@ -0,0 +1,30 @@
name: Lint JS
on:
push:
paths:
- "_javascript/**/*.js"
- ".github/workflows/scripts/**/*.js"
- "*.js"
pull_request:
paths:
- "_javascript/**/*.js"
- ".github/workflows/scripts/*.js"
- "*.js"
jobs:
lint-js:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: lts/*
- name: Install Dependencies
run: npm i
- name: Lint JS
run: npm run lint:js
+26
View File
@@ -0,0 +1,26 @@
name: Lint SCSS
on:
push:
paths:
- "_sass/**/*.scss"
pull_request:
paths:
- "_sass/**/*.scss"
jobs:
lint-scss:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: lts/*
- name: Install Dependencies
run: npm i
- name: Lint SCSS
run: npm run lint:scss
+4 -4
View File
@@ -13,13 +13,13 @@ jobs:
steps:
- name: Checkout Code
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Check PR Content
id: intercept
uses: actions/github-script@v7
uses: actions/github-script@v9
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const script = require('.github/workflows/scripts/pr-filter.js');
await script({ github, context, core });
const { default: filter } = await import('${{ github.workspace }}/.github/workflows/scripts/pr-filter.js');
await filter({ github, context, core });
+1 -1
View File
@@ -9,7 +9,7 @@ function hasDescription(markdown) {
);
}
module.exports = async ({ github, context, core }) => {
export default async ({ github, context, core }) => {
const pr = context.payload.pull_request;
const body = pr.body === null ? '' : pr.body;
const markdown = body.replace(/<!--[\s\S]*?-->/g, '');
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
- uses: actions/stale@v10
with:
# 60 days before marking issues/PRs stale
days-before-close: -1 # does not close automatically
+5 -5
View File
@@ -28,7 +28,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
fetch-depth: 0
# submodules: true
@@ -37,12 +37,12 @@ jobs:
- name: Setup Pages
id: pages
uses: actions/configure-pages@v4
uses: actions/configure-pages@v6
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3
ruby-version: 3.4
bundler-cache: true
- name: Build site
@@ -57,7 +57,7 @@ jobs:
\-\-ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/"
- name: Upload site artifact
uses: actions/upload-pages-artifact@v3
uses: actions/upload-pages-artifact@v5
with:
path: "_site${{ steps.pages.outputs.base_path }}"
@@ -70,4 +70,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v5
+5
View File
@@ -25,3 +25,8 @@ package-lock.json
# Misc
_sass/vendors
assets/js/dist
# Hidden system files
*~
.DS_Store
Thumbs.db
-2
View File
@@ -8,8 +8,6 @@
"property-no-vendor-prefix": null,
"selector-no-vendor-prefix": null,
"value-no-vendor-prefix": null,
"color-function-notation": "legacy",
"alpha-value-notation": "number",
"selector-not-notation": "simple",
"color-hex-length": "long",
"declaration-block-single-line-max-declarations": 3,
+2 -2
View File
@@ -6,9 +6,9 @@ gemspec
gem "html-proofer", "~> 5.0", group: :test
platforms :mingw, :x64_mingw, :mswin, :jruby do
platforms :windows, :jruby do
gem "tzinfo", ">= 1", "< 3"
gem "tzinfo-data"
end
gem "wdm", "~> 0.2.0", :platforms => [:mingw, :x64_mingw, :mswin]
gem "wdm", "~> 0.2.0", :platforms => [:windows]
+33 -40
View File
@@ -6,11 +6,11 @@
A minimal, responsive, and feature-rich Jekyll theme for technical writing.
[![CI](https://img.shields.io/github/actions/workflow/status/cotes2020/jekyll-theme-chirpy/ci.yml?logo=github)][ci]&nbsp;
[![Codacy Badge](https://img.shields.io/codacy/grade/4e556876a3c54d5e8f2d2857c4f43894?logo=codacy)][codacy]&nbsp;
[![GitHub license](https://img.shields.io/github/license/cotes2020/jekyll-theme-chirpy?color=goldenrod)][license]&nbsp;
[![Gem Version](https://img.shields.io/gem/v/jekyll-theme-chirpy?&logo=RubyGems&logoColor=ghostwhite&label=gem&color=orange)][gem]&nbsp;
[![Open in Dev Containers](https://img.shields.io/badge/Dev_Containers-Open-deepskyblue?logo=linuxcontainers)][open-container]
[![CI][badge-ci]][ci]&nbsp;
[![Codacy Badge][badge-codacy]][codacy]&nbsp;
[![GitHub license][badge-license]][license]&nbsp;
[![Gem Version][badge-gem]][gem]&nbsp;
[![Open in Dev Containers][badge-open-container]][open-container]
[**Live Demo** →][demo]
@@ -20,54 +20,48 @@
## Features
- Dark Theme
- Localized UI language
- Pinned Posts on Home Page
- Hierarchical Categories
- Trending Tags
- Table of Contents
- Last Modified Date
- Syntax Highlighting
- Mathematical Expressions
- Mermaid Diagrams & Flowcharts
- Dark Mode Images
- Embed Media
- Comment Systems
- Built-in Search
- Atom Feeds
- PWA
- Web Analytics
- SEO & Performance Optimization
- **Design & UX** - Responsive layout, Dark/Light modes, Localized UI language,
and Dark mode images.
- **Content Management** - Pinned posts, Hierarchical categories, Trending tags,
Auto-generated Table of Contents, and Last modified dates.
- **Rich Text Support** - Syntax highlighting, Mathematical expressions, Mermaid
diagrams & flowcharts, and Embedded media.
- **Interactivity & Outreach** - Built-in search, Multiple comment systems, and
Atom feeds.
- **System & Optimization** - PWA support, integrated Web analytics, and
advanced SEO performance.
## Documentation
To learn how to use, develop, and upgrade the project, please refer to the [Wiki][wiki].
To learn how to use, develop, and upgrade the project, please refer to the
[Wiki][wiki].
## Contributing
Contributions (_pull requests_, _issues_, and _discussions_) are what make the open-source community such an amazing place
to learn, inspire, and create. Any contributions you make are greatly appreciated.
For details, see the "[Contributing Guidelines][contribute-guide]".
Contributions (_pull requests_, _issues_, and _discussions_) are what make the
open-source community such an amazing place to learn, inspire, and create. Any
contributions you make are greatly appreciated.
For details, please refer to our [Contributing Guidelines][contribute-guide].
## Credits
### Contributors
This project is built on the [Jekyll][jekyllrb] ecosystem and integrates a
collection of [excellent libraries][lib]. Its avatar and favicon are sourced
from [ClipartMAX][clipartmax].
Thanks to [all the contributors][contributors] involved in the development of the project!
Furthermore, thanks to everyone who contributed to the development of this project!
[![all-contributors](https://contrib.rocks/image?repo=cotes2020/jekyll-theme-chirpy&columns=16)][contributors]
<sub> — Made with [contrib.rocks](https://contrib.rocks)</sub>
### Third-Party Assets
This project is built on the [Jekyll][jekyllrb] ecosystem and some [great libraries][lib], and is developed using [VS Code][vscode] as well as tools provided by [JetBrains][jetbrains] under a non-commercial open-source software license.
The avatar and favicon for the project's website are from [ClipartMAX][clipartmax].
[![all-contributors][contributors-avatar]][contributors]
## License
This project is published under [MIT License][license].
This project is licensed under the [MIT License][license].
[badge-ci]: https://img.shields.io/github/actions/workflow/status/cotes2020/jekyll-theme-chirpy/ci.yml?logo=github
[badge-codacy]: https://img.shields.io/codacy/grade/4e556876a3c54d5e8f2d2857c4f43894?logo=codacy
[badge-license]: https://img.shields.io/github/license/cotes2020/jekyll-theme-chirpy?color=goldenrod
[badge-gem]: https://img.shields.io/gem/v/jekyll-theme-chirpy?&logo=RubyGems&logoColor=ghostwhite&label=gem&color=orange
[badge-open-container]: https://img.shields.io/badge/Dev_Containers-Open-deepskyblue?logo=linuxcontainers
[gem]: https://rubygems.org/gems/jekyll-theme-chirpy
[ci]: https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml?query=event%3Apush+branch%3Amaster
[codacy]: https://app.codacy.com/gh/cotes2020/jekyll-theme-chirpy/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade
@@ -79,6 +73,5 @@ This project is published under [MIT License][license].
[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki
[contribute-guide]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md
[contributors]: https://github.com/cotes2020/jekyll-theme-chirpy/graphs/contributors
[contributors-avatar]: https://contrib.rocks/image?repo=cotes2020/jekyll-theme-chirpy&columns=16&max=112
[lib]: https://github.com/cotes2020/chirpy-static-assets
[vscode]: https://code.visualstudio.com/
[jetbrains]: https://www.jetbrains.com/?from=jekyll-theme-chirpy
+13 -2
View File
@@ -8,7 +8,7 @@ theme: jekyll-theme-chirpy
# otherwise, the layout language will use the default value of 'en'.
lang: en
# Change to your timezone https://kevinnovak.github.io/Time-Zone-Picker
# Change to your timezone https://zones.arilyn.cc
timezone: Asia/Shanghai
# jekyll-seo-tag settings https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
@@ -36,6 +36,7 @@ social:
# It will be displayed as the default author of the posts and the copyright owner in the Footer
name: your_full_name
email: example@domain.com # change to your email address
fediverse_handle: # fill in your fediverse handle. E.g. "@username@domain.com"
links:
# The first element serves as the copyright owner's link
- https://twitter.com/username # change to your Twitter homepage
@@ -107,6 +108,16 @@ social_preview_image: # string, local or CORS resources
# boolean type, the global switch for TOC in posts.
toc: true
actions:
# Display "Edit this post" action on each post page to encourage contributions.
edit_post:
enabled: false # set to true to display the "Edit this post" action.
url: "" # repository base URL, e.g. https://github.com/cotes2020/jekyll-theme-chirpy/edit/master
# Use dynamic or static URL for the edit link.
# If `static_url` is false, the post's path will be appended to the `url` above as the final edit link.
# Set to true if the URL should remain unchanged, which means each post will share the same edit link.
static_url: false # [ true | false ]
comments:
# Global switch for the post-comment system. Keeping it empty means disabled.
provider: # [disqus | utterances | giscus]
@@ -213,7 +224,7 @@ exclude:
- README.md
- LICENSE
- purgecss.js
- rollup.config.js
- "*.config.js"
- "package*.json"
jekyll-archives:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: عذرا, الرابط التالي غير صالح أو انه يشير إلى صفحة غير موجودة.
notification:
update_found: يتوفر اصدار جديد للمحتوى.
update_found: يتوفر محتوى جديد
update: تحديث
theme:
light: فاتح
dark: داكن
system: النظام
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: دقيقة
prompt: قراءة
edit: حرر هذا المنشور
relate_posts: إقرأ المزيد
share: شارك
button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Съжалявам, но на този URL адрес няма налично съдържание.
notification:
update_found: Налична е нова версия на съдържанието.
update_found: Има ново съдържание
update: Обнови
theme:
light: Светла
dark: Тъмна
system: Системна
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: мин
prompt: четиво
edit: Редактирай тази публикация
relate_posts: Още за четене
share: Споделете
button:
+90
View File
@@ -0,0 +1,90 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Entrada
category: Categoria
tag: Etiqueta
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Inici
categories: Categories
tags: Etiquetes
archives: Arxiu
about: Sobre
# the text displayed in the search bar & search results
search:
hint: Cercar
cancel: Cancel·lar
no_results: Ups! No s'han trobat resultats.
panel:
lastmod: Actualitzat recentment
trending_tags: Etiquetes populars
toc: Taula de continguts
copyright:
# Shown at the bottom of the post
license:
template: Aquesta entrada està llicenciada sota :LICENSE_NAME per l'autor.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Alguns drets reservats.
verbose: >-
Excepte que s'indiqui explícitament, les entrades d'aquest blog estan llicenciades
sota la llicència Creative Commons Attribution 4.0 International (CC BY 4.0) per l'autor.
meta: Fet amb :PLATFORM utilitzant el tema :THEME
not_found:
statement: Ho sentim, hem perdut aquesta URL o apunta a alguna cosa que no existeix.
notification:
update_found: Hi ha contingut nou disponible
update: Actualitzar
theme:
light: Clar
dark: Fosc
system: Sistema
# ----- Posts related labels -----
post:
written_by: Per
posted: Publicat
updated: Actualitzat
words: paraules
pageview_measure: visites
read_time:
unit: min
prompt: " de lectura"
edit: Edita aquesta entrada
relate_posts: Entrades relacionades
share: Compartir
button:
next: Següent
previous: Anterior
copy_code:
succeed: Copiat!
share_link:
title: Copiar enllaç
succeed: Enllaç copiat!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%Y/%m/%d"
dayjs: "YYYY/MM/DD"
# categories page
categories:
category_measure: categories
post_measure: entrades
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Omlouváme se, adresu URL jsme špatně umístili nebo odkazuje na něco, co neexistuje.
notification:
update_found: Je k dispozici nová verze obsahu.
update_found: Je tu nový obsah
update: Aktualizace
theme:
light: Světlý
dark: Tmavý
system: Systém
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: minut
prompt: čtení
edit: Uprav tento příspěvek
relate_posts: Další čtení
share: Sdílet
button:
+92
View File
@@ -0,0 +1,92 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Opslag
category: Kategori
tag: Tag
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Hjem
categories: Kategorier
tags: Tags
archives: Arkiv
about: Om siden
# the text displayed in the search bar & search results
search:
hint: søg
cancel: Afbryd
no_results: Ups! Ingen resultater fundet.
panel:
lastmod: Senest opdateret
trending_tags: Populære tags
toc: Indhold
copyright:
# Shown at the bottom of the post
license:
template: Dette opslag er licenseret under :LICENSE_NAME af forfatteren.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Nogle rettigheder forbeholdes.
verbose: >-
Medmindre andet er angivet, er opslag på denne side beskyttet
under Creative Commons Attribution 4.0 International (CC BY 4.0) licensen af forfatteren.
# meta: Using the :THEME theme for :PLATFORM.
not_found:
statement: Beklager, vi har malpaceret denne URL, eller den peger på et sted, som ikke findes.
notification:
update_found: Der er nyt indhold
update: Opdater
theme:
light: Lys
dark: Mørk
system: System
# ----- Posts related labels -----
post:
written_by: Af
posted: Udgivet
updated: Opdateret
words: ord
pageview_measure: visninger
read_time:
unit: min
prompt: læsetid
edit: Rediger dette opslag
relate_posts: Læs videre
share: Del
button:
next: Nyere
previous: Ældre
copy_code:
succeed: Kopieret!
share_link:
title: Kopier link
succeed: Link kopieret!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%Y/%m/%d"
dayjs: "YYYY/MM/DD"
# categories page
categories:
category_measure:
singular: kategori
plural: kategorier
post_measure: opslag
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: Entschuldigung, dieser Link verweist auf keine vorhandene Ressource.
notification:
update_found: Eine neue Version ist verfügbar.
update_found: Neue Inhalte verfügbar
update: Neue Version
theme:
light: Hell
dark: Dunkel
system: System
# ----- Posts related labels -----
post:
@@ -59,6 +64,7 @@ post:
read_time:
unit: Minuten
prompt: Lesezeit
edit: Diesen Eintrag bearbeiten
relate_posts: Weiterlesen
share: Teilen
button:
+96
View File
@@ -0,0 +1,96 @@
# The layout text of site in Dhivehi (Maldives)
# ----- Commons label -----
layout:
post: ޕޯސްޓް
category: ނަތީޖާ
tag: ޓެގް
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: ހުންނަ
categories: ނަތީޖާތައް
tags: ޓެގްތައް
archives: އާރޗިވްސް
about: އިންސާން
# the text displayed in the search bar & search results
search:
hint: ސާރޗް
cancel: ކެންސަލް
no_results: އޮޕްސް! އެއްވެސް ނުފެނުނީ.
panel:
lastmod: އާދަމާ އޮޕްޑޭޓްކުރި
trending_tags: މަރާހު ޓެގްތައް
toc: ކޮންޓެންސް
copyright:
# Shown at the bottom of the post
license:
template: މި ޕޯސްޓް :LICENSE_NAME އިން ލައިސަންސްކުރާ ނުވަތަ މުޤައްރާއަށް.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: އެކީ ބާރަށް ހުށަހަޅާ.
verbose: >-
އަދި އެ ރަނގަޅުގައި ނުލާހެވެސް، މި ސައިޓުގެ ޕޯސްޓްތައް
މުޤައްރާއަށް Creative Commons Attribution 4.0 International (CC BY 4.0) ލައިސަންސްކުރަނީ.
meta: :PLATFORM އަށް :THEME ތީމް ބަލާލާށެވެ.
not_found:
statement: ސޯރީ، މި ޔޫ.އާރއެލް މަށެވެއްނެ ނުވަތަ އެކަމެއް ނުވެއެވެ.
notification:
update_found: އައު ކޮންޓެންޓެއް ފެނިއްޖެ
update: އޮޕްޑޭޓް
theme:
light: އަލި
dark: އަނދިރި
system: ސިސްޓަމް
# ----- Posts related labels -----
post:
written_by: ލެކްއޯލް
posted: ޕޯސްޓްކުރެވި
updated: އޮޕްޑޭޓްކުރެވި
words: ބަސް
pageview_measure: ބަނޑުކުރާ
read_time:
unit: މިނެޓް
prompt: އިސްކާރު
edit: މި ޕޯސްޓް އެޑިޓް ކުރު
relate_posts: އެއްޗެހި ފަހުރަށްދަން
share: ސެއާރް
button:
next: އަދާވަނަ
previous: ކޮނޯނި
copy_code:
succeed: ކޮޕީ ކުރެވި!
share_link:
title: ލިންކް ކޮޕީ ކުރު
succeed: ލިންކް ހަދަންކުރެވި!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
categories:
category_measure:
singular: ނަތީޖާ
plural: ނަތީޖާތައް
post_measure:
singular: ޕޯސްޓް
plural: ޕޯސްޓްތައް
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Συγνώμη, έχουμε τοποθετήσει λάθος αυτήν την διεύθυνση URL ή υποδεικνύει κάτι που δεν υπάρχει.
notification:
update_found: Υπάρχει διαθέσιμη μια νέα έκδοση του περιεχομένου.
update_found: Νέο περιεχόμενο διαθέσιμο
update: Ενημέρωση
theme:
light: Φωτεινό
dark: Σκοτεινό
system: Σύστημα
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: Λεπτά
prompt: διαβάσματος
edit: Επεξεργασία αυτής της δημοσίευσης
relate_posts: Περισσότερα
share: Κοινοποιήστε
button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
notification:
update_found: A new version of content is available.
update_found: New content available
update: Update
theme:
light: Light
dark: Dark
system: System
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: min
prompt: read
edit: Edit this post
relate_posts: Further Reading
share: Share
button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Lo sentimos, hemos perdido esa URL o apunta a algo que no existe.
notification:
update_found: Hay una nueva versión de contenido disponible.
update_found: Hay contenido nuevo
update: Actualizar
theme:
light: Claro
dark: Oscuro
system: Sistema
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: min
prompt: " de lectura"
edit: Edita esta entrada
relate_posts: Lecturas adicionales
share: Compartir
button:
+97
View File
@@ -0,0 +1,97 @@
# The layout text of site
# ----- Commons label -----
layout:
post: پست
category: دسته‌بندی
tag: برچسب
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: خانه
categories: دسته‌بندی‌ها
tags: برچسب‌ها
archives: آرشیو
about: درباره
# the text displayed in the search bar & search results
search:
hint: جستجو
cancel: لغو
no_results: متأسفیم! هیچ نتیجه‌ای یافت نشد.
panel:
lastmod: آخرین به‌روزرسانی
trending_tags: برچسب‌های پرطرفدار
toc: فهرست مطالب
copyright:
# Shown at the bottom of the post
license:
template: این پست تحت مجوز :LICENSE_NAME توسط نویسنده منتشر شده است.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: برخی حقوق محفوظ است.
verbose: >-
به‌جز مواردی که خلاف آن ذکر شده باشد، محتوای پست‌های این وبلاگ
تحت مجوز Creative Commons Attribution 4.0 International (CC BY 4.0) توسط نویسنده منتشر شده‌اند.
meta: با استفاده از قالب :THEME برای :PLATFORM
not_found:
statement: متأسفیم، لینک زیر معتبر نیست یا به صفحه‌ای که وجود ندارد اشاره می‌کند.
notification:
update_found: محتوای جدیدی پیدا شد
update: به‌روزرسانی
theme:
light: روشن
dark: تیره
system: سیستم
# ----- Posts related labels -----
post:
written_by: نوشته شده توسط
posted: منتشر شده
updated: به‌روزرسانی شده
words: کلمه
pageview_measure: بازدید
read_time:
unit: "دقیقه "
prompt: " زمان مطالعه"
edit: ویرایش این پست
relate_posts: بیشتر بخوانید
share: اشتراک‌گذاری
button:
next: جدیدتر
previous: قدیمی‌تر
copy_code:
succeed: کپی شد!
share_link:
title: کپی لینک
succeed: لینک با موفقیت کپی شد!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: دسته‌بندی
plural: دسته‌بندی‌
post_measure:
singular: پست
plural: پست‌
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: Valitettavasti tällä URL-osoitteella ei ole saatavilla sisältöä.
notification:
update_found: Uusi versio sisällöstä on saatavilla.
update_found: Uutta sisältöä löytyi
update: Päivitä
theme:
light: Vaalea
dark: Tumma
system: Järjestelmä
# ----- Posts related labels -----
post:
@@ -59,6 +64,7 @@ post:
read_time:
unit: minuuttia
prompt: lukea
edit: Muokkaa tätä julkaisua
relate_posts: Jatka lukemista
share: Jaa
button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Désolé, nous avons égaré cette URL ou elle pointe vers quelque chose qui n'existe pas.
notification:
update_found: Une nouvelle version du contenu est disponible.
update_found: Nouveau contenu trouvé
update: Mise à jour
theme:
light: Clair
dark: Sombre
system: Système
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: min
prompt: lire
edit: Modifier cet article
relate_posts: Autres lectures
share: Partager
button:
+7 -1
View File
@@ -47,9 +47,14 @@ not_found:
statement: Sajnáljuk, az URL-t rosszul helyeztük el, vagy valami nem létezőre mutat.
notification:
update_found: Elérhető a tartalom új verziója.
update_found: Új tartalom található
update: Frissítés
theme:
light: Világos
dark: Sötét
system: Rendszer
# ----- Posts related labels -----
post:
@@ -61,6 +66,7 @@ post:
read_time:
unit: perc
prompt: elolvasni
edit: Szerkesztés
relate_posts: További olvasnivaló
share: Megosztás
button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Maaf, kami gagal menemukan URL itu atau memang mengarah ke sesuatu yang tidak ada.
notification:
update_found: Versi konten baru tersedia.
update_found: Konten baru tersedia
update: Perbarui
theme:
light: Terang
dark: Gelap
system: Sistem
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: menit
prompt: baca
edit: Sunting entri ini
relate_posts: Postingan Lainya
share: Bagikan
button:
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: Ci scusiamo, non è stato possibile trovare l'URL in questione. Potrebbe puntare ad una pagina non esistente.
notification:
update_found: Nuova versione del contenuto disponibile.
update_found: Nuovi contenuti trovati
update: Aggiornamento
theme:
light: Chiaro
dark: Scuro
system: Sistema
# ----- Posts related labels -----
post:
@@ -59,6 +64,7 @@ post:
read_time:
unit: min
prompt: lettura
edit: Modifica questo post
relate_posts: Continua a leggere
share: Condividi
button:
+90
View File
@@ -0,0 +1,90 @@
# The layout text of site
# ----- Commons label -----
layout:
post: 投稿
category: カテゴリー
tag: タグ
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: ホーム
categories: カテゴリー
tags: タグ
archives: アーカイブ
about: このサイトについて
# the text displayed in the search bar & search results
search:
hint: 検索
cancel: キャンセル
no_results: 該当なし
panel:
lastmod: 最近更新された投稿
trending_tags: トレンドのタグ
toc: コンテンツ
copyright:
# Shown at the bottom of the post
license:
template: この投稿は投稿者によって :LICENSE_NAME の下でライセンスされています。
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Some rights reserved.
verbose: >-
Except where otherwise noted, the blog posts on this site are licensed
under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.
meta: :PLATFORM 用の :THEME を使用しています。
not_found:
statement: このURLは存在しないものを指し示しています。
notification:
update_found: 新しいコンテンツがあります
update: 更新
theme:
light: ライト
dark: ダーク
system: システム
# ----- Posts related labels -----
post:
written_by: 投稿者
posted: 投稿日
updated: 更新日
words:
pageview_measure: 回閲覧
read_time:
unit:
prompt: で読めます
edit: この投稿を編集
relate_posts: さらに読む
share: シェア
button:
next:
previous:
copy_code:
succeed: コピーしました
share_link:
title: リンクをコピー
succeed: リンクをコピーしました
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%Y/%m/%d"
dayjs: "YYYY/MM/DD"
# categories page
categories:
category_measure: カテゴリー
post_measure: 投稿
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: 해당 URL은 존재하지 않습니다.
notification:
update_found: 버전의 콘텐츠를 사용할 수 있습니다.
update_found: 콘텐츠가 있습니다
update: 업데이트
theme:
light: 라이트
dark: 다크
system: 시스템
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit:
prompt: 읽는 시간
edit: 이 글 편집
relate_posts: 관련된 글
share: 공유하기
button:
+97
View File
@@ -0,0 +1,97 @@
# The layout text of site in Kurdish (Sorani)
# ----- Commons label -----
layout:
post: بابەت
category: هاوپۆل
tag: تاگ
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: سەرەکی
categories: هاوپۆلەکان
tags: تاگەکان
archives: ئەرشیف
about: دەربارە
# the text displayed in the search bar & search results
search:
hint: گەڕان
cancel: هەڵوەشاندنەوە
no_results: ببوورە! هیچ ئەنجامێک نەدۆزرایەوە.
panel:
lastmod: دوایین نوێکردنەوەکان
trending_tags: تاگە باوەکان
toc: ناوەڕۆک
copyright:
# Shown at the bottom of the post
license:
template: ئەم بابەتە لەلایەن نووسەرەوە بە مۆڵەتی :LICENSE_NAME بڵاوکراوەتەوە.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: هەندێک مافی پارێزراوە.
verbose: >-
تەنها لەو شوێنانەی کە بە پێچەوانەوە ئاماژەی پێدراوە، بابەتەکانی بڵۆگ لەم سایتەدا
لەژێر مۆڵەتی Creative Commons Attribution 4.0 International (CC BY 4.0) لەلایەن نووسەرەوە مۆڵەتیان پێدراوە.
meta: بە بەکارهێنانی :PLATFORM لەگەڵ ڕووکاری :THEME
not_found:
statement: ببوورە، ئەم بەستەرە نادۆزرێتەوە یان ئاماژە بە شتێک دەکات کە بوونی نییە.
notification:
update_found: ناوەڕۆکی نوێ بەردەستە
update: نوێکردنەوە
theme:
light: ڕووناک
dark: تاریک
system: سیستەم
# ----- Posts related labels -----
post:
written_by: نووسەر
posted: بڵاوکراوەتەوە
updated: نوێکراوەتەوە
words: وشە
pageview_measure: بینین
read_time:
unit: خولەک
prompt: خوێندنەوە
edit: ئەم بابەتە دەستکاری بکە
relate_posts: بابەتی پەیوەندیدار
share: بڵاوکردنەوە
button:
next: نوێتر
previous: کۆنتر
copy_code:
succeed: کۆپی کرا!
share_link:
title: کۆپی بەستەر
succeed: بەستەر بە سەرکەوتوویی کۆپی کرا!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%d %b, %Y"
dayjs: "DD MMM, YYYY"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: هاوپۆل
plural: هاوپۆل
post_measure:
singular: بابەت
plural: بابەت
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: ဝမ်းနည်းပါသည်၊ ကျွန်ုပ်တို့သည် အဆိုပါ URL ကို မှားယွင်းစွာ နေရာချထားခြင်း သို့မဟုတ် ၎င်းသည် မရှိသောအရာကို ညွှန်ပြနေပါသည်။
notification:
update_found: အကြောင်းအရာဗားရှင်းအသစ်ကို ရနိုင်ပါပြီ။
update_found: အကြောင်းအရာအသစ် တွေ့ရှိပါသည်
update: အပ်ဒိတ်
theme:
light: အလင်း
dark: အမှောင်
system: စနစ်
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: မိနစ်
prompt: ဖတ်ပါမည်
edit: ဤပို့စ်ကို တည်းဖြတ်ပါ
relate_posts: နောက်ထပ်ဖတ်ရန်
share: မျှဝေရန်
button:
+96
View File
@@ -0,0 +1,96 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Post
category: Categorie
tag: Tag
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Startpagina
categories: Categorieën
tags: Tags
archives: Archief
about: Over
# the text displayed in the search bar & search results
search:
hint: Zoek
cancel: Annuleer
no_results: Oops! Geen resultaat gevonden.
panel:
lastmod: Recent Bijgewerkt
trending_tags: Trending Tags
toc: Inhoud
copyright:
# Shown at the bottom of the post
license:
template: Alle posts zijn onder :LICENSE_NAME gepubliceerd door de auteur.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Sommige rechten voorbehouden.
verbose: >-
Tenzij anders vermeld, alle posts zijn onder de
Creative Commons Attribution 4.0 International (CC BY 4.0) gepubliceerd door de auteur.
meta: Gebruikt :THEME
not_found:
statement: Sorry, we hebben de URL verkeerd geplaatst of hij verwijst naar iets dat niet bestaat.
notification:
update_found: Nieuwe inhoud gevonden
update: Update
theme:
light: Licht
dark: Donker
system: Systeem
# ----- Posts related labels -----
post:
written_by: Door
posted: Posted
updated: Bijgewerkt
words: woorden
pageview_measure: Gelezen
read_time:
unit: min
prompt: lees
edit: Bewerk dit bericht
relate_posts: Verder Lezen
share: Deel
button:
next: Volgende
previous: Vorige
copy_code:
succeed: Gekopieerd!
share_link:
title: Link kopiëren
succeed: Succesvol gekopieerd!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: categorie
plural: categorieën
post_measure:
singular: post
plural: posts
+96
View File
@@ -0,0 +1,96 @@
# The layout text of site in Pashto (Afghanistan)
# ----- Commons label -----
layout:
post: لیکنه
category: وېشنيزه
tag: ټګ
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: کورپاڼه
categories: وېشنيزې
tags: ټګونه
archives: آرشيف
about: په اړه
# the text displayed in the search bar & search results
search:
hint: لټون
cancel: لغوه
no_results: ها! هېڅ پایله ونه موندل شوه.
panel:
lastmod: وروستی تازه
trending_tags: مشهور ټګونه
toc: منځپانګه
copyright:
# Shown at the bottom of the post
license:
template: دا لیکنه د :LICENSE_NAME جواز لاندې د لیکوال له خوا خپره شوې ده.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: ځینې حقونه خوندي دي.
verbose: >-
تر هغه ځایه چې بل ډول نه وي یاد شوي، د دې سایټ لیکنې
د لیکوال له خوا د کریټېو کامنز د انتساب 4.0 نړیوال (CC BY 4.0) جواز لاندې خپرېږي.
meta: د :PLATFORM لپاره د :THEME موضوع کاروي.
not_found:
statement: بښنه غواړو، دغه URL ناسم دی یا هغه څه ته اشاره کوي چې شتون نه لري.
notification:
update_found: نوې منځپانګه شتون لري
update: تازه
theme:
light: روښانه
dark: تیاره
system: سیستم
# ----- Posts related labels -----
post:
written_by: لیکوال
posted: خپره شوې
updated: تازه شوې
words: کلمې
pageview_measure: کتنې
read_time:
unit: دقیقې
prompt: لوستل
edit: دغه لیکنه سمول
relate_posts: نوره لوستنه
share: شریکول
button:
next: نوی
previous: زوړ
copy_code:
succeed: کاپي شو!
share_link:
title: لینک کاپي کړئ
succeed: لینک بریالي کاپي شو!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
categories:
category_measure:
singular: وېشنيزه
plural: وېشنيزې
post_measure:
singular: لیکنه
plural: لیکنې
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Desculpe, a página não foi encontrada.
notification:
update_found: Uma nova versão do conteúdo está disponível.
update_found: Novo conteúdo encontrado
update: atualização
theme:
light: Claro
dark: Escuro
system: Sistema
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: min
prompt: " de leitura"
edit: Editar esta postagem
relate_posts: Leia também
share: Compartilhar
button:
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: Извините, мы перепутали URL-адрес или он указывает на что-то несуществующее.
notification:
update_found: Доступна новая версия контента.
update_found: Найден новый контент
update: Обновить
theme:
light: Светлая
dark: Темная
system: Системная
# ----- Posts related labels -----
post:
@@ -59,6 +64,7 @@ post:
read_time:
unit: мин.
prompt: чтения
edit: Редактировать этот пост
relate_posts: Похожие посты
share: Поделиться
button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Oprostite, hiperpovezava je neustrezna ali vsebina ne obstajata. #Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
notification:
update_found: Novejša različica vsebine je na voljo. #A new version of content is available.
update_found: Nova vsebina je na voljo
update: Posodobi #Update
theme:
light: Svetla
dark: Temna
system: Sistemska
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: min
prompt: beri #read
edit: Uredi to objavo #Edit this post
relate_posts: Nadaljnje branje #Further Reading
share: Deli #Share
button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Ursäkta, vi har tappat bort den här webbadressen eller så pekar den på något som inte längre finns.
notification:
update_found: Det finns en ny version av innehållet.
update_found: Nytt innehåll hittades
update: Uppdatera sidan
theme:
light: Ljust
dark: Mörkt
system: System
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: min
prompt: läsning
edit: Redigera detta inlägg
relate_posts: Mer läsning
share: Dela
button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: ขออภัย เราวาง URL นั้นไว้ผิดที่ หรือมันชี้ไปยังสิ่งที่ไม่มีอยู่
notification:
update_found: มีเวอร์ชันใหม่ของเนื้อหา
update_found: พบเนื้อหาใหม่
update: อัปเดต
theme:
light: สว่าง
dark: มืด
system: ระบบ
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: นาที
prompt: อ่าน
edit: แก้ไขโพสต์นี้
relate_posts: อ่านต่อ
share: แชร์
button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Üzgünüz, bu linki yanlış yerleştirdik veya var olmayan bir şeye işaret ediyor.
notification:
update_found: İçeriğin yeni bir sürümü mevcut.
update_found: Yeni içerik bulundu
update: Güncelle
theme:
light: Açık
dark: Koyu
system: Sistem
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: dakikada
prompt: okunabilir
edit: Bu gönderiyi düzenle
relate_posts: Benzer Gönderiler
share: Paylaş
button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Вибачте, це посилання вказує на ресурс, що не існує.
notification:
update_found: Доступна нова версія вмісту.
update_found: Знайдено новий вміст
update: Оновлення
theme:
light: Світла
dark: Темна
system: Системна
# ----- Posts related labels -----
post:
@@ -60,6 +65,7 @@ post:
read_time:
unit: хвилин
prompt: читання
edit: Редагувати цей пост
relate_posts: Вас також може зацікавити
share: Поділитися
button:
+96
View File
@@ -0,0 +1,96 @@
# The layout text of site in Urdu (Pakistan)
# ----- Commons label -----
layout:
post: تحریر
category: زمرہ
tag: ٹیگ
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: گھر
categories: زمروں
tags: ٹیگز
archives: محفوظات
about: تعارف
# the text displayed in the search bar & search results
search:
hint: تلاش
cancel: منسوخ
no_results: اوہ! کوئی نتیجہ نہیں ملا۔
panel:
lastmod: حال ہی میں اپ ڈیٹ
trending_tags: مقبول ٹیگز
toc: مواد
copyright:
# Shown at the bottom of the post
license:
template: یہ تحریر :LICENSE_NAME کے تحت مصنف کی جانب سے لائسنس یافتہ ہے۔
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: کچھ حقوق محفوظ ہیں۔
verbose: >-
جب تک کہ دوسری صورت میں ذکر نہ ہو، اس سائٹ کی تحریریں
مصنف کی جانب سے تخلیقی العام انتساب 4.0 بین الاقوامی (CC BY 4.0) لائسنس کے تحت دستیاب ہیں۔
meta: :PLATFORM کے لیے :THEME تھیم استعمال کیا جا رہا ہے۔
not_found:
statement: معذرت، یہ URL غلط ہے یا جس چیز کی طرف اشارہ کر رہا ہے وہ موجود نہیں۔
notification:
update_found: نیا مواد مل گیا
update: اپ ڈیٹ
theme:
light: روشن
dark: تاریک
system: سسٹم
# ----- Posts related labels -----
post:
written_by: از
posted: شائع شدہ
updated: اپ ڈیٹ شدہ
words: لفظ
pageview_measure: مشاہدات
read_time:
unit: منٹ
prompt: پڑھیں
edit: اس تحریر میں ترمیم کریں
relate_posts: مزید مطالعہ
share: شیئر
button:
next: نیا
previous: پرانا
copy_code:
succeed: کاپی ہو گیا!
share_link:
title: لنک کاپی کریں
succeed: لنک کامیابی سے کاپی ہو گیا!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
categories:
category_measure:
singular: زمرہ
plural: زمروں
post_measure:
singular: تحریر
plural: تحریریں
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: Xin lỗi, chúng tôi đã đặt nhầm URL hoặc đường dẫn trỏ đến một trang nào đó không tồn tại.
notification:
update_found: Đã có phiên bản mới của nội dung.
update_found: Đã tìm thấy nội dung mới
update: Cập nhật
theme:
light: Sáng
dark: Tối
system: Hệ thống
# ----- Posts related labels -----
post:
@@ -59,6 +64,7 @@ post:
read_time:
unit: phút
prompt: đọc
edit: Chỉnh sửa bài viết này
relate_posts: Bài viết liên quan
share: Chia sẻ
button:
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: 抱歉,我们放错了该 URL,或者它指向了不存在的内容。
notification:
update_found: 发现新版本的内容
update_found: 发现新内容
update: 更新
theme:
light: 浅色
dark: 深色
system: 跟随系统
# ----- Posts related labels -----
post:
@@ -59,6 +64,7 @@ post:
read_time:
unit: 分钟
prompt: 阅读
edit: 编辑此文
relate_posts: 相关文章
share: 分享
button:
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: 抱歉,您可能正在存取一個已被移動的 URL,或者它從未存在。
notification:
update_found: 發現新版本更新。
update_found: 發現新內容
update: 更新
theme:
light: 淺色
dark: 深色
system: 跟隨系統
# ----- Posts related labels -----
post:
@@ -59,6 +64,7 @@ post:
read_time:
unit: 分鐘
prompt: 閱讀
edit: 編輯此文
relate_posts: 相關文章
share: 分享
button:
+18 -15
View File
@@ -19,36 +19,39 @@ webfonts: https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Sour
# Libraries
bootstrap:
css: https://cdn.jsdelivr.net/npm/bootstrap@5/dist/css/bootstrap.min.css
toc:
css: https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css
js: https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.js
css: https://cdn.jsdelivr.net/npm/tocbot@4/dist/tocbot.min.css
js: https://cdn.jsdelivr.net/npm/tocbot@4/dist/tocbot.min.js
fontawesome:
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@7/css/all.min.css
search:
js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js
js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1/dest/simple-jekyll-search.min.js
mermaid:
js: https://cdn.jsdelivr.net/npm/mermaid@11.4.0/dist/mermaid.min.js
js: https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js
dayjs:
js:
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js
locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/:LOCALE.js
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js
common: https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js
locale: https://cdn.jsdelivr.net/npm/dayjs@1/locale/:LOCALE.js
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1/plugin/relativeTime.js
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1/plugin/localizedFormat.js
glightbox:
css: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css
js: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/js/glightbox.min.js
css: https://cdn.jsdelivr.net/npm/glightbox@3/dist/css/glightbox.min.css
js: https://cdn.jsdelivr.net/npm/glightbox@3/dist/js/glightbox.min.js
lazy-polyfill:
css: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.min.css
js: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.umd.min.js
css: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2/dist/loading-attribute-polyfill.min.css
js: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2/dist/loading-attribute-polyfill.umd.min.js
clipboard:
js: https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js
js: https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js
mathjax:
js: https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-chtml.js
js: https://cdn.jsdelivr.net/npm/mathjax@4/tex-mml-chtml.js
+1 -1
View File
@@ -18,7 +18,7 @@ platforms:
#
# - type: Linkedin
# icon: "fab fa-linkedin"
# link: "https://www.linkedin.com/sharing/share-offsite/?url=URL"
# link: "https://www.linkedin.com/feed/?shareActive=true&shareUrl=URL"
#
# - type: Weibo
# icon: "fab fa-weibo"
+2 -2
View File
@@ -19,7 +19,7 @@
{%- comment -%} Auto switch theme {%- endcomment -%}
function reloadDisqus(event) {
if (event.source === window && event.data && event.data.id === Theme.ID) {
if (event.source === window && event.data && event.data.id === Theme.eventId) {
{%- comment -%} Disqus hasn't been loaded {%- endcomment -%}
if (typeof DISQUS === 'undefined') {
return;
@@ -33,7 +33,7 @@
addDisqus();
if (Theme.switchable) {
if (Theme.isToggleable) {
addEventListener('message', reloadDisqus);
}
+17 -7
View File
@@ -1,8 +1,8 @@
<!-- https://giscus.app/ -->
<script>
(function () {
const themeMapper = Theme.getThemeMapper('light', 'dark_dimmed');
const initTheme = themeMapper[Theme.visualState];
const themeMap = Theme.newThemeMap('light', 'dark_dimmed');
const initTheme = themeMap[Theme.resolvedTheme];
let lang = '{{ site.comments.giscus.lang | default: lang }}';
{%- comment -%} https://github.com/giscus/giscus/tree/main/locales {%- endcomment -%}
@@ -37,8 +37,8 @@
$footer.insertAdjacentElement("beforebegin", giscusNode);
addEventListener('message', (event) => {
if (event.source === window && event.data && event.data.id === Theme.ID) {
const newTheme = themeMapper[Theme.visualState];
if (event.source === window && event.data && event.data.id === Theme.eventId) {
const newTheme = themeMap[Theme.resolvedTheme];
const message = {
setConfig: {
@@ -46,9 +46,19 @@
}
};
const giscus =
document.getElementsByClassName('giscus-frame')[0].contentWindow;
giscus.postMessage({ giscus: message }, 'https://giscus.app');
const iframe = document.querySelector('.giscus-frame');
if (!iframe) {
return;
}
if (iframe.classList.contains('giscus-frame--loading')) {
let url = new URL(iframe.src);
url.searchParams.set('theme', newTheme);
iframe.src = url.toString();
}
iframe.contentWindow.postMessage({ giscus: message }, 'https://giscus.app');
}
});
})();
+4 -4
View File
@@ -2,8 +2,8 @@
<script>
(function () {
const origin = 'https://utteranc.es';
const themeMapper = Theme.getThemeMapper('github-light', 'github-dark');
const initTheme = themeMapper[Theme.visualState];
const themeMap = Theme.newThemeMap('github-light', 'github-dark');
const initTheme = themeMap[Theme.resolvedTheme];
let script = document.createElement('script');
script.src = 'https://utteranc.es/client.js';
@@ -22,8 +22,8 @@
{%- comment -%}
Credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347>
{%- endcomment -%}
if (event.source === window && event.data && event.data.id === Theme.ID) {
newTheme = themeMapper[Theme.visualState];
if (event.source === window && event.data && event.data.id === Theme.eventId) {
newTheme = themeMap[Theme.resolvedTheme];
const message = {
type: 'set-theme',
+1 -1
View File
@@ -1,6 +1,6 @@
<!--
Date format snippet
See: ${JS_ROOT}/utils/locale-dateime.js
See: ${JS_ROOT}/modules/components/locale-datetime.js
-->
{% assign df_strftime = site.data.locales[include.lang].df.post.strftime | default: '%d/%m/%Y' %}
+1 -1
View File
@@ -9,7 +9,7 @@
{% endunless %}
<p>
<audio class="embed-audio" controls>
<audio class="embed-audio file" controls>
{% assign extension = src | split: '.' | last %}
{% assign types = extension | concat: types %}
+22
View File
@@ -0,0 +1,22 @@
{% assign size = 352 %}
{% assign theme = '' %}
{% if include.compact %}
{% assign size = 152 %}
{% endif %}
{% if include.dark %}
{% assign theme = '?theme=0' %}
{% endif %}
<iframe
class="embed-audio spotify"
src="https://open.spotify.com/embed/track/{{ include.id | append: theme }}"
height="{{ size }}"
frameBorder="0"
allowfullscreen=""
allowtransparency="true"
allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"
loading="lazy"
>
</iframe>
+3 -8
View File
@@ -5,15 +5,10 @@
{% capture favicon_path %}{{ '/assets/img/favicons' | relative_url }}{% endcapture %}
<link rel="icon" type="image/png" href="{{ favicon_path }}/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="{{ favicon_path }}/favicon.svg">
<link rel="shortcut icon" href="{{ favicon_path }}/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="{{ favicon_path }}/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="{{ favicon_path }}/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="{{ favicon_path }}/favicon-16x16.png">
{% if site.pwa.enabled %}
<link rel="manifest" href="{{ favicon_path }}/site.webmanifest">
{% endif %}
<link rel="shortcut icon" href="{{ favicon_path }}/favicon.ico">
<meta name="apple-mobile-web-app-title" content="{{ site.title }}">
<meta name="application-name" content="{{ site.title }}">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-config" content="{{ favicon_path }}/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
+16 -5
View File
@@ -2,8 +2,6 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta
name="viewport"
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
@@ -50,11 +48,24 @@
{{ seo_tags }}
{%- if site.social.fediverse_handle %}
<!-- Fediverse handle/creator -->
<meta name="fediverse:creator" content="{{ site.social.fediverse_handle }}">
{% endif %}
<title>
{%- unless page.layout == 'home' -%}
{{ page.title | append: ' | ' }}
{%- capture title -%}
{%- if page.collection == 'tabs' -%}
{%- assign tab_key = page.title | downcase -%}
{{- site.data.locales[include.lang].tabs[tab_key] -}}
{%- else -%}
{{- page.title -}}
{%- endif -%}
{%- endcapture -%}
{{- title | append: ' | ' -}}
{%- endunless -%}
{{ site.title }}
{{- site.title -}}
</title>
{% include_cached favicons.html %}
@@ -70,7 +81,7 @@
<!-- Bootstrap -->
{% unless jekyll.environment == 'production' %}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="{{ site.data.origin.cors.bootstrap.css }}">
{% endunless %}
<!-- Theme style -->
+1 -2
View File
@@ -66,8 +66,7 @@
{% if page.math %}
<!-- MathJax -->
<script async src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script>
<script async src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
<script src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script>
<script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script>
{% endif %}
+7 -9
View File
@@ -1,9 +1,7 @@
{% comment %}
Convert the alias of the syntax language to the official name
See: <https://github.com/rouge-ruby/rouge/wiki/List-of-supported-languages-and-lexers>
{% endcomment %}
{% assign _lang = include.language | default: '' %}
@@ -20,13 +18,13 @@
{% when 'coffeescript', 'coffee', 'coffee-script' %}
{{ 'CoffeeScript' }}
{% when 'cs', 'csharp' %}
{{ 'C#' }}
{{ 'C#' }}
{% when 'erl' %}
{{ 'Erlang' }}
{% when 'graphql' %}
{{ 'GraphQL' }}
{{ 'GraphQL' }}
{% when 'haskell', 'hs' %}
{{ 'Haskell' }}
{{ 'Haskell' }}
{% when 'javascript', 'js' %}
{{ 'JavaScript' }}
{% when 'make', 'mf', 'gnumake', 'bsdmake' %}
@@ -39,22 +37,22 @@
{{ 'Objective-C' }}
{% when 'perl', 'pl' %}
{{ 'Perl' }}
{% when 'php','php3','php4','php5' %}
{% when 'php', 'php3', 'php4', 'php5' %}
{{ 'PHP' }}
{% when 'py' %}
{{ 'Python' }}
{% when 'rb' %}
{{ 'Ruby' }}
{% when 'rs','no_run','ignore','should_panic' %}
{% when 'rs', 'no_run', 'ignore', 'should_panic' %}
{{ 'Rust' }}
{% when 'bash', 'zsh', 'ksh', 'sh' %}
{{ 'Shell' }}
{% when 'st', 'squeak' %}
{{ 'Smalltalk' }}
{% when 'tex'%}
{% when 'tex' %}
{{ 'TeX' }}
{% when 'latex' %}
{{ 'LaTex' }}
{{ 'LaTeX' }}
{% when 'ts', 'typescript' %}
{{ 'TypeScript' }}
{% when 'vb', 'visualbasic' %}
+1 -1
View File
@@ -17,7 +17,7 @@
{%- comment -%} Add media resources subpath prefix {%- endcomment -%}
{% assign url = include.subpath | default: '' | append: '/' | append: url %}
{%- comment -%} Prepend CND URL {%- endcomment -%}
{%- comment -%} Prepend CDN URL {%- endcomment -%}
{% if site.cdn %}
{% assign url = site.cdn | append: '/' | append: url %}
{% endif %}
-10
View File
@@ -1,10 +0,0 @@
{% comment %}
Remove the line number of the code snippet.
{% endcomment %}
{% assign content = include.content %}
{% if content contains '<td class="rouge-gutter gl"><pre class="lineno">' %}
{% assign content = content | replace: '<td class="rouge-gutter gl"><pre class="lineno">', '<!-- <td class="rouge-gutter gl"><pre class="lineno">'%}
{% assign content = content | replace: '</td><td class="rouge-code">', '</td> --><td class="rouge-code">' %}
{% endif %}
+13 -9
View File
@@ -1,24 +1,28 @@
<aside
id="notification"
class="toast"
class="toast w-auto rounded-5 text-nowrap"
role="alert"
aria-live="assertive"
aria-atomic="true"
data-bs-animation="true"
data-bs-autohide="false"
>
<div class="toast-header">
<div class="d-flex align-items-center">
<div class="toast-body ps-3">
{{- site.data.locales[include.lang].notification.update_found -}}
</div>
<button
type="button"
class="btn-close ms-auto"
class="btn btn-primary btn-sm rounded-2 py-0"
aria-label="Update"
>
{{- site.data.locales[include.lang].notification.update -}}
</button>
<button
type="button"
class="btn-close mx-3 ms-2"
data-bs-dismiss="toast"
aria-label="Close"
></button>
</div>
<div class="toast-body text-center pt-0">
<p class="px-2 mb-3">{{ site.data.locales[include.lang].notification.update_found }}</p>
<button type="button" class="btn btn-primary" aria-label="Update">
{{ site.data.locales[include.lang].notification.update }}
</button>
</div>
</aside>
+1 -1
View File
@@ -10,7 +10,7 @@
fetch(url)
.then((response) => response.json())
.then((data) => {
const count = data.count.replace(/\s/g, '');
const count = data.count.replace(/\D/g, '');
pv.innerText = new Intl.NumberFormat().format(count);
})
.catch((error) => {
-16
View File
@@ -1,16 +0,0 @@
{%- comment -%}
Get post description or generate it from the post content.
{%- endcomment -%}
{%- assign max_length = include.max_length | default: 200 -%}
{%- capture description -%}
{%- if post.description -%}
{{- post.description -}}
{%- else -%}
{%- include no-linenos.html content=post.content -%}
{{- content | markdownify | strip_html -}}
{%- endif -%}
{%- endcapture -%}
{{- description | strip | truncate: max_length | escape -}}
+23
View File
@@ -0,0 +1,23 @@
<!-- Link to edit the post to contribute. -->
{% assign enabled = site.actions.edit_post.enabled %}
{% assign url = site.actions.edit_post.url %}
{% assign static_url = site.actions.edit_post.static_url %}
{% unless static_url %}
{% assign url = url | append: '/' | append: page.path %}
{% endunless %}
{% if enabled %}
<div class="post-edit">
{% assign edit = site.data.locales[include.lang].post.edit %}
<a
href="{{ url }}"
target="_blank"
rel="noopener"
>
<i class="fa fa-pen fa-fw me-1"></i>
<span>{{ edit }}</span>
</a>
</div>
{% endif %}
+1 -1
View File
@@ -1,4 +1,4 @@
<!-- The paginator for post list on HomgPage. -->
<!-- The paginator for post list on HomePage. -->
<nav aria-label="Page Navigation">
<ul class="pagination align-items-center mt-4 mb-0">
+39
View File
@@ -0,0 +1,39 @@
{%- comment -%}
Get the post's description or body content.
Arguments:
full_text: If true, return the full content. Default is false.
max_length: The maximum length of the returned content. Default is 200.
{%- endcomment -%}
{%- if post.description and include.full_text != true -%}
{{- post.description -}}
{%- else -%}
{%- comment -%} Remove the line numbers from the code snippet. {%- endcomment -%}
{%- assign content = post.content -%}
{%- if content contains '<td class="rouge-gutter gl"><pre class="lineno">' -%}
{%- assign content = content
| replace: '<td class="rouge-gutter gl"><pre class="lineno">',
'<!-- <td class="rouge-gutter gl"><pre class="lineno">'
-%}
{%- assign content = content | replace: '</td><td class="rouge-code">', '</td> --><td class="rouge-code">' -%}
{%- endif -%}
{%- assign content = content
| markdownify
| strip_html
| newline_to_br
| replace: '<br />', ' '
| strip_newlines
| strip
-%}
{%- unless include.full_text -%}
{%- assign max_length = include.max_length | default: 200 -%}
{%- assign content = content | truncate: max_length -%}
{%- endunless -%}
{{- content -}}
{%- endif -%}
+40 -8
View File
@@ -88,9 +88,41 @@
{% endfor %}
<!-- take out classes -->
{% assign _wrapper_class = '' %}
{% if _class %}
{% capture _old_class %}class="{{ _class }}"{% endcapture %}
{% assign _left = _left | remove: _old_class %}
{% assign _remain = _class %}
{% assign _class_array = _class | split: ' ' %}
{% for c in _class_array %}
{% assign _pick = false %}
{% case c %}
{% when 'preview-img', 'normal', 'left', 'right', 'light', 'dark' %}
{% assign _pick = true %}
{% else %}
{% if c contains '-' %}
{% assign start = c | split: '-' | first %}
{% if start == 'w' %}
{% assign _pick = true %}
{% endif %}
{% endif %}
{% endcase %}
{% if _pick %}
{% assign _remain = _remain | remove: c | strip %}
{% assign _wrapper_class = _wrapper_class | append: ' ' | append: c %}
{% endif %}
{% endfor %}
{% unless _wrapper_class == '' %}
{% capture _old_class %}class="{{ _class }}"{% endcapture %}
{% assign _left = _left | remove: _old_class %}
{% unless _remain == '' %}
{% capture _new_class %}class="{{ _remain }}"{% endcapture %}
{% assign _left = _left | append: _new_class %}
{% endunless %}
{% endunless %}
{% endif %}
{% assign _final_src = null %}
@@ -110,7 +142,7 @@
{% if _lqip %}
{% assign _lazyload = false %}
{% assign _class = _class | append: ' blur' %}
{% assign _wrapper_class = _wrapper_class | append: ' blur' %}
{% unless _lqip contains 'data:' %}
{% assign _lqip_alt = 'lqip="' | append: _path_prefix %}
@@ -121,7 +153,7 @@
{% assign _left = _left | replace: 'src=', 'data-src=' | replace: ' lqip=', ' data-lqip="true" src=' %}
{% else %}
{% assign _class = _class | append: ' shimmer' %}
{% assign _wrapper_class = _wrapper_class | append: ' shimmer' %}
{% endif %}
<!-- lazy-load images -->
@@ -131,7 +163,7 @@
{% if page.layout == 'home' %}
<!-- create the image wrapper -->
{% assign _wrapper_start = '<div class="preview-img ' | append: _class | append: '">' %}
{% assign _wrapper_start = '<div class="preview-img ' | append: _wrapper_class | append: '">' %}
{% assign _img_content = _img_content | append: _wrapper_start %}
{% assign _right = _right | prepend: '></div' %}
@@ -141,7 +173,7 @@
{% assign _parent = _right | slice: 1, 4 %}
{% if _parent == '</a>' %}
<!-- add class to exist <a> tag -->
<!-- add class to existing <a> tag -->
{% assign _size = _img_content | size | minus: 1 %}
{% capture _class %}
class="img-link{% unless _lqip %} shimmer{% endunless %}"
@@ -153,8 +185,8 @@
{% assign _wrapper_start = _final_src
| default: _src
| prepend: '<a href="'
| append: '" class="popup img-link '
| append: _class
| append: '" class="popup img-link'
| append: _wrapper_class
| append: '">'
%}
+1 -1
View File
@@ -82,7 +82,7 @@
{% include datetime.html date=post.date lang=include.lang %}
<h4 class="pt-0 my-2">{{ post.title }}</h4>
<div class="text-muted">
<p>{% include post-description.html %}</p>
<p>{% include post-summary.html %}</p>
</div>
</div>
</a>
+1 -1
View File
@@ -12,7 +12,7 @@
{tags}
</div>
</header>
<p>{snippet}</p>
<p>{content}</p>
</article>
{% endcapture %}
+1 -1
View File
@@ -3,7 +3,7 @@
<div id="search-result-wrapper" class="d-flex justify-content-center d-none">
<div class="col-11 content">
<div id="search-hints">
{% include_cached trending-tags.html %}
{% include_cached trending-tags.html lang=include.lang %}
</div>
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
</div>
+57 -7
View File
@@ -40,11 +40,53 @@
</ul>
</nav>
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
{% unless site.theme_mode %}
<button type="button" class="btn btn-link nav-link" aria-label="Switch Mode" id="mode-toggle">
<i class="fas fa-adjust"></i>
</button>
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
{% unless site.theme_mode == 'light' or site.theme_mode == 'dark' %}
{%- capture icon_system -%}
<i class="fa-solid fa-display" data-theme-mode="system"></i>
{%- endcapture -%}
{%- capture icon_light -%}
<i class="fa-regular fa-sun" data-theme-mode="light"></i>
{%- endcapture -%}
{%- capture icon_dark -%}
<i class="fa-regular fa-moon" data-theme-mode="dark"></i>
{%- endcapture -%}
<div class="btn-group dropup">
<button
type="button"
class="btn btn-link nav-link"
aria-label="Switch Mode"
id="mode-toggle"
data-bs-toggle="dropdown"
>
{{- icon_light -}}
{{- icon_dark -}}
{{- icon_system -}}
</button>
<ul class="dropdown-menu rounded-3 mb-1 p-1">
<li>
<button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="light">
{{- icon_light -}}
{{- site.data.locales[lang].theme.light -}}
</button>
</li>
<li>
<button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="dark">
{{- icon_dark -}}
{{- site.data.locales[lang].theme.dark -}}
</button>
</li>
<li>
<button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="system">
{{- icon_system -}}
{{- site.data.locales[lang].theme.system -}}
</button>
</li>
</ul>
</div>
{% if site.data.contact.size > 0 %}
<span class="icon-border"></span>
@@ -52,15 +94,23 @@
{% endunless %}
{% for entry in site.data.contact %}
{%- assign url = null -%}
{% case entry.type %}
{% when 'github', 'twitter' %}
{%- unless site[entry.type].username -%}
{%- continue -%}
{%- endunless -%}
{%- capture url -%}
https://{{ entry.type }}.com/{{ site[entry.type].username }}
{%- endcapture -%}
{% when 'email' %}
{% assign email = site.social.email | split: '@' %}
{%- unless site.social.email -%}
{%- continue -%}
{%- endunless -%}
{%- assign email = site.social.email | split: '@' -%}
{%- capture url -%}
javascript:location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@')
javascript:void(location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@'))
{%- endcapture -%}
{% when 'rss' %}
{% assign url = '/feed.xml' | relative_url %}
+3 -3
View File
@@ -1,6 +1,6 @@
<!-- The Top Bar -->
<header id="topbar-wrapper" aria-label="Top Bar">
<header id="topbar-wrapper" class="flex-shrink-0" aria-label="Top Bar">
<div
id="topbar"
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
@@ -40,7 +40,7 @@
</nav>
<!-- endof #breadcrumb -->
<button type="button" id="sidebar-trigger" class="btn btn-link">
<button type="button" id="sidebar-trigger" class="btn btn-link" aria-label="Sidebar">
<i class="fas fa-bars fa-fw"></i>
</button>
@@ -55,7 +55,7 @@
{% endif %}
</div>
<button type="button" id="search-trigger" class="btn btn-link">
<button type="button" id="search-trigger" class="btn btn-link" aria-label="Search">
<i class="fas fa-search fa-fw"></i>
</button>
+1 -1
View File
@@ -7,4 +7,4 @@ export { initToc } from './components/toc';
export { loadMermaid } from './components/mermaid';
export { modeWatcher } from './components/mode-toggle';
export { back2top } from './components/back-to-top';
export { loadTooptip } from './components/tooltip-loader';
export { loadTooltip } from './components/tooltip-loader';
+10 -6
View File
@@ -8,7 +8,7 @@ const lightImages = '.popup:not(.dark)';
const darkImages = '.popup:not(.light)';
let selector = lightImages;
function updateImages(current, reverse) {
function swapImages(current, reverse) {
if (selector === lightImages) {
selector = darkImages;
} else {
@@ -19,7 +19,7 @@ function updateImages(current, reverse) {
reverse = GLightbox({ selector: `${selector}` });
}
[current, reverse] = [reverse, current];
return [reverse, current];
}
export function imgPopup() {
@@ -32,18 +32,22 @@ export function imgPopup() {
document.querySelector('.popup.dark') === null
);
if (Theme.visualState === Theme.DARK) {
if (Theme.isDark) {
selector = darkImages;
}
let current = GLightbox({ selector: `${selector}` });
if (hasDualImages && Theme.switchable) {
if (hasDualImages && Theme.isToggleable) {
let reverse = null;
window.addEventListener('message', (event) => {
if (event.source === window && event.data && event.data.id === Theme.ID) {
updateImages(current, reverse);
if (
event.source === window &&
event.data &&
event.data.id === Theme.eventId
) {
[current, reverse] = swapImages(current, reverse);
}
});
}
+10 -6
View File
@@ -3,20 +3,24 @@
*/
const MERMAID = 'mermaid';
const themeMapper = Theme.getThemeMapper('default', 'dark');
const themeMap = Theme.newThemeMap('default', 'dark');
function refreshTheme(event) {
if (event.source === window && event.data && event.data.id === Theme.ID) {
if (
event.source === window &&
event.data &&
event.data.id === Theme.eventId
) {
// Re-render the SVG <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344>
const mermaidList = document.getElementsByClassName(MERMAID);
[...mermaidList].forEach((elem) => {
const svgCode = elem.previousSibling.children.item(0).innerHTML;
const svgCode = elem.previousSibling.children.item(0).textContent;
elem.textContent = svgCode;
elem.removeAttribute('data-processed');
});
const newTheme = themeMapper[Theme.visualState];
const newTheme = themeMap[Theme.resolvedTheme];
mermaid.initialize({ theme: newTheme });
mermaid.init(null, `.${MERMAID}`);
@@ -43,7 +47,7 @@ export function loadMermaid() {
return;
}
const initTheme = themeMapper[Theme.visualState];
const initTheme = themeMap[Theme.resolvedTheme];
let mermaidConf = {
theme: initTheme
@@ -54,7 +58,7 @@ export function loadMermaid() {
mermaid.initialize(mermaidConf);
if (Theme.switchable) {
if (Theme.isToggleable) {
window.addEventListener('message', refreshTheme);
}
}
+36 -5
View File
@@ -1,15 +1,46 @@
/**
* Add listener for theme mode toggle
* Sets up the mode toggle dropdown, allowing users to switch between light, dark, and system themes.
*
* Dependencies:
* - Theme (${JS_ROOT}/theme.js)
*/
const $toggle = document.getElementById('mode-toggle');
import 'bootstrap/js/src/dropdown.js';
const ACTIVE_CLASS = 'active';
const dropdown = document.querySelector('#mode-toggle + .dropdown-menu');
const activeMode = Theme.isSystemTheme
? Theme.Mode.SYSTEM
: Theme.resolvedTheme;
export function modeWatcher() {
if (!$toggle) {
if (!Theme.isToggleable) {
return;
}
$toggle.addEventListener('click', () => {
Theme.flip();
dropdown.querySelectorAll('.dropdown-item').forEach((option) => {
const mode = option.dataset.themeMode;
if (mode === activeMode) {
option.classList.add(ACTIVE_CLASS);
return;
}
});
dropdown.addEventListener('click', (event) => {
const current = event.target.closest('.dropdown-item');
if (!current) {
return;
}
const lastActive = dropdown.querySelector(`.${ACTIVE_CLASS}`);
if (lastActive === current) {
return;
}
lastActive.classList.remove(ACTIVE_CLASS);
current.classList.add(ACTIVE_CLASS);
Theme.update(current.dataset.themeMode);
});
}
@@ -1,5 +1,5 @@
/**
* This script make #search-result-wrapper switch to unload or shown automatically.
* This script makes #search-result-wrapper switch to unload or shown automatically.
*/
const btnSbTrigger = document.getElementById('sidebar-trigger');
+3
View File
@@ -27,6 +27,9 @@ function init() {
mobile.init();
}
const $tocWrapper = document.getElementById('toc-wrapper');
$tocWrapper.classList.remove('invisible');
desktopMode.onchange = refresh;
}
@@ -15,11 +15,6 @@ export class TocDesktop {
}
static init() {
const $tocWrapper = document.getElementById('toc-wrapper');
if ($tocWrapper) {
tocbot.init(this.options);
$tocWrapper.classList.remove('invisible');
}
tocbot.init(this.options);
}
}
@@ -62,6 +62,7 @@ export class TocMobile {
static showPopup() {
this.lockScroll(true);
$popup.showModal();
$btnClose.blur();
const activeItem = $popup.querySelector('li.is-active-li');
activeItem.scrollIntoView({ block: 'center' });
}
@@ -1,6 +1,6 @@
import Tooltip from 'bootstrap/js/src/tooltip';
export function loadTooptip() {
export function loadTooltip() {
const tooltipTriggerList = document.querySelectorAll(
'[data-bs-toggle="tooltip"]'
);
+2 -2
View File
@@ -1,7 +1,7 @@
import { back2top, loadTooptip, modeWatcher } from '../components';
import { back2top, loadTooltip, modeWatcher } from '../components';
export function basic() {
modeWatcher();
back2top();
loadTooptip();
loadTooltip();
}
-135
View File
@@ -1,135 +0,0 @@
/**
* Theme management class
*
* To reduce flickering during page load, this script should be loaded synchronously.
*/
class Theme {
static #modeKey = 'mode';
static #modeAttr = 'data-mode';
static #darkMedia = window.matchMedia('(prefers-color-scheme: dark)');
static switchable = !document.documentElement.hasAttribute(this.#modeAttr);
static get DARK() {
return 'dark';
}
static get LIGHT() {
return 'light';
}
/**
* @returns {string} Theme mode identifier
*/
static get ID() {
return 'theme-mode';
}
/**
* Gets the current visual state of the theme.
*
* @returns {string} The current visual state, either the mode if it exists,
* or the system dark mode state ('dark' or 'light').
*/
static get visualState() {
if (this.#hasMode) {
return this.#mode;
} else {
return this.#sysDark ? this.DARK : this.LIGHT;
}
}
static get #mode() {
return sessionStorage.getItem(this.#modeKey);
}
static get #isDarkMode() {
return this.#mode === this.DARK;
}
static get #hasMode() {
return this.#mode !== null;
}
static get #sysDark() {
return this.#darkMedia.matches;
}
/**
* Maps theme modes to provided values
* @param {string} light Value for light mode
* @param {string} dark Value for dark mode
* @returns {Object} Mapped values
*/
static getThemeMapper(light, dark) {
return {
[this.LIGHT]: light,
[this.DARK]: dark
};
}
/**
* Initializes the theme based on system preferences or stored mode
*/
static init() {
if (!this.switchable) {
return;
}
this.#darkMedia.addEventListener('change', () => {
const lastMode = this.#mode;
this.#clearMode();
if (lastMode !== this.visualState) {
this.#notify();
}
});
if (!this.#hasMode) {
return;
}
if (this.#isDarkMode) {
this.#setDark();
} else {
this.#setLight();
}
}
/**
* Flips the current theme mode
*/
static flip() {
if (this.#hasMode) {
this.#clearMode();
} else {
this.#sysDark ? this.#setLight() : this.#setDark();
}
this.#notify();
}
static #setDark() {
document.documentElement.setAttribute(this.#modeAttr, this.DARK);
sessionStorage.setItem(this.#modeKey, this.DARK);
}
static #setLight() {
document.documentElement.setAttribute(this.#modeAttr, this.LIGHT);
sessionStorage.setItem(this.#modeKey, this.LIGHT);
}
static #clearMode() {
document.documentElement.removeAttribute(this.#modeAttr);
sessionStorage.removeItem(this.#modeKey);
}
/**
* Notifies other plugins that the theme mode has changed
*/
static #notify() {
window.postMessage({ id: this.ID }, '*');
}
}
Theme.init();
export default Theme;
+4 -4
View File
@@ -8,9 +8,9 @@ if ('serviceWorker' in navigator) {
if (register) {
const swUrl = `${baseUrl}/sw.min.js`;
const notification = document.getElementById('notification');
const btnRefresh = notification.querySelector('.toast-body>button');
const popupWindow = Toast.getOrCreateInstance(notification);
const $notification = document.getElementById('notification');
const $btnUpdate = $notification.querySelector('[aria-label="Update"]');
const popupWindow = Toast.getOrCreateInstance($notification);
navigator.serviceWorker.register(swUrl).then((registration) => {
// Restore the update window that was last manually closed by the user
@@ -28,7 +28,7 @@ if ('serviceWorker' in navigator) {
});
});
btnRefresh.addEventListener('click', () => {
$btnUpdate.addEventListener('click', () => {
if (registration.waiting) {
registration.waiting.postMessage('SKIP_WAITING');
}
+156
View File
@@ -0,0 +1,156 @@
/**
* A utility class that manages the site's theme mode.
*
* Concepts:
* - Mode: dark, light, or system. The latter follows the operating system's preference.
* - Theme: The actual theme applied to the DOM, either dark or light. Determined by the mode or system preference.
*/
class Theme {
/** @type {string} LocalStorage key for the selected theme mode. */
static #storageKey = 'theme';
static Mode = Object.freeze({
DARK: 'dark',
LIGHT: 'light',
SYSTEM: 'system'
});
static #root = document.documentElement;
/** @type {MediaQueryList} System dark-mode preference query. */
static #mediaDark = window.matchMedia('(prefers-color-scheme: dark)');
/** @returns {string|null} The theme currently set on the DOM. */
static get #domTheme() {
return this.#root.dataset.bsTheme || null;
}
/** @returns {string|null} The theme stored on the client. */
static get #storedTheme() {
return localStorage.getItem(this.#storageKey);
}
/** @returns {string} The theme preferred by the operating system. */
static get #systemTheme() {
return this.#prefersDark ? this.Mode.DARK : this.Mode.LIGHT;
}
/** @returns {boolean} Whether the operating system prefers dark mode. */
static get #prefersDark() {
return this.#mediaDark.matches;
}
/**
* Applies a theme and optionally persists it as a user preference.
*
* @param {'light'|'dark'} theme
* @param {{ persist?: boolean, domPersist?: boolean }} [options]
* - `persist`: Whether the theme is persisted in localStorage.
* - `domPersist`: Whether the theme is persisted in data attributes on the DOM.
*/
static #apply(theme, { persist = false, domPersist = false } = {}) {
this.#root.dataset.bsTheme = theme;
if (persist) {
localStorage.setItem(this.#storageKey, theme);
}
if (domPersist || persist) {
this.#root.toggleAttribute('data-theme-persisted', true);
}
}
/** Removes the stored user preference. */
static #clearStorage() {
localStorage.removeItem(this.#storageKey);
this.#root.toggleAttribute('data-theme-persisted', false);
}
/** Broadcasts a theme change event to dependent modules. */
static #notify() {
window.postMessage({ id: this.eventId }, '*');
}
/** @type {boolean} Whether the current page allows theme toggling. */
static isToggleable = this.#domTheme === null;
static eventId = 'theme-updated';
/** @returns {string} Resolved theme, falling back to the system preference. */
static get resolvedTheme() {
return this.#storedTheme || this.#systemTheme;
}
/** @returns {boolean} Whether the theme is determined by the system preference. */
static get isSystemTheme() {
return this.#storedTheme === null;
}
/** @returns {boolean} Whether the resolved theme is dark. */
static get isDark() {
return this.resolvedTheme === this.Mode.DARK;
}
/**
* Creates a mode-indexed value map.
*
* @template T
* @param {T} light Value for light mode.
* @param {T} dark Value for dark mode.
* @returns {{ light: T, dark: T }}
*/
static newThemeMap(light, dark) {
return {
[this.Mode.LIGHT]: light,
[this.Mode.DARK]: dark
};
}
/** Initializes the theme from the stored value or system preference. */
static init() {
if (!this.isToggleable) {
this.#clearStorage();
return;
}
const storedTheme = this.#storedTheme;
if (storedTheme) {
this.#apply(storedTheme, { domPersist: true });
} else {
this.#apply(this.#systemTheme);
}
this.#mediaDark.addEventListener('change', () => {
if (this.#storedTheme) {
return;
}
this.#apply(this.#systemTheme);
this.#notify();
});
}
/**
* Updates the theme by the specified mode.
*
* @param {'light'|'dark'|'system'} mode
*/
static update(mode) {
const newTheme = mode === this.Mode.SYSTEM ? this.#systemTheme : mode;
if (newTheme !== this.resolvedTheme) {
this.#notify();
}
this.#apply(newTheme, { persist: mode !== this.Mode.SYSTEM });
if (mode === this.Mode.SYSTEM) {
this.#clearStorage();
}
}
}
Theme.init();
export default Theme;
+8 -7
View File
@@ -8,13 +8,14 @@ layout: compress
{% include lang.html %}
{% if site.theme_mode %}
{% capture prefer_mode %}data-mode="{{ site.theme_mode }}"{% endcapture %}
{% endif %}
<!-- `site.alt_lang` can specify a language different from the UI -->
<html lang="{{ page.lang | default: site.alt_lang | default: site.lang }}" {{ prefer_mode }}>
{% include head.html %}
<html
lang="{{ page.lang | default: site.alt_lang | default: site.lang }}"
{%- if site.theme_mode == 'light' or site.theme_mode == 'dark' -%}
data-bs-theme="{{ site.theme_mode }}"
{%- endif -%}
>
{% include head.html lang=lang %}
<body>
{% include sidebar.html lang=lang %}
@@ -25,7 +26,7 @@ layout: compress
<div class="row flex-grow-1">
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
{% if layout.refactor or layout.layout == 'default' %}
{% if layout.layout == 'default' %}
{% include refactor-content.html content=content lang=lang %}
{% else %}
{{ content }}
+30 -12
View File
@@ -1,6 +1,5 @@
---
layout: default
refactor: true
---
{% include lang.html %}
@@ -55,20 +54,39 @@ refactor: true
{% if post.image %}
{% assign src = post.image.path | default: post.image %}
{% unless src contains '//' %}
{% assign src = post.media_subpath | append: '/' | append: src | replace: '//', '/' %}
{% endunless %}
{% if post.media_subpath %}
{% unless src contains '://' %}
{% assign src = post.media_subpath
| append: '/'
| append: src
| replace: '///', '/'
| replace: '//', '/'
%}
{% endunless %}
{% endif %}
{% if post.image.lqip %}
{% assign lqip = post.image.lqip %}
{% if post.media_subpath %}
{% unless lqip contains 'data:' %}
{% assign lqip = post.media_subpath
| append: '/'
| append: lqip
| replace: '///', '/'
| replace: '//', '/'
%}
{% endunless %}
{% endif %}
{% assign lqip_attr = 'lqip="' | append: lqip | append: '"' %}
{% endif %}
{% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %}
{% assign lqip = null %}
{% if post.image.lqip %}
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %}
{% endif %}
<div class="col-md-5">
<img src="{{ src }}" alt="{{ alt }}" {{ lqip }}>
<img src="{{ src }}" alt="{{ alt }}" {{ lqip_attr }}>
</div>
{% assign card_body_col = '7' %}
@@ -79,7 +97,7 @@ refactor: true
<h1 class="card-title my-2 mt-md-0">{{ post.title }}</h1>
<div class="card-text content mt-0 mb-3">
<p>{% include post-description.html %}</p>
<p>{% include post-summary.html %}</p>
</div>
<div class="post-meta flex-grow-1 d-flex align-items-end">
+16 -14
View File
@@ -1,6 +1,5 @@
---
layout: default
refactor: true
panel_includes:
- toc
tail_includes:
@@ -114,9 +113,7 @@ script_includes:
<dialog id="toc-popup" class="p-0">
<div class="header d-flex flex-row align-items-center justify-content-between">
<div class="label text-truncate py-2 ms-4">{{- page.title -}}</div>
<button id="toc-popup-close" type="button" class="btn mx-1 my-1 opacity-75">
<i class="fas fa-close"></i>
</button>
<button id="toc-popup-close" type="button" class="btn-close btn-sm mx-3" aria-label="Close"></button>
</div>
<div id="toc-popup-content" class="px-4 py-3 pb-4"></div>
</dialog>
@@ -127,16 +124,21 @@ script_includes:
</div>
<div class="post-tail-wrapper text-muted">
<!-- categories -->
{% if page.categories.size > 0 %}
<div class="post-meta mb-3">
<i class="far fa-folder-open fa-fw me-1"></i>
{% for category in page.categories %}
<a href="{{ site.baseurl }}/categories/{{ category | slugify | url_encode }}/">{{ category }}</a>
{%- unless forloop.last -%},{%- endunless -%}
{% endfor %}
</div>
{% endif %}
<div class="d-flex justify-content-between align-items-center gap-3 mb-3">
<!-- categories -->
{% if page.categories.size > 0 %}
<div class="post-meta">
<i class="far fa-folder-open fa-fw me-1"></i>
{% for category in page.categories %}
<a href="{{ site.baseurl }}/categories/{{ category | slugify | url_encode }}/">{{ category }}</a>
{%- unless forloop.last -%},{%- endunless -%}
{% endfor %}
</div>
{% endif %}
<!-- "Edit this post" link -->
{% include post-edit.html lang=lang %}
</div>
<!-- tags -->
{% if page.tags.size > 0 %}
+3 -2
View File
@@ -99,7 +99,7 @@ Moon
## Footnote
Click the hook will locate the footnote[^footnote], and here is another footnote[^fn-nth-2].
Clicking the hook will locate the footnote[^footnote], and here is another footnote[^fn-nth-2].
## Inline code
@@ -113,7 +113,8 @@ Here is the `/path/to/the/file.extend`{: .filepath}.
### Common
```text
<!-- markdownlint-disable-next-line MD040 -->
```
This is a common code snippet, without syntax highlight and line number.
```
+22 -18
View File
@@ -7,7 +7,7 @@ tags: [writing]
render_with_liquid: false
---
This tutorial will guide you how to write a post in the _Chirpy_ template, and it's worth reading even if you've used Jekyll before, as many features require specific variables to be set.
This tutorial will guide you on how to write a post in the _Chirpy_ template, and it's worth reading even if you've used Jekyll before, as many features require specific variables to be set.
## Naming and Path
@@ -21,7 +21,7 @@ Basically, you need to fill the [Front Matter](https://jekyllrb.com/docs/front-m
---
title: TITLE
date: YYYY-MM-DD HH:MM:SS +/-TTTT
categories: [TOP_CATEGORIE, SUB_CATEGORIE]
categories: [TOP_CATEGORY, SUB_CATEGORY]
tags: [TAG] # TAG names should always be lowercase
---
```
@@ -97,7 +97,7 @@ toc: false
## Comments
The global switch of comments is defined by variable `comments.active` in the file `_config.yml`{: .filepath}. After selecting a comment system for this variable, comments will be turned on for all posts.
The global setting for comments is defined by the `comments.provider` option in the `_config.yml`{: .filepath} file. Once a comment system is selected for this variable, comments will be enabled for all posts.
If you want to close the comment for a specific post, add the following to the **Front Matter** of the post:
@@ -173,7 +173,7 @@ By default, the image is centered, but you can specify the position by using one
- **Normal position**
Image will be left aligned in below sample:
The image will be left aligned in the below sample:
```markdown
![Desktop View](/assets/img/sample/mockup.png){: .normal }
@@ -256,11 +256,9 @@ For normal images:
```
{: .nolineno }
### Video
### Social Media Platforms
#### Social Media Platform
You can embed videos from social media platforms with the following syntax:
You can embed video/audio from social media platforms with the following syntax:
```liquid
{% include embed/{Platform}.html id='{ID}' %}
@@ -268,15 +266,21 @@ You can embed videos from social media platforms with the following syntax:
Where `Platform` is the lowercase of the platform name, and `ID` is the video ID.
The following table shows how to get the two parameters we need in a given video URL, and you can also know the currently supported video platforms.
The following table shows how to get the two parameters we need in a given video/audio URL, and you can also know the currently supported video platforms.
| Video URL | Platform | ID |
| -------------------------------------------------------------------------------------------------- | ---------- | :------------- |
| [https://www.**youtube**.com/watch?v=**H-B46URT4mg**](https://www.youtube.com/watch?v=H-B46URT4mg) | `youtube` | `H-B46URT4mg` |
| [https://www.**twitch**.tv/videos/**1634779211**](https://www.twitch.tv/videos/1634779211) | `twitch` | `1634779211` |
| [https://www.**bilibili**.com/video/**BV1Q44y1B7Wf**](https://www.bilibili.com/video/BV1Q44y1B7Wf) | `bilibili` | `BV1Q44y1B7Wf` |
| Video URL | Platform | ID |
| -------------------------------------------------------------------------------------------------------------------------- | ---------- | :----------------------- |
| [https://www.**youtube**.com/watch?v=**H-B46URT4mg**](https://www.youtube.com/watch?v=H-B46URT4mg) | `youtube` | `H-B46URT4mg` |
| [https://www.**twitch**.tv/videos/**1634779211**](https://www.twitch.tv/videos/1634779211) | `twitch` | `1634779211` |
| [https://www.**bilibili**.com/video/**BV1Q44y1B7Wf**](https://www.bilibili.com/video/BV1Q44y1B7Wf) | `bilibili` | `BV1Q44y1B7Wf` |
| [https://www.open.**spotify**.com/track/**3OuMIIFP5TxM8tLXMWYPGV**](https://open.spotify.com/track/3OuMIIFP5TxM8tLXMWYPGV) | `spotify` | `3OuMIIFP5TxM8tLXMWYPGV` |
#### Video Files
Spotify supports some additional parameters:
- `compact` - to display a compact player instead (ex. `{% include embed/spotify.html id='3OuMIIFP5TxM8tLXMWYPGV' compact=1 %}`);
- `dark` - to force dark theme (ex. `{% include embed/spotify.html id='3OuMIIFP5TxM8tLXMWYPGV' dark=1 %}`).
### Video Files
If you want to embed a video file directly, use the following syntax:
@@ -289,7 +293,7 @@ Where `URL` is a URL to a video file e.g. `/path/to/sample/video.mp4`.
You can also specify additional attributes for the embedded video file. Here is a full list of attributes allowed.
- `poster='/path/to/poster.png'` — poster image for a video that is shown while video is downloading
- `title='Text'` — title for a video that appears below the video and looks same as for images
- `title='Text'` — title for a video that appears below the video and looks the same as for images
- `autoplay=true` — video automatically begins to play back as soon as it can
- `loop=true` — automatically seek back to the start upon reaching the end of the video
- `muted=true` — audio will be initially silenced
@@ -310,7 +314,7 @@ Consider an example using all of the above:
%}
```
### Audios
### Audio Files
If you want to embed an audio file directly, use the following syntax:
@@ -322,7 +326,7 @@ Where `URL` is a URL to an audio file e.g. `/path/to/audio.mp3`.
You can also specify additional attributes for the embedded audio file. Here is a full list of attributes allowed.
- `title='Text'` — title for an audio that appears below the audio and looks same as for images
- `title='Text'` — title for an audio that appears below the audio and looks the same as for images
- `types` — specify the extensions of additional audio formats separated by `|`. Ensure these files exist in the same directory as your primary audio file.
Consider an example using all of the above:
+3 -3
View File
@@ -59,7 +59,7 @@ For Unix-like systems, you can set up the environment natively for optimal perfo
1. Follow the [Jekyll installation guide](https://jekyllrb.com/docs/installation/) to install Jekyll and ensure [Git](https://git-scm.com/) is installed.
2. Clone your repository to your local machine.
3. If you forked the theme, install [Node.js][nodejs] and run `bash tools/init.sh` in the root directory to initialize the repository.
4. Run command `bundle` in the root of your repository to install the dependencies.
4. Run command `bundle install` in the root of your repository to install the dependencies.
## Usage
@@ -68,7 +68,7 @@ For Unix-like systems, you can set up the environment natively for optimal perfo
To run the site locally, use the following command:
```terminal
$ bundle exec jekyll s
$ bundle exec jekyll serve
```
> If you are using Dev Containers, you must run that command in the **VS Code** Terminal.
@@ -105,7 +105,7 @@ Before deploying, check the `_config.yml`{: .filepath} file and ensure the `url`
Now you can choose _ONE_ of the following methods to deploy your Jekyll site.
### Deploy Using Github Actions
### Deploy Using GitHub Actions
Prepare the following:
+10 -9
View File
@@ -10,25 +10,26 @@ The [favicons](https://www.favicon-generator.org/about/) of [**Chirpy**](https:/
## Generate the favicon
Prepare a square image (PNG, JPG, or SVG) with a size of 512x512 or more, and then go to the online tool [**Real Favicon Generator**](https://realfavicongenerator.net/) and click the button <kbd>Select your Favicon image</kbd> to upload your image file.
Prepare a square image (PNG, JPG, or SVG) with a size of 512x512 or more, and then go to the online tool [**Real Favicon Generator**](https://realfavicongenerator.net/) and click the button <kbd>Pick your favicon image</kbd> to upload your image file.
In the next step, the webpage will show all usage scenarios. You can keep the default options, scroll to the bottom of the page, and click the button <kbd>Generate your Favicons and HTML code</kbd> to generate the favicon.
In the next step, the webpage will show all usage scenarios. You can keep the default options, scroll to the bottom of the page, and click the button <kbd>Next →</kbd> to generate the favicon.
## Download & Replace
Download the generated package, unzip and delete the following two from the extracted files:
Download the generated package, unzip and delete the following file(s) from the extracted files:
- `browserconfig.xml`{: .filepath}
- `site.webmanifest`{: .filepath}
And then copy the remaining image files (`.PNG`{: .filepath} and `.ICO`{: .filepath}) to cover the original files in the directory `assets/img/favicons/`{: .filepath} of your Jekyll site. If your Jekyll site doesn't have this directory yet, just create one.
And then copy the remaining image files (`.PNG`{: .filepath}, `.ICO`{: .filepath} and `.SVG`{: .filepath}) to cover the original files in the directory `assets/img/favicons/`{: .filepath} of your Jekyll site. If your Jekyll site doesn't have this directory yet, just create one.
The following table will help you understand the changes to the favicon files:
| File(s) | From Online Tool | From Chirpy |
|---------------------|:---------------------------------:|:-----------:|
| `*.PNG` | | ✗ |
| `*.ICO` | | ✗ |
| File(s) | From Online Tool | From Chirpy |
| ------- | :--------------: | :---------: |
| `*.PNG` || ✗ |
| `*.ICO` || ✗ |
| `*.SVG` | ✓ | ✗ |
<!-- markdownlint-disable-next-line -->
> ✓ means keep, ✗ means delete.
+6
View File
@@ -1,3 +1,9 @@
@mixin color-scheme($mode) {
@media (prefers-color-scheme: #{$mode}) {
@content;
}
}
@mixin text-ellipsis {
overflow: hidden;
text-overflow: ellipsis;
+3
View File
@@ -31,7 +31,10 @@
}
%tag-hover {
@extend %link-color;
background: var(--tag-hover);
border-color: var(--tag-hover);
transition: background 0.35s ease-in-out;
}
+6
View File
@@ -28,3 +28,9 @@ $code-icon-width: 1.75rem !default;
$font-family-base: 'Source Sans Pro', 'Microsoft Yahei', sans-serif !default;
$font-family-heading: Lato, 'Microsoft Yahei', sans-serif !default;
/* Theme mode settings */
$theme-attr: 'data-bs-theme'; /* the attribute used to indicate the resolved theme */
$theme-options: light, dark;
$theme: null !default; /* set by Jekyll site configuration */

Some files were not shown because too many files have changed in this diff Show More