mirror of
https://github.com/snachodog/just-the-docs.git
synced 2025-09-16 06:13:32 -06:00
Compare commits
130 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
5357ffad22 | ||
|
6fc71c108b | ||
|
820d256bcd | ||
|
b8f6f2b75c | ||
|
01719a8752 | ||
|
52b4b444d0 | ||
|
742281635f | ||
|
e96bf6ae3d | ||
|
da38718d7a | ||
|
0352428017 | ||
|
69583cb94c | ||
|
b12ed38e7b | ||
|
8f0bcd6875 | ||
|
d8a23a0b26 | ||
|
fd689b47e0 | ||
|
4e7f8345b4 | ||
|
a9a336f1b0 | ||
|
1c27df3de6 | ||
|
870a6a4ff6 | ||
|
2ed7a7d0fc | ||
|
a387ea12a8 | ||
|
80bd7bfc9f | ||
|
56e0f1c800 | ||
|
fad37122ae | ||
|
cdae4f63d5 | ||
|
b75fd5e824 | ||
|
ae52352eae | ||
|
3d01bc9183 | ||
|
66b84a03e7 | ||
|
dfe751e45b | ||
|
33ba8d8eaa | ||
|
2ccc451c2a | ||
|
cd4f1b02b2 | ||
|
b342531fe4 | ||
|
328b26abd2 | ||
|
22fc061ef4 | ||
|
200ae6e99d | ||
|
0964e1f8ae | ||
|
2b434e5f82 | ||
|
281839fa32 | ||
|
4556629454 | ||
|
bebaee046a | ||
|
c115932255 | ||
|
5deba46197 | ||
|
720dd430d7 | ||
|
3a205e545c | ||
|
8f9c0c44e1 | ||
|
cef1203301 | ||
|
6041c7cd8e | ||
|
8d8b444b46 | ||
|
3bfd1522da | ||
|
396613820f | ||
|
82cd4d372d | ||
|
03a99c6557 | ||
|
7b181153a8 | ||
|
d7e4a808b5 | ||
|
9d0ce1c22a | ||
|
d041f59c6d | ||
|
7602fa1eae | ||
|
e044134886 | ||
|
525742ee05 | ||
|
f246498a8f | ||
|
e8032a0c2a | ||
|
caa9946914 | ||
|
b4d29cc055 | ||
|
c9d3b967cd | ||
|
95a30db50f | ||
|
df03a0423b | ||
|
9959191af1 | ||
|
75a06359aa | ||
|
c21def31fa | ||
|
1359fcb9ca | ||
|
24372f02a9 | ||
|
20a80e4ac1 | ||
|
56c908e995 | ||
|
4151d4614e | ||
|
ea0d5d8ec7 | ||
|
790a8b5c06 | ||
|
0ca69334b0 | ||
|
d0cc9a0ff4 | ||
|
810353802a | ||
|
2b1cb67790 | ||
|
cffe2f1b29 | ||
|
3618253d15 | ||
|
216d342f26 | ||
|
0b93b35a3f | ||
|
8e38759613 | ||
|
3048541778 | ||
|
aaf5a68154 | ||
|
e64d97c4c8 | ||
|
3723875b93 | ||
|
7a4865a469 | ||
|
e0231653a8 | ||
|
fe31bf4cb9 | ||
|
a9bced2f26 | ||
|
7daf042a03 | ||
|
d107faaff4 | ||
|
eabae95d5b | ||
|
a1ca235757 | ||
|
d2e34cb54d | ||
|
238b4eae42 | ||
|
cdf5510d65 | ||
|
6a6cc20620 | ||
|
5e5e2438d2 | ||
|
786678a6a2 | ||
|
4d95f9937a | ||
|
7404c6f6e0 | ||
|
f636d5abfd | ||
|
27123d43ad | ||
|
a95e78f80d | ||
|
09896921e4 | ||
|
7b3c5169c0 | ||
|
7451cb5bdf | ||
|
39a5854144 | ||
|
7defb3164b | ||
|
5dd80bf749 | ||
|
1a22f052e9 | ||
|
117195fb1c | ||
|
ac5c99c77c | ||
|
765954233a | ||
|
19dbd776c1 | ||
|
38a34af2c0 | ||
|
cc9bead2e9 | ||
|
9a0b518f0e | ||
|
67d7465dbe | ||
|
16fe752dbc | ||
|
1999256809 | ||
|
6a55d05f30 | ||
|
5f59793766 | ||
|
56a2dc560a |
2
.github/FUNDING.yml
vendored
Normal file
2
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
github: just-the-docs
|
||||
open_collective: just-the-docs
|
35
.github/release-drafter.yml
vendored
35
.github/release-drafter.yml
vendored
@@ -1,35 +0,0 @@
|
||||
references:
|
||||
- v+
|
||||
- main
|
||||
name-template: "v$RESOLVED_VERSION 🌈"
|
||||
tag-template: "v$RESOLVED_VERSION"
|
||||
categories:
|
||||
- title: "🚀 Features"
|
||||
labels:
|
||||
- "feature"
|
||||
- "enhancement"
|
||||
- title: "🐛 Bug Fixes"
|
||||
labels:
|
||||
- "fix"
|
||||
- "bugfix"
|
||||
- "bug"
|
||||
- title: "🧰 Maintenance"
|
||||
label:
|
||||
- "chore"
|
||||
- "dependencies"
|
||||
change-template: "- $TITLE @$AUTHOR (#$NUMBER)"
|
||||
version-resolver:
|
||||
major:
|
||||
labels:
|
||||
- "next-major-release"
|
||||
minor:
|
||||
labels:
|
||||
- "next-minor-release"
|
||||
patch:
|
||||
labels:
|
||||
- "patch"
|
||||
default: minor
|
||||
template: |
|
||||
## Changes
|
||||
|
||||
$CHANGES
|
63
.github/workflows/ci.yml
vendored
63
.github/workflows/ci.yml
vendored
@@ -16,38 +16,79 @@ jobs:
|
||||
matrix:
|
||||
jekyll-version: [3.9, 4.3]
|
||||
os: [ ubuntu-latest, macos-latest, windows-latest ]
|
||||
ruby-version: [2.7, 3.1]
|
||||
ruby-version: ["3.0", "3.1", "3.2"]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Ruby ${{ matrix.ruby-version }}
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby-version }}
|
||||
bundler-cache: false
|
||||
- name: Bundle Install
|
||||
- name: Bundle Install (Jekyll ${{ matrix.jekyll-version }})
|
||||
run: bundle install
|
||||
- name: Install Jekyll ${{ matrix.jekyll-version }}
|
||||
run: gem install jekyll -v ${{ matrix.jekyll-version }}
|
||||
env:
|
||||
BUNDLE_GEMFILE: fixtures/Gemfile-jekyll-${{ matrix.jekyll-version }}
|
||||
- name: Init Search
|
||||
run: bundle exec rake search:init
|
||||
env:
|
||||
BUNDLE_GEMFILE: fixtures/Gemfile-jekyll-${{ matrix.jekyll-version }}
|
||||
- name: Build Site
|
||||
run: bundle exec jekyll build
|
||||
env:
|
||||
BUNDLE_GEMFILE: fixtures/Gemfile-jekyll-${{ matrix.jekyll-version }}
|
||||
|
||||
github-pages-build:
|
||||
name: Build (github-pages gem)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: '3.1'
|
||||
ruby-version: "3.2"
|
||||
bundler-cache: false
|
||||
- name: Bundle Install
|
||||
run: BUNDLE_GEMFILE=fixtures/Gemfile-github-pages bundle install
|
||||
run: bundle install
|
||||
env:
|
||||
BUNDLE_GEMFILE: fixtures/Gemfile-github-pages
|
||||
- name: Build Site
|
||||
run: BUNDLE_GEMFILE=fixtures/Gemfile-github-pages bundle exec jekyll build
|
||||
run: bundle exec jekyll build
|
||||
env:
|
||||
BUNDLE_GEMFILE: fixtures/Gemfile-github-pages
|
||||
|
||||
validate:
|
||||
name: Validate HTML
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
ruby-version: ["3.2"]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Ruby ${{ matrix.ruby-version }}
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby-version }}
|
||||
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
||||
cache-version: 0 # Increment this number if you need to re-download cached gems
|
||||
- name: Cache HTMLProofer
|
||||
id: cache-htmlproofer
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: tmp/.htmlproofer
|
||||
key: ${{ runner.os }}-htmlproofer
|
||||
- name: Build Site
|
||||
run: bundle exec jekyll build
|
||||
- name: Test with Nu Validator
|
||||
uses: Cyb3r-Jak3/html5validator-action@2a593a9f2c10593cbac84791a6fc4c47e9a106c8
|
||||
with:
|
||||
config: fixtures/html5validator-config.yml
|
||||
- name: Test with html-proofer
|
||||
run: bundle exec htmlproofer _site --ignore-urls "/github.com/,/web.archive.org/"
|
||||
env:
|
||||
NOKOGIRI_USE_SYSTEM_LIBRARIES: true
|
||||
|
||||
assets:
|
||||
name: Test CSS and JS
|
||||
@@ -58,9 +99,9 @@ jobs:
|
||||
node-version: [18.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- run: npm install
|
||||
|
10
.github/workflows/deploy.yml
vendored
10
.github/workflows/deploy.yml
vendored
@@ -30,16 +30,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: '3.1' # Not needed with a .ruby-version file
|
||||
ruby-version: "3.2"
|
||||
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
||||
cache-version: 0 # Increment this number if you need to re-download cached gems
|
||||
- name: Setup Pages
|
||||
id: pages
|
||||
uses: actions/configure-pages@v2
|
||||
uses: actions/configure-pages@v3
|
||||
- name: Build with Jekyll
|
||||
# Outputs to the './_site' directory by default
|
||||
run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
|
||||
@@ -47,7 +47,7 @@ jobs:
|
||||
JEKYLL_ENV: production
|
||||
- name: Upload artifact
|
||||
# Automatically uploads an artifact from the './_site' directory by default
|
||||
uses: actions/upload-pages-artifact@v1
|
||||
uses: actions/upload-pages-artifact@v2
|
||||
|
||||
# Deployment job
|
||||
deploy:
|
||||
@@ -59,4 +59,4 @@ jobs:
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v1
|
||||
uses: actions/deploy-pages@v2
|
||||
|
29
.github/workflows/publish-gem.yml
vendored
29
.github/workflows/publish-gem.yml
vendored
@@ -9,11 +9,11 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up Ruby 3.1
|
||||
uses: actions/setup-ruby@v1
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Ruby 3.2
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 3.1
|
||||
ruby-version: "3.2"
|
||||
|
||||
- name: Publish to GPR
|
||||
run: |
|
||||
@@ -27,13 +27,14 @@ jobs:
|
||||
GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
|
||||
OWNER: ${{ github.repository_owner }}
|
||||
|
||||
- name: Publish to RubyGems
|
||||
run: |
|
||||
mkdir -p $HOME/.gem
|
||||
touch $HOME/.gem/credentials
|
||||
chmod 0600 $HOME/.gem/credentials
|
||||
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
||||
gem build *.gemspec
|
||||
gem push *.gem
|
||||
env:
|
||||
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|
||||
# Disabled as this does not handle 2FA
|
||||
# - name: Publish to RubyGems
|
||||
# run: |
|
||||
# mkdir -p $HOME/.gem
|
||||
# touch $HOME/.gem/credentials
|
||||
# chmod 0600 $HOME/.gem/credentials
|
||||
# printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
||||
# gem build *.gemspec
|
||||
# gem push *.gem
|
||||
# env:
|
||||
# GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|
||||
|
33
.gitignore
vendored
33
.gitignore
vendored
@@ -1,9 +1,30 @@
|
||||
# Not sure what a .gitignore is?
|
||||
# See: https://git-scm.com/docs/gitignore
|
||||
|
||||
# The first files are directly copied from Jekyll's first-party docs on `.gitignore` files:
|
||||
# https://jekyllrb.com/tutorials/using-jekyll-with-bundler/#commit-to-source-control
|
||||
|
||||
# Ignore the default location of the built site, and caches and metadata generated by Jekyll
|
||||
_site/
|
||||
.sass-cache/
|
||||
.jekyll-cache/
|
||||
.jekyll-metadata
|
||||
|
||||
# Ignore folders generated by Bundler
|
||||
.bundle/
|
||||
vendor/
|
||||
|
||||
# These next files are used by Just the Docs developers. They are not necessary for end users of the theme, only developers.
|
||||
|
||||
# We use Stylelint and Prettier, JavaScript tools, to lint and format our own code.
|
||||
# We use Node.js as our runtime, so we ignore node_modules
|
||||
node_modules
|
||||
|
||||
# .DS_Store is a macOS-only metadata file about directories. Convention is to not commit them.
|
||||
# See: https://en.wikipedia.org/wiki/.DS_Store
|
||||
.DS_Store
|
||||
|
||||
# These are legacy globs that typically target Ruby theme developers. We may change these at a later date.
|
||||
*.gem
|
||||
.bundle
|
||||
.ruby-version
|
||||
.jekyll-cache
|
||||
.sass-cache
|
||||
_site
|
||||
Gemfile.lock
|
||||
node_modules
|
||||
.DS_Store
|
||||
|
@@ -1,4 +1,3 @@
|
||||
package.json
|
||||
package-lock.json
|
||||
_site
|
||||
assets/css/just-the-docs-default.scss
|
||||
@@ -6,5 +5,7 @@ assets/css/just-the-docs-light.scss
|
||||
assets/css/just-the-docs-dark.scss
|
||||
assets/js/vendor/lunr.min.js
|
||||
assets/js/search-data.json
|
||||
assets/js/zzzz-search-data.json
|
||||
assets/js/just-the-docs.js
|
||||
*.md
|
||||
_includes/mermaid_config.js
|
||||
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"endOfLine": "lf",
|
||||
"semi": false,
|
||||
"singleQuote": false,
|
||||
"tabWidth": 2,
|
||||
"trailingComma": "es5"
|
||||
}
|
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"ignoreFiles": [
|
||||
"assets/css/just-the-docs-default.scss",
|
||||
"assets/css/just-the-docs-light.scss",
|
||||
"assets/css/just-the-docs-dark.scss",
|
||||
"_sass/vendor/**/*.scss"
|
||||
],
|
||||
"extends": [
|
||||
"stylelint-config-standard-scss",
|
||||
"stylelint-config-prettier-scss"
|
||||
],
|
||||
"plugins": ["stylelint-prettier"],
|
||||
"rules": {
|
||||
"prettier/prettier": true,
|
||||
"alpha-value-notation": null,
|
||||
"color-function-notation": null,
|
||||
"no-descending-specificity": null,
|
||||
"scss/no-global-function-names": null
|
||||
}
|
||||
}
|
467
CHANGELOG.md
467
CHANGELOG.md
@@ -15,17 +15,448 @@ The project underwent a major maintenance shift in March 2022.
|
||||
{: .note }
|
||||
This website is built from the `HEAD` of the `main` branch of the theme repository.
|
||||
|
||||
{: .warning }
|
||||
This website includes docs for some new features that are not available in `v0.4.1`!
|
||||
|
||||
Code changes to `main` that are *not* in the latest release:
|
||||
|
||||
- N/A
|
||||
|
||||
Docs changes in `main` that are *not* in the latest release:
|
||||
Docs changes made since the latest release:
|
||||
|
||||
- N/A
|
||||
|
||||
## Release v0.8.0
|
||||
|
||||
Hi folks! This first minor release of 2024 has a short number of changes: a large improvement of build times for large sites, a new keyboard shortcut to focus the search bar, and sidebar navigation bugfixes for "pretty" URLs (with `.html` omitted) and the clickable area on Safari. This release has no explicit breaking changes and should be a straightforward upgrade for most (if not all) users.
|
||||
|
||||
### Using Release `v0.8.0`
|
||||
|
||||
Users who have not pinned the theme version will be **automatically upgraded to `v0.8.0` the next time they build their site**.
|
||||
|
||||
To use this release explicitly as a remote theme:
|
||||
|
||||
```yml
|
||||
remote_theme: just-the-docs/just-the-docs@v0.8.0
|
||||
```
|
||||
|
||||
To use this version explicitly as a gem-based theme, pin the version in your `Gemfile` and re-run `bundle install` or `bundle update just-the-docs`:
|
||||
|
||||
```ruby
|
||||
gem "just-the-docs", "0.8.0"
|
||||
```
|
||||
|
||||
To use and pin a previous version of the theme, replace the `0.8.0` with the desired release tag.
|
||||
|
||||
### New Features
|
||||
|
||||
- Added: configurable keyboard shortcut to focus search input by [@kcromanpl-bajra] in [#1411]
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- Fixed: quicker build by [@pdmosses] in [#1397]
|
||||
- Fixed: incorrect navigation when `.html` omitted from URL by [@pdmosses] in [#1374]
|
||||
- Fixed: incorrect positioning of clickable area for navigation links on Safari by [@mattxwang] in [#1403]
|
||||
|
||||
### Documentation
|
||||
|
||||
- Add documentation to "Navigation Structure" on grouping pages with collections by [@mitchnemirov] in [#1390]
|
||||
|
||||
### New Contributors
|
||||
|
||||
- [@mitchnemirov] made their first contribution in [#1390]
|
||||
- [@kcromanpl-bajra] made their first contribution in [#1411]
|
||||
|
||||
[@mitchnemirov]: https://github.com/mitchnemirov
|
||||
[@kcromanpl-bajra]: https://github.com/kcromanpl-bajra
|
||||
|
||||
[#1374]: https://github.com/just-the-docs/just-the-docs/pull/1374
|
||||
[#1390]: https://github.com/just-the-docs/just-the-docs/pull/1390
|
||||
[#1397]: https://github.com/just-the-docs/just-the-docs/pull/1397
|
||||
[#1403]: https://github.com/just-the-docs/just-the-docs/pull/1403
|
||||
[#1411]: https://github.com/just-the-docs/just-the-docs/pull/1411
|
||||
|
||||
## Release v0.7.0
|
||||
|
||||
Hi folks! This is a minor release that adds a new configuration option for opening external links in a new tab and provides many bugfixes (in both correctness and performance) for Just the Docs users with large sites. We anticipate that for most users, this is a straightforward upgrade. However, it introduces some potentially-breaking *internal* changes to undocumented features of the theme.
|
||||
|
||||
### Migrating to `v0.7.0`
|
||||
|
||||
**Migration**: users will need to migrate if:
|
||||
|
||||
- they overrode `_includes/nav.html`, which has moved to `_includes/components/nav.html`
|
||||
- they have an element with the IDs `jtd-nav-activation` or `jtd-head-nav-stylesheet`
|
||||
|
||||
For more, refer to the [migration guide](https://just-the-docs.com/MIGRATION/).
|
||||
|
||||
### Using Release `v0.7.0`
|
||||
|
||||
Users who have not pinned the theme version will be **automatically upgraded to `v0.7.0` the next time they build their site**.
|
||||
|
||||
To use this release explicitly as a remote theme:
|
||||
|
||||
```yml
|
||||
remote_theme: just-the-docs/just-the-docs@v0.7.0
|
||||
```
|
||||
|
||||
To use this version explicitly as a gem-based theme, pin the version in your `Gemfile` and re-run `bundle install` or `bundle update just-the-docs`:
|
||||
|
||||
```ruby
|
||||
gem "just-the-docs", "0.7.0"
|
||||
```
|
||||
|
||||
To use and pin a previous version of the theme, replace the `0.7.0` with the desired release tag.
|
||||
|
||||
### New Features
|
||||
|
||||
- Added: configuration options for opening external links in new tab by [@CarbonNeuron] in [#1360]
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- Fixed: remove href from the navigation link to the current page by [@pdmosses] in [#1356]
|
||||
- Fixed: improve build time by [@pdmosses] in [#1358]
|
||||
- Fixed: erroneous parentheses in `site_nav` conditional by [@mattxwang] in [#1366]
|
||||
- Fixed: navigation scroll to active link regression by [@pdmosses] in [#1367]
|
||||
- Fixed: invalid CSS rules in head elements by [@pdmosses] in [#1368]
|
||||
- Fixed: accidental disabling of forward-declared stylesheets by [@mattxwang] in [#1373]
|
||||
|
||||
{: .warning }
|
||||
[#1358] moved `_includes/nav.html` to the `_includes/components` directory,
|
||||
Users who were overriding that file will need to adjust their sites accordingly.
|
||||
|
||||
### Documentation:
|
||||
|
||||
- Docs: fix typos in `CHANGELOG` and `MIGRATION` by [@thapasusheel] in [#1377]
|
||||
|
||||
### New Contributors
|
||||
|
||||
- [@CarbonNeuron] made their first contribution in [#1360]
|
||||
- [@thapasusheel] made their first contribution in [#1377]
|
||||
|
||||
[@CarbonNeuron]: https://github.com/CarbonNeuron
|
||||
[@thapasusheel]: https://github.com/thapasusheel
|
||||
|
||||
[#1356]: https://github.com/just-the-docs/just-the-docs/pull/1356
|
||||
[#1358]: https://github.com/just-the-docs/just-the-docs/pull/1358
|
||||
[#1360]: https://github.com/just-the-docs/just-the-docs/pull/1360
|
||||
[#1366]: https://github.com/just-the-docs/just-the-docs/pull/1366
|
||||
[#1367]: https://github.com/just-the-docs/just-the-docs/pull/1367
|
||||
[#1368]: https://github.com/just-the-docs/just-the-docs/pull/1368
|
||||
[#1373]: https://github.com/just-the-docs/just-the-docs/pull/1373
|
||||
[#1377]: https://github.com/just-the-docs/just-the-docs/pull/1377
|
||||
|
||||
## Release v0.6.2
|
||||
|
||||
Hi all, this is a small patch release that includes two changes: adding a missing Windows emoji font fallback, and removing some (now-unused) code introduced in 0.6.
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- Fixed: Windows emoji font fallback by [@flanakin] in [#1337]
|
||||
- Removed: unused `.passive` toggle in navigation by [@pdmosses] in [#1335]
|
||||
|
||||
[#1335]: https://github.com/just-the-docs/just-the-docs/pull/1335
|
||||
[#1337]: https://github.com/just-the-docs/just-the-docs/pull/1337
|
||||
|
||||
### New Contributors
|
||||
|
||||
- [@flanakin] made their first contribution in [#1337]
|
||||
|
||||
[@flanakin]: https://github.com/flanakin
|
||||
|
||||
## Release v0.6.1
|
||||
|
||||
Hi all, this is a small patch release that only includes one change: resolving a bug introduced in 0.6.0 that causes a JS error for pages excluded from navigation.
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- Fixed: JS error for pages excluded from navigation by [@pdmosses] in [#1332]
|
||||
|
||||
[#1332]: https://github.com/just-the-docs/just-the-docs/pull/1332
|
||||
|
||||
## Release v0.6.0
|
||||
|
||||
Hi all, this is a minor release that introduces performance improvements for build times on large sites, correctly sets the `color-scheme` property, and fixes invalid HTML. However, it introduces some potentially-breaking *internal* changes to undocumented features of the theme.
|
||||
|
||||
### Migrating to `v0.6.0`
|
||||
|
||||
**Migration**: users will need to migrate if:
|
||||
|
||||
- they have an existing `_includes` file named `favicon.html`, `head_nav.html`, or `css/activation.scss.liquid`
|
||||
- they have code that refers to `#main-content-wrap`
|
||||
- they override the default `light` theme's code, or the theme-loading logic
|
||||
- they have different favicons for different pages
|
||||
|
||||
For more, refer to the [migration guide](https://just-the-docs.com/MIGRATION/).
|
||||
|
||||
### Using Release `v0.6.0`
|
||||
|
||||
Users who have not pinned the theme version will be **automatically upgraded to `v0.6.0` the next time they build their site**.
|
||||
|
||||
To use this release explicitly as a remote theme:
|
||||
|
||||
```yml
|
||||
remote_theme: just-the-docs/just-the-docs@v0.6.0
|
||||
```
|
||||
|
||||
To use this version explicitly as a gem-based theme, pin the version in your `Gemfile` and re-run `bundle install` or `bundle update just-the-docs`:
|
||||
|
||||
```ruby
|
||||
gem "just-the-docs", "0.6.0"
|
||||
```
|
||||
|
||||
To use and pin a previous version of the theme, replace the `0.6.0` with the desired release tag.
|
||||
|
||||
### New Features and Bugfixes
|
||||
|
||||
- Added: `$color-scheme` theme variable to specify `color-scheme` for `:root` by [@sigv] in [#1280]
|
||||
- Fixed: build times for large sites by [@pdmosses] in [#1244]
|
||||
- Fixed: missing closing `</button>` tag in `sidebar.html` by [@mattxwang] in [#1304]
|
||||
- Fixed: removed duplicate `#main-content-wrap` minimal and default layouts by [@mattxwang] in [#1305]
|
||||
|
||||
### Documentation
|
||||
|
||||
{: .warning }
|
||||
The theme docs are unversioned, and already reflect the above changes.
|
||||
|
||||
Docs changes:
|
||||
|
||||
- A [footnote]({% link docs/configuration.md %}#fn:js-disabled) in the configuration docs explains how disabling JavaScript affects the display of navigation links when browsing folded collections.
|
||||
- Invalid HTML has been removed from most documentation examples.
|
||||
|
||||
### New Contributors
|
||||
|
||||
- [@sigv] made their first contribution in [#1280]
|
||||
|
||||
[@sigv]: https://github.com/sigv
|
||||
[#1244]: https://github.com/just-the-docs/just-the-docs/pull/1244
|
||||
[#1280]: https://github.com/just-the-docs/just-the-docs/pull/1280
|
||||
[#1304]: https://github.com/just-the-docs/just-the-docs/pull/1304
|
||||
[#1305]: https://github.com/just-the-docs/just-the-docs/pull/1305
|
||||
|
||||
## Release v0.5.4
|
||||
|
||||
Hi all, this is a small patch release that only includes one change: fixing a style clash between Mermaid's labels and Just the Docs' labels.
|
||||
|
||||
*Note: for subsequent patch releases, we will omit migration instructions (for brevity). In all cases, immediate migration should be backwards-compatible. Refer to previous major or minor update instructions for more information.*
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- Fixed: Mermaid labels inheriting theme `.label` styling by [@mattxwang] in [#1278]
|
||||
|
||||
[#1278]: https://github.com/just-the-docs/just-the-docs/pull/1278
|
||||
|
||||
## Release v0.5.3
|
||||
|
||||
Hi all, this is a minor patch release that only includes one change: changing all text-based CSS properties to use `rem` instead of hard-coded `px` values. This has two effects:
|
||||
|
||||
1. All deprecation warnings are now fixed on build; you should now get a clean build with `jekyll build`.
|
||||
2. We have **deprecated the `$root-font-size` SCSS variable**. We will remove it in an upcoming release of the theme.
|
||||
|
||||
If you use the stock Just the Docs theme, this release should have no impact on your final built site. If you change the `$root-font-size` SCSS variable, you might experience light layout shifts.
|
||||
|
||||
### Using Release `v0.5.3`
|
||||
|
||||
Users who have not pinned the theme version will be **automatically upgraded to `v0.5.3` the next time they build their site**.
|
||||
|
||||
To use this release explicitly as a remote theme:
|
||||
|
||||
```yml
|
||||
remote_theme: just-the-docs/just-the-docs@v0.5.3
|
||||
```
|
||||
|
||||
To use this version explicitly as a gem-based theme, pin the version in your `Gemfile` and re-run `bundle install` or `bundle update just-the-docs`:
|
||||
|
||||
```ruby
|
||||
gem "just-the-docs", "0.5.3"
|
||||
```
|
||||
|
||||
To use and pin a previous version of the theme, replace the `0.5.3` with the desired release tag.
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- Fixed: font-size scaling for text-related CSS properties by using `rem` instead of fixed `px` values; deprecate `$root-font-size` by [@mattxwang] in [#1169]
|
||||
|
||||
[#1169]: https://github.com/just-the-docs/just-the-docs/pull/1169
|
||||
|
||||
## Release v0.5.2
|
||||
|
||||
Hi all, this is a minor patch release that mostly focuses on accessibility. Since we follow semantic versioning, this should be a smooth upgrade with no breaking changes.
|
||||
|
||||
In addition, the theme docs website has a new canonical URL: <https://just-the-docs.com>. We've also retroactively published the theme docs website for version `v0.3.3` at <https://v0-3-3-docs.just-the-docs.com/>. Thank you to our GitHub sponsors for funding our domain name!
|
||||
|
||||
### Using Release `v0.5.2`
|
||||
|
||||
Users who have not pinned the theme version will be **automatically upgraded to `v0.5.2` the next time they build their site**.
|
||||
|
||||
To use this release explicitly as a remote theme:
|
||||
|
||||
```yml
|
||||
remote_theme: just-the-docs/just-the-docs@v0.5.2
|
||||
```
|
||||
|
||||
To use this version explicitly as a gem-based theme, pin the version in your `Gemfile` and re-run `bundle install` or `bundle update just-the-docs`:
|
||||
|
||||
```ruby
|
||||
gem "just-the-docs", "0.5.2"
|
||||
```
|
||||
|
||||
To use and pin a previous version of the theme, replace the `0.5.2` with the desired release tag.
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- Fixed: liquid variable leakage in navigation components by [@pdmosses] in [#1243]
|
||||
- Fixed: ARIA roles and labels for search, header, logo, mobile menu button, and main content by [@joelhawksley] in [#1259]
|
||||
- Fixed: ARIA labels for all anchors with `href="#"`; adds `aria-pressed` information for toggles by [@mattxwang] in [#1262]
|
||||
|
||||
### New Contributors
|
||||
|
||||
- [@joelhawksley] made their first contribution in [#1259]
|
||||
|
||||
[@joelhawksley]: https://github.com/joelhawksley
|
||||
|
||||
[#1243]: https://github.com/just-the-docs/just-the-docs/pull/1243
|
||||
[#1259]: https://github.com/just-the-docs/just-the-docs/pull/1259
|
||||
[#1262]: https://github.com/just-the-docs/just-the-docs/pull/1262
|
||||
|
||||
## Release v0.5.1
|
||||
|
||||
Hi all, this is a very small minor patch release that has two small behavioral bugfixes: fixing a regression introduced in `v0.5.0` on Safari versions `<16.4` (broken media query), and the copy code button providing incorrect feedback in insecure browser contexts. This should be a smooth upgrade with no breaking changes.
|
||||
|
||||
As always, we'd love your feedback. [Open an issue](https://github.com/just-the-docs/just-the-docs/issues) or [start a discussion](https://github.com/just-the-docs/just-the-docs/discussions) for bug reports, feature requests, and any other feedback. Thanks for continuing to use Just the Docs!
|
||||
|
||||
### Using Release `v0.5.1`
|
||||
|
||||
Users who have not pinned the theme version will be **automatically upgraded to `v0.5.1` the next time they build their site**.
|
||||
|
||||
To use this release explicitly as a remote theme:
|
||||
|
||||
```yml
|
||||
remote_theme: just-the-docs/just-the-docs@v0.5.1
|
||||
```
|
||||
|
||||
To use this version explicitly as a gem-based theme, pin the version in your `Gemfile` and re-run `bundle install` or `bundle update just-the-docs`:
|
||||
|
||||
```ruby
|
||||
gem "just-the-docs", "0.5.1"
|
||||
```
|
||||
|
||||
To use and pin a previous version of the theme, replace the `0.5.1` with the desired release tag.
|
||||
|
||||
### Bugfixes
|
||||
|
||||
|
||||
- Fixed: disable copy code button in insecure contexts [@rmoff] in [#1226]
|
||||
- Fixed: context-based media feature not supported by Safari `<16.4` by [@mattxwang] in [#1240]
|
||||
|
||||
### Documentation
|
||||
|
||||
- Added: document copy code button requiring secure context by [@rmoff] in [#1225]
|
||||
- Fixed: typo ("them" → "theme") in MIGRATION.md by [@waldyrious] in [#1219]
|
||||
- Fixed: `font-weight` typo (Utilities > Typography) by [@mattxwang] in [#1229]
|
||||
- Fixed: `just the docs` typo in migration guide by [@mattxwang] in [#1230]
|
||||
|
||||
### New Contributors
|
||||
- [@rmoff] made their first contribution in [#1225]
|
||||
|
||||
[#1219]: https://github.com/just-the-docs/just-the-docs/pull/1219
|
||||
[#1225]: https://github.com/just-the-docs/just-the-docs/pull/1225
|
||||
[#1226]: https://github.com/just-the-docs/just-the-docs/pull/1226
|
||||
[#1229]: https://github.com/just-the-docs/just-the-docs/pull/1229
|
||||
[#1230]: https://github.com/just-the-docs/just-the-docs/pull/1230
|
||||
[#1240]: https://github.com/just-the-docs/just-the-docs/pull/1240
|
||||
|
||||
[@rmoff]: https://github.com/rmoff
|
||||
|
||||
## Release v0.5.0
|
||||
|
||||
Hope your April is going well! This new release of Just the Docs is relatively minor. It has one **breaking change**: we've reverted the import order of `setup.scss` to be *before* color schemes. In addition, we include two requested fixes: color contrast issues with `::selection` and using Just the Docs with mermaid versions `>=10`.
|
||||
|
||||
We've marked this as a minor version bump due to the breaking change. In the next section, we briefly outline what migration steps should be. Users who did not migrate to `v0.4.2` or who do not have a custom `setup.scss` are guaranteed no breaking changes.
|
||||
|
||||
As always, we'd love your feedback. [Open an issue](https://github.com/just-the-docs/just-the-docs/issues) or [start a discussion](https://github.com/just-the-docs/just-the-docs/discussions) for bug reports, feature requests, and any other feedback. Thanks for continuing to use Just the Docs!
|
||||
|
||||
### Migrating to `v0.5.0`
|
||||
|
||||
**Migration**: users with a custom `setup.scss` cannot rely on variables or functions defined in `color_scheme`. This reverts to the behaviour in `v0.4.1`. Users should instead move those variables or functions to the `color_scheme` files themselves.
|
||||
|
||||
For more, refer to the [migration guide](https://just-the-docs.com/MIGRATION/).
|
||||
|
||||
### Using Release `v0.5.0`
|
||||
|
||||
Users who have not pinned the theme version will be **automatically upgraded to `v0.5.0` the next time they build their site**.
|
||||
|
||||
To use this release explicitly as a remote theme:
|
||||
|
||||
```yml
|
||||
remote_theme: just-the-docs/just-the-docs@v0.5.0
|
||||
```
|
||||
|
||||
To use this version explicitly as a gem-based theme, pin the version in your `Gemfile` and re-run `bundle install` or `bundle update just-the-docs`:
|
||||
|
||||
```ruby
|
||||
gem "just-the-docs", "0.5.0"
|
||||
```
|
||||
|
||||
To use and pin a previous version of the theme, replace the `0.5.0` with the desired release tag.
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- **Reverted (breaking)**: "Fix import order for `setup.scss` (#1184)" by [@mattxwang] in [#1209]
|
||||
- Fixed: color contrast issues with `::selection` (reverting to browser defaults) [@mattxwang] in [#1208]
|
||||
- Fixed: mermaid `v10`, bundle all mermaid code in component by [@mattxwang] in [#1190]
|
||||
- Removed: unused images (`just-the-docs.png`, `search.svg`) by [@mattxwang] in [#1107]
|
||||
- Removed: `CODE_OF_CONDUCT`, `docker-compose`, and `Dockerfile` files from site by [@mattxwang] in [#1187]
|
||||
|
||||
**Full Changelog**: [https://github.com/just-the-docs/just-the-docs/compare/v0.4.2...v0.5.0](https://github.com/just-the-docs/just-the-docs/compare/v0.4.2...v0.5.0)
|
||||
|
||||
[#1107]: https://github.com/just-the-docs/just-the-docs/pull/1107
|
||||
[#1187]: https://github.com/just-the-docs/just-the-docs/pull/1187
|
||||
[#1190]: https://github.com/just-the-docs/just-the-docs/pull/1190
|
||||
[#1208]: https://github.com/just-the-docs/just-the-docs/pull/1208
|
||||
[#1209]: https://github.com/just-the-docs/just-the-docs/pull/1209
|
||||
|
||||
## Release v0.4.2
|
||||
|
||||
Hello! We're back again with another small release. Like `v0.4.1`, this release is a [semver patch](https://semver.org/): it only includes bugfixes, and is fully backwards-compatible.
|
||||
|
||||
The big highlight of this theme is fixing our light scheme code highlighting contrast issues; this was one of our most-requested features! This change is fully backwards-compatible; users can [opt-in to our old highlighting theme](https://just-the-docs.com/docs/customization/#deprecated-legacy_light) by using `legacy_light` instead of `light`.
|
||||
|
||||
As always, we'd love your feedback. [Open an issue](https://github.com/just-the-docs/just-the-docs/issues) or [start a discussion](https://github.com/just-the-docs/just-the-docs/discussions) for bug reports, feature requests, and any other feedback. Thanks for continuing to use Just the Docs!
|
||||
|
||||
### Using Release `v0.4.2`
|
||||
|
||||
Users who have not pinned the theme version will be **automatically upgraded to `v0.4.2` the next time they build their site**.
|
||||
|
||||
To use this release explicitly as a remote theme:
|
||||
|
||||
```yml
|
||||
remote_theme: just-the-docs/just-the-docs@v0.4.2
|
||||
```
|
||||
|
||||
To use this RC explicitly as a gem-based theme, pin the version in your `Gemfile` and re-run `bundle install` or `bundle update just-the-docs`:
|
||||
|
||||
```ruby
|
||||
gem "just-the-docs", "0.4.2"
|
||||
```
|
||||
|
||||
To use and pin a previous version of the theme, replace the `0.4.2` with the desired release tag.
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- Fixed: light scheme code highlighting contrast issues; updated to use Atom's One Light colors, consolidate theme variables by [@mattxwang] in [#1166]
|
||||
- Fixed: duplicate import of `color_schemes` by [@mattxwang] in [#1173]
|
||||
- Fixed: import order for `setup.scss` by [@mattxwang] in [#1184]
|
||||
- Removed: unused dark syntax themes by [@mattxwang] in [#1192]
|
||||
|
||||
### Documentation
|
||||
|
||||
- Added: docs for using mermaid with AsciiDoc by [@flyx] in [#1182]
|
||||
|
||||
**Full Changelog**: [https://github.com/just-the-docs/just-the-docs/compare/v0.4.1...v0.4.2](https://github.com/just-the-docs/just-the-docs/compare/v0.4.1...v0.4.2)
|
||||
|
||||
[#1166]: https://github.com/just-the-docs/just-the-docs/pull/1166
|
||||
[#1173]: https://github.com/just-the-docs/just-the-docs/pull/1173
|
||||
[#1182]: https://github.com/just-the-docs/just-the-docs/pull/1182
|
||||
[#1184]: https://github.com/just-the-docs/just-the-docs/pull/1184
|
||||
[#1192]: https://github.com/just-the-docs/just-the-docs/pull/1192
|
||||
|
||||
## Release v0.4.1
|
||||
|
||||
Hello! We hope you've been enjoying the new `v0.4.0`; we appreciate all the feedback we've gotten already! As promised, future releases will be small with simple steps to upgrade. This is one of them! `v0.4.1` is a [semver patch](https://semver.org/): it only includes bugfixes, and is fully backwards-compatible.
|
||||
@@ -86,16 +517,16 @@ We're so excited to release Just the Docs `v0.4.0`. This release has been almost
|
||||
`v0.4.0` contains many new features and bugfixes. We enumerate all of them in further sections in this changelog; however, we'd like to call out some of the most-requested changes:
|
||||
|
||||
- better support for dark theme: dark highlighting, search input color
|
||||
- [callouts](https://just-the-docs.github.io/just-the-docs/docs/ui-components/callouts/), a new design component to highlight content
|
||||
- [configuring mermaid.js](https://just-the-docs.github.io/just-the-docs/docs/ui-components/code/#mermaid-diagram-code-blocks), a markdown-native diagram visualization library
|
||||
- [copy code button](https://just-the-docs.github.io/just-the-docs/docs/ui-components/code/#copy-button) for code snippets
|
||||
- [external navigation links](https://just-the-docs.github.io/just-the-docs/docs/navigation-structure/#external-navigation-links)
|
||||
- [callouts](https://just-the-docs.com/docs/ui-components/callouts/), a new design component to highlight content
|
||||
- [configuring mermaid.js](https://just-the-docs.com/docs/ui-components/code/#mermaid-diagram-code-blocks), a markdown-native diagram visualization library
|
||||
- [copy code button](https://just-the-docs.com/docs/ui-components/code/#copy-button) for code snippets
|
||||
- [external navigation links](https://just-the-docs.com/docs/navigation-structure/#external-navigation-links)
|
||||
- major improvements to nav generation efficiency and robustness
|
||||
- minor improvements to built-in accessibility (SVG icons, nav titles, skip to main content)
|
||||
- [modularized site components](https://just-the-docs.github.io/just-the-docs/docs/customization/#custom-layouts-and-includes) (advanced feature)
|
||||
- [new custom includes](https://just-the-docs.github.io/just-the-docs/docs/customization/#override-includes): table of contents heading, navigation panel footer, search placeholder, lunr search indices
|
||||
- [modularized site components](https://just-the-docs.com/docs/customization/#custom-layouts-and-includes) (advanced feature)
|
||||
- [new custom includes](https://just-the-docs.com/docs/customization/#override-includes): table of contents heading, navigation panel footer, search placeholder, lunr search indices
|
||||
- bugfixes involving WEBrick and Ruby 3, Liquid processing in CSS comments, nested task lists, relative URLs, scroll navigation, corrupted search data from rake, breadcrumbs, and more!
|
||||
- more documentation for [custom includes](https://just-the-docs.github.io/just-the-docs/docs/customization/#override-includes), this changelog, and the [migration guide](https://just-the-docs.github.io/just-the-docs/MIGRATION/)
|
||||
- more documentation for [custom includes](https://just-the-docs.com/docs/customization/#override-includes), this changelog, and the [migration guide](https://just-the-docs.com/MIGRATION/)
|
||||
|
||||
*After usage instructions and the roadmap, we enumerate all changes from `v0.3.3`.*
|
||||
|
||||
@@ -128,7 +559,7 @@ remote_theme: just-the-docs/just-the-docs@v0.3.3
|
||||
|
||||
### Migration Guide and Strategies
|
||||
|
||||
We've developed a new [migration guide](https://just-the-docs.github.io/just-the-docs/MIGRATION/) for users to migrate from version `v0.3.3` to `v0.4.0`. It outlines major changes in project maintenance (e.g. new repository link, team) as well as breaking changes that may break your site (and potential solutions). We suggest that all users refer to the guide before manually upgrading their site.
|
||||
We've developed a new [migration guide](https://just-the-docs.com/MIGRATION/) for users to migrate from version `v0.3.3` to `v0.4.0`. It outlines major changes in project maintenance (e.g. new repository link, team) as well as breaking changes that may break your site (and potential solutions). We suggest that all users refer to the guide before manually upgrading their site.
|
||||
|
||||
**For the vast majority of users, we do not anticipate that this will be a breaking change.** The major touch points are surrounding new includes, navigation (ordering, pages, and collections), the favicon, and a shift to relative URLs. However, users who heavily customize the theme (primarily by overriding includes) will likely have to make minor changes.
|
||||
|
||||
@@ -336,7 +767,7 @@ This RC does not introduce any major user-facing features. It adds more customiz
|
||||
|
||||
### Trying out pre-release `v0.4.0.rc5`
|
||||
|
||||
Simlar to the prior release, `v0.4.0.rc5` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` following immediately after. While we don't anticipate many users using this RC, it is still possible to opt-in.
|
||||
Similar to the prior release, `v0.4.0.rc5` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` following immediately after. While we don't anticipate many users using this RC, it is still possible to opt-in.
|
||||
|
||||
To use this RC explicitly as a remote theme:
|
||||
|
||||
@@ -437,7 +868,7 @@ Have any questions, thoughts, or concerns? We'd love to hear from you! Please [o
|
||||
|
||||
### Trying out pre-release `v0.4.0.rc4`
|
||||
|
||||
Simlar to the prior release, `v0.4.0.rc4` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc4`.
|
||||
Similar to the prior release, `v0.4.0.rc4` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc4`.
|
||||
|
||||
To use this RC explicitly as a remote theme:
|
||||
|
||||
@@ -558,7 +989,7 @@ As soon as we get stable test results from major downstream users, we'll push ou
|
||||
|
||||
### Trying out pre-release `v0.4.0.rc3`
|
||||
|
||||
Simlar to the prior release, `v0.4.0.rc3` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc3`.
|
||||
Similar to the prior release, `v0.4.0.rc3` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc3`.
|
||||
|
||||
To use this RC explicitly as a remote theme:
|
||||
|
||||
@@ -634,7 +1065,7 @@ The intention of this release candidate is to gather even more feedback on a pot
|
||||
|
||||
### Trying out pre-release `v0.4.0.rc2`
|
||||
|
||||
Simlar to the prior release, `v0.4.0.rc2` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc2`.
|
||||
Similar to the prior release, `v0.4.0.rc2` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc2`.
|
||||
|
||||
To use this RC explicitly as a remote theme:
|
||||
|
||||
@@ -722,7 +1153,7 @@ We want your feedback! Are these changes helpful? Are our docs easy to understan
|
||||
|
||||
### Trying out pre-release `v0.4.0.rc1`
|
||||
|
||||
Due to the massive scope of these changes, we're making `v0.4.0.rc1` avaialble as a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc1`.
|
||||
Due to the massive scope of these changes, we're making `v0.4.0.rc1` available as a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc1`.
|
||||
|
||||
To use this RC explicitly as a remote theme:
|
||||
|
||||
@@ -1234,7 +1665,7 @@ fixes #291 #256 #293 #177
|
||||
|
||||
## v0.2.1
|
||||
|
||||
This update fixes security vulnerablities in the lodash sub-dependency and bumps other dev dependencies to their latest version.
|
||||
This update fixes security vulnerabilities in the lodash sub-dependency and bumps other dev dependencies to their latest version.
|
||||
|
||||
## v0.2.0
|
||||
|
||||
|
4
Gemfile
4
Gemfile
@@ -3,4 +3,6 @@ gemspec
|
||||
|
||||
gem "jekyll-github-metadata", ">= 2.15"
|
||||
|
||||
gem "webrick", "~> 1.7"
|
||||
gem "jekyll-include-cache", group: :jekyll_plugins
|
||||
|
||||
gem "html-proofer", "~> 5.0", :group => :development
|
||||
|
152
Gemfile.lock
Normal file
152
Gemfile.lock
Normal file
@@ -0,0 +1,152 @@
|
||||
PATH
|
||||
remote: .
|
||||
specs:
|
||||
just-the-docs (0.8.0)
|
||||
jekyll (>= 3.8.5)
|
||||
jekyll-include-cache
|
||||
jekyll-seo-tag (>= 2.0)
|
||||
rake (>= 12.3.1)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
Ascii85 (1.1.0)
|
||||
addressable (2.8.6)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
afm (0.2.2)
|
||||
async (2.6.3)
|
||||
console (~> 1.10)
|
||||
fiber-annotation
|
||||
io-event (~> 1.1)
|
||||
timers (~> 4.1)
|
||||
base64 (0.2.0)
|
||||
colorator (1.1.0)
|
||||
concurrent-ruby (1.2.2)
|
||||
console (1.23.2)
|
||||
fiber-annotation
|
||||
fiber-local
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
ethon (0.16.0)
|
||||
ffi (>= 1.15.0)
|
||||
eventmachine (1.2.7)
|
||||
faraday (2.8.1)
|
||||
base64
|
||||
faraday-net_http (>= 2.0, < 3.1)
|
||||
ruby2_keywords (>= 0.0.4)
|
||||
faraday-net_http (3.0.2)
|
||||
ffi (1.16.3)
|
||||
fiber-annotation (0.2.0)
|
||||
fiber-local (1.0.0)
|
||||
forwardable-extended (2.6.0)
|
||||
google-protobuf (3.25.1-arm64-darwin)
|
||||
google-protobuf (3.25.1-x86_64-linux)
|
||||
hashery (2.1.2)
|
||||
html-proofer (5.0.8)
|
||||
addressable (~> 2.3)
|
||||
async (~> 2.1)
|
||||
nokogiri (~> 1.13)
|
||||
pdf-reader (~> 2.11)
|
||||
rainbow (~> 3.0)
|
||||
typhoeus (~> 1.3)
|
||||
yell (~> 2.0)
|
||||
zeitwerk (~> 2.5)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (1.14.1)
|
||||
concurrent-ruby (~> 1.0)
|
||||
io-event (1.2.3)
|
||||
jekyll (4.3.3)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 1.0)
|
||||
jekyll-sass-converter (>= 2.0, < 4.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
kramdown (~> 2.3, >= 2.3.1)
|
||||
kramdown-parser-gfm (~> 1.0)
|
||||
liquid (~> 4.0)
|
||||
mercenary (>= 0.3.6, < 0.5)
|
||||
pathutil (~> 0.9)
|
||||
rouge (>= 3.0, < 5.0)
|
||||
safe_yaml (~> 1.0)
|
||||
terminal-table (>= 1.8, < 4.0)
|
||||
webrick (~> 1.7)
|
||||
jekyll-github-metadata (2.16.1)
|
||||
jekyll (>= 3.4, < 5.0)
|
||||
octokit (>= 4, < 7, != 4.4.0)
|
||||
jekyll-include-cache (0.2.1)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-sass-converter (3.0.0)
|
||||
sass-embedded (~> 1.54)
|
||||
jekyll-seo-tag (2.8.0)
|
||||
jekyll (>= 3.8, < 5.0)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
kramdown (2.4.0)
|
||||
rexml
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
liquid (4.0.4)
|
||||
listen (3.8.0)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.4.0)
|
||||
nokogiri (1.16.2-arm64-darwin)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.16.2-x86_64-linux)
|
||||
racc (~> 1.4)
|
||||
octokit (6.1.1)
|
||||
faraday (>= 1, < 3)
|
||||
sawyer (~> 0.9)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
pdf-reader (2.11.0)
|
||||
Ascii85 (~> 1.0)
|
||||
afm (~> 0.2.1)
|
||||
hashery (~> 2.0)
|
||||
ruby-rc4
|
||||
ttfunk
|
||||
public_suffix (5.0.4)
|
||||
racc (1.7.3)
|
||||
rainbow (3.1.1)
|
||||
rake (13.1.0)
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rexml (3.2.6)
|
||||
rouge (4.2.0)
|
||||
ruby-rc4 (0.1.5)
|
||||
ruby2_keywords (0.0.5)
|
||||
safe_yaml (1.0.5)
|
||||
sass-embedded (1.69.6-arm64-darwin)
|
||||
google-protobuf (~> 3.25)
|
||||
sass-embedded (1.69.6-x86_64-linux-gnu)
|
||||
google-protobuf (~> 3.25)
|
||||
sawyer (0.9.2)
|
||||
addressable (>= 2.3.5)
|
||||
faraday (>= 0.17.3, < 3)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
timers (4.3.5)
|
||||
ttfunk (1.7.0)
|
||||
typhoeus (1.4.0)
|
||||
ethon (>= 0.9.0)
|
||||
unicode-display_width (2.5.0)
|
||||
webrick (1.8.1)
|
||||
yell (2.2.2)
|
||||
zeitwerk (2.6.11)
|
||||
|
||||
PLATFORMS
|
||||
arm64-darwin
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
bundler (>= 2.3.5)
|
||||
html-proofer (~> 5.0)
|
||||
jekyll-github-metadata (>= 2.15)
|
||||
jekyll-include-cache
|
||||
just-the-docs!
|
||||
|
||||
BUNDLED WITH
|
||||
2.4.13
|
127
MIGRATION.md
127
MIGRATION.md
@@ -6,7 +6,7 @@ layout: default
|
||||
# Migrating and Upgrading
|
||||
|
||||
Summary
|
||||
: A site that uses `just-the-docs` (as a theme or as a remote them) automatically
|
||||
: A site that uses `just-the-docs` (as a theme or as a remote theme) automatically
|
||||
switches to a new release, unless it is pinned to a previous version.
|
||||
|
||||
This migration guide draws attention to:
|
||||
@@ -33,7 +33,7 @@ This document contains instructions on how to migrate and upgrade Just the Docs
|
||||
> website is built using the current `main` branch of the theme, which may include
|
||||
> changes made after the latest release; see the [CHANGELOG].
|
||||
>
|
||||
> If your configuration states `theme: just the docs` and your `Gemfile` specifies
|
||||
> If your configuration states `theme: just_the_docs` and your `Gemfile` specifies
|
||||
> `gem "just-the-docs"`, your website is always built using the latest release.
|
||||
|
||||
{: .note }
|
||||
@@ -43,6 +43,125 @@ This document contains instructions on how to migrate and upgrade Just the Docs
|
||||
|
||||
[CHANGELOG]: {{ site.baseurl }}{% link CHANGELOG.md %}
|
||||
|
||||
## v0.6.x - v0.7.0
|
||||
|
||||
### POTENTIALLY-BREAKING CHANGES in v0.7.0
|
||||
|
||||
There are some *very minor* potentially-breaking changes for users in version `v0.7.0`. **They do not affect the vast majority of users**; however, this may affect users of (undocumented) internal theme structure. They concern:
|
||||
|
||||
1. the movement of `_includes/nav.html`, which has moved to `_includes/components/nav.html`
|
||||
- **explicit migration only necessary if users have overridden `_includes/nav.html`**
|
||||
2. the addition of `<script>` tags with `id`s `jtd-nav-activation` and `jtd-head-nav-stylesheet`
|
||||
- **explicit migration only necessary if users have existing elements with those IDs**
|
||||
|
||||
#### Moved Include
|
||||
|
||||
Version `v0.7.0` has moved (and changed the contents of) `_includes/nav.html`; it is now in `_includes/components/nav.html`. This means that user overrides for the component will *no longer be loaded*, reverting to the Just the Docs default.
|
||||
|
||||
Users who have overridden this `_includes` should:
|
||||
|
||||
1. copy in the new upstream `_includes/components/nav.html` into their site
|
||||
2. port over any changes from their custom `_includes/nav.html`
|
||||
|
||||
No other changes are necessary.
|
||||
|
||||
#### New Script IDs
|
||||
|
||||
Version `v0.7.0` adds the `id`s `jtd-nav-activation` and `jtd-head-nav-stylesheet` to some existing script tags. This will cause errors for users that have their own custom components with those IDs.
|
||||
|
||||
Users who have elements with those `id`s should rename their elements to avoid a collision.
|
||||
|
||||
## v0.5.x - v0.6.0
|
||||
|
||||
### POTENTIALLY-BREAKING CHANGES in v0.6.0
|
||||
|
||||
There are some *very minor* potentially-breaking changes for users in version `v0.6.0`. **They do not affect the vast majority of users**; however, this may affect users of (undocumented) internal theme structure. They concern:
|
||||
|
||||
1. the addition of new `_includes/favicon.html`, `_includes/head_nav.html`, and `_includes/css/activation.scss.liquid`
|
||||
- **explicit migration only necessary if users have defined a custom file with the same name**
|
||||
2. removing `id="main-content-wrap` from wrapper `div` elements in default layouts
|
||||
- **explicit migration only necessary if users have written code that depends on `#main-content-wrap`**
|
||||
3. loading the new `$color-scheme` variable (from the light scheme by default)
|
||||
- **explicit migration only necessary if users have overridden the base light theme**
|
||||
4. caching the favicon for the entire site
|
||||
- **explicit migration only necessary if users have different favicons for different pages**
|
||||
|
||||
#### New Includes
|
||||
|
||||
Version `v0.6.0` introduces three new `_includes` files:
|
||||
|
||||
- `_includes/favicon.html`, which now contains logic previously in `_includes/head.html`: loading `favicon.ico` if no favicon is specified
|
||||
- `_includes/head_nav.html`, which generates CSS used for the new efficient navigation implementation
|
||||
- `_includes/css/activation.scss.liquid`, which is used by `head_nav` for navigation implementation
|
||||
|
||||
If users have existing `_includes` files with this name, they should be renamed (and imported with their new name) prior to upgrading to `0.6.0`. No other change is necessary.
|
||||
|
||||
#### Removed `#main-content-wrap`
|
||||
|
||||
In `_layouts/default.html` and `_layouts/minimal.html`, the `id="main-content-wrap"` has been removed from the wrapper div (in part due to a bug with multiple `id`s on one element). Internally, our theme *does not use* these `id`s; for most users, this does not require any action.
|
||||
|
||||
However, code that relies on this `id` must be changed. Each of the related elements still has the unique class `.main-content-wrap`, and can be selected with this class. For example, in CSS:
|
||||
|
||||
```css
|
||||
/* OLD */
|
||||
#main-content-wrap { /* ... */ }
|
||||
|
||||
/* NEW */
|
||||
.main-content-wrap { /* ... */ }
|
||||
```
|
||||
|
||||
Or in JS:
|
||||
|
||||
```js
|
||||
// OLD
|
||||
document.getElementById("main-content-wrap");
|
||||
|
||||
// NEW
|
||||
document.getElementsByClassName("main-content-wrap")[0];
|
||||
```
|
||||
|
||||
#### New `$color-scheme` variable
|
||||
|
||||
The theme now properly sets the `color-scheme` property. To do so, the new `$color-scheme` SCSS variable has been created. The variable has been added to the default `light` scheme, which is *always* loaded by Just the Docs.
|
||||
|
||||
Migration is only needed if:
|
||||
|
||||
- the packaged `light` scheme has been *overridden* (this is *not* the same as using a custom scheme)
|
||||
- or, the scheme logic to always load `light` has been changed
|
||||
|
||||
(neither of these behaviours are recommended by Just the Docs)
|
||||
|
||||
In either of these cases, users should add a `$color-scheme` SCSS variable to their active scheme with the appropriate value (see: [MDN docs on `color-scheme`](https://developer.mozilla.org/en-US/docs/Web/CSS/color-scheme)).
|
||||
|
||||
```scss
|
||||
$color-scheme: light !default;
|
||||
```
|
||||
|
||||
#### Cached favicon
|
||||
|
||||
Version `v0.6.0` adds a new `_include` that caches the favicon for the entire site. This significantly improves page build times for large sites.
|
||||
|
||||
However, some users may load different favicons for each page (and/or dynamically change the first favicon load). In this case, they should override the logic in `_includes/favicon.html` by **replacing** it with an empty file (this is *different* from deleting it). No further migration is necessary.
|
||||
|
||||
## v0.4.x - v0.5.0
|
||||
|
||||
### POTENTIALLY-BREAKING CHANGES in v0.5.0
|
||||
|
||||
There is one potentially-breaking change for users migrating from `v0.4.2` to `v0.5.0` concerning `setup.scss`. To provide context:
|
||||
|
||||
1. `setup.scss` was introduced in `v0.4.0`
|
||||
2. in `v0.4.0` and `v0.4.1`, `setup.scss` was imported *before* color scheme SCSS code
|
||||
3. in `v0.4.2`, we adjusted the order to import `setup.scss` *after* color scheme SCSS code
|
||||
4. in `v0.5.0`, we have reverted the previous change: `setup.scss` is now again imported *before* color scheme SCSS code
|
||||
|
||||
This does not affect most users. Users who did not migrate to `v0.4.2` or who do not have a custom `setup.scss` are guaranteed no breaking changes.
|
||||
|
||||
Explicit migration steps are only needed if:
|
||||
|
||||
1. a custom `setup.scss` has been defined,
|
||||
2. **and** the `setup.scss` depends on variables or functions defined in color scheme SCSS code; this change was only possible on `v0.4.2`
|
||||
|
||||
For those users, we suggest moving those variables and functions to each relevant color scheme.
|
||||
## v0.3.3 … v0.4.x
|
||||
|
||||
### REPOSITORY CHANGES
|
||||
@@ -52,7 +171,7 @@ This document contains instructions on how to migrate and upgrade Just the Docs
|
||||
The theme repo is now at <https://github.com/just-the-docs/just-the-docs>.
|
||||
The name of its default branch is now `main`.
|
||||
|
||||
The theme docs website is now published at <https://just-the-docs.github.io/just-the-docs>.
|
||||
The theme docs website is now published at <https://just-the-docs.github.io/just-the-docs>. We've also retroactively published the theme docs website for version `v0.3.3` at <https://v0-3-3-docs.just-the-docs.com/>.
|
||||
|
||||
GitHub provides access to previous versions of the theme repo.
|
||||
You can browse [previous versions of the theme docs website] on the [Internet Archive].
|
||||
@@ -65,7 +184,7 @@ formatted for browsing on GitHub.
|
||||
It also explains how to install the theme as a Ruby Gem, without creating a new site.
|
||||
|
||||
[README]: https://github.com/just-the-docs/just-the-docs/blob/main/README.md
|
||||
[home page]: https://just-the-docs.github.io/just-the-docs
|
||||
[home page]: https://just-the-docs.com
|
||||
|
||||
#### Deploy previews
|
||||
|
||||
|
@@ -5,7 +5,7 @@
|
||||
<p align="center">
|
||||
<h1 align="center">Just the Docs</h1>
|
||||
<p align="center">A modern, highly customizable, and responsive Jekyll theme for documentation with built-in search.<br>Easily hosted on GitHub Pages with few dependencies.</p>
|
||||
<p align="center"><strong><a href="https://just-the-docs.github.io/just-the-docs/">See it in action!</a></strong></p>
|
||||
<p align="center"><strong><a href="https://just-the-docs.com/">See it in action!</a></strong></p>
|
||||
<br><br><br>
|
||||
</p>
|
||||
|
||||
@@ -102,7 +102,7 @@ The theme is available as open source under the terms of the [MIT License](http:
|
||||
|
||||
[Jekyll]: https://jekyllrb.com
|
||||
[Just the Docs Template]: https://just-the-docs.github.io/just-the-docs-template/
|
||||
[Just the Docs]: https://just-the-docs.github.io/just-the-docs/
|
||||
[Just the Docs]: https://just-the-docs.com
|
||||
[Just the Docs repo]: https://github.com/just-the-docs/just-the-docs
|
||||
[GitHub Pages]: https://pages.github.com/
|
||||
[Template README]: https://github.com/just-the-docs/just-the-docs-template/blob/main/README.md
|
||||
|
20
_config.yml
20
_config.yml
@@ -15,8 +15,8 @@
|
||||
# in the templates via {{ site.myvariable }}.
|
||||
title: Just the Docs
|
||||
description: A Jekyll theme for documentation
|
||||
baseurl: "/just-the-docs" # the subpath of your site, e.g. /blog
|
||||
url: "https://just-the-docs.github.io" # the base hostname & protocol for your site, e.g. http://example.com
|
||||
baseurl: "" # the subpath of your site, e.g. /blog
|
||||
url: "https://just-the-docs.com" # the base hostname & protocol for your site, e.g. http://example.com
|
||||
repository: just-the-docs/just-the-docs # for github-metadata
|
||||
|
||||
permalink: pretty
|
||||
@@ -43,6 +43,9 @@ exclude:
|
||||
- package-lock.json
|
||||
- Rakefile
|
||||
- README.md
|
||||
- CODE_OF_CONDUCT.md
|
||||
- docker-compose.yml
|
||||
- Dockerfile
|
||||
# theme test code
|
||||
- fixtures/
|
||||
|
||||
@@ -75,12 +78,12 @@ search:
|
||||
# Enable or disable the search button that appears in the bottom right corner of every page
|
||||
# Supports true or false (default)
|
||||
button: false
|
||||
# Focus the search input by pressing `ctrl + focus_shortcut_key` (or `cmd + focus_shortcut_key` on macOS)
|
||||
focus_shortcut_key: 'k'
|
||||
|
||||
# For copy button on code
|
||||
enable_copy_code_button: true
|
||||
|
||||
# To disable support for mermaid diagrams (https://mermaid.js.org),
|
||||
# comment out the `mermaid` and `version` keys below
|
||||
# By default, consuming the theme as a gem leaves mermaid disabled; it is opt-in
|
||||
mermaid:
|
||||
# Version of mermaid library
|
||||
@@ -88,8 +91,12 @@ mermaid:
|
||||
version: "9.1.6"
|
||||
# Put any additional configuration, such as setting the theme, in _includes/mermaid_config.js
|
||||
# See also docs/ui-components/code
|
||||
# To load mermaid from a local file use the `path` key to specify the location of the library instead; e.g.
|
||||
# To load mermaid from a local library, also use the `path` key to specify the location of the library; e.g.
|
||||
# for (v10+):
|
||||
# path: "/assets/js/mermaid.esm.min.mjs"
|
||||
# for (<v10):
|
||||
# path: "/assets/js/mermaid.min.js"
|
||||
# Note: copy both `mermaid.esm.min.mjs` (v10+) or `mermaid.min.js` (<v10) and the associated `.map` file from the specified version of `mermaid/dist` to `/assets/js/`.
|
||||
|
||||
# Enable or disable heading anchors
|
||||
heading_anchors: true
|
||||
@@ -97,7 +104,7 @@ heading_anchors: true
|
||||
# Aux links for the upper right navigation
|
||||
aux_links:
|
||||
"Just the Docs on GitHub":
|
||||
- "//github.com/just-the-docs/just-the-docs"
|
||||
- "https://github.com/just-the-docs/just-the-docs"
|
||||
|
||||
# Makes Aux links open in a new tab. Default is false
|
||||
aux_links_new_tab: false
|
||||
@@ -163,6 +170,7 @@ callouts:
|
||||
plugins:
|
||||
- jekyll-seo-tag
|
||||
- jekyll-github-metadata
|
||||
- jekyll-include-cache
|
||||
|
||||
kramdown:
|
||||
syntax_highlighter_opts:
|
||||
|
@@ -1,15 +1,144 @@
|
||||
{% unless page.url == "/" %}
|
||||
{% if page.parent %}
|
||||
<nav aria-label="Breadcrumb" class="breadcrumb-nav">
|
||||
<ol class="breadcrumb-nav-list">
|
||||
{% if page.grand_parent %}
|
||||
<li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.grand_parent }}</a></li>
|
||||
<li class="breadcrumb-nav-list-item"><a href="{{ second_level_url }}">{{ page.parent }}</a></li>
|
||||
{% else %}
|
||||
<li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.parent }}</a></li>
|
||||
{% endif %}
|
||||
<li class="breadcrumb-nav-list-item"><span>{{ page.title }}</span></li>
|
||||
</ol>
|
||||
</nav>
|
||||
{% endif %}
|
||||
{% endunless %}
|
||||
{%- comment -%}
|
||||
Include as: {%- include components/breadcrumbs.html -%}
|
||||
Depends on: page, site.
|
||||
Results in: HTML for the breadcrumbs component.
|
||||
Overwrites:
|
||||
node, pages_list, parent_page, grandparent_page.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- if page.url != "/" and page.parent -%}
|
||||
|
||||
{%- capture nav_list_link -%}
|
||||
<a href="{{ page.url | relative_url }}" class="nav-list-link">
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- capture site_nav -%}
|
||||
{%- include_cached components/site_nav.html -%}
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- if site_nav contains nav_list_link -%}
|
||||
|
||||
{%- capture nav_list_simple -%}
|
||||
<ul class="nav-list">
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- capture nav_list_link_class %} class="nav-list-link">
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- capture nav_category -%}
|
||||
<div class="nav-category">
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- assign nav_anchor_splits =
|
||||
site_nav | split: nav_list_link |
|
||||
first | split: nav_category |
|
||||
last | split: "</a>" -%}
|
||||
|
||||
{%- comment -%}
|
||||
The ordinary pages (if any) and the collections pages (if any) are separated by
|
||||
occurrences of nav_category.
|
||||
|
||||
Any ancestor nav-links of the page are contained in the last group of pages,
|
||||
immediately preceding nav-lists. After splitting at "</a>", the anchor that
|
||||
was split is a potential ancestor link when the following split starts with
|
||||
a nav-list.
|
||||
|
||||
The array nav_breadcrumbs is the stack of current potential ancestors of the
|
||||
current page. A split that contains one or more "</ul>"s requires that number
|
||||
of potential ancestors to be popped from the stack.
|
||||
|
||||
The number of occurrences of a string in nav_split_next is computed by removing
|
||||
them all, then dividing the resulting size difference by the length of the string.
|
||||
{%- endcomment %}
|
||||
|
||||
{%- assign nav_breadcrumbs = "" | split: "" -%}
|
||||
|
||||
{%- for nav_split in nav_anchor_splits -%}
|
||||
{%- unless forloop.last -%}
|
||||
|
||||
{%- assign nav_split_next = nav_anchor_splits[forloop.index] | trim -%}
|
||||
|
||||
{%- assign nav_split_test =
|
||||
nav_split_next | remove_first: nav_list_simple | prepend: nav_list_simple -%}
|
||||
{%- if nav_split_test == nav_split_next -%}
|
||||
{%- assign nav_breadcrumb_link =
|
||||
nav_split | split: "<a " | last | prepend: "<a " |
|
||||
replace: nav_list_link_class, ">" | append: "</a>" -%}
|
||||
{%- assign nav_breadcrumbs = nav_breadcrumbs | push: nav_breadcrumb_link -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- if nav_split_next contains "</ul>" -%}
|
||||
{%- assign nav_list_end_less = nav_split_next | remove: "</ul>" -%}
|
||||
{%- assign nav_list_end_count =
|
||||
nav_split_next.size | minus: nav_list_end_less.size | divided_by: 5 -%}
|
||||
{% for nav_end_index in (1..nav_list_end_count) %}
|
||||
{%- assign nav_breadcrumbs = nav_breadcrumbs | pop -%}
|
||||
{%- endfor -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- endunless -%}
|
||||
{%- endfor -%}
|
||||
|
||||
{%- assign nav_parent_link = nav_breadcrumbs[-1] -%}
|
||||
{%- assign nav_grandparent_link = nav_breadcrumbs[-2] -%}
|
||||
|
||||
{%- else -%}
|
||||
|
||||
{%- comment -%}
|
||||
Pages whose links are excluded from the main navigation may still have
|
||||
breadcrumbs. Determining them appears to require inspecting the front matter
|
||||
of all the pages in the same group. For sites with 100s of pages, this is too
|
||||
inefficient in Jekyll 3 (also when the for-loop is replaced by where-filters).
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- assign pages_list = site[page.collection] | default: site.html_pages -%}
|
||||
|
||||
{%- assign parent_page = nil -%}
|
||||
{%- assign grandparent_page = nil -%}
|
||||
|
||||
{%- for node in pages_list -%}
|
||||
|
||||
{%- if node.has_children and page.grand_parent -%}
|
||||
|
||||
{%- if node.title == page.parent and node.parent == page.grand_parent -%}
|
||||
{%- assign parent_page = node -%}
|
||||
{%- endif -%}
|
||||
{%- if node.title == page.grand_parent -%}
|
||||
{%- assign grandparent_page = node -%}
|
||||
{%- endif -%}
|
||||
{%- if parent_page and grandparent_page -%}
|
||||
{%- break -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- elsif node.has_children and node.title == page.parent and node.parent == nil -%}
|
||||
|
||||
{%- assign parent_page = node -%}
|
||||
{%- break -%}
|
||||
|
||||
{%- endif -%}
|
||||
|
||||
{%- endfor -%}
|
||||
|
||||
{%- capture nav_parent_link -%}
|
||||
<a href="{{ parent_page.url | relative_url }}">{{ page.parent }}</a>
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- if page.grand_parent %}
|
||||
{%- capture nav_grandparent_link -%}
|
||||
<a href="{{ grandparent_page.url | relative_url }}">{{ page.grand_parent }}</a>
|
||||
{%- endcapture -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- endif -%}
|
||||
|
||||
<nav aria-label="Breadcrumb" class="breadcrumb-nav">
|
||||
<ol class="breadcrumb-nav-list">
|
||||
{%- if nav_grandparent_link %}
|
||||
<li class="breadcrumb-nav-list-item">{{ nav_grandparent_link }}</li>
|
||||
{%- endif %}
|
||||
<li class="breadcrumb-nav-list-item">{{ nav_parent_link }}</li>
|
||||
<li class="breadcrumb-nav-list-item"><span>{{ page.title }}</span></li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
{%- endif -%}
|
||||
|
@@ -1,9 +1,33 @@
|
||||
{%- comment -%}
|
||||
Include as: {%- include components/children_nav.html -%}
|
||||
Depends on: page, site.
|
||||
Results in: HTML for the children-navigation component.
|
||||
Includes:
|
||||
sorted_pages.html
|
||||
toc_heading_custom.html
|
||||
Overwrites:
|
||||
child_pages.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- if page.has_children == true and page.has_toc != false -%}
|
||||
{%- assign child_pages = site[page.collection]
|
||||
| default: site.html_pages
|
||||
| where: "parent", page.title
|
||||
| where: "grand_parent", page.parent -%}
|
||||
|
||||
{%- include sorted_pages.html pages = child_pages -%}
|
||||
|
||||
{%- if page.child_nav_order == 'desc' or page.child_nav_order == 'reversed' -%}
|
||||
{%- assign sorted_pages = sorted_pages | reverse -%}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
|
||||
<hr>
|
||||
{% include toc_heading_custom.html %}
|
||||
<ul>
|
||||
{% for child in include.toc_list %}
|
||||
<li>
|
||||
<a href="{{ child.url | relative_url }}">{{ child.title }}</a>{% if child.summary %} - {{ child.summary }}{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% for child in sorted_pages %}
|
||||
<li>
|
||||
<a href="{{ child.url | relative_url }}">{{ child.title }}</a>{% if child.summary %} - {{ child.summary }}{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
@@ -1,5 +1,45 @@
|
||||
{% comment %}
|
||||
The complexity of this file comes from a breaking change in Mermaid v10; mermaid.init has been deprecated (and supposedly, didn't work earlier?).
|
||||
|
||||
So, we check whether the user's Mermaid version is >= 10; if not, we fall back to the previous init syntax.
|
||||
|
||||
If a user is using a custom mermaid file and doesn't specify a version, we default to the < v10 behaviour. Users who use version v10 or above should specify this in the version key.
|
||||
{% endcomment %}
|
||||
|
||||
{% if site.mermaid.version %}
|
||||
{% assign mermaid_major_version = site.mermaid.version | split: "." | first | plus: 0 %}
|
||||
{% else %}
|
||||
{% assign mermaid_major_version = 9 %}
|
||||
{% endif %}
|
||||
|
||||
{% if mermaid_major_version > 9 %}
|
||||
|
||||
<script type="module">
|
||||
{% if site.mermaid.path %}
|
||||
import mermaid from '{{ site.mermaid.path | relative_url }}';
|
||||
{% else %}
|
||||
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@{{ site.mermaid.version }}/dist/mermaid.esm.min.mjs';
|
||||
{% endif %}
|
||||
|
||||
var config = {% include mermaid_config.js %};
|
||||
mermaid.initialize(config);
|
||||
mermaid.run({
|
||||
querySelector: '.language-mermaid',
|
||||
});
|
||||
</script>
|
||||
|
||||
{% else %}
|
||||
|
||||
{% if site.mermaid.path %}
|
||||
<script src="{{ site.mermaid.path | relative_url }}"></script>
|
||||
{% else %}
|
||||
<script src="https://cdn.jsdelivr.net/npm/mermaid@{{ site.mermaid.version }}/dist/mermaid.min.js"></script>
|
||||
{% endif %}
|
||||
|
||||
<script>
|
||||
var config = {% include mermaid_config.js %};
|
||||
mermaid.initialize(config);
|
||||
window.mermaid.init(undefined, document.querySelectorAll('.language-mermaid'));
|
||||
</script>
|
||||
|
||||
{% endif %}
|
||||
|
75
_includes/components/nav.html
Normal file
75
_includes/components/nav.html
Normal file
@@ -0,0 +1,75 @@
|
||||
{%- comment -%}
|
||||
Include as: {%- include components/nav.html pages=pages -%}
|
||||
Depends on: include.pages.
|
||||
Results in: HTML for the navigation panel.
|
||||
Includes:
|
||||
sorted_pages.html
|
||||
Overwrites:
|
||||
nav_pages, first_level_pages, second_level_pages, third_level_pages,
|
||||
node, children_list, child, grand_children_list, grand_child.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- assign nav_pages = include.pages
|
||||
| where_exp: "item", "item.title != nil"
|
||||
| where_exp: "item", "item.nav_exclude != true" -%}
|
||||
|
||||
{%- include sorted_pages.html pages = nav_pages -%}
|
||||
|
||||
{%- comment -%}
|
||||
It might be more efficient to sort the pages at each level separately.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- assign first_level_pages = sorted_pages
|
||||
| where_exp: "item", "item.parent == nil" -%}
|
||||
{%- assign second_level_pages = sorted_pages
|
||||
| where_exp: "item", "item.parent != nil"
|
||||
| where_exp: "item", "item.grand_parent == nil" -%}
|
||||
{%- assign third_level_pages = sorted_pages
|
||||
| where_exp: "item", "item.grand_parent != nil" -%}
|
||||
|
||||
<ul class="nav-list">
|
||||
{%- for node in first_level_pages -%}
|
||||
<li class="nav-list-item">
|
||||
{%- if node.has_children -%}
|
||||
<button class="nav-list-expander btn-reset" aria-label="toggle items in {{ node.title }} category" aria-pressed="false">
|
||||
<svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
|
||||
</button>
|
||||
{%- endif -%}
|
||||
<a href="{{ node.url | relative_url }}" class="nav-list-link">{{ node.title }}</a>
|
||||
{%- if node.has_children -%}
|
||||
{%- assign children_list = second_level_pages
|
||||
| where: "parent", node.title -%}
|
||||
{%- if node.child_nav_order == 'desc' or node.child_nav_order == 'reversed' -%}
|
||||
{%- assign children_list = children_list | reverse -%}
|
||||
{%- endif -%}
|
||||
<ul class="nav-list">
|
||||
{%- for child in children_list -%}
|
||||
<li class="nav-list-item">
|
||||
{%- if child.has_children -%}
|
||||
<button class="nav-list-expander btn-reset" aria-label="toggle items in {{ child.title }} category" aria-pressed="false">
|
||||
<svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
|
||||
</button>
|
||||
{%- endif -%}
|
||||
<a href="{{ child.url | relative_url }}" class="nav-list-link">{{ child.title }}</a>
|
||||
{%- if child.has_children -%}
|
||||
{%- assign grand_children_list = third_level_pages
|
||||
| where: "parent", child.title
|
||||
| where: "grand_parent", node.title -%}
|
||||
{%- if child.child_nav_order == 'desc' or child.child_nav_order == 'reversed' -%}
|
||||
{%- assign grand_children_list = grand_children_list | reverse -%}
|
||||
{%- endif -%}
|
||||
<ul class="nav-list">
|
||||
{%- for grand_child in grand_children_list -%}
|
||||
<li class="nav-list-item">
|
||||
<a href="{{ grand_child.url | relative_url }}" class="nav-list-link">{{ grand_child.title }}</a>
|
||||
</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{%- endif -%}
|
||||
</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{%- endif -%}
|
||||
</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
@@ -1,7 +1,7 @@
|
||||
{% if site.search.button %}
|
||||
<a href="#" id="search-button" class="search-button">
|
||||
<svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-search"></use></svg>
|
||||
</a>
|
||||
<button id="search-button" class="search-button btn-reset" aria-label="Focus on search">
|
||||
<svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-search"></use></svg>
|
||||
</button>
|
||||
{% endif %}
|
||||
|
||||
<div class="search-overlay"></div>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{% capture search_placeholder %}{% include search_placeholder_custom.html %}{% endcapture %}
|
||||
|
||||
<div class="search">
|
||||
<div class="search" role="search">
|
||||
<div class="search-input-wrap">
|
||||
<input type="text" id="search-input" class="search-input" tabindex="0" placeholder="{{ search_placeholder | strip_html | strip }}" aria-label="{{ search_placeholder | strip_html| strip }}" autocomplete="off">
|
||||
<label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label>
|
||||
|
@@ -1,60 +1,23 @@
|
||||
{%- comment -%}
|
||||
Include as: {%- include components/sidebar.html -%}
|
||||
Depends on: page(?), site.
|
||||
Results in: HTML for the side bar.
|
||||
Includes:
|
||||
title.html, components/site_nav.html, nav_footer_custom.html
|
||||
Overwrites:
|
||||
nav_footer_custom.
|
||||
Should not be cached, because nav_footer_custom.html might depend on page.
|
||||
{%- endcomment -%}
|
||||
|
||||
<div class="side-bar">
|
||||
<div class="site-header">
|
||||
<div class="site-header" role="banner">
|
||||
<a href="{{ '/' | relative_url }}" class="site-title lh-tight">{% include title.html %}</a>
|
||||
<a href="#" id="menu-button" class="site-button">
|
||||
<svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-menu"></use></svg>
|
||||
</a>
|
||||
<button id="menu-button" class="site-button btn-reset" aria-label="Toggle menu" aria-pressed="false">
|
||||
<svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<nav aria-label="Main" id="site-nav" class="site-nav">
|
||||
{% assign pages_top_size = site.html_pages
|
||||
| where_exp:"item", "item.title != nil"
|
||||
| where_exp:"item", "item.parent == nil"
|
||||
| where_exp:"item", "item.nav_exclude != true"
|
||||
| size %}
|
||||
{% if pages_top_size > 0 %}
|
||||
{% include nav.html pages=site.html_pages key=nil %}
|
||||
{% endif %}
|
||||
{%- if site.nav_external_links -%}
|
||||
<ul class="nav-list">
|
||||
{%- for node in site.nav_external_links -%}
|
||||
<li class="nav-list-item external">
|
||||
<a href="{{ node.url | absolute_url }}" class="nav-list-link external">
|
||||
{{ node.title }}
|
||||
{% unless node.hide_icon %}<svg viewBox="0 0 24 24" aria-labelledby="svg-external-link-title"><use xlink:href="#svg-external-link"></use></svg>{% endunless %}
|
||||
</a>
|
||||
</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{%- endif -%}
|
||||
{% if site.just_the_docs.collections %}
|
||||
{% assign collections_size = site.just_the_docs.collections | size %}
|
||||
{% for collection_entry in site.just_the_docs.collections %}
|
||||
{% assign collection_key = collection_entry[0] %}
|
||||
{% assign collection_value = collection_entry[1] %}
|
||||
{% assign collection = site[collection_key] %}
|
||||
{% if collection_value.nav_exclude != true %}
|
||||
{% if collections_size > 1 or pages_top_size > 0 %}
|
||||
{% if collection_value.nav_fold == true %}
|
||||
<ul class="nav-list nav-category-list">
|
||||
<li class="nav-list-item{% if page.collection == collection_key %} active{% endif %}">
|
||||
{%- if collection.size > 0 -%}
|
||||
<a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a>
|
||||
{%- endif -%}
|
||||
<div class="nav-category">{{ collection_value.name }}</div>
|
||||
{% include nav.html pages=collection key=collection_key %}
|
||||
</li>
|
||||
</ul>
|
||||
{% else %}
|
||||
<div class="nav-category">{{ collection_value.name }}</div>
|
||||
{% include nav.html pages=collection key=collection_key %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% include nav.html pages=collection key=collection_key %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</nav>
|
||||
|
||||
{% include_cached components/site_nav.html %}
|
||||
|
||||
{% capture nav_footer_custom %}
|
||||
{%- include nav_footer_custom.html -%}
|
||||
|
67
_includes/components/site_nav.html
Normal file
67
_includes/components/site_nav.html
Normal file
@@ -0,0 +1,67 @@
|
||||
{%- comment -%}
|
||||
Include as: {%- include_cached components/site_nav.html -%}
|
||||
Depends on: site.
|
||||
Results in: HTML for the site-nav.
|
||||
Includes:
|
||||
components/nav.html
|
||||
Overwrites:
|
||||
pages_top_size, collections_size, collection_entry,
|
||||
collection_key, collection_value, collection.
|
||||
{%- endcomment -%}
|
||||
|
||||
<nav aria-label="Main" id="site-nav" class="site-nav">
|
||||
{% assign pages_top_size = site.html_pages
|
||||
| where_exp:"item", "item.title != nil"
|
||||
| where_exp:"item", "item.parent == nil"
|
||||
| where_exp:"item", "item.nav_exclude != true"
|
||||
| size %}
|
||||
{% if pages_top_size > 0 %}
|
||||
{% include components/nav.html pages=site.html_pages %}
|
||||
{% endif %}
|
||||
{%- if site.nav_external_links -%}
|
||||
<ul class="nav-list">
|
||||
{%- for node in site.nav_external_links -%}
|
||||
<li class="nav-list-item external">
|
||||
<a href="{{ node.url | absolute_url }}" class="nav-list-link external"
|
||||
{% if node.opens_in_new_tab or node.opens_in_new_tab == nil and site.nav_external_links_new_tab %}
|
||||
target="_blank" rel="noopener noreferrer"
|
||||
{% endif %}
|
||||
>
|
||||
{{ node.title }}
|
||||
{% unless node.hide_icon %}<svg viewBox="0 0 24 24" aria-labelledby="svg-external-link-title"><use xlink:href="#svg-external-link"></use></svg>{% endunless %}
|
||||
</a>
|
||||
</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{%- endif -%}
|
||||
{% if site.just_the_docs.collections %}
|
||||
{% assign collections_size = site.just_the_docs.collections | size %}
|
||||
{% for collection_entry in site.just_the_docs.collections %}
|
||||
{% assign collection_key = collection_entry[0] %}
|
||||
{% assign collection_value = collection_entry[1] %}
|
||||
{% assign collection = site[collection_key] %}
|
||||
{% if collection_value.nav_exclude != true %}
|
||||
{% if collections_size > 1 or pages_top_size > 0 %}
|
||||
{% if collection_value.nav_fold == true %}
|
||||
<ul class="nav-list nav-category-list">
|
||||
<li class="nav-list-item">
|
||||
{%- if collection.size > 0 -%}
|
||||
<button class="nav-list-expander btn-reset" aria-label="Toggle collection {{ collection_value.name }}" aria-pressed="false">
|
||||
<svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
|
||||
</button>
|
||||
{%- endif -%}
|
||||
<div class="nav-category">{{ collection_value.name }}</div>
|
||||
{% include components/nav.html pages=collection %}
|
||||
</li>
|
||||
</ul>
|
||||
{% else %}
|
||||
<div class="nav-category">{{ collection_value.name }}</div>
|
||||
{% include components/nav.html pages=collection %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% include components/nav.html pages=collection %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</nav>
|
332
_includes/css/activation.scss.liquid
Normal file
332
_includes/css/activation.scss.liquid
Normal file
@@ -0,0 +1,332 @@
|
||||
{%- comment -%}
|
||||
Include as: {%- include css/activation.scss.liquid -%}
|
||||
Depends on: page.
|
||||
Results in: page-dependent CSS rules for inclusion in a style element,
|
||||
which needs to be disabled when JS is enabled.
|
||||
Includes: components/site_nav.html.
|
||||
Overwrites:
|
||||
activation_no_nav_link, nav_list_link, site_nav,
|
||||
nav_list, nav_list_end, nav_list_item, nav_category_list,
|
||||
nav_list_link_prefix, nav_splits, nav_split, nav_levels,
|
||||
nav_list_less, nav_list_count, nav_end_less, nav_end_count,
|
||||
nav_index, nav_slice_size,
|
||||
activation_collection_prefix, activation_other_collection_prefix.
|
||||
Should not be cached, because it depends on page.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- comment -%}
|
||||
The CSS rules in activation_no_nav_link are for use on pages excluded from the main navigation.
|
||||
- The first rule ensures that no nav-link has a background image.
|
||||
- The other two rules ensure that all folding collections are expanded.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- capture activation_no_nav_link %}
|
||||
.site-nav ul li a {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
{%- if site.just_the_docs.collections %}
|
||||
.site-nav > ul.nav-category-list > li > button svg {
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
.site-nav > ul.nav-category-list > li.nav-list-item > ul.nav-list {
|
||||
display: block;
|
||||
}
|
||||
{%- endif %}
|
||||
{% endcapture -%}
|
||||
|
||||
{%- capture nav_list_link -%}
|
||||
<a href="{{ page.url | relative_url }}" class="nav-list-link">
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- capture site_nav -%}
|
||||
{%- include_cached components/site_nav.html -%}
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- if site_nav contains nav_list_link -%}
|
||||
|
||||
{%- capture nav_list -%}
|
||||
<ul class="nav-list
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- assign nav_list_end = "</ul>" -%}
|
||||
|
||||
{%- capture nav_list_item -%}
|
||||
<li class="nav-list-item
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- capture nav_category_list -%}
|
||||
<ul class="nav-list nav-category-list">
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- assign nav_list_link_prefix =
|
||||
site_nav | split: nav_list_link | first | append: nav_list_link -%}
|
||||
|
||||
{%- assign nav_splits =
|
||||
nav_list_link_prefix | split: nav_list_item | pop -%}
|
||||
|
||||
{%- assign nav_levels = "" | split: "" | push: 1 -%}
|
||||
|
||||
{%- comment -%}
|
||||
The pattern of occurrences of list and list-item tags in the site_nav string
|
||||
is included in the language defined by the following context-free grammar:
|
||||
|
||||
site_nav = PAGES? EXTERNALS? COLLECTION*
|
||||
|
||||
PAGES = nav_list (nav_list_item PAGES?)+ nav_list_end
|
||||
|
||||
EXTERNALS = nav_list nav_list_item+ nav_list_end
|
||||
|
||||
COLLECTION = nav_list (nav_list_item PAGES?)* nav_list_end
|
||||
| nav_category_list
|
||||
nav_list_item nav_list (nav_list_item PAGES?)* nav_list_end
|
||||
nav_list_end
|
||||
|
||||
To determine the path in the site_nav to the nav_list_link for the current page,
|
||||
the prefix of nav_list_link in site_nav is split at each nav_list_item to give
|
||||
an array of nav_splits.
|
||||
|
||||
In site_nav, occurrences of nav_list must be separated by at least one
|
||||
nav_list_item or nav_list_end. Moreover, when a nav_list_end is followed by a
|
||||
nav_list without an intervening nav_list_item, that nav_list must start either
|
||||
a list of external links or a collection. And when a nav_list is followed by a
|
||||
nav_list_end without an intervening nav_list_item, they form an empty collection.
|
||||
|
||||
nav_levels is the path determined by the previously inspected nav_splits.
|
||||
How many times nav_list and nav_list_end occur in the current nav_split
|
||||
determines how to update the path.
|
||||
|
||||
A nav_split can contain any number of empty non-foldable collections.
|
||||
The path element produced by the outer nav_list of a foldable collection is
|
||||
irrelevant; it is set to zero and subsequently removed.
|
||||
|
||||
The number of occurrences of a string in a nav_split is computed by removing
|
||||
them all, then dividing the resulting size difference by the length of the string.
|
||||
|
||||
Case analysis on (nav_list_count, nav_list_end_count):
|
||||
|
||||
- when (0, 0), the nav_split was between two nav_list_items at the same level;
|
||||
|
||||
- when (0, N+1), all the nav_list_ends in the nav_split are in PAGES or in one
|
||||
COLLECTION;
|
||||
|
||||
- when (M+1, 0), M must be 0 (because two nav_lists in the same nav_split must
|
||||
be separated by at least one nav_list_end);
|
||||
|
||||
- when (M+1, N+1), the nav_split must contain either:
|
||||
- the end of PAGES followed by the start of EXTERNALS, or
|
||||
- the end of PAGES followed by the start of a COLLECTION, or
|
||||
- the end of EXTERNALS followed by the start of a COLLECTION, or
|
||||
- the end of one COLLECTION followed by the start of another, or
|
||||
- (in the first nav_split) one or more empty non-foldable COLLECTIONS
|
||||
followed by the start of a COLLECTION.
|
||||
In general, nav_levels[0] here needs to be incremented by nav_list_count.
|
||||
However, a nav_split that contains the end of an empty foldable collection
|
||||
followed by the just the start of a collection has two occurrences of nav_list,
|
||||
and the increment needs to be one less; similarly when the first nav_split
|
||||
starts with an empty non-foldable collection.
|
||||
{%- endcomment %}
|
||||
|
||||
{%- for nav_split in nav_splits -%}
|
||||
|
||||
{%- assign nav_list_less = nav_split | remove: nav_list -%}
|
||||
{%- assign nav_list_count =
|
||||
nav_split.size | minus: nav_list_less.size |
|
||||
divided_by: nav_list.size -%}
|
||||
|
||||
{%- assign nav_list_end_less = nav_split | remove: nav_list_end -%}
|
||||
{%- assign nav_list_end_count =
|
||||
nav_split.size | minus: nav_list_end_less.size |
|
||||
divided_by: nav_list_end.size -%}
|
||||
|
||||
{%- if nav_list_count == 0 and nav_list_end_count == 0 -%}
|
||||
|
||||
{%- assign nav_index = nav_levels[-1] | plus: 1 -%}
|
||||
{%- assign nav_levels = nav_levels | pop | push: nav_index -%}
|
||||
|
||||
{%- elsif nav_list_count == 0 and nav_list_end_count >= 1 -%}
|
||||
|
||||
{%- assign nav_slice_size = nav_levels.size | minus: nav_list_end_count -%}
|
||||
{%- assign nav_levels = nav_levels | slice: 0, nav_slice_size -%}
|
||||
{%- assign nav_index = nav_levels[-1] | plus: 1 -%}
|
||||
{%- assign nav_levels = nav_levels | pop | push: nav_index -%}
|
||||
|
||||
{%- elsif nav_list_count == 1 and nav_list_end_count == 0 -%}
|
||||
|
||||
{%- if nav_split contains nav_category_list -%}
|
||||
{%- assign nav_levels = nav_levels | push: 0 -%}
|
||||
{%- else -%}
|
||||
{%- assign nav_levels = nav_levels | push: 1 -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- elsif nav_list_count >= 1 and nav_list_end_count >= 1 -%}
|
||||
|
||||
{%- assign nav_index = nav_levels[0] | plus: nav_list_count -%}
|
||||
{%- if nav_levels[-1] == 0 or forloop.first -%}
|
||||
{%- assign nav_index = nav_index | minus: 1 -%}
|
||||
{%- endif -%}
|
||||
{%- assign nav_levels = nav_levels | slice: 0, 0 | push: nav_index -%}
|
||||
{%- if nav_split contains nav_category_list -%}
|
||||
{%- assign nav_levels = nav_levels | push: 0 -%}
|
||||
{%- else -%}
|
||||
{%- assign nav_levels = nav_levels | push: 1 -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- endif -%}
|
||||
|
||||
{%- endfor -%}
|
||||
|
||||
{%- assign nav_levels = nav_levels | where_exp: "item", "item >= 1" -%}
|
||||
|
||||
{%- endif -%}
|
||||
|
||||
{%- comment -%}
|
||||
The generated CSS depends on the position of the current page in each level in
|
||||
the navigation.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- if nav_levels[1] == nil -%}
|
||||
|
||||
{{ activation_no_nav_link }}
|
||||
|
||||
{%- else -%}
|
||||
|
||||
{%- if nav_levels[2] == nil and nav_levels[3] -%}
|
||||
|
||||
{{ activation_no_nav_link }}
|
||||
|
||||
{%- else -%}
|
||||
|
||||
{%- comment -%}
|
||||
The site-nav is:
|
||||
- an optional ul.nav-list with li.nav-list-items for non-collection top-level pages
|
||||
- an optional ul.nav-list with li.nav-list-item.externals
|
||||
- any number of just-the-docs.collections
|
||||
|
||||
A non-foldable collection is:
|
||||
- a div.nav-category with the collection name, followed by:
|
||||
- a ul.nav-list with li.nav-list-items for its top-level pages
|
||||
|
||||
A foldable collection is:
|
||||
- a ul.nav-list.nav-category-list with a single li.nav-list-item containing:
|
||||
- an optional button with the expander svg
|
||||
- a div.nav-category with the collection name
|
||||
- a ul.nav-list with li.nav-list-items for its top-level pages
|
||||
|
||||
The generated CSS uses:
|
||||
- activation_collection_prefix, to select the site-nav > ul.nav-list for the page
|
||||
- activation_other_collection_prefix, to select all the other site-nav > ul.nav-lists
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- if page.collection == nil -%}
|
||||
|
||||
{%- capture activation_collection_prefix -%}
|
||||
.site-nav > ul.nav-list:first-child
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- capture activation_other_collection_prefix -%}
|
||||
.site-nav > ul.nav-list:not(:first-child)
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- else -%}
|
||||
|
||||
{%- capture activation_collection_prefix -%}
|
||||
.site-nav > ul:nth-of-type({{ nav_levels[0] }})
|
||||
{%- if site.just_the_docs.collections[page.collection].nav_fold %} > li > ul
|
||||
{%- endif -%}
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- capture activation_other_collection_prefix -%}
|
||||
.site-nav > ul:not(:nth-of-type({{ nav_levels[0] }}))
|
||||
{%- endcapture -%}
|
||||
|
||||
{%- endif -%}
|
||||
|
||||
{%- comment -%}
|
||||
The required background image of the link to the current page may involve SCSS.
|
||||
To avoid page-dependent SCSS, all nav links initially have that background image.
|
||||
The following rule removes the image from the links to all parents, siblings,
|
||||
and children of the current page.
|
||||
{%- endcomment %}
|
||||
|
||||
{% if nav_levels[3] -%}
|
||||
|
||||
{{ activation_collection_prefix }} > li > a,
|
||||
{{ activation_collection_prefix }} > li > ul > li > a,
|
||||
{{ activation_collection_prefix }} > li > ul > li > ul > li:not(:nth-child({{ nav_levels[3] }})) > a {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
{%- elsif nav_levels[2] -%}
|
||||
|
||||
{{ activation_collection_prefix }} > li > a,
|
||||
{{ activation_collection_prefix }} > li > ul > li:not(:nth-child({{ nav_levels[2] }})) > a,
|
||||
{{ activation_collection_prefix }} > li > ul > li > ul > li > a {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
{%- else -%}
|
||||
|
||||
{{ activation_collection_prefix }} > li:not(:nth-child({{ nav_levels[1] }})) > a,
|
||||
{{ activation_collection_prefix }} > li > ul > li > a,
|
||||
{{ activation_collection_prefix }} > li > ul > li > ul > li > a {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
{%- endif %}
|
||||
|
||||
{%- comment -%}
|
||||
The following rule removes the image from the links to pages in other collections.
|
||||
{%- endcomment %}
|
||||
|
||||
{{ activation_other_collection_prefix }} a,
|
||||
.site-nav li.external a {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
{%- comment -%}
|
||||
The following rule styles the link to the current page.
|
||||
{%- endcomment %}
|
||||
|
||||
{{ activation_collection_prefix }} > li:nth-child({{ nav_levels[1] }})
|
||||
{%- if nav_levels[2] %} > ul > li:nth-child({{ nav_levels[2] }})
|
||||
{%- if nav_levels[3] %} > ul > li:nth-child({{ nav_levels[3] }})
|
||||
{%- endif -%}
|
||||
{%- endif %} > a {
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
{%- comment -%}
|
||||
The following rules unfold all collections, and display the links to any children
|
||||
of the current page.
|
||||
|
||||
To avoid dependence on the SCSS variable nav-list-expander-right, the direction
|
||||
of the rotation of the expander icon is fixed, and corresponds to the appearance
|
||||
when nav-list-expander-right is true. This results in a minor visual difference
|
||||
between the appearance of active expander icons when JS is enabled/disabled and
|
||||
nav-list-expander-right is false, which seems unavoidable.
|
||||
{%- endcomment %}
|
||||
|
||||
{%- if site.just_the_docs.collections %}
|
||||
.site-nav > ul.nav-category-list > li > button svg,
|
||||
{% endif -%}
|
||||
{{ activation_collection_prefix }} > li:nth-child({{ nav_levels[1] }}) > button svg
|
||||
{%- if nav_levels[2] -%},
|
||||
{{ activation_collection_prefix }} > li:nth-child({{ nav_levels[1] }}) > ul > li:nth-child({{ nav_levels[2] }}) > button svg
|
||||
{%- endif %} {
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
|
||||
{%- if site.just_the_docs.collections %}
|
||||
.site-nav > ul.nav-category-list > li.nav-list-item > ul.nav-list,
|
||||
{% endif -%}
|
||||
{{ activation_collection_prefix }} > li.nav-list-item:nth-child({{ nav_levels[1] }}) > ul.nav-list
|
||||
{%- if nav_levels[2] %},
|
||||
{{ activation_collection_prefix }} > li.nav-list-item:nth-child({{ nav_levels[1] }}) > ul.nav-list > li.nav-list-item:nth-child({{ nav_levels[2] }}) > ul.nav-list
|
||||
{%- endif %} {
|
||||
display: block;
|
||||
}
|
||||
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
@@ -4,7 +4,9 @@ $logo: "{{ site.logo | relative_url }}";
|
||||
@import "./support/support";
|
||||
@import "./custom/setup";
|
||||
@import "./color_schemes/light";
|
||||
{% unless include.color_scheme == "light" %}
|
||||
@import "./color_schemes/{{ include.color_scheme }}";
|
||||
{% endunless %}
|
||||
@import "./modules";
|
||||
{% include css/callouts.scss.liquid color_scheme = include.color_scheme %}
|
||||
{% include css/custom.scss.liquid %}
|
||||
|
23
_includes/favicon.html
Normal file
23
_includes/favicon.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{%- comment -%}
|
||||
Include as: {%- include_cached favicon.html -%}
|
||||
Depends on: site.static_files.
|
||||
Results in: HTML for a link to an existing `favicon.ico` file.
|
||||
Overwrites:
|
||||
file.
|
||||
|
||||
The endoflife.date site has 226 pages and 3410 static files. @marcwrobel pointed
|
||||
out that the time taken by evaluating the code in this file on every page when
|
||||
building that site was significant, and suggested making it optional. As it is
|
||||
page-independent, it can easily be cached. Doing that reduced the time taken by
|
||||
rendering `_includes/head.html` from 15.294s to 10.760s, thereby reducing the
|
||||
total build time from 26.074s to 21.656s -- a saving of about 17%.
|
||||
{%- endcomment -%}
|
||||
|
||||
{% for file in site.static_files %}
|
||||
{% if file.path == site.favicon_ico or file.path == '/favicon.ico' %}
|
||||
{% assign favicon = true %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if favicon %}
|
||||
<link rel="icon" href="{{ site.favicon_ico | default: '/favicon.ico' | relative_url }}" type="image/x-icon">
|
||||
{% endif %}
|
@@ -1,29 +1,37 @@
|
||||
{%- comment -%}
|
||||
This file can be used to fix the HTML produced by Jekyll for highlighted
|
||||
code with line numbers.
|
||||
This file was previously used to "fix" the HTML produced by Jekyll for
|
||||
highlighted code with line numbers. While it often resolves layout issues
|
||||
from the missing HTML tags, it still generates invalid HTML (by placing
|
||||
a `<table>` element within a `<code>` block). As such, we no longer
|
||||
recommend using this workaround. For more information, see the
|
||||
"Code snippets with line numbers" docs page:
|
||||
https://just-the-docs.com/docs/ui-components/code/line-numbers/
|
||||
(or, docs/ui-components/line-nos.md/)
|
||||
|
||||
It works with `{% highlight some_language linenos %}...{% endhighlight %}`
|
||||
and with the Kramdown option to add line numbers to fenced code.
|
||||
The next portion of this file, including the comments and the workaround,
|
||||
are preserved for backwards comptability.
|
||||
|
||||
The implementation was derived from the workaround provided by
|
||||
ACKNOWLEDGEMENTS
|
||||
|
||||
The implementation was derived from the workaround provided by
|
||||
Dmitry Hrabrov (DeXP) at
|
||||
https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901
|
||||
|
||||
EXPLANATION
|
||||
EXPLANATION (OLD)
|
||||
|
||||
The HTML produced by Rouge highlighting with lie numbers is of the form
|
||||
`code table`. Jekyll (<= 4.1.1) always wraps the highlighted HTML
|
||||
The HTML produced by Rouge highlighting with line numbers is of the form
|
||||
`code table`. Jekyll always wraps the highlighted HTML
|
||||
with `pre`. This wrapping is not only unnecessary, but also transforms
|
||||
the conforming HTML produced by Rouge to non-conforming HTML, which
|
||||
results in HTML validation error reports.
|
||||
results in HTML validation error reports.
|
||||
|
||||
The fix removes the outer `pre` tags whenever they contain the pattern
|
||||
`<table class="rouge-table">`.
|
||||
|
||||
|
||||
Apart from avoiding HTML validation errors, the fix allows the use of
|
||||
the [Jekyll layout for compressing HTML](http://jch.penibelst.de),
|
||||
which relies on `pre` tags not being nested, according to
|
||||
https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-172069842
|
||||
https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-172069842
|
||||
|
||||
USAGE
|
||||
|
||||
@@ -48,7 +56,7 @@ Some code
|
||||
|
||||
CAVEATS
|
||||
|
||||
The above does not work when `Some code` happens to contain the matched string
|
||||
The above does not work when `Some code` happens to contain the matched string
|
||||
`<table class="rouge-table">`.
|
||||
|
||||
The use of this file overwrites the variable `fix_linenos_code` with `nil`.
|
||||
|
@@ -1,9 +1,27 @@
|
||||
{%- comment -%}
|
||||
Include as: {%- include head.html -%}
|
||||
Depends on: site.ga_tracking, site.ga_tracking_anonymize_ip,
|
||||
site.search_enabled, site.static_files, site.favicon_ico.
|
||||
Results in: HTML for the head element.
|
||||
Includes:
|
||||
css/activation.scss.liquid, head_custom.html.
|
||||
Overwrites:
|
||||
ga_tracking_ids, ga_property, file, favicon.
|
||||
Should not be cached, because included files depend on page.
|
||||
{%- endcomment -%}
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
|
||||
|
||||
<link rel="stylesheet" href="{{ '/assets/css/just-the-docs-default.css' | relative_url }}">
|
||||
|
||||
<link rel="stylesheet" href="{{ '/assets/css/just-the-docs-head-nav.css' | relative_url }}" id="jtd-head-nav-stylesheet">
|
||||
|
||||
<style id="jtd-nav-activation">
|
||||
{% include css/activation.scss.liquid %}
|
||||
</style>
|
||||
|
||||
{% if site.ga_tracking != nil %}
|
||||
{% assign ga_tracking_ids = site.ga_tracking | split: "," %}
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id={{ ga_tracking_ids.first }}"></script>
|
||||
@@ -22,26 +40,11 @@
|
||||
<script src="{{ '/assets/js/vendor/lunr.min.js' | relative_url }}"></script>
|
||||
{% endif %}
|
||||
|
||||
{% if site.mermaid %}
|
||||
{% if site.mermaid.path %}
|
||||
<script src="{{ site.mermaid.path | relative_url }}"></script>
|
||||
{% else %}
|
||||
<script src="https://cdn.jsdelivr.net/npm/mermaid@{{ site.mermaid.version }}/dist/mermaid.min.js"></script>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<script src="{{ '/assets/js/just-the-docs.js' | relative_url }}"></script>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
{% for file in site.static_files %}
|
||||
{% if file.path == site.favicon_ico or file.path == '/favicon.ico' %}
|
||||
{% assign favicon = true %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if favicon %}
|
||||
<link rel="icon" href="{{ site.favicon_ico | default: '/favicon.ico' | relative_url }}" type="image/x-icon">
|
||||
{% endif %}
|
||||
{% include_cached favicon.html %}
|
||||
|
||||
{% seo %}
|
||||
|
||||
|
@@ -1,251 +0,0 @@
|
||||
{%- comment -%}
|
||||
The `nav_order` values of pages affect the order in which they are shown in
|
||||
the navigation panel and in the automatically generated tables of contents.
|
||||
Sibling pages with the same `nav_order` value may be shown in any order.
|
||||
Sibling pages with no `nav_order` value are shown after all pages that have
|
||||
explicit `nav_order` values, ordered by their `title` values.
|
||||
|
||||
The `nav_order` and `title` values can be numbers or strings. To avoid build
|
||||
failures, we sort numbers and strings separately. We sort numbers by their
|
||||
values, and strings lexicographically. The case-sensitivity of string sorting
|
||||
is determined by the configuration setting of `nav_sort`. Pages with no `title`
|
||||
value are excluded from the navigation.
|
||||
|
||||
Note: Numbers used as `title` or `nav_order` values should not be in quotes,
|
||||
unless you intend them to be lexicographically ordered. Numbers are written
|
||||
without spaces or thousands-separators. Negative numbers are preceded by `-`.
|
||||
Floats are written with the integral and fractional parts separated by `.`.
|
||||
(Bounds on the magnitude and precision are presumably the same as in Liquid.)
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- assign title_pages = include.pages
|
||||
| where_exp: "item", "item.title != nil" -%}
|
||||
|
||||
{%- comment -%}
|
||||
A page with `nav_exclude: true` does not appear in the main navigation.
|
||||
If it has a `parent`, it may appear in the parent's table of contents.
|
||||
If it specifies `has_children: true`, it should appear in the breadcrumbs
|
||||
of the child pages, but its order in relation to other pages is irrelevant.
|
||||
Pages that never appear can be removed from the pages that need to be sorted.
|
||||
This optimisation can be significant on a site with many pages.
|
||||
|
||||
In Jekyll 4, the pages to be sorted can be filtered by:
|
||||
|
||||
{%- assign title_pages = title_pages
|
||||
| where_exp: "item", "item.nav_exclude != true or item.parent != nil" -%}
|
||||
|
||||
That filter is not allowed in Jekyll 3. The following iterative code gives the
|
||||
same effect, but it is activated only when it will filter more than 50% of the
|
||||
pages.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- unless title_pages == empty -%}
|
||||
{%- assign unsorted_pages = title_pages
|
||||
| where_exp: "item", "item.parent == nil"
|
||||
| where_exp: "item", "item.nav_exclude == true" -%}
|
||||
{%- assign title_pages_size = title_pages.size -%}
|
||||
{%- assign unsorted_pages_percent = unsorted_pages.size
|
||||
| times: 100 | divided_by: title_pages_size -%}
|
||||
{%- if unsorted_pages_percent > 50 -%}
|
||||
{%- assign sorted_pages = "" | split: "" -%}
|
||||
{%- for item in title_pages -%}
|
||||
{%- if item.nav_exclude != true or item.parent -%}
|
||||
{%- assign sorted_pages = sorted_pages | push: item -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- assign title_pages = sorted_pages -%}
|
||||
{%- endif -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- assign nav_order_pages = title_pages
|
||||
| where_exp: "item", "item.nav_order != nil" -%}
|
||||
{%- assign title_order_pages = title_pages
|
||||
| where_exp: "item", "item.nav_order == nil" -%}
|
||||
|
||||
{%- comment -%}
|
||||
Divide the arrays of `nav_order_pages` and `title_order_pages` according to
|
||||
the type of value.
|
||||
|
||||
The first character of the result of `jsonify` is `"` only for strings.
|
||||
Grouping by a single character also ensures the number of groups is small.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- assign nav_number_pages = "" | split: "" -%}
|
||||
{%- assign nav_string_pages = "" | split: "" -%}
|
||||
{%- assign nav_order_groups = nav_order_pages
|
||||
| group_by_exp: "item", "item.nav_order | jsonify | slice: 0" -%}
|
||||
{%- for group in nav_order_groups -%}
|
||||
{%- if group.name == '"' -%}
|
||||
{%- assign nav_string_pages = group.items -%}
|
||||
{%- else -%}
|
||||
{%- assign nav_number_pages = nav_number_pages | concat: group.items -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
|
||||
{%- unless nav_number_pages == empty -%}
|
||||
{%- assign nav_number_pages = nav_number_pages | sort: "nav_order" -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- unless nav_string_pages == empty -%}
|
||||
{%- if site.nav_sort == 'case_insensitive' -%}
|
||||
{%- assign nav_string_pages = nav_string_pages | sort_natural: "nav_order" -%}
|
||||
{%- else -%}
|
||||
{%- assign nav_string_pages = nav_string_pages | sort: "nav_order" -%}
|
||||
{%- endif -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- assign title_number_pages = "" | split: "" -%}
|
||||
{%- assign title_string_pages = "" | split: "" -%}
|
||||
{%- assign title_order_groups = title_order_pages
|
||||
| group_by_exp: "item", "item.title | jsonify | slice: 0" -%}
|
||||
{%- for group in title_order_groups -%}
|
||||
{%- if group.name == '"' -%}
|
||||
{%- assign title_string_pages = group.items -%}
|
||||
{%- else -%}
|
||||
{%- assign title_number_pages = title_number_pages | concat: group.items -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
|
||||
{%- unless title_number_pages == empty -%}
|
||||
{%- assign title_number_pages = title_number_pages | sort: "title" -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- unless title_string_pages == empty -%}
|
||||
{%- if site.nav_sort == 'case_insensitive' -%}
|
||||
{%- assign title_string_pages = title_string_pages | sort_natural: "title" -%}
|
||||
{%- else -%}
|
||||
{%- assign title_string_pages = title_string_pages | sort: "title" -%}
|
||||
{%- endif -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- assign pages_list = nav_number_pages | concat: nav_string_pages
|
||||
| concat: title_number_pages | concat: title_string_pages -%}
|
||||
|
||||
{%- assign first_level_pages = pages_list
|
||||
| where_exp: "item", "item.parent == nil" -%}
|
||||
{%- assign second_level_pages = pages_list
|
||||
| where_exp: "item", "item.parent != nil"
|
||||
| where_exp: "item", "item.grand_parent == nil" -%}
|
||||
{%- assign third_level_pages = pages_list
|
||||
| where_exp: "item", "item.grand_parent != nil" -%}
|
||||
|
||||
{%- comment -%}
|
||||
The order of sibling pages in `pages_list` determines the order of display of
|
||||
links to them in lists of navigation links and in auto-generated TOCs.
|
||||
|
||||
Note that Liquid evaluates conditions from right to left (and it does not allow
|
||||
the use of parentheses). Some conditions are not so easy to express clearly...
|
||||
|
||||
For example, consider the following condition:
|
||||
|
||||
C: page.collection = = include.key and
|
||||
page.url = = node.url or
|
||||
page.grand_parent = = node.title or
|
||||
page.parent = = node.title and
|
||||
page.grand_parent = = nil
|
||||
|
||||
Here, `node` is a first-level page. The last part of the condition
|
||||
-- namely: `page.parent = = node.title and page.grand_parent = = nil` --
|
||||
is evaluated first; it holds if and only if `page` is a child of `node`.
|
||||
|
||||
The condition `page.grand_parent = = node.title or ...` holds when
|
||||
`page` is a grandchild of node, OR `...` holds.
|
||||
|
||||
The condition `page.url = = node.url or ...` holds when
|
||||
`page` is `node`, OR `...` holds.
|
||||
|
||||
The condition C: `page.collection = = include.key and ...` holds when we are
|
||||
generating the nav links for a collection that includes `page`, AND `...` holds.
|
||||
{%- endcomment -%}
|
||||
|
||||
<ul class="nav-list">
|
||||
{%- for node in first_level_pages -%}
|
||||
{%- unless node.nav_exclude -%}
|
||||
<li class="nav-list-item{% if page.collection == include.key and page.url == node.url or page.grand_parent == node.title or page.parent == node.title and page.grand_parent == nil %} active{% endif %}">
|
||||
{%- if node.has_children -%}
|
||||
<a href="#" class="nav-list-expander" aria-label="toggle links in {{ node.title }} category">
|
||||
<svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
{%- endif -%}
|
||||
<a href="{{ node.url | relative_url }}" class="nav-list-link{% if page.url == node.url %} active{% endif %}">{{ node.title }}</a>
|
||||
{%- if node.has_children -%}
|
||||
{%- assign children_list = second_level_pages
|
||||
| where: "parent", node.title -%}
|
||||
{%- if node.child_nav_order == 'desc' or node.child_nav_order == 'reversed' -%}
|
||||
{%- assign children_list = children_list | reverse -%}
|
||||
{%- endif -%}
|
||||
<ul class="nav-list">
|
||||
{%- for child in children_list -%}
|
||||
{%- unless child.nav_exclude -%}
|
||||
<li class="nav-list-item {% if page.url == child.url or page.parent == child.title %} active{% endif %}">
|
||||
{%- if child.has_children -%}
|
||||
<a href="#" class="nav-list-expander" aria-label="toggle links in {{ child.title }} category">
|
||||
<svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
{%- endif -%}
|
||||
<a href="{{ child.url | relative_url }}" class="nav-list-link{% if page.url == child.url %} active{% endif %}">{{ child.title }}</a>
|
||||
{%- if child.has_children -%}
|
||||
{%- assign grand_children_list = third_level_pages
|
||||
| where: "parent", child.title
|
||||
| where: "grand_parent", node.title -%}
|
||||
{%- if child.child_nav_order == 'desc' or child.child_nav_order == 'reversed' -%}
|
||||
{%- assign grand_children_list = grand_children_list | reverse -%}
|
||||
{%- endif -%}
|
||||
<ul class="nav-list">
|
||||
{%- for grand_child in grand_children_list -%}
|
||||
{%- unless grand_child.nav_exclude -%}
|
||||
<li class="nav-list-item {% if page.url == grand_child.url %} active{% endif %}">
|
||||
<a href="{{ grand_child.url | relative_url }}" class="nav-list-link{% if page.url == grand_child.url %} active{% endif %}">{{ grand_child.title }}</a>
|
||||
</li>
|
||||
{%- endunless -%}
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{%- endif -%}
|
||||
</li>
|
||||
{%- endunless -%}
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{%- endif -%}
|
||||
</li>
|
||||
{%- endunless -%}
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
|
||||
{%- comment -%}
|
||||
`page.collection` is the name of the Jekyll collection that contains the page,
|
||||
if any, and otherwise nil. Similarly for `include.key`.
|
||||
|
||||
If the current page is in the collection (if any) whose navigation is currently
|
||||
being generated, the following code sets `first_level_url` to the URL used in
|
||||
the page's top-level breadcrumb (if any), and `second_level_url` to that used
|
||||
in the page's second-level breadcrumb (if any).
|
||||
|
||||
For pages with children, the code also sets `toc_list` to the list of child pages,
|
||||
reversing the order if needed.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- if page.collection == include.key -%}
|
||||
{%- for node in first_level_pages -%}
|
||||
{%- if page.grand_parent == node.title or page.parent == node.title and page.grand_parent == nil -%}
|
||||
{%- assign first_level_url = node.url | relative_url -%}
|
||||
{%- endif -%}
|
||||
{%- if node.has_children -%}
|
||||
{%- assign children_list = second_level_pages | where: "parent", node.title -%}
|
||||
{%- for child in children_list -%}
|
||||
{%- if child.has_children -%}
|
||||
{%- if page.url == child.url or page.parent == child.title and page.grand_parent == child.parent -%}
|
||||
{%- assign second_level_url = child.url | relative_url -%}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- if page.has_children == true and page.has_toc != false -%}
|
||||
{%- assign toc_list = pages_list
|
||||
| where: "parent", page.title
|
||||
| where_exp: "item", "item.grand_parent == page.parent" -%}
|
||||
{%- if page.child_nav_order == 'desc' or page.child_nav_order == 'reversed' -%}
|
||||
{%- assign toc_list = toc_list | reverse -%}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
109
_includes/sorted_pages.html
Normal file
109
_includes/sorted_pages.html
Normal file
@@ -0,0 +1,109 @@
|
||||
{%- comment -%}
|
||||
Include as: {%- include sorted_pages.html pages=array_of_pages -%}
|
||||
Depends on: include.pages.
|
||||
Assigns to: sorted_pages.
|
||||
Overwrites:
|
||||
nav_order_pages, title_order_pages, double_quote, empty_array,
|
||||
nav_number_pages, nav_string_pages, nav_order_groups, group,
|
||||
title_number_pages, title_string_pages, title_order_groups.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- comment -%}
|
||||
The `nav_order` values of pages affect the order in which they are shown in
|
||||
the navigation panel and in the automatically generated tables of contents.
|
||||
Sibling pages with the same `nav_order` value may be shown in any order.
|
||||
Sibling pages with no `nav_order` value are shown after all pages that have
|
||||
explicit `nav_order` values, ordered by their `title` values.
|
||||
|
||||
The `nav_order` and `title` values can be numbers or strings. To avoid build
|
||||
failures, we sort numbers and strings separately. We sort numbers by their
|
||||
values, and strings lexicographically. The case-sensitivity of string sorting
|
||||
is determined by the configuration setting of `nav_sort`. Pages with no `title`
|
||||
value are excluded from the navigation.
|
||||
|
||||
Note: Numbers used as `title` or `nav_order` values should not be in quotes,
|
||||
unless you intend them to be lexicographically ordered. Numbers are written
|
||||
without spaces or thousands-separators. Negative numbers are preceded by `-`.
|
||||
Floats are written with the integral and fractional parts separated by `.`.
|
||||
(Bounds on the magnitude and precision are presumably the same as in Liquid.)
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- assign nav_order_pages = include.pages
|
||||
| where_exp: "item", "item.nav_order != nil" -%}
|
||||
{%- assign title_order_pages = include.pages
|
||||
| where_exp: "item", "item.nav_order == nil" -%}
|
||||
|
||||
{%- comment -%}
|
||||
First, filter `nav_order_pages` and `title_order_pages` according to the type
|
||||
of value to be used for sorting.
|
||||
|
||||
The first character of the result of filtering with `jsonify` is `"` only for
|
||||
strings. Removing `"` from its `slice : 0` has size 0 for strings and 1 for
|
||||
numbers, so grouping the pages gives at most two groups.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- assign double_quote = '"' -%}
|
||||
{%- assign empty_array = "" | split: "" -%}
|
||||
|
||||
{%- assign nav_string_pages = empty_array -%}
|
||||
{%- assign nav_number_pages = empty_array -%}
|
||||
{%- unless nav_order_pages == empty -%}
|
||||
{%- assign nav_order_groups = nav_order_pages
|
||||
| group_by_exp: "item",
|
||||
"item.nav_order | jsonify | slice: 0 | remove: double_quote | size" -%}
|
||||
{%- for group in nav_order_groups -%}
|
||||
{%- if group.name == 0 -%}
|
||||
{%- assign nav_string_pages = group.items -%}
|
||||
{%- elsif group.name == 1 -%}
|
||||
{%- assign nav_number_pages = group.items -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- assign title_string_pages = empty_array -%}
|
||||
{%- assign title_number_pages = empty_array -%}
|
||||
{%- unless title_order_pages == empty -%}
|
||||
{%- assign title_order_groups = title_order_pages
|
||||
| group_by_exp: "item",
|
||||
"item.title | jsonify | slice: 0 | remove: double_quote | size" -%}
|
||||
{%- for group in title_order_groups -%}
|
||||
{%- if group.name == 0 -%}
|
||||
{%- assign title_string_pages = group.items -%}
|
||||
{%- elsif group.name == 1 -%}
|
||||
{%- assign title_number_pages = group.items -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- comment -%}
|
||||
Now sort each array of pages separately, then concatenate the sorted arrays.
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- unless nav_number_pages == empty -%}
|
||||
{%- assign nav_number_pages = nav_number_pages | sort: "nav_order" -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- unless nav_string_pages == empty -%}
|
||||
{%- if site.nav_sort == 'case_insensitive' -%}
|
||||
{%- assign nav_string_pages = nav_string_pages | sort_natural: "nav_order" -%}
|
||||
{%- else -%}
|
||||
{%- assign nav_string_pages = nav_string_pages | sort: "nav_order" -%}
|
||||
{%- endif -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- unless title_number_pages == empty -%}
|
||||
{%- assign title_number_pages = title_number_pages | sort: "title" -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- unless title_string_pages == empty -%}
|
||||
{%- if site.nav_sort == 'case_insensitive' -%}
|
||||
{%- assign title_string_pages = title_string_pages | sort_natural: "title" -%}
|
||||
{%- else -%}
|
||||
{%- assign title_string_pages = title_string_pages | sort: "title" -%}
|
||||
{%- endif -%}
|
||||
{%- endunless -%}
|
||||
|
||||
{%- assign sorted_pages = nav_number_pages
|
||||
| concat: nav_string_pages
|
||||
| concat: title_number_pages
|
||||
| concat: title_string_pages -%}
|
@@ -1,5 +1,5 @@
|
||||
{% if site.logo %}
|
||||
<div class="site-logo"></div>
|
||||
<div class="site-logo" role="img" aria-label="{{ site.title }}"></div>
|
||||
{% else %}
|
||||
{{ site.title }}
|
||||
{% endif %}
|
||||
|
@@ -12,21 +12,21 @@ layout: table_wrappers
|
||||
{% include components/sidebar.html %}
|
||||
<div class="main" id="top">
|
||||
{% include components/header.html %}
|
||||
<div id="main-content-wrap" class="main-content-wrap">
|
||||
<div class="main-content-wrap">
|
||||
{% include components/breadcrumbs.html %}
|
||||
<div id="main-content" class="main-content" role="main">
|
||||
{% if site.heading_anchors != false %}
|
||||
{% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><use xlink:href=\"#svg-link\"></use></svg>" anchorClass="anchor-heading" anchorAttrs="aria-labelledby=\"%html_id%\"" %}
|
||||
{% else %}
|
||||
{{ content }}
|
||||
{% endif %}
|
||||
|
||||
{% if page.has_children == true and page.has_toc != false %}
|
||||
{% include components/children_nav.html toc_list=toc_list %}
|
||||
{% endif %}
|
||||
<div id="main-content" class="main-content">
|
||||
<main>
|
||||
{% if site.heading_anchors != false %}
|
||||
{% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><use xlink:href=\"#svg-link\"></use></svg>" anchorClass="anchor-heading" anchorAttrs="aria-labelledby=\"%html_id%\"" %}
|
||||
{% else %}
|
||||
{{ content }}
|
||||
{% endif %}
|
||||
|
||||
{% if page.has_children == true and page.has_toc != false %}
|
||||
{% include components/children_nav.html %}
|
||||
{% endif %}
|
||||
</main>
|
||||
{% include components/footer.html %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% if site.search_enabled != false %}
|
||||
|
@@ -9,33 +9,7 @@ layout: table_wrappers
|
||||
<body>
|
||||
<a class="skip-to-main" href="#main-content">Skip to main content</a>
|
||||
{% include icons/icons.html %}
|
||||
{% comment %}
|
||||
This is a bandaid fix to properly render breadcrumbs; as of now, there is some variable leakage between the sidebar component (which computes parents, grandparents) and the breadcrumbs component. We plan to remove this in a future release to deduplicate code.
|
||||
|
||||
For more context, see https://github.com/just-the-docs/just-the-docs/pull/1058#discussion_r1057014053
|
||||
{% endcomment %}
|
||||
{% capture nav %}
|
||||
{% assign pages_top_size = site.html_pages
|
||||
| where_exp:"item", "item.title != nil"
|
||||
| where_exp:"item", "item.parent == nil"
|
||||
| where_exp:"item", "item.nav_exclude != true"
|
||||
| size %}
|
||||
{% if pages_top_size > 0 %}
|
||||
{% include nav.html pages=site.html_pages key=nil %}
|
||||
{% endif %}
|
||||
{% if site.just_the_docs.collections %}
|
||||
{% assign collections_size = site.just_the_docs.collections | size %}
|
||||
{% for collection_entry in site.just_the_docs.collections %}
|
||||
{% assign collection_key = collection_entry[0] %}
|
||||
{% assign collection_value = collection_entry[1] %}
|
||||
{% assign collection = site[collection_key] %}
|
||||
{% if collection_value.nav_exclude != true %}
|
||||
{% include nav.html pages=collection key=collection_key %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endcapture %}
|
||||
<div id="main-content-wrap" class="main-content-wrap" id="top">
|
||||
<div class="main-content-wrap" id="top">
|
||||
{% include components/breadcrumbs.html %}
|
||||
<div id="main-content" class="main-content" role="main">
|
||||
{% if site.heading_anchors != false %}
|
||||
@@ -45,7 +19,7 @@ layout: table_wrappers
|
||||
{% endif %}
|
||||
|
||||
{% if page.has_children == true and page.has_toc != false %}
|
||||
{% include components/children_nav.html toc_list=toc_list %}
|
||||
{% include components/children_nav.html %}
|
||||
{% endif %}
|
||||
|
||||
{% include components/footer.html %}
|
||||
|
@@ -1,13 +1,12 @@
|
||||
// Base element style overrides
|
||||
// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
:root {
|
||||
color-scheme: $color-scheme;
|
||||
}
|
||||
|
||||
::selection {
|
||||
color: $white;
|
||||
background: $link-color;
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
@@ -109,6 +108,6 @@ blockquote {
|
||||
// resets user-agent stylesheets for blockquotes
|
||||
margin-block-start: 0;
|
||||
margin-inline-start: 0;
|
||||
padding-left: 15px;
|
||||
padding-left: 1rem;
|
||||
border-left: 3px solid $border-color;
|
||||
}
|
||||
|
@@ -17,7 +17,9 @@
|
||||
background-color: $base-button-color;
|
||||
border-width: 0;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
box-shadow:
|
||||
0 1px 2px rgba(0, 0, 0, 0.12),
|
||||
0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
appearance: none;
|
||||
|
||||
&:focus {
|
||||
@@ -87,7 +89,9 @@
|
||||
&:focus {
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25);
|
||||
box-shadow:
|
||||
inset 0 0 0 2px $grey-dk-100,
|
||||
0 0 0 3px rgba(blue, 0.25);
|
||||
}
|
||||
|
||||
&:focus:hover,
|
||||
@@ -111,3 +115,13 @@
|
||||
.btn-green {
|
||||
@include btn-color($white, $green-100);
|
||||
}
|
||||
|
||||
.btn-reset {
|
||||
background: none;
|
||||
border: none;
|
||||
margin: 0;
|
||||
text-align: inherit;
|
||||
font: inherit;
|
||||
border-radius: 0;
|
||||
appearance: none;
|
||||
}
|
||||
|
@@ -1,32 +1,18 @@
|
||||
$color-scheme: dark;
|
||||
$body-background-color: $grey-dk-300;
|
||||
$sidebar-color: $grey-dk-300;
|
||||
$border-color: $grey-dk-200;
|
||||
$body-text-color: $grey-lt-300;
|
||||
$body-heading-color: $grey-lt-000;
|
||||
$nav-child-link-color: $grey-dk-000;
|
||||
$search-result-preview-color: $grey-dk-000;
|
||||
$body-text-color: $grey-lt-300;
|
||||
$link-color: $blue-000;
|
||||
$btn-primary-color: $blue-200;
|
||||
$nav-child-link-color: $grey-dk-000;
|
||||
$sidebar-color: $grey-dk-300;
|
||||
$base-button-color: $grey-dk-250;
|
||||
$search-background-color: $grey-dk-250;
|
||||
$table-background-color: $grey-dk-250;
|
||||
$feedback-color: darken($sidebar-color, 3%);
|
||||
|
||||
// The following highlight theme is more legible than that used for the light color scheme
|
||||
|
||||
// @import "./vendor/OneDarkJekyll/syntax-one-dark";
|
||||
// $code-background-color: #282c34; // OneDarkJekyll default for syntax-one-dark
|
||||
// $code-linenumber-color: #abb2bf; // OneDarkJekyll .nf for syntax-one-dark
|
||||
|
||||
@import "./vendor/OneDarkJekyll/syntax-one-dark-vivid";
|
||||
|
||||
$btn-primary-color: $blue-200;
|
||||
$code-background-color: #31343f; // OneDarkJekyll default for syntax-one-dark-vivid
|
||||
$code-linenumber-color: #dee2f7; // OneDarkJekyll .nf for syntax-one-dark-vivid
|
||||
$feedback-color: darken($sidebar-color, 3%);
|
||||
$table-background-color: $grey-dk-250;
|
||||
$search-background-color: $grey-dk-250;
|
||||
$search-result-preview-color: $grey-dk-000;
|
||||
$border-color: $grey-dk-200;
|
||||
|
||||
// @import "./vendor/OneDarkJekyll/syntax-firewatch";
|
||||
// $code-background-color: #282c34; // OneDarkJekyll default for syntax-firewatch
|
||||
// $code-linenumber-color: #abb2bf; // OneDarkJekyll .nf for syntax-firewatch
|
||||
|
||||
// @import "./vendor/OneDarkJekyll/syntax-firewatch-green";
|
||||
// $code-background-color: #282c34; // OneDarkJekyll default for syntax-firewatch-green
|
||||
// $code-linenumber-color: #abb2bf; // OneDarkJekyll .nf for syntax-firewatch-green
|
||||
@import "./vendor/OneDarkJekyll/syntax"; // this is the one-dark-vivid atom syntax theme
|
||||
|
208
_sass/color_schemes/legacy_light.scss
Normal file
208
_sass/color_schemes/legacy_light.scss
Normal file
@@ -0,0 +1,208 @@
|
||||
// Moved from _sass/code.scss
|
||||
|
||||
.highlight .c {
|
||||
color: #586e75;
|
||||
} // comment //
|
||||
.highlight .err {
|
||||
color: #93a1a1;
|
||||
} // error //
|
||||
.highlight .g {
|
||||
color: #93a1a1;
|
||||
} // generic //
|
||||
.highlight .k {
|
||||
color: #859900;
|
||||
} // keyword //
|
||||
.highlight .l {
|
||||
color: #93a1a1;
|
||||
} // literal //
|
||||
.highlight .n {
|
||||
color: #93a1a1;
|
||||
} // name //
|
||||
.highlight .o {
|
||||
color: #859900;
|
||||
} // operator //
|
||||
.highlight .x {
|
||||
color: #cb4b16;
|
||||
} // other //
|
||||
.highlight .p {
|
||||
color: #93a1a1;
|
||||
} // punctuation //
|
||||
.highlight .cm {
|
||||
color: #586e75;
|
||||
} // comment.multiline //
|
||||
.highlight .cp {
|
||||
color: #859900;
|
||||
} // comment.preproc //
|
||||
.highlight .c1 {
|
||||
color: #586e75;
|
||||
} // comment.single //
|
||||
.highlight .cs {
|
||||
color: #859900;
|
||||
} // comment.special //
|
||||
.highlight .gd {
|
||||
color: #2aa198;
|
||||
} // generic.deleted //
|
||||
.highlight .ge {
|
||||
font-style: italic;
|
||||
color: #93a1a1;
|
||||
} // generic.emph //
|
||||
.highlight .gr {
|
||||
color: #dc322f;
|
||||
} // generic.error //
|
||||
.highlight .gh {
|
||||
color: #cb4b16;
|
||||
} // generic.heading //
|
||||
.highlight .gi {
|
||||
color: #859900;
|
||||
} // generic.inserted //
|
||||
.highlight .go {
|
||||
color: #93a1a1;
|
||||
} // generic.output //
|
||||
.highlight .gp {
|
||||
color: #93a1a1;
|
||||
} // generic.prompt //
|
||||
.highlight .gs {
|
||||
font-weight: bold;
|
||||
color: #93a1a1;
|
||||
} // generic.strong //
|
||||
.highlight .gu {
|
||||
color: #cb4b16;
|
||||
} // generic.subheading //
|
||||
.highlight .gt {
|
||||
color: #93a1a1;
|
||||
} // generic.traceback //
|
||||
.highlight .kc {
|
||||
color: #cb4b16;
|
||||
} // keyword.constant //
|
||||
.highlight .kd {
|
||||
color: #268bd2;
|
||||
} // keyword.declaration //
|
||||
.highlight .kn {
|
||||
color: #859900;
|
||||
} // keyword.namespace //
|
||||
.highlight .kp {
|
||||
color: #859900;
|
||||
} // keyword.pseudo //
|
||||
.highlight .kr {
|
||||
color: #268bd2;
|
||||
} // keyword.reserved //
|
||||
.highlight .kt {
|
||||
color: #dc322f;
|
||||
} // keyword.type //
|
||||
.highlight .ld {
|
||||
color: #93a1a1;
|
||||
} // literal.date //
|
||||
.highlight .m {
|
||||
color: #2aa198;
|
||||
} // literal.number //
|
||||
.highlight .s {
|
||||
color: #2aa198;
|
||||
} // literal.string //
|
||||
.highlight .na {
|
||||
color: #555;
|
||||
} // name.attribute //
|
||||
.highlight .nb {
|
||||
color: #b58900;
|
||||
} // name.builtin //
|
||||
.highlight .nc {
|
||||
color: #268bd2;
|
||||
} // name.class //
|
||||
.highlight .no {
|
||||
color: #cb4b16;
|
||||
} // name.constant //
|
||||
.highlight .nd {
|
||||
color: #268bd2;
|
||||
} // name.decorator //
|
||||
.highlight .ni {
|
||||
color: #cb4b16;
|
||||
} // name.entity //
|
||||
.highlight .ne {
|
||||
color: #cb4b16;
|
||||
} // name.exception //
|
||||
.highlight .nf {
|
||||
color: #268bd2;
|
||||
} // name.function //
|
||||
.highlight .nl {
|
||||
color: #555;
|
||||
} // name.label //
|
||||
.highlight .nn {
|
||||
color: #93a1a1;
|
||||
} // name.namespace //
|
||||
.highlight .nx {
|
||||
color: #555;
|
||||
} // name.other //
|
||||
.highlight .py {
|
||||
color: #93a1a1;
|
||||
} // name.property //
|
||||
.highlight .nt {
|
||||
color: #268bd2;
|
||||
} // name.tag //
|
||||
.highlight .nv {
|
||||
color: #268bd2;
|
||||
} // name.variable //
|
||||
.highlight .ow {
|
||||
color: #859900;
|
||||
} // operator.word //
|
||||
.highlight .w {
|
||||
color: #93a1a1;
|
||||
} // text.whitespace //
|
||||
.highlight .mf {
|
||||
color: #2aa198;
|
||||
} // literal.number.float //
|
||||
.highlight .mh {
|
||||
color: #2aa198;
|
||||
} // literal.number.hex //
|
||||
.highlight .mi {
|
||||
color: #2aa198;
|
||||
} // literal.number.integer //
|
||||
.highlight .mo {
|
||||
color: #2aa198;
|
||||
} // literal.number.oct //
|
||||
.highlight .sb {
|
||||
color: #586e75;
|
||||
} // literal.string.backtick //
|
||||
.highlight .sc {
|
||||
color: #2aa198;
|
||||
} // literal.string.char //
|
||||
.highlight .sd {
|
||||
color: #93a1a1;
|
||||
} // literal.string.doc //
|
||||
.highlight .s2 {
|
||||
color: #2aa198;
|
||||
} // literal.string.double //
|
||||
.highlight .se {
|
||||
color: #cb4b16;
|
||||
} // literal.string.escape //
|
||||
.highlight .sh {
|
||||
color: #93a1a1;
|
||||
} // literal.string.heredoc //
|
||||
.highlight .si {
|
||||
color: #2aa198;
|
||||
} // literal.string.interpol //
|
||||
.highlight .sx {
|
||||
color: #2aa198;
|
||||
} // literal.string.other //
|
||||
.highlight .sr {
|
||||
color: #dc322f;
|
||||
} // literal.string.regex //
|
||||
.highlight .s1 {
|
||||
color: #2aa198;
|
||||
} // literal.string.single //
|
||||
.highlight .ss {
|
||||
color: #2aa198;
|
||||
} // literal.string.symbol //
|
||||
.highlight .bp {
|
||||
color: #268bd2;
|
||||
} // name.builtin.pseudo //
|
||||
.highlight .vc {
|
||||
color: #268bd2;
|
||||
} // name.variable.class //
|
||||
.highlight .vg {
|
||||
color: #268bd2;
|
||||
} // name.variable.global //
|
||||
.highlight .vi {
|
||||
color: #268bd2;
|
||||
} // name.variable.instance //
|
||||
.highlight .il {
|
||||
color: #2aa198;
|
||||
} // literal.number.integer.long //
|
@@ -1,208 +1,16 @@
|
||||
// Moved from _sass/code.scss
|
||||
$color-scheme: light !default;
|
||||
$body-background-color: $white !default;
|
||||
$body-heading-color: $grey-dk-300 !default;
|
||||
$body-text-color: $grey-dk-100 !default;
|
||||
$link-color: $purple-000 !default;
|
||||
$nav-child-link-color: $grey-dk-100 !default;
|
||||
$sidebar-color: $grey-lt-000 !default;
|
||||
$base-button-color: #f7f7f7 !default;
|
||||
$btn-primary-color: $purple-100 !default;
|
||||
$code-background-color: $grey-lt-000 !default;
|
||||
$feedback-color: darken($sidebar-color, 3%) !default;
|
||||
$table-background-color: $white !default;
|
||||
$search-background-color: $white !default;
|
||||
$search-result-preview-color: $grey-dk-000 !default;
|
||||
|
||||
.highlight .c {
|
||||
color: #586e75;
|
||||
} // comment //
|
||||
.highlight .err {
|
||||
color: #93a1a1;
|
||||
} // error //
|
||||
.highlight .g {
|
||||
color: #93a1a1;
|
||||
} // generic //
|
||||
.highlight .k {
|
||||
color: #859900;
|
||||
} // keyword //
|
||||
.highlight .l {
|
||||
color: #93a1a1;
|
||||
} // literal //
|
||||
.highlight .n {
|
||||
color: #93a1a1;
|
||||
} // name //
|
||||
.highlight .o {
|
||||
color: #859900;
|
||||
} // operator //
|
||||
.highlight .x {
|
||||
color: #cb4b16;
|
||||
} // other //
|
||||
.highlight .p {
|
||||
color: #93a1a1;
|
||||
} // punctuation //
|
||||
.highlight .cm {
|
||||
color: #586e75;
|
||||
} // comment.multiline //
|
||||
.highlight .cp {
|
||||
color: #859900;
|
||||
} // comment.preproc //
|
||||
.highlight .c1 {
|
||||
color: #586e75;
|
||||
} // comment.single //
|
||||
.highlight .cs {
|
||||
color: #859900;
|
||||
} // comment.special //
|
||||
.highlight .gd {
|
||||
color: #2aa198;
|
||||
} // generic.deleted //
|
||||
.highlight .ge {
|
||||
font-style: italic;
|
||||
color: #93a1a1;
|
||||
} // generic.emph //
|
||||
.highlight .gr {
|
||||
color: #dc322f;
|
||||
} // generic.error //
|
||||
.highlight .gh {
|
||||
color: #cb4b16;
|
||||
} // generic.heading //
|
||||
.highlight .gi {
|
||||
color: #859900;
|
||||
} // generic.inserted //
|
||||
.highlight .go {
|
||||
color: #93a1a1;
|
||||
} // generic.output //
|
||||
.highlight .gp {
|
||||
color: #93a1a1;
|
||||
} // generic.prompt //
|
||||
.highlight .gs {
|
||||
font-weight: bold;
|
||||
color: #93a1a1;
|
||||
} // generic.strong //
|
||||
.highlight .gu {
|
||||
color: #cb4b16;
|
||||
} // generic.subheading //
|
||||
.highlight .gt {
|
||||
color: #93a1a1;
|
||||
} // generic.traceback //
|
||||
.highlight .kc {
|
||||
color: #cb4b16;
|
||||
} // keyword.constant //
|
||||
.highlight .kd {
|
||||
color: #268bd2;
|
||||
} // keyword.declaration //
|
||||
.highlight .kn {
|
||||
color: #859900;
|
||||
} // keyword.namespace //
|
||||
.highlight .kp {
|
||||
color: #859900;
|
||||
} // keyword.pseudo //
|
||||
.highlight .kr {
|
||||
color: #268bd2;
|
||||
} // keyword.reserved //
|
||||
.highlight .kt {
|
||||
color: #dc322f;
|
||||
} // keyword.type //
|
||||
.highlight .ld {
|
||||
color: #93a1a1;
|
||||
} // literal.date //
|
||||
.highlight .m {
|
||||
color: #2aa198;
|
||||
} // literal.number //
|
||||
.highlight .s {
|
||||
color: #2aa198;
|
||||
} // literal.string //
|
||||
.highlight .na {
|
||||
color: #555;
|
||||
} // name.attribute //
|
||||
.highlight .nb {
|
||||
color: #b58900;
|
||||
} // name.builtin //
|
||||
.highlight .nc {
|
||||
color: #268bd2;
|
||||
} // name.class //
|
||||
.highlight .no {
|
||||
color: #cb4b16;
|
||||
} // name.constant //
|
||||
.highlight .nd {
|
||||
color: #268bd2;
|
||||
} // name.decorator //
|
||||
.highlight .ni {
|
||||
color: #cb4b16;
|
||||
} // name.entity //
|
||||
.highlight .ne {
|
||||
color: #cb4b16;
|
||||
} // name.exception //
|
||||
.highlight .nf {
|
||||
color: #268bd2;
|
||||
} // name.function //
|
||||
.highlight .nl {
|
||||
color: #555;
|
||||
} // name.label //
|
||||
.highlight .nn {
|
||||
color: #93a1a1;
|
||||
} // name.namespace //
|
||||
.highlight .nx {
|
||||
color: #555;
|
||||
} // name.other //
|
||||
.highlight .py {
|
||||
color: #93a1a1;
|
||||
} // name.property //
|
||||
.highlight .nt {
|
||||
color: #268bd2;
|
||||
} // name.tag //
|
||||
.highlight .nv {
|
||||
color: #268bd2;
|
||||
} // name.variable //
|
||||
.highlight .ow {
|
||||
color: #859900;
|
||||
} // operator.word //
|
||||
.highlight .w {
|
||||
color: #93a1a1;
|
||||
} // text.whitespace //
|
||||
.highlight .mf {
|
||||
color: #2aa198;
|
||||
} // literal.number.float //
|
||||
.highlight .mh {
|
||||
color: #2aa198;
|
||||
} // literal.number.hex //
|
||||
.highlight .mi {
|
||||
color: #2aa198;
|
||||
} // literal.number.integer //
|
||||
.highlight .mo {
|
||||
color: #2aa198;
|
||||
} // literal.number.oct //
|
||||
.highlight .sb {
|
||||
color: #586e75;
|
||||
} // literal.string.backtick //
|
||||
.highlight .sc {
|
||||
color: #2aa198;
|
||||
} // literal.string.char //
|
||||
.highlight .sd {
|
||||
color: #93a1a1;
|
||||
} // literal.string.doc //
|
||||
.highlight .s2 {
|
||||
color: #2aa198;
|
||||
} // literal.string.double //
|
||||
.highlight .se {
|
||||
color: #cb4b16;
|
||||
} // literal.string.escape //
|
||||
.highlight .sh {
|
||||
color: #93a1a1;
|
||||
} // literal.string.heredoc //
|
||||
.highlight .si {
|
||||
color: #2aa198;
|
||||
} // literal.string.interpol //
|
||||
.highlight .sx {
|
||||
color: #2aa198;
|
||||
} // literal.string.other //
|
||||
.highlight .sr {
|
||||
color: #dc322f;
|
||||
} // literal.string.regex //
|
||||
.highlight .s1 {
|
||||
color: #2aa198;
|
||||
} // literal.string.single //
|
||||
.highlight .ss {
|
||||
color: #2aa198;
|
||||
} // literal.string.symbol //
|
||||
.highlight .bp {
|
||||
color: #268bd2;
|
||||
} // name.builtin.pseudo //
|
||||
.highlight .vc {
|
||||
color: #268bd2;
|
||||
} // name.variable.class //
|
||||
.highlight .vg {
|
||||
color: #268bd2;
|
||||
} // name.variable.global //
|
||||
.highlight .vi {
|
||||
color: #268bd2;
|
||||
} // name.variable.instance //
|
||||
.highlight .il {
|
||||
color: #2aa198;
|
||||
} // literal.number.integer.long //
|
||||
@import "./vendor/OneLightJekyll/syntax";
|
||||
|
@@ -1,7 +1,11 @@
|
||||
// Labels (not the form kind)
|
||||
|
||||
.label,
|
||||
.label-blue {
|
||||
// this :not() prevents a style clash with Mermaid.js's
|
||||
// diagram labels, which also use .label
|
||||
// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272
|
||||
// and the accompanying PR
|
||||
.label:not(g),
|
||||
.label-blue:not(g) {
|
||||
display: inline-block;
|
||||
padding: 0.16em 0.56em;
|
||||
margin-right: $sp-2;
|
||||
@@ -15,19 +19,19 @@
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.label-green {
|
||||
.label-green:not(g) {
|
||||
background-color: $green-200;
|
||||
}
|
||||
|
||||
.label-purple {
|
||||
.label-purple:not(g) {
|
||||
background-color: $purple-100;
|
||||
}
|
||||
|
||||
.label-red {
|
||||
.label-red:not(g) {
|
||||
background-color: $red-200;
|
||||
}
|
||||
|
||||
.label-yellow {
|
||||
.label-yellow:not(g) {
|
||||
color: $grey-dk-200;
|
||||
background-color: $yellow-200;
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@
|
||||
}
|
||||
|
||||
.site-title {
|
||||
font-size: $root-font-size !important;
|
||||
font-size: 1rem !important;
|
||||
font-weight: 700 !important;
|
||||
}
|
||||
|
||||
|
@@ -23,7 +23,9 @@
|
||||
height: $sp-8;
|
||||
overflow: hidden;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
box-shadow:
|
||||
0 1px 2px rgba(0, 0, 0, 0.12),
|
||||
0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
transition: height linear #{$transition-duration * 0.5};
|
||||
|
||||
@include mq(md) {
|
||||
@@ -42,7 +44,7 @@
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5};
|
||||
font-size: 16px;
|
||||
font-size: 1rem;
|
||||
color: $body-text-color;
|
||||
background-color: $search-background-color;
|
||||
border-top: 0;
|
||||
@@ -53,7 +55,7 @@
|
||||
|
||||
@include mq(md) {
|
||||
padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5};
|
||||
font-size: 14px;
|
||||
font-size: 0.875rem;
|
||||
background-color: $body-background-color;
|
||||
transition: padding-left linear #{$transition-duration * 0.5};
|
||||
}
|
||||
@@ -96,7 +98,9 @@
|
||||
background-color: $search-background-color;
|
||||
border-bottom-right-radius: $border-radius;
|
||||
border-bottom-left-radius: $border-radius;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
box-shadow:
|
||||
0 1px 2px rgba(0, 0, 0, 0.12),
|
||||
0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
|
||||
@include mq(md) {
|
||||
top: 100%;
|
||||
@@ -230,7 +234,9 @@
|
||||
background-color: $search-background-color;
|
||||
border: 1px solid rgba($link-color, 0.3);
|
||||
border-radius: #{$sp-9 * 0.5};
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
box-shadow:
|
||||
0 1px 2px rgba(0, 0, 0, 0.12),
|
||||
0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
@@ -244,7 +250,9 @@
|
||||
height: 0;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
opacity: 0;
|
||||
transition: opacity ease $transition-duration, width 0s $transition-duration,
|
||||
transition:
|
||||
opacity ease $transition-duration,
|
||||
width 0s $transition-duration,
|
||||
height 0s $transition-duration;
|
||||
}
|
||||
|
||||
@@ -264,7 +272,9 @@
|
||||
|
||||
@include mq(md) {
|
||||
width: $search-results-width;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
box-shadow:
|
||||
0 1px 2px rgba(0, 0, 0, 0.12),
|
||||
0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -290,7 +300,10 @@
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 1;
|
||||
transition: opacity ease $transition-duration, width 0s, height 0s;
|
||||
transition:
|
||||
opacity ease $transition-duration,
|
||||
width 0s,
|
||||
height 0s;
|
||||
}
|
||||
|
||||
@include mq(md) {
|
||||
|
@@ -1,9 +0,0 @@
|
||||
@function rem($size, $unit: "") {
|
||||
$rem-size: $size / $root-font-size;
|
||||
|
||||
@if $unit == false {
|
||||
@return #{$rem-size};
|
||||
} @else {
|
||||
@return #{$rem-size}rem;
|
||||
}
|
||||
}
|
@@ -1,9 +1,10 @@
|
||||
// Typography
|
||||
|
||||
// prettier-ignore
|
||||
$body-font-family: system-ui, -apple-system, blinkmacsystemfont, "Segoe UI",
|
||||
roboto, "Helvetica Neue", arial, sans-serif !default;
|
||||
roboto, "Helvetica Neue", arial, sans-serif, "Segoe UI Emoji" !default;
|
||||
$mono-font-family: "SFMono-Regular", menlo, consolas, monospace !default;
|
||||
$root-font-size: 16px !default; // Base font-size for rems
|
||||
$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems
|
||||
$body-line-height: 1.4 !default;
|
||||
$content-line-height: 1.6 !default;
|
||||
$body-heading-line-height: 1.25 !default;
|
||||
@@ -11,18 +12,18 @@ $body-heading-line-height: 1.25 !default;
|
||||
// Font size
|
||||
// `-sm` suffix is the size at the small (and above) media query
|
||||
|
||||
$font-size-1: 9px !default;
|
||||
$font-size-1-sm: 10px !default;
|
||||
$font-size-2: 11px !default; // h4 - uppercased!, h6 not uppercased, text-small
|
||||
$font-size-3: 12px !default; // h5
|
||||
$font-size-4: 14px !default;
|
||||
$font-size-5: 16px !default; // h3
|
||||
$font-size-6: 18px !default; // h2
|
||||
$font-size-7: 24px !default;
|
||||
$font-size-8: 32px !default; // h1
|
||||
$font-size-9: 36px !default;
|
||||
$font-size-10: 42px !default;
|
||||
$font-size-10-sm: 48px !default;
|
||||
$font-size-1: 0.5625rem !default;
|
||||
$font-size-1-sm: 0.625rem !default;
|
||||
$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small
|
||||
$font-size-3: 0.75rem !default; // h5
|
||||
$font-size-4: 0.875rem !default;
|
||||
$font-size-5: 1rem !default; // h3
|
||||
$font-size-6: 1.125rem !default; // h2
|
||||
$font-size-7: 1.5rem !default;
|
||||
$font-size-8: 2rem !default; // h1
|
||||
$font-size-9: 2.25rem !default;
|
||||
$font-size-10: 2.625rem !default;
|
||||
$font-size-10-sm: 3rem !default;
|
||||
|
||||
// Colors
|
||||
|
||||
@@ -56,19 +57,6 @@ $red-000: #f77e7e !default;
|
||||
$red-100: #f96e65 !default;
|
||||
$red-200: #e94c4c !default;
|
||||
$red-300: #dd2e2e !default;
|
||||
$body-background-color: $white !default;
|
||||
$sidebar-color: $grey-lt-000 !default;
|
||||
$search-background-color: $white !default;
|
||||
$table-background-color: $white !default;
|
||||
$code-background-color: $grey-lt-000 !default;
|
||||
$feedback-color: darken($sidebar-color, 3%) !default;
|
||||
$body-text-color: $grey-dk-100 !default;
|
||||
$body-heading-color: $grey-dk-300 !default;
|
||||
$search-result-preview-color: $grey-dk-000 !default;
|
||||
$nav-child-link-color: $grey-dk-100 !default;
|
||||
$link-color: $purple-000 !default;
|
||||
$btn-primary-color: $purple-100 !default;
|
||||
$base-button-color: #f7f7f7 !default;
|
||||
|
||||
// Spacing
|
||||
|
||||
@@ -108,22 +96,22 @@ $border-color: $grey-lt-100 !default;
|
||||
|
||||
$gutter-spacing: $sp-6 !default;
|
||||
$gutter-spacing-sm: $sp-4 !default;
|
||||
$nav-width: 264px !default;
|
||||
$nav-width-md: 248px !default;
|
||||
$nav-width: 16.5rem !default;
|
||||
$nav-width-md: 15.5rem !default;
|
||||
$nav-list-item-height: $sp-6 !default;
|
||||
$nav-list-item-height-sm: $sp-8 !default;
|
||||
$nav-list-expander-right: true;
|
||||
$content-width: 800px !default;
|
||||
$header-height: 60px !default;
|
||||
$content-width: 50rem !default;
|
||||
$header-height: 3.75rem !default;
|
||||
$search-results-width: $content-width - $nav-width !default;
|
||||
$transition-duration: 400ms;
|
||||
|
||||
// Media queries in pixels
|
||||
|
||||
$media-queries: (
|
||||
xs: 320px,
|
||||
sm: 500px,
|
||||
xs: 20rem,
|
||||
sm: 31.25rem,
|
||||
md: $content-width,
|
||||
lg: $content-width + $nav-width,
|
||||
xl: 1400px,
|
||||
xl: 87.5rem,
|
||||
) !default;
|
||||
|
@@ -4,7 +4,9 @@
|
||||
color: $fg;
|
||||
background-color: darken($bg, 2%);
|
||||
background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12);
|
||||
box-shadow:
|
||||
0 1px 3px rgba(0, 0, 0, 0.25),
|
||||
0 4px 10px rgba(0, 0, 0, 0.12);
|
||||
|
||||
&:hover,
|
||||
&.zeroclipboard-is-hover {
|
||||
|
@@ -12,12 +12,11 @@
|
||||
// If the key exists in the map
|
||||
@if $value {
|
||||
// Prints a media query based on the value
|
||||
@media (min-width: rem($value)) {
|
||||
@media (min-width: $value) {
|
||||
@content;
|
||||
}
|
||||
} @else {
|
||||
@warn "No value could be retrieved from `#{$media-query}`. "
|
||||
+ "Please make sure it is defined in `$media-queries` map.";
|
||||
@warn "No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map.";
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,3 +1,2 @@
|
||||
@import "./variables";
|
||||
@import "./functions";
|
||||
@import "./mixins/mixins";
|
||||
|
@@ -8,7 +8,9 @@
|
||||
margin-bottom: $sp-5;
|
||||
overflow-x: auto;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
box-shadow:
|
||||
0 1px 2px rgba(0, 0, 0, 0.12),
|
||||
0 3px 10px rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
|
||||
table {
|
||||
@@ -21,7 +23,7 @@ th,
|
||||
td {
|
||||
@include fs-3;
|
||||
|
||||
min-width: 120px;
|
||||
min-width: 7.5rem;
|
||||
padding: $sp-2 $sp-3;
|
||||
background-color: $table-background-color;
|
||||
border-bottom: $border rgba($border-color, 0.5);
|
||||
|
200
_sass/vendor/OneDarkJekyll/syntax-firewatch.scss
vendored
200
_sass/vendor/OneDarkJekyll/syntax-firewatch.scss
vendored
@@ -1,200 +0,0 @@
|
||||
.highlight,
|
||||
pre.highlight {
|
||||
background: #282c34;
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight pre {
|
||||
background: #282c34;
|
||||
}
|
||||
.highlight .hll {
|
||||
background: #282c34;
|
||||
}
|
||||
.highlight .c {
|
||||
color: #5c6370;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .err {
|
||||
color: #960050;
|
||||
background-color: #1e0010;
|
||||
}
|
||||
.highlight .k {
|
||||
color: #dd672c;
|
||||
}
|
||||
.highlight .l {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .n {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .o {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .p {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .cm {
|
||||
color: #5c6370;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .cp {
|
||||
color: #5c6370;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .c1 {
|
||||
color: #5c6370;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .cs {
|
||||
color: #5c6370;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .ge {
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .gs {
|
||||
font-weight: 700;
|
||||
}
|
||||
.highlight .kc {
|
||||
color: #dd672c;
|
||||
}
|
||||
.highlight .kd {
|
||||
color: #dd672c;
|
||||
}
|
||||
.highlight .kn {
|
||||
color: #dd672c;
|
||||
}
|
||||
.highlight .kp {
|
||||
color: #dd672c;
|
||||
}
|
||||
.highlight .kr {
|
||||
color: #dd672c;
|
||||
}
|
||||
.highlight .kt {
|
||||
color: #dd672c;
|
||||
}
|
||||
.highlight .ld {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .m {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .s {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .na {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .nb {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .nc {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .no {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .nd {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .ni {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .ne {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .nf {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .nl {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .nn {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .nx {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .py {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .nt {
|
||||
color: #e06c75;
|
||||
}
|
||||
.highlight .nv {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .ow {
|
||||
font-weight: 700;
|
||||
}
|
||||
.highlight .w {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
.highlight .mf {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .mh {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .mi {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .mo {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .sb {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .sc {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .sd {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .s2 {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .se {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .sh {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .si {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .sx {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .sr {
|
||||
color: #56b6c2;
|
||||
}
|
||||
.highlight .s1 {
|
||||
color: #c8ae9d;
|
||||
}
|
||||
.highlight .ss {
|
||||
color: #56b6c2;
|
||||
}
|
||||
.highlight .bp {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .vc {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .vg {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .vi {
|
||||
color: #e06c75;
|
||||
}
|
||||
.highlight .il {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .gu {
|
||||
color: #75715e;
|
||||
}
|
||||
.highlight .gd {
|
||||
color: #f92672;
|
||||
}
|
||||
.highlight .gi {
|
||||
color: #a6e22e;
|
||||
}
|
200
_sass/vendor/OneDarkJekyll/syntax-one-dark.scss
vendored
200
_sass/vendor/OneDarkJekyll/syntax-one-dark.scss
vendored
@@ -1,200 +0,0 @@
|
||||
.highlight,
|
||||
pre.highlight {
|
||||
background: #282c34;
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight pre {
|
||||
background: #282c34;
|
||||
}
|
||||
.highlight .hll {
|
||||
background: #282c34;
|
||||
}
|
||||
.highlight .c {
|
||||
color: #5c6370;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .err {
|
||||
color: #960050;
|
||||
background-color: #1e0010;
|
||||
}
|
||||
.highlight .k {
|
||||
color: #c678dd;
|
||||
}
|
||||
.highlight .l {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .n {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .o {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .p {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .cm {
|
||||
color: #5c6370;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .cp {
|
||||
color: #5c6370;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .c1 {
|
||||
color: #5c6370;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .cs {
|
||||
color: #5c6370;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .ge {
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .gs {
|
||||
font-weight: 700;
|
||||
}
|
||||
.highlight .kc {
|
||||
color: #c678dd;
|
||||
}
|
||||
.highlight .kd {
|
||||
color: #c678dd;
|
||||
}
|
||||
.highlight .kn {
|
||||
color: #c678dd;
|
||||
}
|
||||
.highlight .kp {
|
||||
color: #c678dd;
|
||||
}
|
||||
.highlight .kr {
|
||||
color: #c678dd;
|
||||
}
|
||||
.highlight .kt {
|
||||
color: #c678dd;
|
||||
}
|
||||
.highlight .ld {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .m {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .s {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .na {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .nb {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .nc {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .no {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .nd {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .ni {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .ne {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .nf {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .nl {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .nn {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .nx {
|
||||
color: #abb2bf;
|
||||
}
|
||||
.highlight .py {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .nt {
|
||||
color: #e06c75;
|
||||
}
|
||||
.highlight .nv {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .ow {
|
||||
font-weight: 700;
|
||||
}
|
||||
.highlight .w {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
.highlight .mf {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .mh {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .mi {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .mo {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .sb {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .sc {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .sd {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .s2 {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .se {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .sh {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .si {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .sx {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .sr {
|
||||
color: #56b6c2;
|
||||
}
|
||||
.highlight .s1 {
|
||||
color: #98c379;
|
||||
}
|
||||
.highlight .ss {
|
||||
color: #56b6c2;
|
||||
}
|
||||
.highlight .bp {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .vc {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .vg {
|
||||
color: #e5c07b;
|
||||
}
|
||||
.highlight .vi {
|
||||
color: #e06c75;
|
||||
}
|
||||
.highlight .il {
|
||||
color: #d19a66;
|
||||
}
|
||||
.highlight .gu {
|
||||
color: #75715e;
|
||||
}
|
||||
.highlight .gd {
|
||||
color: #f92672;
|
||||
}
|
||||
.highlight .gi {
|
||||
color: #a6e22e;
|
||||
}
|
@@ -1,3 +1,5 @@
|
||||
// Generated with OneDarkJekyll applied to Atom's One Dark Vivid theme
|
||||
|
||||
.highlight,
|
||||
pre.highlight {
|
||||
background: #31343f;
|
65
_sass/vendor/OneLightJekyll/LICENSE
vendored
Normal file
65
_sass/vendor/OneLightJekyll/LICENSE
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
OneLightJekyll relies on two works: OneDarkJekyll, and Atom's One Light theme. This file contains the licensing for all the related software.
|
||||
|
||||
---
|
||||
|
||||
OneLightJekyll (https://github.com/just-the-docs/OneLightJekyll/blob/main/LICENSE)
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 Matthew Wang
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
---
|
||||
|
||||
OneDarkJekyll (https://github.com/mgyongyosi/OneDarkJekyll/blob/master/LICENSE)
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016 Mihály Gyöngyösi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
---
|
||||
|
||||
Atom One Light (https://github.com/atom/atom/blob/master/LICENSE.md)
|
||||
|
||||
Copyright (c) 2011-2022 GitHub Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,51 +1,53 @@
|
||||
// Generated with OneLightJekyll applied to Atom's One Light theme
|
||||
|
||||
.highlight,
|
||||
pre.highlight {
|
||||
background: #282c34;
|
||||
color: #abb2bf;
|
||||
background: #f9f9f9;
|
||||
color: #383942;
|
||||
}
|
||||
.highlight pre {
|
||||
background: #282c34;
|
||||
background: #f9f9f9;
|
||||
}
|
||||
.highlight .hll {
|
||||
background: #282c34;
|
||||
background: #f9f9f9;
|
||||
}
|
||||
.highlight .c {
|
||||
color: #5c6370;
|
||||
color: #9fa0a6;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .err {
|
||||
color: #960050;
|
||||
background-color: #1e0010;
|
||||
color: #fff;
|
||||
background-color: #e05151;
|
||||
}
|
||||
.highlight .k {
|
||||
color: #5ba473;
|
||||
color: #a625a4;
|
||||
}
|
||||
.highlight .l {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .n {
|
||||
color: #abb2bf;
|
||||
color: #383942;
|
||||
}
|
||||
.highlight .o {
|
||||
color: #abb2bf;
|
||||
color: #383942;
|
||||
}
|
||||
.highlight .p {
|
||||
color: #abb2bf;
|
||||
color: #383942;
|
||||
}
|
||||
.highlight .cm {
|
||||
color: #5c6370;
|
||||
color: #9fa0a6;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .cp {
|
||||
color: #5c6370;
|
||||
color: #9fa0a6;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .c1 {
|
||||
color: #5c6370;
|
||||
color: #9fa0a6;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .cs {
|
||||
color: #5c6370;
|
||||
color: #9fa0a6;
|
||||
font-style: italic;
|
||||
}
|
||||
.highlight .ge {
|
||||
@@ -55,73 +57,73 @@ pre.highlight {
|
||||
font-weight: 700;
|
||||
}
|
||||
.highlight .kc {
|
||||
color: #5ba473;
|
||||
color: #a625a4;
|
||||
}
|
||||
.highlight .kd {
|
||||
color: #5ba473;
|
||||
color: #a625a4;
|
||||
}
|
||||
.highlight .kn {
|
||||
color: #5ba473;
|
||||
color: #a625a4;
|
||||
}
|
||||
.highlight .kp {
|
||||
color: #5ba473;
|
||||
color: #a625a4;
|
||||
}
|
||||
.highlight .kr {
|
||||
color: #5ba473;
|
||||
color: #a625a4;
|
||||
}
|
||||
.highlight .kt {
|
||||
color: #5ba473;
|
||||
color: #a625a4;
|
||||
}
|
||||
.highlight .ld {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .m {
|
||||
color: #d19a66;
|
||||
color: #b66a00;
|
||||
}
|
||||
.highlight .s {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .na {
|
||||
color: #d19a66;
|
||||
color: #b66a00;
|
||||
}
|
||||
.highlight .nb {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .nc {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .no {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .nd {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .ni {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .ne {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .nf {
|
||||
color: #abb2bf;
|
||||
color: #383942;
|
||||
}
|
||||
.highlight .nl {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .nn {
|
||||
color: #abb2bf;
|
||||
color: #383942;
|
||||
}
|
||||
.highlight .nx {
|
||||
color: #abb2bf;
|
||||
color: #383942;
|
||||
}
|
||||
.highlight .py {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .nt {
|
||||
color: #77b181;
|
||||
color: #e35549;
|
||||
}
|
||||
.highlight .nv {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .ow {
|
||||
font-weight: 700;
|
||||
@@ -130,71 +132,77 @@ pre.highlight {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
.highlight .mf {
|
||||
color: #d19a66;
|
||||
color: #b66a00;
|
||||
}
|
||||
.highlight .mh {
|
||||
color: #d19a66;
|
||||
color: #b66a00;
|
||||
}
|
||||
.highlight .mi {
|
||||
color: #d19a66;
|
||||
color: #b66a00;
|
||||
}
|
||||
.highlight .mo {
|
||||
color: #d19a66;
|
||||
color: #b66a00;
|
||||
}
|
||||
.highlight .sb {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .sc {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .sd {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .s2 {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .se {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .sh {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .si {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .sx {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .sr {
|
||||
color: #56b6c2;
|
||||
color: #0083bb;
|
||||
}
|
||||
.highlight .s1 {
|
||||
color: #c8ae9d;
|
||||
color: #50a04f;
|
||||
}
|
||||
.highlight .ss {
|
||||
color: #56b6c2;
|
||||
color: #0083bb;
|
||||
}
|
||||
.highlight .bp {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .vc {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .vg {
|
||||
color: #e5c07b;
|
||||
color: #ca7601;
|
||||
}
|
||||
.highlight .vi {
|
||||
color: #77b181;
|
||||
color: #e35549;
|
||||
}
|
||||
.highlight .il {
|
||||
color: #d19a66;
|
||||
color: #b66a00;
|
||||
}
|
||||
.highlight .gu {
|
||||
color: #75715e;
|
||||
}
|
||||
.highlight .gd {
|
||||
color: #f92672;
|
||||
color: #e05151;
|
||||
}
|
||||
.highlight .gi {
|
||||
color: #a6e22e;
|
||||
color: #43d089;
|
||||
}
|
||||
.highlight .language-json .w + .s2 {
|
||||
color: #e35549;
|
||||
}
|
||||
.highlight .language-json .kc {
|
||||
color: #0083bb;
|
||||
}
|
24
assets/css/just-the-docs-head-nav.css
Normal file
24
assets/css/just-the-docs-head-nav.css
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
---
|
||||
{%- if site.color_scheme and site.color_scheme != "nil" -%}
|
||||
{%- assign color_scheme = site.color_scheme -%}
|
||||
{%- else -%}
|
||||
{%- assign color_scheme = "light" -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- capture newline %}
|
||||
{% endcapture -%}
|
||||
|
||||
{%- capture scss -%}
|
||||
{% include css/just-the-docs.scss.liquid color_scheme=color_scheme %}
|
||||
.site-nav ul li a {
|
||||
background-image: linear-gradient(
|
||||
-90deg,
|
||||
rgba($feedback-color, 1) 0%,
|
||||
rgba($feedback-color, 0.8) 80%,
|
||||
rgba($feedback-color, 0) 100%
|
||||
);
|
||||
}
|
||||
{%- endcapture -%}
|
||||
|
||||
{{ scss | scssify | split: newline | slice: -3, 3 | join: newline }}
|
Binary file not shown.
Before Width: | Height: | Size: 20 KiB |
@@ -1 +0,0 @@
|
||||
<svg width="28" height="28" viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg"><title>Search</title><g fill-rule="nonzero" fill="#959396"><path d="M17.332 20.735c-5.537 0-10-4.6-10-10.247 0-5.646 4.463-10.247 10-10.247 5.536 0 10 4.601 10 10.247s-4.464 10.247-10 10.247zm0-4c3.3 0 6-2.783 6-6.247 0-3.463-2.7-6.247-6-6.247s-6 2.784-6 6.247c0 3.464 2.7 6.247 6 6.247z"/><path d="M11.672 13.791L.192 25.271 3.02 28.1 14.5 16.62z"/></g></svg>
|
Before Width: | Height: | Size: 444 B |
@@ -31,7 +31,7 @@ function initNav() {
|
||||
}
|
||||
if (target) {
|
||||
e.preventDefault();
|
||||
target.parentNode.classList.toggle('active');
|
||||
target.ariaPressed = target.parentNode.classList.toggle('active');
|
||||
}
|
||||
});
|
||||
|
||||
@@ -39,15 +39,19 @@ function initNav() {
|
||||
const mainHeader = document.getElementById('main-header');
|
||||
const menuButton = document.getElementById('menu-button');
|
||||
|
||||
disableHeadStyleSheets();
|
||||
|
||||
jtd.addEvent(menuButton, 'click', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
if (menuButton.classList.toggle('nav-open')) {
|
||||
siteNav.classList.add('nav-open');
|
||||
mainHeader.classList.add('nav-open');
|
||||
menuButton.ariaPressed = true;
|
||||
} else {
|
||||
siteNav.classList.remove('nav-open');
|
||||
mainHeader.classList.remove('nav-open');
|
||||
menuButton.ariaPressed = false;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -64,6 +68,26 @@ function initNav() {
|
||||
{%- endif %}
|
||||
}
|
||||
|
||||
// The <head> element is assumed to include the following stylesheets:
|
||||
// - a <link> to /assets/css/just-the-docs-head-nav.css,
|
||||
// with id 'jtd-head-nav-stylesheet'
|
||||
// - a <style> containing the result of _includes/css/activation.scss.liquid.
|
||||
// To avoid relying on the order of stylesheets (which can change with HTML
|
||||
// compression, user-added JavaScript, and other side effects), stylesheets
|
||||
// are only interacted with via ID
|
||||
|
||||
function disableHeadStyleSheets() {
|
||||
const headNav = document.getElementById('jtd-head-nav-stylesheet');
|
||||
if (headNav) {
|
||||
headNav.disabled = true;
|
||||
}
|
||||
|
||||
const activation = document.getElementById('jtd-nav-activation');
|
||||
if (activation) {
|
||||
activation.disabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
{%- if site.search_enabled != false %}
|
||||
// Site search
|
||||
|
||||
@@ -121,6 +145,18 @@ function searchLoaded(index, docs) {
|
||||
var currentInput;
|
||||
var currentSearchIndex = 0;
|
||||
|
||||
{%- if site.search.focus_shortcut_key %}
|
||||
// add event listener on ctrl + <focus_shortcut_key> for showing the search input
|
||||
jtd.addEvent(document, 'keydown', function (e) {
|
||||
if ((e.ctrlKey || e.metaKey) && e.key === '{{ site.search.focus_shortcut_key }}') {
|
||||
e.preventDefault();
|
||||
|
||||
mainHeader.classList.add('nav-open');
|
||||
searchInput.focus();
|
||||
}
|
||||
});
|
||||
{%- endif %}
|
||||
|
||||
function showSearch() {
|
||||
document.documentElement.classList.add('search-active');
|
||||
}
|
||||
@@ -459,15 +495,60 @@ jtd.setTheme = function(theme) {
|
||||
cssFile.setAttribute('href', '{{ "assets/css/just-the-docs-" | relative_url }}' + theme + '.css');
|
||||
}
|
||||
|
||||
// Note: pathname can have a trailing slash on a local jekyll server
|
||||
// and not have the slash on GitHub Pages
|
||||
|
||||
function navLink() {
|
||||
var pathname = document.location.pathname;
|
||||
|
||||
var navLink = document.getElementById('site-nav').querySelector('a[href="' + pathname + '"]');
|
||||
if (navLink) {
|
||||
return navLink;
|
||||
}
|
||||
|
||||
// The `permalink` setting may produce navigation links whose `href` ends with `/` or `.html`.
|
||||
// To find these links when `/` is omitted from or added to pathname, or `.html` is omitted:
|
||||
|
||||
if (pathname.endsWith('/') && pathname != '/') {
|
||||
pathname = pathname.slice(0, -1);
|
||||
}
|
||||
|
||||
if (pathname != '/') {
|
||||
navLink = document.getElementById('site-nav').querySelector('a[href="' + pathname + '"], a[href="' + pathname + '/"], a[href="' + pathname + '.html"]');
|
||||
if (navLink) {
|
||||
return navLink;
|
||||
}
|
||||
}
|
||||
|
||||
return null; // avoids `undefined`
|
||||
}
|
||||
|
||||
// Scroll site-nav to ensure the link to the current page is visible
|
||||
|
||||
function scrollNav() {
|
||||
const href = document.location.pathname;
|
||||
const siteNav = document.getElementById('site-nav');
|
||||
const targetLink = siteNav.querySelector('a[href="' + href + '"], a[href="' + href + '/"]');
|
||||
if(targetLink){
|
||||
const rect = targetLink.getBoundingClientRect();
|
||||
siteNav.scrollBy(0, rect.top - 3*rect.height);
|
||||
const targetLink = navLink();
|
||||
if (targetLink) {
|
||||
targetLink.scrollIntoView({ block: "center" });
|
||||
targetLink.removeAttribute('href');
|
||||
}
|
||||
}
|
||||
|
||||
// Find the nav-list-link that refers to the current page
|
||||
// then make it and all enclosing nav-list-item elements active.
|
||||
|
||||
function activateNav() {
|
||||
var target = navLink();
|
||||
if (target) {
|
||||
target.classList.toggle('active', true);
|
||||
}
|
||||
while (target) {
|
||||
while (target && !(target.classList && target.classList.contains('nav-list-item'))) {
|
||||
target = target.parentNode;
|
||||
}
|
||||
if (target) {
|
||||
target.classList.toggle('active', true);
|
||||
target = target.parentNode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -478,6 +559,7 @@ jtd.onReady(function(){
|
||||
{%- if site.search_enabled != false %}
|
||||
initSearch();
|
||||
{%- endif %}
|
||||
activateNav();
|
||||
scrollNav();
|
||||
});
|
||||
|
||||
@@ -488,6 +570,11 @@ jtd.onReady(function(){
|
||||
|
||||
jtd.onReady(function(){
|
||||
|
||||
if (!window.isSecureContext) {
|
||||
console.log('Window does not have a secure context, therefore code clipboard copy functionality will not be available. For more details see https://web.dev/async-clipboard/#security-and-permissions');
|
||||
return;
|
||||
}
|
||||
|
||||
var codeBlocks = document.querySelectorAll('div.highlighter-rouge, div.listingblock > div.content, figure.highlight');
|
||||
|
||||
// note: the SVG svg-copied and svg-copy is only loaded as a Jekyll include if site.enable_copy_code_button is true; see _includes/icons/icons.html
|
||||
|
@@ -66,6 +66,8 @@ search:
|
||||
# Enable or disable the search button that appears in the bottom right corner of every page
|
||||
# Supports true or false (default)
|
||||
button: false
|
||||
# Focus the search input by pressing `ctrl + focus_shortcut_key` (or `cmd + focus_shortcut_key` on macOS)
|
||||
focus_shortcut_key: 'k'
|
||||
```
|
||||
|
||||
## Mermaid Diagrams
|
||||
@@ -295,6 +297,16 @@ just_the_docs:
|
||||
|
||||
The navigation for all your normal pages (if any) is displayed before those in collections.
|
||||
|
||||
<span>New (v0.4.0)</span>{: .label .label-green }
|
||||
Including `nav_fold: true` in a collection configuration *folds* that collection:
|
||||
an expander symbol appears next to the collection name,
|
||||
and clicking it displays/hides the links to the top-level pages of the collection.[^js-disabled]
|
||||
|
||||
[^js-disabled]: <span>New (v0.6.0)</span>{: .label .label-green }
|
||||
When JavaScript is disabled in the browser, all folded collections are automatically expanded,
|
||||
since clicking expander symbols has no effect.
|
||||
(In previous releases, navigation into folded collections required JavaScript to be enabled.)
|
||||
|
||||
You can reference multiple collections.
|
||||
This creates categories in the navigation with the configured names.
|
||||
|
||||
|
@@ -45,6 +45,15 @@ jtd.addEvent(toggleDarkMode, 'click', function(){
|
||||
});
|
||||
</script>
|
||||
|
||||
### deprecated: `legacy_light`
|
||||
{: .d-inline-block .no_toc }
|
||||
|
||||
New (v0.4.2)
|
||||
{: .label .label-green }
|
||||
|
||||
|
||||
In Just the Docs version `0.4.2`, we changed the default syntax highlighting theme for the `light` color scheme to have higher contrast. Users who want to use the old highlighting need to explicitly opt-in with the deprecated `legacy_light` color scheme. In a future major release of Just the Docs, we will remove this color scheme.
|
||||
|
||||
## Custom schemes
|
||||
|
||||
### Define a custom scheme
|
||||
@@ -113,7 +122,7 @@ jtd.setTheme("foo")
|
||||
New (v0.4.0)
|
||||
{: .label .label-green }
|
||||
|
||||
To define new SCSS variables, functions, or override existing theme variables, place SCSS code in `_sass/custom/setup.scss`. This should *not* be used for defining custom styles (see the next section).
|
||||
To define new SCSS variables or functions, place SCSS code in `_sass/custom/setup.scss`. This should *not* be used for defining custom styles (see the next section) or overriding color scheme variables (in this case, you should create a new color scheme).
|
||||
|
||||
This is most commonly-used to define [custom callout colors]({% link docs/configuration.md %}#callouts). For example,
|
||||
|
||||
|
@@ -22,7 +22,7 @@ jtd.addEvent(toggleDarkMode, 'click', function(){
|
||||
|
||||
Text can be **bold**, _italic_, or ~~strikethrough~~.
|
||||
|
||||
[Link to another page](another-page).
|
||||
[Link to another page]({{site.baseurl}}/).
|
||||
|
||||
There should be whitespace between paragraphs.
|
||||
|
||||
@@ -55,7 +55,7 @@ GitHubPages::Dependencies.gems.each do |gem, version|
|
||||
end
|
||||
```
|
||||
|
||||
#### [](#header-4)Header 4 `with code not transformed`
|
||||
#### [](#header-4-with-code-not-transformed)Header 4 `with code not transformed`
|
||||
|
||||
* This is an unordered list following a header.
|
||||
* This is an unordered list following a header.
|
||||
@@ -310,7 +310,17 @@ graph TD;
|
||||
C-->D;
|
||||
```
|
||||
|
||||
### Collapsed Section
|
||||
|
||||
```
|
||||
The final element.
|
||||
```
|
||||
The following uses the [`<details>`](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/organizing-information-with-collapsed-sections) tag to create a collapsed section.
|
||||
|
||||
<details markdown="block">
|
||||
<summary>Shopping list (click me!)</summary>
|
||||
|
||||
This is content inside a `<details>` dropdown.
|
||||
|
||||
- [ ] Apples
|
||||
- [ ] Oranges
|
||||
- [ ] Milk
|
||||
|
||||
</details>
|
||||
|
40
docs/layout/layout.md
Normal file
40
docs/layout/layout.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: Layout
|
||||
layout: default
|
||||
nav_order: 4.5
|
||||
has_children: true
|
||||
---
|
||||
|
||||
# Layout
|
||||
|
||||
You specify the layout for a page in its [front matter]. Just the Docs has a `default` layout with a sidebar, used for almost all pages in the theme docs, and a `minimal` layout that omits the sidebar.
|
||||
{: .fs-6 .fw-300 }
|
||||
|
||||
## The layout concept
|
||||
|
||||
See the [Jekyll docs page about layouts] for an explanation of the general idea of layouts and how to specify them.
|
||||
|
||||
You can use [Jekyll's front matter defaults] to specify the same layout for many pages.
|
||||
|
||||
## The `default` layout
|
||||
|
||||
This page uses the default layout.
|
||||
|
||||
It is a *responsive* layout: on medium and larger width displays, it displays a sidebar, including a navigation panel; on smaller width displays, the sidebar is automatically hidden under a button.
|
||||
|
||||
Each child (and grandchild) page of a top-level page has so-called *breadcrumbs*: links to its parent (and grandparent) pages. It shows the breadcrumbs above the main content of the page.
|
||||
|
||||
Each page that has child pages generally has a list of links to those pages (you can suppress it by `has_toc: false` in the front matter). It shows the list as a *table of contents* below the main content.
|
||||
|
||||
## The `minimal` layout
|
||||
|
||||
A child and grandchild page of this page use the minimal layout. This differs from the default layout by omitting the sidebar -- and thereby also the navigation panel. To navigate between pages with the minimal layout, you can use the breadcrumbs and the tables of contents.
|
||||
|
||||
## Other layouts
|
||||
|
||||
Just the Docs has further layouts: `about`, `home`, `page`, and `post`. Currently, they are all based on the `default` layout. See the [Jekyll docs about inheritance] for how to customize them.
|
||||
|
||||
[front matter]: https://jekyllrb.com/docs/front-matter/ "Jekyll docs about front matter"
|
||||
[Jekyll docs page about layouts]: https://jekyllrb.com/docs/layouts/ "Jekyll docs about layouts"
|
||||
[Jekyll's front matter defaults]: https://jekyllrb.com/docs/configuration/front-matter-defaults/ "Jekyll docs about front matter defaults"
|
||||
[Jekyll docs about inheritance]: https://jekyllrb.com/docs/layouts/#inheritance "Jekyll docs about inheritance"
|
8
docs/layout/minimal/default-child.md
Normal file
8
docs/layout/minimal/default-child.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: Default layout child page
|
||||
layout: default
|
||||
parent: A minimal layout page
|
||||
grand_parent: Layout
|
||||
---
|
||||
|
||||
This is a child page that uses the same minimal layout as its parent page.
|
8
docs/layout/minimal/minimal-child.md
Normal file
8
docs/layout/minimal/minimal-child.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: Minimal layout child page
|
||||
layout: minimal
|
||||
parent: A minimal layout page
|
||||
grand_parent: Layout
|
||||
---
|
||||
|
||||
This is a child page that uses the same minimal layout as its parent page.
|
12
docs/layout/minimal/minimal.md
Normal file
12
docs/layout/minimal/minimal.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: A minimal layout page
|
||||
layout: minimal
|
||||
parent: Layout
|
||||
has_children: true
|
||||
---
|
||||
|
||||
# A minimal layout page
|
||||
|
||||
This page illustrates the built-in layout `minimal`.
|
||||
|
||||
One of its child pages also uses the minimal layout; the other child pages uses the default layout.
|
@@ -20,7 +20,7 @@ nav_order: 5
|
||||
|
||||
## Main navigation
|
||||
|
||||
The main navigation for your Just the Docs site is on the left side of the page at large screens and on the top (behind a tap) on small screens. The main navigation can be structured to accommodate a multi-level menu system (pages with children and grandchildren).
|
||||
The main navigation for your Just the Docs site is on the left side of the page on large screens and on the top (behind a tap) on small screens. The main navigation can be structured to accommodate a multi-level menu system (pages with children and grandchildren).
|
||||
|
||||
By default, all pages will appear as top level pages in the main nav unless a parent page is defined (see [Pages with Children](#pages-with-children)).
|
||||
|
||||
@@ -30,7 +30,7 @@ By default, all pages will appear as top level pages in the main nav unless a pa
|
||||
|
||||
To specify a page order, you can use the `nav_order` parameter in your pages' YAML front matter.
|
||||
|
||||
#### Example
|
||||
### Example (ordering pages)
|
||||
{: .no_toc }
|
||||
|
||||
```yaml
|
||||
@@ -55,7 +55,7 @@ By default, all Capital letters come before all lowercase letters; you can add `
|
||||
|
||||
For specific pages that you do not wish to include in the main navigation, e.g. a 404 page or a landing page, use the `nav_exclude: true` parameter in the YAML front matter for that page.
|
||||
|
||||
#### Example
|
||||
### Example (excluding pages)
|
||||
{: .no_toc }
|
||||
|
||||
```yaml
|
||||
@@ -108,7 +108,7 @@ On the parent pages, add this YAML front matter parameter:
|
||||
|
||||
- `has_children: true` (tells us that this is a parent page)
|
||||
|
||||
#### Example
|
||||
### Example (parent pages)
|
||||
{: .no_toc }
|
||||
|
||||
```yaml
|
||||
@@ -129,7 +129,7 @@ Here we're setting up the UI Components landing page that is available at `/docs
|
||||
|
||||
On child pages, simply set the `parent:` YAML front matter to whatever the parent's page title is and set a nav order (this number is now scoped within the section).
|
||||
|
||||
#### Example
|
||||
#### Example (child pages)
|
||||
{: .no_toc }
|
||||
|
||||
```yaml
|
||||
@@ -154,7 +154,7 @@ You can optionally add the following to the YAML front matter to reverse the def
|
||||
|
||||
- `child_nav_order: reversed`
|
||||
|
||||
#### Example
|
||||
#### Example (ordering child pages)
|
||||
{: .no_toc }
|
||||
```yaml
|
||||
---
|
||||
@@ -168,7 +168,7 @@ child_nav_order: reversed
|
||||
|
||||
By default, all pages with children will automatically append a Table of Contents which lists the child pages after the parent page's content. To disable this auto Table of Contents, set `has_toc: false` in the parent page's YAML front matter.
|
||||
|
||||
#### Example
|
||||
#### Example (auto-generating Table of Contents)
|
||||
{: .no_toc }
|
||||
|
||||
```yaml
|
||||
@@ -191,7 +191,7 @@ Child pages can also have children (grandchildren). This is achieved by using a
|
||||
1. Add the `has_children` attribute to the child
|
||||
1. Add the `parent` and `grand_parent` attribute to the grandchild
|
||||
|
||||
#### Example
|
||||
##### Example (children within children)
|
||||
{: .no_toc }
|
||||
|
||||
```yaml
|
||||
@@ -237,11 +237,45 @@ Currently, the navigation structure is limited to 3 levels: grandchild pages can
|
||||
|
||||
---
|
||||
|
||||
## Grouping pages with collections
|
||||
|
||||
Pages can also be grouped together by using Jekyll's and Just the Docs's [collections]({% link docs/configuration.md %}#document-collections) feature. In contrast to using [pages with children](#pages-with-children), pages grouped by collection are grouped by a shared header (the name of the collection) instead of a page.
|
||||
|
||||
The `nav_fold` configuration option works for collection-grouped pages. For more information, please refer to the [collections documentation]({% link docs/configuration.md %}#document-collections).
|
||||
|
||||
### Example (grouping by collection)
|
||||
{: .no_toc }
|
||||
|
||||
The following example sets up two collections, `collection-one` and `collection-two`:
|
||||
|
||||
- any document placed within `_collection-1/` will be grouped under the `Collection One` header by default. Since `nav_fold` is set to `true`, the pages will be folded by default.
|
||||
- any document placed within `_collection-2/` will be grouped under the `Collection Two` header by default. Since `nav_fold` is set to `false`, the pages will be expanded by default.
|
||||
|
||||
```yaml
|
||||
_config.yml:
|
||||
collections:
|
||||
collection-one:
|
||||
permalink: "/:collection/:path/"
|
||||
output: true
|
||||
collection-two:
|
||||
permalink: "/:collection/:path/"
|
||||
output: true
|
||||
just_the_docs:
|
||||
collections:
|
||||
collection-one:
|
||||
name: Collection One
|
||||
nav_fold: true
|
||||
collection-two:
|
||||
name: Collection Two
|
||||
nav_fold: false
|
||||
```
|
||||
---
|
||||
|
||||
## Auxiliary Links
|
||||
|
||||
To add auxiliary links to your site (in the upper right on all pages), add it to the `aux_links` [configuration option]({% link docs/configuration.md %}#aux-links) in your site's `_config.yml` file.
|
||||
|
||||
#### Example
|
||||
### Example (auxiliary links)
|
||||
{: .no_toc }
|
||||
|
||||
```yaml
|
||||
@@ -262,7 +296,7 @@ New (v0.4.0)
|
||||
To add external links to the navigation, add them to the `nav_external_links` [configuration]({% link docs/configuration.md %}) option in your site's `_config.yml` file.
|
||||
External links will appear in the navigation after the links to ordinary pages, but before any collections.
|
||||
|
||||
#### Example
|
||||
### Example (external navigation links)
|
||||
{: .no_toc }
|
||||
|
||||
```yaml
|
||||
@@ -271,18 +305,32 @@ nav_external_links:
|
||||
- title: Just the Docs on GitHub
|
||||
url: https://github.com/just-the-docs/just-the-docs
|
||||
hide_icon: false # set to true to hide the external link icon - defaults to false
|
||||
opens_in_new_tab: false # set to true to open this link in a new tab - defaults to false
|
||||
```
|
||||
|
||||
### Opening external links in a new tab
|
||||
{: .d-inline-block }
|
||||
|
||||
New (unreleased)
|
||||
{: .label .label-green }
|
||||
|
||||
The external links are decorated by an icon, which distinguishes them from internal links.
|
||||
You can suppress the icon by setting `hide_icon: true`.
|
||||
|
||||
By default, external links are not opened in a new tab. However, this can be enabled by:
|
||||
|
||||
1. setting `opens_in_new_tab: true` in the link's configuration object
|
||||
2. setting the configuration option `nav_external_links_new_tab: true` in `_config.yml`
|
||||
|
||||
When they conflict, `opens_in_new_tab` takes precedence.
|
||||
|
||||
---
|
||||
|
||||
## In-page navigation with Table of Contents
|
||||
|
||||
To generate a Table of Contents on your docs pages, you can use the `{:toc}` method from Kramdown, immediately after an `<ol>` in Markdown. This will automatically generate an ordered list of anchor links to various sections of the page based on headings and heading levels. There may be occasions where you're using a heading and you don't want it to show up in the TOC, so to skip a particular heading use the `{: .no_toc }` CSS class.
|
||||
|
||||
#### Example
|
||||
### Example (in-page navigation with Table of Contents)
|
||||
{: .no_toc }
|
||||
|
||||
```markdown
|
||||
@@ -300,7 +348,7 @@ This example skips the page name heading (`#`) from the TOC, as well as the head
|
||||
|
||||
### Collapsible Table of Contents
|
||||
|
||||
The Table of Contents can be made collapsible using the `<details>` and `<summary>` elements , as in the following example. The attribute `open` (expands the Table of Contents by default) and the styling with `{: .text-delta }` are optional.
|
||||
The Table of Contents can be made collapsible using the `<details>` and `<summary>` elements, as in the following example. The attribute `open` (expands the Table of Contents by default) and the styling with `{: .text-delta }` are optional.
|
||||
|
||||
```markdown
|
||||
<details open markdown="block">
|
||||
|
@@ -15,7 +15,7 @@ nav_order: 7
|
||||
|
||||
---
|
||||
|
||||
Just the Docs uses [lunr.js](http://lunrjs.com) to add a client-side search interface powered by a JSON index that Jekyll generates.
|
||||
Just the Docs uses [lunr.js](https://lunrjs.com) to add a client-side search interface powered by a JSON index that Jekyll generates.
|
||||
All search results are shown in an auto-complete style interface (there is no search results page).
|
||||
By default, all generated HTML pages are indexed using the following data points:
|
||||
|
||||
@@ -94,6 +94,21 @@ The search button displays in the bottom right corner of the screen and triggers
|
||||
search.button: true
|
||||
```
|
||||
|
||||
### Focus search bar with a keyboard shortcut
|
||||
|
||||
Just the Docs supports focusing the search bar input with a keyboard shortcut. After setting the `search.focus_shortcut_key` config item key, users who press <kbd>Ctrl</kbd> + `search.focus_shortcut_key` (or on macOS, <kbd>Command</kbd> + `search.focus_shortcut_key`) will focus the search bar.
|
||||
|
||||
Note that this feature is **disabled by default**. `search.focus_shortcut_key` should be a [valid value from `KeyboardEvent.key`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key); this involves all ASCII alphanumeric values, as well as modifier keys.
|
||||
|
||||
For example,
|
||||
|
||||
```yaml
|
||||
search:
|
||||
focus_shortcut_key: 'k'
|
||||
```
|
||||
|
||||
Will make <kbd>Ctrl</kbd> + <kbd>K</kbd> focus the search bar for Windows users (and <kbd>Command</kbd> + <kbd>K</kbd> on macOS).
|
||||
|
||||
## Hiding pages from search
|
||||
|
||||
Sometimes you might have a page that you don't want to be indexed for the search nor to show up in search results, e.g., a 404 page.
|
||||
|
@@ -21,22 +21,22 @@ nav_order: 2
|
||||
### Links that look like buttons
|
||||
|
||||
<div class="code-example" markdown="1">
|
||||
[Link button](http://example.com/){: .btn }
|
||||
[Link button](https://just-the-docs.com){: .btn }
|
||||
|
||||
[Link button](http://example.com/){: .btn .btn-purple }
|
||||
[Link button](http://example.com/){: .btn .btn-blue }
|
||||
[Link button](http://example.com/){: .btn .btn-green }
|
||||
[Link button](https://just-the-docs.com){: .btn .btn-purple }
|
||||
[Link button](https://just-the-docs.com){: .btn .btn-blue }
|
||||
[Link button](https://just-the-docs.com){: .btn .btn-green }
|
||||
|
||||
[Link button](http://example.com/){: .btn .btn-outline }
|
||||
[Link button](https://just-the-docs.com){: .btn .btn-outline }
|
||||
</div>
|
||||
```markdown
|
||||
[Link button](http://example.com/){: .btn }
|
||||
[Link button](https://just-the-docs.com){: .btn }
|
||||
|
||||
[Link button](http://example.com/){: .btn .btn-purple }
|
||||
[Link button](http://example.com/){: .btn .btn-blue }
|
||||
[Link button](http://example.com/){: .btn .btn-green }
|
||||
[Link button](https://just-the-docs.com){: .btn .btn-purple }
|
||||
[Link button](https://just-the-docs.com){: .btn .btn-blue }
|
||||
[Link button](https://just-the-docs.com){: .btn .btn-green }
|
||||
|
||||
[Link button](http://example.com/){: .btn .btn-outline }
|
||||
[Link button](https://just-the-docs.com){: .btn .btn-outline }
|
||||
```
|
||||
|
||||
### Button element
|
||||
@@ -60,20 +60,20 @@ Wrap the button in a container that uses the [font-size utility classes]({% link
|
||||
|
||||
<div class="code-example" markdown="1">
|
||||
<span class="fs-6">
|
||||
[Big ass button](http://example.com/){: .btn }
|
||||
[Big ass button](https://just-the-docs.com){: .btn }
|
||||
</span>
|
||||
|
||||
<span class="fs-3">
|
||||
[Tiny ass button](http://example.com/){: .btn }
|
||||
[Tiny ass button](https://just-the-docs.com){: .btn }
|
||||
</span>
|
||||
</div>
|
||||
```markdown
|
||||
<span class="fs-8">
|
||||
[Link button](http://example.com/){: .btn }
|
||||
[Link button](https://just-the-docs.com){: .btn }
|
||||
</span>
|
||||
|
||||
<span class="fs-3">
|
||||
[Tiny ass button](http://example.com/){: .btn }
|
||||
[Tiny ass button](https://just-the-docs.com){: .btn }
|
||||
</span>
|
||||
```
|
||||
|
||||
@@ -82,16 +82,16 @@ Wrap the button in a container that uses the [font-size utility classes]({% link
|
||||
Use the [margin utility classes]({% link docs/utilities/layout.md %}#spacing) to add spacing between two buttons in the same block.
|
||||
|
||||
<div class="code-example" markdown="1">
|
||||
[Button with space](http://example.com/){: .btn .btn-purple .mr-2 }
|
||||
[Button](http://example.com/){: .btn .btn-blue }
|
||||
[Button with space](https://just-the-docs.com){: .btn .btn-purple .mr-2 }
|
||||
[Button](https://just-the-docs.com){: .btn .btn-blue }
|
||||
|
||||
[Button with more space](http://example.com/){: .btn .btn-green .mr-4 }
|
||||
[Button](http://example.com/){: .btn .btn-blue }
|
||||
[Button with more space](https://just-the-docs.com){: .btn .btn-green .mr-4 }
|
||||
[Button](https://just-the-docs.com){: .btn .btn-blue }
|
||||
</div>
|
||||
```markdown
|
||||
[Button with space](http://example.com/){: .btn .btn-purple .mr-2 }
|
||||
[Button](http://example.com/){: .btn .btn-blue }
|
||||
[Button with space](https://just-the-docs.com){: .btn .btn-purple .mr-2 }
|
||||
[Button](https://just-the-docs.com){: .btn .btn-blue }
|
||||
|
||||
[Button with more space](http://example.com/){: .btn .btn-green .mr-4 }
|
||||
[Button](http://example.com/){: .btn .btn-blue }
|
||||
[Button with more space](https://just-the-docs.com){: .btn .btn-green .mr-4 }
|
||||
[Button](https://just-the-docs.com){: .btn .btn-blue }
|
||||
```
|
||||
|
@@ -58,6 +58,8 @@ var fun = function lang(l) {
|
||||
```
|
||||
{% endhighlight %}
|
||||
|
||||
Syntax highlighting, line numbers, and HTML compression do not work together; **the combination of these features generates invalid HTML that renders incorrectly**. To learn more, see ["Code with line numbers"]({% link docs/ui-components/line-nos.md %}).
|
||||
|
||||
---
|
||||
|
||||
## Code blocks with rendered examples
|
||||
@@ -68,22 +70,22 @@ To demonstrate front end code, sometimes it's useful to show a rendered example
|
||||
|
||||
<div class="code-example" markdown="1">
|
||||
|
||||
[Link button](http://example.com/){: .btn }
|
||||
[Link button](https://just-the-docs.com){: .btn }
|
||||
|
||||
</div>
|
||||
```markdown
|
||||
[Link button](http://example.com/){: .btn }
|
||||
[Link button](https://just-the-docs.com){: .btn }
|
||||
```
|
||||
|
||||
</div>
|
||||
{% highlight markdown %}
|
||||
<div class="code-example" markdown="1">
|
||||
|
||||
[Link button](http://example.com/){: .btn }
|
||||
[Link button](https://just-the-docs.com){: .btn }
|
||||
|
||||
</div>
|
||||
```markdown
|
||||
[Link button](http://example.com/){: .btn }
|
||||
[Link button](https://just-the-docs.com){: .btn }
|
||||
```
|
||||
{% endhighlight %}
|
||||
|
||||
@@ -115,7 +117,7 @@ Additional configuration options are loaded through `_includes/mermaid_config.js
|
||||
|
||||
This loads the default settings.
|
||||
|
||||
The contents of this object should follow [mermaid's configuration API](https://mermaid-js.github.io/mermaid/#/./Setup?id=configuration). For example, to override the theme, change `_includes/mermaid_config.js` to:
|
||||
The contents of this object should follow [mermaid's configuration API](https://mermaid.js.org/config/configuration.html). For example, to override the theme, change `_includes/mermaid_config.js` to:
|
||||
|
||||
```js
|
||||
// _includes/mermaid_config.js
|
||||
@@ -150,14 +152,45 @@ graph TD;
|
||||
|
||||
### Using a local mermaid library
|
||||
|
||||
In order to use a local version of the mermaid library instead of one provided by jsDelivr, you can specify a `path` key in the mermaid configuration instead of a `version` key.
|
||||
To load a local version of mermaid, also use the `path` key to specify the location of the library; e.g.
|
||||
|
||||
```yaml
|
||||
mermaid:
|
||||
# To load mermaid from a local file use the `path` key to specify the location of the library instead; e.g.
|
||||
path: "/assets/js/mermaid.min.js"
|
||||
version: "10.1.0"
|
||||
# for (v10+)
|
||||
path: "/assets/js/mermaid.esm.min.mjs"
|
||||
# for (<v10):
|
||||
# path: "/assets/js/mermaid.min.js"
|
||||
# Note: copy both `mermaid.esm.min.mjs` (v10+) or `mermaid.min.js` (<v10) and the associated
|
||||
# `.map` file from the specified version of `mermaid/dist` to `/assets/js/`.
|
||||
```
|
||||
|
||||
For mermaid versions `>=10`, this file is imported directly as an ESM module (rather than as a plain `<script>` tag); users should use the `mermaid.esm.min.mjs` file. In contrast, for mermaid versions `<10`, this file is loaded as a script tag; it should be a standalone CJS file (i.e. `mermaid.min.js`).
|
||||
|
||||
{: .warning }
|
||||
Mermaid versions `10.0` - `10.1` (and possibly, future releases) still encode relative imports in `mermaid.esm.min.mjs`. Local users must copy *all* of the contents of the `dist` folder to the specified path (preserving the relative location of the files). Just the Docs is actively monitoring mermaid releases; an upstream fix is planned.
|
||||
|
||||
### Using mermaid with AsciiDoc
|
||||
|
||||
Users of [AsciiDoc](https://asciidoc.org/) (e.g. via [jekyll-asciidoc](https://github.com/asciidoctor/jekyll-asciidoc)) may need additional configuration to use mermaid.
|
||||
|
||||
By default, AsciiDoc generates HTML markup that mermaid cannot properly parse. The simplest way to resolve this is to use a [passthrough block](https://docs.asciidoctor.org/asciidoc/latest/pass/pass-block/):
|
||||
{% highlight asciidoc %}
|
||||
++++
|
||||
<pre class="language-mermaid">
|
||||
graph TD;
|
||||
A-->B;
|
||||
A-->C;
|
||||
B-->D;
|
||||
C-->D;
|
||||
</pre>
|
||||
++++
|
||||
{% endhighlight %}
|
||||
|
||||
Alternatively, community member [@flyx](https://github.com/flyx) has contributed a Ruby extension that does not require extra markup. The extension is available [as a GitHub Gist](https://gist.github.com/flyx/9fff080cf4edc95d495bc661a002232c). Thank you to [@flyx](https://github.com/flyx)!
|
||||
|
||||
The [asciidoctor-diagram](https://docs.asciidoctor.org/diagram-extension/latest/) extension which also supports mermaid is not recommended for use with Just the Docs, since it requires separate configuration e.g. for theming, and is known to not be trivial to set up.
|
||||
|
||||
## Copy button
|
||||
{: .d-inline-block }
|
||||
|
||||
@@ -171,4 +204,4 @@ The copy button for code blocks can be enabled or disabled via the `enable_copy_
|
||||
enable_copy_code_button: true
|
||||
```
|
||||
|
||||
Note that this feature requires JavaScript; if JavaScript is disabled in the browser, this feature will not work.
|
||||
Note that this feature requires JavaScript; if JavaScript is disabled in the browser, this feature will not work. In addition, this feature uses `navigator.clipboard`, which is only available in [secure contexts](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts) (such as over HTTPS). If the site is viewed in an insecure context, the copy button will not work ([relevant issue: #1202](https://github.com/just-the-docs/just-the-docs/issues/1202)).
|
||||
|
@@ -8,8 +8,12 @@ permalink: /docs/ui-components/code/line-numbers/
|
||||
|
||||
# Code snippets with line numbers
|
||||
|
||||
{: .warning }
|
||||
|
||||
In prior versions of the docs, we provided "workarounds" to rendering issues arising from code snippets with line numbers. While these seemed to resolve visual layout issues, they did not resolve core issues with Jekyll generating invalid HTML. See [the detailed explanation](#detailed-error-explanation) for more information.
|
||||
|
||||
The default settings for HTML compression are incompatible with the HTML
|
||||
produced by Jekyll (4.1.1 or earlier) for line numbers from highlighted code
|
||||
produced by Jekyll for line numbers from highlighted code
|
||||
-- both when using Kramdown code fences and when using Liquid highlight tags.
|
||||
|
||||
To avoid non-conforming HTML and unsatisfactory layout, HTML compression
|
||||
@@ -40,87 +44,62 @@ Some code
|
||||
{% endhighlight %}{% endraw %}
|
||||
{% endhighlight %}
|
||||
|
||||
## Workarounds
|
||||
## Detailed Error Explanation
|
||||
|
||||
To use HTML compression together with line numbers, all highlighted code
|
||||
needs to be wrapped using one of the following workarounds.
|
||||
(The variable name `some_var` can be changed to avoid clashes; it can also
|
||||
be replaced by `code` -- but note that `code=code` cannot be removed).
|
||||
Consider this following code snippet, intended to highlight a simple Ruby program:
|
||||
|
||||
### Code fences (three backticks)
|
||||
|
||||
{% highlight default %}
|
||||
{% raw %}{% capture some_var %}
|
||||
```some_language
|
||||
Some code
|
||||
```
|
||||
{% endcapture %}
|
||||
{% assign some_var = some_var | markdownify %}
|
||||
{% include fix_linenos.html code=some_var %}{% endraw %}
|
||||
{% endhighlight %}
|
||||
|
||||
### Liquid highlighting
|
||||
|
||||
{% highlight default %}
|
||||
{% raw %}{% capture some_var %}
|
||||
{% highlight some_language linenos %}
|
||||
Some code
|
||||
{% endhighlight %}
|
||||
{% endcapture %}
|
||||
{% include fix_linenos.html code=some_var %}{% endraw %}
|
||||
{% endhighlight %}
|
||||
|
||||
_Credit:_ The original version of the above workaround was suggested by
|
||||
Dmitry Hrabrov at
|
||||
<https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901>.
|
||||
|
||||
## Examples
|
||||
|
||||
✅ Using code fences + workaround (will only show line numbers if enabled globally in `_config.yml`):
|
||||
|
||||
{% capture code_fence %}
|
||||
```js
|
||||
// Javascript code with syntax highlighting in fences
|
||||
var fun = function lang(l) {
|
||||
dateformat.i18n = require('./lang/' + l)
|
||||
return true;
|
||||
}
|
||||
```
|
||||
{% endcapture %}
|
||||
{% assign code_fence = code_fence | markdownify %}
|
||||
{% include fix_linenos.html code=code_fence %}
|
||||
|
||||
✅ Using liquid highlighting + workaround:
|
||||
|
||||
{% capture code %}
|
||||
{% highlight ruby linenos %}
|
||||
# Ruby code with syntax highlighting and fixed line numbers using Liquid
|
||||
GitHubPages::Dependencies.gems.each do |gem, version|
|
||||
s.add_dependency(gem, "= #{version}")
|
||||
end
|
||||
{% endhighlight %}
|
||||
{% endcapture %}
|
||||
{% include fix_linenos.html code=code %}
|
||||
{% assign code = nil %}
|
||||
|
||||
Narrow code stays close to the line numbers:
|
||||
|
||||
{% capture code %}
|
||||
{% highlight ruby linenos %}
|
||||
{% raw %}{% highlight ruby linenos %}
|
||||
def foo
|
||||
puts 'foo'
|
||||
end
|
||||
{% endhighlight %}
|
||||
{% endcapture %}
|
||||
{% include fix_linenos.html code=code %}
|
||||
{% assign code = nil %}
|
||||
{% endhighlight %}{% endraw %}
|
||||
```
|
||||
|
||||
❌ With the compression options used for the theme docs, the following example illustrates
|
||||
the **incorrect** formatting arising from the incompatibility of HTML compression
|
||||
and the non-conforming HTML produced by Jekyll for line numbers:
|
||||
If this is directly placed within a file processed by Jekyll (via Just the Docs, with HTML compression enabled), the following markup will be generated:
|
||||
|
||||
{% highlight ruby linenos %}
|
||||
def foo
|
||||
puts 'foo'
|
||||
end
|
||||
{% endhighlight %}
|
||||
```html
|
||||
<figure class="highlight">><code class="language-ruby" data-lang="ruby"><div class="table-wrapper"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
|
||||
2
|
||||
3
|
||||
</pre><td class="code"><pre><span class="k">def</span> <span class="nf">foo</span>
|
||||
<span class="nb">puts</span> <span class="s1">'foo'</span>
|
||||
<span class="k">end</span>
|
||||
</pre></figure>
|
||||
```
|
||||
|
||||
This HTML is invalid; in particular, there are two issues:
|
||||
|
||||
1. there are many missing closing tags, and a superfluous `>`, which produce visually garbled output
|
||||
2. a `<table>` is placed within a `<code>` element, which is syntactically invalid HTML (but is often allowed by browsers)
|
||||
|
||||
To emphasize this first difference, here is the same markup output, indented by tag:
|
||||
|
||||
```html
|
||||
<figure class="highlight">
|
||||
>
|
||||
<code class="language-ruby" data-lang="ruby">
|
||||
<div class="table-wrapper">
|
||||
<table class="rouge-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="gutter gl">
|
||||
<pre class="lineno">
|
||||
1
|
||||
2
|
||||
3
|
||||
</pre>
|
||||
<td class="code">
|
||||
<pre>
|
||||
<span class="k">def</span>
|
||||
<span class="nf">foo</span>
|
||||
<span class="nb">puts</span>
|
||||
<span class="s1">'foo'</span>
|
||||
<span class="k">end</span>
|
||||
</pre>
|
||||
</figure>
|
||||
```
|
||||
|
||||
In order, there are missing `</td>`, `</td>`, `</tr>`, `</tbody>`, `</table>`, `</div>`, and `</code>` tags. As a result, the following elements of the page - including the site footer - become visually garbled as browsers attempt to recover gracefully.
|
||||
|
||||
Prior workarounds we suggested (such as [Dmitry Hrabrov's in `jekyll-compress-html`#71](https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901)) resolve the missing tag problem. However, they still place a `<table>` within a `<code>` element. The HTML spec normatively states that `<code>` elements should only contain "[phrasing content](https://html.spec.whatwg.org/multipage/dom.html#phrasing-content-2)", which does not include `<table>` ([spec ref](https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-code-element)). To avoid incorrectly rendered HTML, the previously-suggested workaround using the current version of `_includes/fix_linenos.html` should _not_ be used!
|
||||
|
@@ -21,7 +21,7 @@ nav_order: 1
|
||||
By default, Just the Docs uses a native system font stack for sans-serif fonts:
|
||||
|
||||
```scss
|
||||
system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif
|
||||
system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Segoe UI Emoji"
|
||||
```
|
||||
|
||||
ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
@@ -97,12 +97,12 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
|
||||
<div class="code-example" markdown="1">
|
||||
Text can be **bold**, _italic_, or ~~strikethrough~~.
|
||||
|
||||
[Link to another page](another-page).
|
||||
[Link to another page]({{site.baseurl}}/).
|
||||
</div>
|
||||
```markdown
|
||||
Text can be **bold**, _italic_, or ~~strikethrough~~.
|
||||
|
||||
[Link to another page](another-page).
|
||||
[Link to another page]({{site.baseurl}}/).
|
||||
```
|
||||
|
||||
---
|
||||
|
@@ -61,7 +61,7 @@ Use `mx-auto` to horizontally center elements.
|
||||
In Markdown, use the `{: }` wrapper to apply custom classes:
|
||||
|
||||
```markdown
|
||||
This paragraph will have a margin bottom of 1rem/16px at large screens.
|
||||
This paragraph will have a margin bottom of 1rem/16px on large screens.
|
||||
{: .mb-lg-4 }
|
||||
|
||||
This paragraph will have 2rem/32px of padding on the right and left at all screen sizes.
|
||||
|
@@ -17,7 +17,7 @@ parent: Utilities
|
||||
|
||||
## Font size
|
||||
|
||||
Use the `.fs-1` - `.fs-10` to set an explicit font-size.
|
||||
Use the `.fs-1` - `.fs-10` to set an explicit `font-size`.
|
||||
|
||||
| Class | Small screen size `font-size` | Large screen size `font-size` |
|
||||
|:--------|:-------------------------------|:------------------------------|
|
||||
@@ -81,7 +81,7 @@ Font size 10
|
||||
|
||||
## Font weight
|
||||
|
||||
Use the `.fw-300` - `.fw-700` to set an explicit font-size.
|
||||
Use the `.fw-300` - `.fw-700` to set an explicit `font-weight`.
|
||||
|
||||
<div class="code-example" markdown="1">
|
||||
Font weight 300
|
||||
|
@@ -9,5 +9,5 @@ permalink: docs/utilities
|
||||
# Utilities
|
||||
{: .no_toc }
|
||||
|
||||
CSS utility classes come in handy when you to want to override default styles to create additional whitespace (margins/padding), correct unexpected shifts in font size or weight, add color, or hide (or show) something at a specific screen size.
|
||||
CSS utility classes come in handy when you want to override default styles to create additional whitespace (margins/padding), correct unexpected shifts in font size or weight, add color, or hide (or show) something at a specific screen size.
|
||||
{: .fs-6 .fw-300 }
|
||||
|
15
fixtures/Gemfile-jekyll-3.9
Normal file
15
fixtures/Gemfile-jekyll-3.9
Normal file
@@ -0,0 +1,15 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "jekyll", "~> 3.9"
|
||||
|
||||
gem "jekyll-seo-tag", ">= 2.0"
|
||||
gem "rake", ">= 12.3.1"
|
||||
|
||||
gem "jekyll-include-cache", group: :jekyll_plugins
|
||||
|
||||
# required for Jekyll 3
|
||||
gem "webrick", "~> 1.7"
|
||||
gem "kramdown-parser-gfm", '~> 1.1'
|
||||
|
||||
# docs-only
|
||||
gem "jekyll-github-metadata", ">= 2.15"
|
11
fixtures/Gemfile-jekyll-4.3
Normal file
11
fixtures/Gemfile-jekyll-4.3
Normal file
@@ -0,0 +1,11 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "jekyll", "~> 4.3"
|
||||
|
||||
gem "jekyll-seo-tag", ">= 2.0"
|
||||
gem "rake", ">= 12.3.1"
|
||||
|
||||
gem "jekyll-include-cache", group: :jekyll_plugins
|
||||
|
||||
# docs-only
|
||||
gem "jekyll-github-metadata", ">= 2.15"
|
1
fixtures/html5validator-config.yml
Normal file
1
fixtures/html5validator-config.yml
Normal file
@@ -0,0 +1 @@
|
||||
root: _site
|
4
index.md
4
index.md
@@ -49,7 +49,7 @@ See the theme [README][Just the Docs README] for how to use the theme as a gem w
|
||||
|
||||
## About the project
|
||||
|
||||
Just the Docs is © 2017-{{ "now" | date: "%Y" }} by [Patrick Marsceill](http://patrickmarsceill.com).
|
||||
Just the Docs is © 2017-{{ "now" | date: "%Y" }} by [Patrick Marsceill](https://patrickmarsceill.com).
|
||||
|
||||
### License
|
||||
|
||||
@@ -89,7 +89,7 @@ Just the Docs is committed to fostering a welcoming community.
|
||||
[Jekyll configuration]: https://jekyllrb.com/docs/configuration/
|
||||
[source file for this page]: https://github.com/just-the-docs/just-the-docs/blob/main/index.md
|
||||
[Just the Docs Template]: https://just-the-docs.github.io/just-the-docs-template/
|
||||
[Just the Docs]: https://just-the-docs.github.io/just-the-docs/
|
||||
[Just the Docs]: https://just-the-docs.com
|
||||
[Just the Docs repo]: https://github.com/just-the-docs/just-the-docs
|
||||
[Just the Docs README]: https://github.com/just-the-docs/just-the-docs/blob/main/README.md
|
||||
[GitHub Pages]: https://pages.github.com/
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
Gem::Specification.new do |spec|
|
||||
spec.name = "just-the-docs"
|
||||
spec.version = "0.4.1"
|
||||
spec.version = "0.8.0"
|
||||
spec.authors = ["Patrick Marsceill", "Matthew Wang"]
|
||||
spec.email = ["patrick.marsceill@gmail.com", "matt@matthewwang.me"]
|
||||
|
||||
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
||||
spec.metadata = {
|
||||
"bug_tracker_uri" => "https://github.com/just-the-docs/just-the-docs/issues",
|
||||
"changelog_uri" => "https://github.com/just-the-docs/just-the-docs/blob/main/CHANGELOG.md",
|
||||
"documentation_uri" => "https://just-the-docs.github.io/just-the-docs/",
|
||||
"documentation_uri" => "https://just-the-docs.com/",
|
||||
"source_code_uri" => "https://github.com/just-the-docs/just-the-docs",
|
||||
}
|
||||
|
||||
@@ -22,5 +22,6 @@ Gem::Specification.new do |spec|
|
||||
spec.add_development_dependency "bundler", ">= 2.3.5"
|
||||
spec.add_runtime_dependency "jekyll", ">= 3.8.5"
|
||||
spec.add_runtime_dependency "jekyll-seo-tag", ">= 2.0"
|
||||
spec.add_runtime_dependency "jekyll-include-cache"
|
||||
spec.add_runtime_dependency "rake", ">= 12.3.1"
|
||||
end
|
||||
|
2981
package-lock.json
generated
2981
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
41
package.json
41
package.json
@@ -6,15 +6,42 @@
|
||||
"license": "MIT",
|
||||
"bugs": "https://github.com/just-the-docs/just-the-docs/issues",
|
||||
"devDependencies": {
|
||||
"prettier": "^2.8.4",
|
||||
"stylelint": "^14.16.1",
|
||||
"stylelint-config-prettier-scss": "0.0.1",
|
||||
"stylelint-config-standard-scss": "^6.1.0",
|
||||
"stylelint-prettier": "^2.0.0"
|
||||
"npm-run-all": "^4.1.5",
|
||||
"prettier": "^3.2.5",
|
||||
"stylelint": "^15.11.0",
|
||||
"stylelint-config-standard-scss": "^11.1.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "stylelint '**/*.scss'",
|
||||
"lint": "npm-run-all --parallel --continue-on-error lint:*",
|
||||
"lint:css": "stylelint '**/*.scss'",
|
||||
"lint:formatting": "prettier --check '**/*.{scss,js,json}'",
|
||||
"format": "prettier --write '**/*.{scss,js,json}'",
|
||||
"stylelint-check": "stylelint-config-prettier-check"
|
||||
"test": "npm run lint"
|
||||
},
|
||||
"stylelint": {
|
||||
"ignoreFiles": [
|
||||
"assets/css/just-the-docs-default.scss",
|
||||
"assets/css/just-the-docs-light.scss",
|
||||
"assets/css/just-the-docs-dark.scss",
|
||||
"_sass/vendor/**/*.scss"
|
||||
],
|
||||
"extends": [
|
||||
"stylelint-config-standard-scss"
|
||||
],
|
||||
"rules": {
|
||||
"alpha-value-notation": null,
|
||||
"at-rule-empty-line-before": null,
|
||||
"color-function-notation": null,
|
||||
"media-feature-range-notation": "prefix",
|
||||
"no-descending-specificity": null,
|
||||
"scss/no-global-function-names": null
|
||||
}
|
||||
},
|
||||
"prettier": {
|
||||
"endOfLine": "lf",
|
||||
"semi": false,
|
||||
"singleQuote": false,
|
||||
"tabWidth": 2,
|
||||
"trailingComma": "es5"
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user