diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index fcb4b72b4ce8f..46bd1ede6282d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -9,7 +9,7 @@ "ghcr.io/rocker-org/devcontainer-features/apt-packages:1": { "packages": "build-essential,imagemagick,inotify-tools,jupyter-nbconvert,procps,ruby-full,zlib1g-dev" }, - "ghcr.io/devcontainers-contrib/features/prettier:1": {} + "ghcr.io/devcontainers-extra/features/prettier:1.0.2": {} }, // Optionally: run jekyll serve automatically on container entering using the Docker entrypoint diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000..e78589838cd80 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Force LF line endings, needed for Docker to work on Windows +*.sh text eol=lf \ No newline at end of file diff --git a/.github/workflows/axe.yml b/.github/workflows/axe.yml index 46d117fdb39e0..afa3c922190ee 100644 --- a/.github/workflows/axe.yml +++ b/.github/workflows/axe.yml @@ -43,6 +43,7 @@ jobs: } - name: Install and Build 🔧 run: | + sudo apt-get update && sudo apt-get install -y imagemagick pip3 install --upgrade jupyter export JEKYLL_ENV=production bundle exec jekyll build diff --git a/.github/workflows/broken-links-site.yml b/.github/workflows/broken-links-site.yml index 22b8f9af79215..a8718ef406958 100644 --- a/.github/workflows/broken-links-site.yml +++ b/.github/workflows/broken-links-site.yml @@ -31,6 +31,7 @@ jobs: } - name: Install and Build 🔧 run: | + sudo apt-get update && sudo apt-get install -y imagemagick pip3 install --upgrade jupyter export JEKYLL_ENV=production bundle exec jekyll build @@ -39,7 +40,7 @@ jobs: npm install -g purgecss purgecss -c purgecss.config.js - name: Link Checker 🔗 - uses: lycheeverse/lychee-action@v1.9.0 + uses: lycheeverse/lychee-action@v2.0.2 with: fail: false # only check local links diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml new file mode 100644 index 0000000000000..d23c011715471 --- /dev/null +++ b/.github/workflows/broken-links.yml @@ -0,0 +1,54 @@ +name: Check for broken links + +on: + push: + branches: + - master + - main + paths: + - "assets/**" + - "**.html" + - "**.js" + - "**.liquid" + - "**/*.md" + - "**.yml" + - "!.github/workflows/axe.yml" + - "!.github/workflows/deploy-docker-tag.yml" + - "!.github/workflows/deploy-image.yml" + - "!.github/workflows/docker-slim.yml" + - "!.github/workflows/lighthouse-badger.yml" + - "!.github/workflows/prettier.yml" + - "!lighthouse_results/**" + pull_request: + branches: + - master + - main + paths: + - "assets/**" + - "**.html" + - "**.js" + - "**.liquid" + - "**/*.md" + - "**.yml" + - "!.github/workflows/axe.yml" + - "!.github/workflows/deploy-docker-tag.yml" + - "!.github/workflows/deploy-image.yml" + - "!.github/workflows/docker-slim.yml" + - "!.github/workflows/lighthouse-badger.yml" + - "!.github/workflows/prettier.yml" + - "!lighthouse_results/**" + +jobs: + link-checker: + runs-on: ubuntu-latest + # only run on the main repo + if: github.repository == 'alshedivat/al-folio' + steps: + - uses: actions/checkout@v4 + + - name: Link Checker 🔗 + uses: lycheeverse/lychee-action@v2.0.2 + with: + fail: true + # removed md files that include liquid tags + args: --user-agent 'curl/7.54' --exclude-path README.md --exclude-path _pages/404.md --exclude-path _pages/blog.md --exclude-path _posts/2018-12-22-distill.md --exclude-path _posts/2023-04-24-videos.md --exclude-path _books/the_godfather.md --verbose --no-progress './**/*.md' './**/*.html' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000000000..d09a3b57548f4 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,94 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL Advanced" + +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] + schedule: + - cron: "45 4 * * 3" + +jobs: + analyze: + name: Analyze (${{ matrix.language }}) + # Runner size impacts CodeQL analysis time. To learn more, please see: + # - https://gh.io/recommended-hardware-resources-for-running-codeql + # - https://gh.io/supported-runners-and-hardware-resources + # - https://gh.io/using-larger-runners (GitHub.com only) + # Consider using larger runners or machines with greater resources for possible analysis time improvements. + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + permissions: + # required for all workflows + security-events: write + + # required to fetch internal or private CodeQL packs + packages: read + + # only required for workflows in private repositories + actions: read + contents: read + + strategy: + fail-fast: false + matrix: + include: + - language: javascript-typescript + build-mode: none + - language: ruby + build-mode: none + # CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' + # Use `c-cpp` to analyze code written in C, C++ or both + # Use 'java-kotlin' to analyze code written in Java, Kotlin or both + # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both + # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis, + # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning. + # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how + # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + # If the analyze step fails for one of the languages you are analyzing with + # "We were unable to automatically build your code", modify the matrix above + # to set the build mode to "manual" for that language. Then modify this step + # to build your code. + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + - if: matrix.build-mode == 'manual' + shell: bash + run: | + echo 'If you are using a "manual" build mode for one or more of the' \ + 'languages you are analyzing, replace this with the commands to build' \ + 'your code, for example:' + echo ' make bootstrap' + echo ' make release' + exit 1 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 51a32af9f1874..5fb7e8ae21c91 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -7,6 +7,8 @@ on: - main paths: - "assets/**" + - "_sass/**" + - "_scripts/**" - "**.bib" - "**.html" - "**.js" @@ -34,6 +36,8 @@ on: - main paths: - "assets/**" + - "_sass/**" + - "_scripts/**" - "**.bib" - "**.html" - "**.js" @@ -86,6 +90,7 @@ jobs: value: ${{ github.repository }} - name: Install and Build 🔧 run: | + sudo apt-get update && sudo apt-get install -y imagemagick pip3 install --upgrade nbconvert export JEKYLL_ENV=production bundle exec jekyll build diff --git a/.github/workflows/docker-slim.yml b/.github/workflows/docker-slim.yml index 3a67d32a142d6..b342ef662f151 100644 --- a/.github/workflows/docker-slim.yml +++ b/.github/workflows/docker-slim.yml @@ -12,11 +12,7 @@ on: workflows: ["Docker Image CI"] types: - completed - -# on: -# push: -# branches: -# - 'master' + workflow_dispatch: jobs: build: @@ -43,7 +39,7 @@ jobs: sed -i "s|\.:|${{ github.workspace }}:|g" ${{ github.workspace }}/docker-compose.yml cat ${{ github.workspace }}/docker-compose.yml - - uses: kitabisa/docker-slim-action@v1.1.1 + - uses: kitabisa/docker-slim-action@v1.2.0 env: DSLIM_PULL: true DSLIM_COMPOSE_FILE: ${{ github.workspace }}/docker-compose.yml diff --git a/.github/workflows/update-citations.yml b/.github/workflows/update-citations.yml new file mode 100644 index 0000000000000..1a90da53e0c0b --- /dev/null +++ b/.github/workflows/update-citations.yml @@ -0,0 +1,116 @@ +name: Update Google Scholar Citations + +on: + schedule: + - cron: "0 0 * * 1" # Monday + - cron: "0 0 * * 3" # Wednesday + - cron: "0 0 * * 5" # Friday + workflow_dispatch: + +jobs: + update-citations: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + # Use PAT if provided, otherwise fall back to GitHub token so `act` runs cleanly. + token: ${{ secrets.PAT || github.token }} + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.13" + + - name: Install dependencies + run: | + echo "🔧 Installing dependencies..." + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Save current citations.yml hash + id: before + run: | + echo "📦 Checking existing citations.yml hash..." + if [ -f _data/citations.yml ]; then + sha_before=$(sha256sum _data/citations.yml | awk '{print $1}') + echo "sha_before=$sha_before" >> $GITHUB_OUTPUT + echo "📝 SHA before: $sha_before" + else + echo "sha_before=none" >> $GITHUB_OUTPUT + echo "📝 No existing citations.yml file found." + fi + + - name: Run citation update script + id: run_citation_update + shell: bash + run: | + set +e + max_attempts=2 + attempt=1 + status=1 + while [ $attempt -le $max_attempts ]; do + echo "🚀 Attempt $attempt/$max_attempts: running citation update (timeout 180s)..." + start_time=$(date) + timeout 360 python bin/update_scholar_citations.py + status=$? + end_time=$(date) + if [ $status -eq 0 ]; then + echo "✅ Citation update succeeded on attempt $attempt (started at $start_time, ended at $end_time)." + echo "✅ Citation update succeeded." >> $GITHUB_STEP_SUMMARY + break + else + echo "❌ Citation update failed on attempt $attempt with exit code $status (started at $start_time, ended at $end_time)." + if [ $attempt -lt $max_attempts ]; then + echo "⏳ Retrying after brief pause..." + sleep 5 + fi + fi + attempt=$((attempt+1)) + done + + if [ $status -ne 0 ]; then + echo "❌ Citation update script failed after $max_attempts attempt(s) with exit code $status." >> $GITHUB_STEP_SUMMARY + fi + set -e + + - name: Save new citations.yml hash + id: after + run: | + echo "🔍 Checking updated citations.yml hash..." + if [ -f _data/citations.yml ]; then + sha_after=$(sha256sum _data/citations.yml | awk '{print $1}') + echo "sha_after=$sha_after" >> $GITHUB_OUTPUT + echo "📝 SHA after: $sha_after" + else + echo "sha_after=none" >> $GITHUB_OUTPUT + echo "📝 citations.yml was not created or is missing." + fi + + - name: Report citations.yml change in summary + run: | + echo "📋 Comparing citation file hashes..." + if [ "${{ steps.before.outputs.sha_before }}" != "${{ steps.after.outputs.sha_after }}" ]; then + echo "✅ _data/citations.yml was updated." + echo "✅ _data/citations.yml was updated." >> $GITHUB_STEP_SUMMARY + else + echo "ℹ️ _data/citations.yml was not changed." + echo "ℹ️ _data/citations.yml was not changed." >> $GITHUB_STEP_SUMMARY + fi + + - name: Configure Git + run: | + git config --local user.email "actions@github.com" + git config --local user.name "GitHub Actions" + echo "🔧 Git configured." + + - name: Commit and push if changed + if: ${{ !env.ACT }} # skip pushing when running under act + run: | + git add _data/citations.yml + git diff --staged --quiet || ( + echo "📤 Committing and pushing changes..." + git commit -m "Update Google Scholar citations" + git push + ) diff --git a/.github/workflows/update-tocs.yml b/.github/workflows/update-tocs.yml new file mode 100644 index 0000000000000..3567ee82a8f6b --- /dev/null +++ b/.github/workflows/update-tocs.yml @@ -0,0 +1,50 @@ +name: Update TOCs +# This workflow automatically updates the Table of Contents (TOC) in markdown files + +on: + push: + branches: + - main + - master + paths: + - "*.md" + workflow_dispatch: + +permissions: + contents: write + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # OR "2" -> To retrieve the preceding commit. + + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46 + with: + files: ./*.md + + - name: Updated toc on all markdown changed files + env: + ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + run: | + curl https://raw.githubusercontent.com/george-gca/github-markdown-toc/main/gh-md-toc -o gh-md-toc + chmod a+x gh-md-toc + for file in ${ALL_CHANGED_FILES}; do + # Check if the file is a markdown file + if [[ "$file" != *.md ]]; then + continue + fi + ./gh-md-toc --indent 2 --insert --no-backup --hide-footer $file + done + rm gh-md-toc + + - name: Commit changes + if: steps.changed-files.outputs.any_changed == 'true' + uses: stefanzweifel/git-auto-commit-action@v5.0.1 + with: + commit_message: Auto update markdown TOC diff --git a/.gitignore b/.gitignore index bfe9aafa79184..29d8c806f8035 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,6 @@ Gemfile.lock assets/libs/ node_modules/ vendor -.idea \ No newline at end of file +.idea +.venv +bin/__pycache__/update_scholar_citations.cpython-314.pyc diff --git a/.lycheeignore b/.lycheeignore index b3e4c818d05db..840671428fdfd 100644 --- a/.lycheeignore +++ b/.lycheeignore @@ -4,3 +4,5 @@ https://raw.githubusercontent.com/jcmartinezmori/jcmartinezmori.github.io/refs/h https://raw.githubusercontent.com/shalailahaas/shalailahaas.github.io/refs/heads/* https://raw.githubusercontent.com/kastnerp/kastnerp.github.io/refs/heads/* ^https?://([a-zA-Z\d-]+\.)*linkedin\.com(/.*)?$ +linkedin.com +reddit.com diff --git a/.prettierignore b/.prettierignore index ef61d8d86dec3..ed2331ef0944f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,7 +2,6 @@ **/*.min.css **/*.min.js assets/css/main.scss -assets/js/search-data.js assets/js/distillpub/template.v2.js assets/js/search/*.js assets/plotly/demo.html @@ -10,3 +9,6 @@ lighthouse_results/** _posts/2015-10-20-math.md _sass/font-awesome/*.scss _sass/tabler-icons/*.scss +_scripts/* +# Ignore citation YAML file generated by script +_data/citations.yml diff --git a/Dockerfile b/Dockerfile index c131f26d42829..99109cdf9b163 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:latest +FROM ruby:slim # uncomment these if you are having this issue with the build: # /usr/local/bundle/gems/jekyll-4.3.4/lib/jekyll/site.rb:509:in `initialize': Permission denied @ rb_sysopen - /srv/jekyll/.jekyll-cache/.gitignore (Errno::EACCES) @@ -24,6 +24,7 @@ RUN apt-get update -y && \ apt-get install -y --no-install-recommends \ build-essential \ curl \ + git \ imagemagick \ inotify-tools \ locales \ diff --git a/Gemfile b/Gemfile index ed552bfbe1fd2..d9087b6a72cf8 100644 --- a/Gemfile +++ b/Gemfile @@ -1,8 +1,10 @@ source 'https://rubygems.org' + +gem 'jekyll' + +# Core plugins that directly affect site building group :jekyll_plugins do - gem 'classifier-reborn' - gem 'jekyll' - gem 'jekyll-archives' + gem 'jekyll-archives-v2' gem 'jekyll-email-protect' gem 'jekyll-feed' gem 'jekyll-get-json' @@ -15,16 +17,23 @@ group :jekyll_plugins do gem 'jekyll-scholar' gem 'jekyll-sitemap' gem 'jekyll-tabs' + gem 'jekyll-terser', :git => "https://github.com/RobertoJBeltran/jekyll-terser.git" gem 'jekyll-toc' gem 'jekyll-twitter-plugin' gem 'jemoji' - gem 'unicode_utils' - gem 'webrick' + + gem 'classifier-reborn' # used for content categorization during the build gem 'jekyll-remote-include' - gem 'htmlbeautifier' end + +# Gems for development or external data fetching (outside :jekyll_plugins) group :other_plugins do gem 'css_parser' gem 'feedjira' gem 'httparty' -end \ No newline at end of file + gem 'observer' # used by jekyll-scholar + gem 'ostruct' # used by jekyll-twitter-plugin + # gem 'terser' # used by jekyll-terser + # gem 'unicode_utils' -- should be already installed by jekyll + # gem 'webrick' -- should be already installed by jekyll +end diff --git a/Gemfile.lock b/Gemfile.lock index 7cc6547117edd..f2e3186836185 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,14 +1,22 @@ +GIT + remote: https://github.com/RobertoJBeltran/jekyll-terser.git + revision: 1085bf66d692799af09fe39f8162a1e6e42a3cc4 + specs: + jekyll-terser (0.2.3) + jekyll (>= 0.10.0) + terser (>= 1.0.0) + GEM remote: https://rubygems.org/ specs: - activesupport (8.0.2) + activesupport (8.1.1) base64 - benchmark (>= 0.3) bigdecimal concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + json logger (>= 1.4.2) minitest (>= 5.1) securerandom (>= 0.3) @@ -17,7 +25,6 @@ GEM addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) base64 (0.2.0) - benchmark (0.4.0) bibtex-ruby (6.1.0) latex-decode (~> 0.0) racc (~> 1.7) @@ -66,41 +73,16 @@ GEM feedjira (3.2.5) loofah (>= 2.3.1, < 3) sax-machine (>= 1.0, < 2) - ffi (1.17.2-aarch64-linux-gnu) - ffi (1.17.2-aarch64-linux-musl) - ffi (1.17.2-arm-linux-gnu) - ffi (1.17.2-arm-linux-musl) - ffi (1.17.2-arm64-darwin) - ffi (1.17.2-x86-linux-gnu) - ffi (1.17.2-x86-linux-musl) - ffi (1.17.2-x86_64-darwin) - ffi (1.17.2-x86_64-linux-gnu) - ffi (1.17.2-x86_64-linux-musl) + ffi (1.17.2) forwardable (1.3.3) forwardable-extended (2.6.0) gemoji (4.1.0) google-protobuf (4.30.2) bigdecimal rake (>= 13) - google-protobuf (4.30.2-aarch64-linux) - bigdecimal - rake (>= 13) - google-protobuf (4.30.2-arm64-darwin) - bigdecimal - rake (>= 13) - google-protobuf (4.30.2-x86-linux) - bigdecimal - rake (>= 13) - google-protobuf (4.30.2-x86_64-darwin) - bigdecimal - rake (>= 13) - google-protobuf (4.30.2-x86_64-linux) - bigdecimal - rake (>= 13) html-pipeline (2.14.3) activesupport (>= 2) nokogiri (>= 1.4) - htmlbeautifier (1.4.3) htmlcompressor (0.4.0) http_parser.rb (0.8.0) httparty (0.23.1) @@ -128,7 +110,8 @@ GEM safe_yaml (~> 1.0) terminal-table (>= 1.8, < 4.0) webrick (~> 1.7) - jekyll-archives (2.3.0) + jekyll-archives-v2 (0.0.6) + activesupport jekyll (>= 3.6, < 5.0) jekyll-email-protect (1.1.0) jekyll-feed (0.17.0) @@ -192,7 +175,8 @@ GEM mercenary (0.4.0) mini_mime (1.1.5) mini_portile2 (2.8.8) - minitest (5.25.5) + minitest (6.0.1) + prism (~> 1.5) multi_xml (0.7.2) bigdecimal (~> 3.1) namae (1.2.0) @@ -200,29 +184,15 @@ GEM nokogiri (1.18.8) mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.18.8-aarch64-linux-gnu) - racc (~> 1.4) - nokogiri (1.18.8-aarch64-linux-musl) - racc (~> 1.4) - nokogiri (1.18.8-arm-linux-gnu) - racc (~> 1.4) - nokogiri (1.18.8-arm-linux-musl) - racc (~> 1.4) - nokogiri (1.18.8-arm64-darwin) - racc (~> 1.4) - nokogiri (1.18.8-x86_64-darwin) - racc (~> 1.4) - nokogiri (1.18.8-x86_64-linux-gnu) - racc (~> 1.4) - nokogiri (1.18.8-x86_64-linux-musl) - racc (~> 1.4) observer (0.1.2) open-uri (0.5.0) stringio time uri + ostruct (0.6.3) pathutil (0.16.2) forwardable-extended (~> 2.6) + prism (1.7.0) public_suffix (6.0.2) racc (1.8.1) rake (13.2.1) @@ -258,6 +228,8 @@ GEM stringio (3.1.7) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) + terser (1.2.6) + execjs (>= 0.3.0, < 3) time (0.4.1) date tzinfo (2.0.6) @@ -265,7 +237,6 @@ GEM uglifier (4.2.1) execjs (>= 0.3.0, < 3) unicode-display_width (2.6.0) - unicode_utils (1.4.0) uri (1.0.3) webrick (1.9.1) @@ -290,10 +261,9 @@ DEPENDENCIES classifier-reborn css_parser feedjira - htmlbeautifier httparty jekyll - jekyll-archives + jekyll-archives-v2 jekyll-email-protect jekyll-feed jekyll-get-json @@ -307,11 +277,12 @@ DEPENDENCIES jekyll-scholar jekyll-sitemap jekyll-tabs + jekyll-terser! jekyll-toc jekyll-twitter-plugin jemoji - unicode_utils - webrick + observer + ostruct BUNDLED WITH 2.5.22 diff --git a/LICENSE b/LICENSE index f2b868157f9b1..368a8aac13cd0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2022 Maruan Al-Shedivat. +Copyright (c) 2025 Maruan Al-Shedivat. 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 diff --git a/_bibliography/papers.bib b/_bibliography/papers.bib index ab5e28f2f6cfd..1245726306a60 100644 --- a/_bibliography/papers.bib +++ b/_bibliography/papers.bib @@ -1,3 +1,19 @@ +@inproceedings{rothe2025influence, + title = {The influence of vegetation structure on urban microclimate: A CFD analysis of urban block and vegetation densities}, + author = {Rothe, Chinmay Shashikant and Marshall, Marionyt Tyrone and Kastner, Patrick}, + year = 2025, + month = {August}, + booktitle = {Proceedings of Building Simulation 2025: 18th Conference of IBPSA}, + publisher = {IBPSA}, + location = {Brisbane, Australia}, + abstract = {Urbanization has a considerable impact on the Urban Heat Island (UHI) effect and results in a negative impact on outdoor thermal comfort. In this context, vegetation can be an important lever in alleviating the UHI. Various types of sizes, and densities of vegetation offer different levels of cooling effects in the surrounding areas thereby enhancing thermal comfort. This paper assesses the impact of urban block layouts and varying vegetation densities on the urban microclimate specifically focusing on the regulation of humidity and air temperature. The objective is to determine how variations in vegetation types, densities, and sizes specifically influence the microclimate. We used Computational Fluid Dynamics (CFD) to analyze airflow patterns, temperature differences, and humidity levels in three different locations on a university campus in Atlanta, Georgia. The vegetation is modeled with different levels of porosity and sizes. The Leaf Area Density (LAD) is a measure that quantifies the leaf surface area in a given volume of vegetation. LAD affects the heat balance of the leaves which affects the surrounding temperature. The density of LAD determines the extent of shading and cooling effects through transpiration and absorption of solar radiation process. The higher the density would generally experience more shading and reduced temperatures, which is essential for regulating urban microclimate. The Universal Thermal Comfort Index (UTCI) is used to show the reduction in the temperature and thermal stress in and around the vegetation regions. The simulation will be investigated in a three-dimensional urban microclimate setting inside the Rhinoceros3d modeling software and carried out using the ‘urbanmicroclimatefoam’ solver in OpenFOAM. Trees are modeled as porous zones where LAD value is set to non-zero. Through this study we aim to propose guidelines for Sustainable analysts and Urban planners on the influence of vegetation in outdoor temperature and its impacts on local microclimate and neighborhood buildings.}, + pdf = {https://publications.ibpsa.org/proceedings/bs/2025/papers/bs2025_1754.pdf}, + url = {https://publications.ibpsa.org/conference/paper/?id=bs2025_1754}, + preview = {BS2025-vegetation.png}, + bibtex_show = {true}, + selected = {false}, +} + @article{rahimi2025coupled, title = {Coupled Urban Physics in Microclimate Modeling: Validating and Enhancing Simulation Tools}, author = {Rahimi, Sina and Alvarez, Marcelo and Stone, Brian and Berardi, Umberto and Kastner, Patrick}, @@ -25,7 +41,24 @@ @inproceedings{xu2025understanding url = {https://www.researchgate.net/publication/394537941_Understanding_Urban_Building_Energy_Consumption_with_Explainable_Machine_Learning_Approaches}, abstract = {Urban decarbonization is a critical goal in addressing climate change, requiring large-scale Urban Building Energy Models (UBEMs) to inform effective policy decisions. To understand the non-linear relationships between individual building energy demand, complex neighborhood context, and population factors at an urban scale, this study uses machine learning-based models of energy use combined with rarely-used geospatial data. In our case study area, we combine building footprints, tax assessments, and anonymized meter-level energy usage billing data provided by the local utility. We derive non-geometric information from tax assessment data that incorporates thermal systems, vintage, improvement records, demographics, and rural-urban definitions. We include geospatial features, such as the urban tree canopy (UTC) ratio, to capture microclimate impacts on building energy demand, driven by shading and evapotranspiration effects. We compare multiple machine learning models—including Multivariable Linear Regression (MLR), K-Nearest Neighbors (KNN), Support Vector Machine (SVM), Extreme Gradient Boosting (XGB), and Random Forest (RF)—with respect to Mean Absolute Error (MAE), Root Mean Square Error (MSE), and the coefficient of determination (R²). Results show RF outperforms other models, and partial dependence plots (PDPs) highlight the significance of UTC in shaping building energy consumption. These findings help prioritize model features for data-driven urban building energy modeling and emphasize the need to incorporate additional microclimate features in future studies.}, bibtex_show = {true}, - preview = {CAADFutures2025.png}, + preview = {CAADFutures2025.png}, +} + +@article{SMYL2025120869, + title = {OpenPyStruct: Open-source toolkit for machine learning-driven structural optimization}, + author = {Smyl, Danny and Zhuang, Bozhou and Rigby, Sam and Bruun, Edvard and Jones, Brandon and Kastner, Patrick and Tien, Iris and Gallet, Adrien}, + year = 2025, + journal = {Engineering Structures}, + volume = {343}, + pages = {120869}, + issn = {0141-0296}, + doi = {https://doi.org/10.1016/j.engstruct.2025.120869}, + url = {https://www.sciencedirect.com/science/article/pii/S014102962501260X}, + keywords = {Structural design, Finite element method, Machine learning, Optimization, Python, Structural engineering}, + abstract = {OpenPyStruct (Toolkit URL: OpenPyStruct, Repository URL: Data) is an open-source toolkit that provides finite element model based optimization frameworks for generating training data and machine learning models for global structural optimization of indeterminate continuous structures. The key machine learning feature of OpenPyStruct is its ability to optimize single or multiple arbitrary loading and support conditions. The framework utilizes multi-core central processing unit (CPU) and graphics processing unit (GPU)-enhanced implementations integrating OpenSeesPy for structural optimization. PyTorch is used for accelerated computations. Accompanying machine learning scripts enable users to train high-fidelity predictive models such as transformer with diffusion modules, physics-informed neural networks (PINNs), convolutional operations, and contemporary machine learning techniques to analyze and optimize structural designs. By incorporating state-of-the-art optimization tools, robust datasets, and flexible machine learning resources, OpenPyStruct aims to establish a scalable and fully-transparent engine for structural optimization by engaging the structural engineering community in this open-source toolkit.}, + preview = {OpenPyStruct2025.png}, + bibtex_show = {true}, + selected = {false}, } @article{dogan2025bottom, @@ -378,5 +411,3 @@ @misc{vangelova2024gni preview = {GNI2024-1.png}, code = {https://github.com/SustainableUrbanSystemsLab/CP-GNI2024-Symposium-Enriching-geospatial-building-datasets} } - - diff --git a/_config.yml b/_config.yml index f13bda0fb1d74..1b784c33b7ae4 100644 --- a/_config.yml +++ b/_config.yml @@ -44,8 +44,6 @@ repo_trophies: # will use title and url fields # Take a look to https://github.com/jekyll/jekyll-feed for more customization -rss_icon: true - # ----------------------------------------------------------------------------- # Layout # ----------------------------------------------------------------------------- @@ -70,53 +68,7 @@ serve_og_meta: true # Include Open Graph meta tags in the HTML head serve_schema_org: true # Include Schema.org in the HTML head og_image: # The site-wide (default for all links) Open Graph preview image -# ----------------------------------------------------------------------------- -# Social integration -# ----------------------------------------------------------------------------- - -acm_id: # your dl.acm.org/profile/id -blogger_url: # your blogger URL -bluesky_url: # your bluesky URL -dblp_url: # your DBLP profile url -discord_id: # your discord id (18-digit unique numerical identifier) -facebook_id: # your facebook id -flickr_id: # your flickr id -github_username: SustainableUrbanSystemsLab # your GitHub user name -gitlab_username: # your GitLab user name -ieee_id: # your ieeexplore.ieee.org/author/id -inspirehep_id: # Inspire HEP author ID -instagram_id: # your instagram id -kaggle_id: # your kaggle id -keybase_username: # your keybase user name -lastfm_id: # your lastfm id -lattes_id: # your ID on Lattes (Brazilian Lattes CV) -linkedin_username: sustainable-urban-systems-lab # your LinkedIn user name -mastodon_username: # your mastodon instance+username in the format instance.tld/@username -medium_username: # your Medium username -orcid_id: # your ORCID ID -osf_id: # your OSF ID -pinterest_id: # your pinterest id -publons_id: # your ID on Publons -quora_username: # your Quora username -research_gate_profile: Patrick-Kastner # your profile on ResearchGate -scholar_userid: XNaNgkwAAAAJ # your Google Scholar ID -scopus_id: # your profile on Scopus -semanticscholar_id: # your Semantic Scholar ID -spotify_id: # your spotify id -stackoverflow_id: # your stackoverflow id -telegram_username: # your Telegram user name -unsplash_id: # your unsplash id -wechat_qr: # filename of your wechat qr-code saved as an image (e.g., wechat-qr.png if saved to assets/img/wechat-qr.png) -whatsapp_number: # your WhatsApp number (full phone number in international format. Omit any zeroes, brackets, or dashes when adding the phone number in international format.) -wikidata_id: # your wikidata id -wikipedia_id: # your wikipedia id (Case sensitive) -work_url: # https://sustainableurbansystems.com/ # work page URL -x_username: # your X handle -youtube_id: # your youtube channel id (youtube.com/@) -zotero_username: # your zotero username - -contact_note: #> - # You can even add a little note about which of these is the best way to reach you. + # ----------------------------------------------------------------------------- # Analytics and search engine verification @@ -127,6 +79,7 @@ contact_note: #> google_analytics: # your Google Analytics measurement ID (format: G-XXXXXXXXXX) cronitor_analytics: # cronitor RUM analytics site ID (format: XXXXXXXXX) pirsch_analytics: # your Pirsch analytics site ID (length 32 characters) +openpanel_analytics: # your Openpanel analytics client ID (format: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) # For Google Search Console, see https://support.google.com/webmasters/answer/9008080?hl=en#meta_tag_verification&zippy=%2Chtml-tag google_site_verification: # your google-site-verification ID (Google Search Console) @@ -160,7 +113,8 @@ giscus: strict: 1 # use strict identification mode reactions_enabled: 1 # enable (1) or disable (0) emoji reactions input_position: bottom # whether to display input form below (bottom) or above (top) the comments - theme: preferred_color_scheme # name of the color scheme (preferred works well with al-folio light/dark mode) + dark_theme: dark # name of the dark color scheme (preferred works well with al-folio dark mode) + light_theme: light # name of the light color scheme (preferred works well with al-folio light mode) emit_metadata: 0 lang: en @@ -193,11 +147,12 @@ newsletter: # ----------------------------------------------------------------------------- collections: + books: + output: true news: defaults: layout: post output: true - permalink: /:collection/:title/ projects: output: true permalink: /:collection/:title/ @@ -237,7 +192,7 @@ kramdown: start_line: 1 # Includes & excludes -include: ["_pages"] +include: ["_pages", "_scripts"] exclude: - bin/ - CONTRIBUTING.md @@ -264,7 +219,7 @@ keep_files: # Plug-ins plugins: - - jekyll-archives + - jekyll-archives-v2 - jekyll-email-protect - jekyll-feed - jekyll-get-json @@ -277,8 +232,10 @@ plugins: - jekyll/scholar - jekyll-sitemap - jekyll-tabs + - jekyll-terser - jekyll-toc - jekyll-twitter-plugin + - jekyll-remote-include - jemoji # Sitemap settings @@ -296,24 +253,30 @@ sass: # ----------------------------------------------------------------------------- jekyll-minifier: - exclude: ["robots.txt", "assets/js/search/*.js", "assets/libs/**/*"] - uglifier_args: - harmony: true + compress_javascript: false # set to false since we are using terser as the js minifier + exclude: ["robots.txt", "assets/js/search/*.js"] + +# ----------------------------------------------------------------------------- +# Terser +# ----------------------------------------------------------------------------- + +terser: + compress: + drop_console: true # ----------------------------------------------------------------------------- # Jekyll Archives # ----------------------------------------------------------------------------- jekyll-archives: - enabled: [year, tags, categories] # enables year, tag and category archives (remove if you need to disable one of them). - layouts: - year: archive-year - tag: archive-tag - category: archive-category - permalinks: - year: "/blog/:year/" - tag: "/blog/tag/:name/" - category: "/blog/category/:name/" + posts: + enabled: [year, tags, categories] # enables year, tag and category archives (remove if you need to disable one of them). + permalinks: + year: "/blog/:year/" + tags: "/blog/:type/:name/" + categories: "/blog/:type/:name/" + books: + enabled: [year, tags, categories] # enables year, tag and category archives (remove if you need to disable one of them). display_tags: ["formatting", "images", "links", "math", "code", "blockquotes"] # these tags will be displayed on the front page of your blog display_categories: ["external-services"] # these categories will be displayed on the front page of your blog @@ -438,11 +401,12 @@ lazy_loading_images: true # enables lazy loading of images (recommended) enable_google_analytics: false # enables google analytics enable_cronitor_analytics: false # enables cronitor RUM analytics enable_pirsch_analytics: false # enables Pirsch analytics (https://pirsch.io/) +enable_openpanel_analytics: false # enables Openpanel analytics (https://openpanel.dev/) enable_google_verification: false # enables google site verification enable_bing_verification: false # enables bing site verification enable_masonry: true # enables automatic project cards arrangement enable_math: true # enables math typesetting (uses MathJax) -enable_tooltips: false # enables automatic tooltip links generated for each section titles on pages and posts +enable_tooltips: true # enables automatic tooltip links generated for each section titles on pages and posts enable_darkmode: true # enables switching between light/dark modes enable_navbar_social: false # enables displaying social links in the navbar on the about page enable_project_categories: true # enables categorization of projects into multiple categories @@ -545,6 +509,14 @@ third_party_libraries: js: "https://cdn.jsdelivr.net/npm/leaflet@{{version}}/dist/leaflet.min.js" js_map: "https://cdn.jsdelivr.net/npm/leaflet@{{version}}/dist/leaflet.js.map" version: "1.9.4" + lightbox2: + integrity: + css: "sha256-uypRbsAiJcFInM/ndyI/JHpzNe6DtUNXaWEUWEPfMGo=" + js: "sha256-A6jI5V9s1JznkWwsBaRK8kSeXLgIqQfxfnvdDOZEURY=" + url: + css: "https://cdn.jsdelivr.net/npm/lightbox2@{{version}}/dist/css/lightbox.min.css" + js: "https://cdn.jsdelivr.net/npm/lightbox2@{{version}}/dist/js/lightbox.min.js" + version: "2.11.5" mathjax: integrity: js: "sha256-MASABpB4tYktI2Oitl4t+78w/lyA+D7b/s9GEP0JOGI=" @@ -584,6 +556,25 @@ third_party_libraries: url: js: "https://cdn.jsdelivr.net/npm/mermaid@{{version}}/dist/mermaid.min.js" version: "10.7.0" + photoswipe: + integrity: + js: "sha256-VCBpdxvrNNxGHNuTdNqK9kPFkev2XY7DYzHdmgaB69Q=" + url: + css: "https://cdn.jsdelivr.net/npm/photoswipe@{{version}}/dist/photoswipe.min.css" + js: "https://cdn.jsdelivr.net/npm/photoswipe@{{version}}/dist/photoswipe.esm.min.js" + version: "5.4.4" + photoswipe-lightbox: + integrity: + js: "sha256-uCw4VgT5DMdwgtjhvU9e98nT2mLZXcw/8WkaTrDd3RI=" + url: + js: "https://cdn.jsdelivr.net/npm/photoswipe@{{version}}/dist/photoswipe-lightbox.esm.min.js" + version: "5.4.4" + plotly: + integrity: + js: "sha256-oy6Be7Eh6eiQFs5M7oXuPxxm9qbJXEtTpfSI93dW16Q=" + url: + js: "https://cdn.jsdelivr.net/npm/plotly.js@{{version}}/dist/plotly.min.js" + version: "3.0.1" polyfill: url: js: "https://cdnjs.cloudflare.com/polyfill/v{{version}}/polyfill.min.js?features=es6" @@ -596,6 +587,13 @@ third_party_libraries: css: "https://cdn.jsdelivr.net/npm/pseudocode@{{version}}/build/pseudocode.min.css" js: "https://cdn.jsdelivr.net/npm/pseudocode@{{version}}/build/pseudocode.min.js" version: "2.4.1" + spotlight: + integrity: + css: "sha256-Dsvkx8BU8ntk9Iv+4sCkgHRynYSQQFP6gJfBN5STFLY=" + url: + css: "https://cdn.jsdelivr.net/npm/spotlight.js@{{version}}/dist/css/spotlight.min.css" + js: "https://cdn.jsdelivr.net/npm/spotlight.js@{{version}}/dist/spotlight.bundle.min.js" + version: "0.7.8" swiper: integrity: css: "sha256-yUoNxsvX+Vo8Trj3lZ/Y5ZBf8HlBFsB6Xwm7rH75/9E=" @@ -636,6 +634,14 @@ third_party_libraries: js: "https://cdn.jsdelivr.net/npm/vega-lite@{{version}}/build/vega-lite.min.js" js_map: "https://cdn.jsdelivr.net/npm/vega-lite@{{version}}/build/vega-lite.min.js.map" version: "5.16.3" + venobox: + integrity: + css: "sha256-ohJEB0/WsBOdBD+gQO/MGfyJSbTUI8OOLbQGdkxD6Cg=" + js: "sha256-LsGXHsHMMmTcz3KqTaWvLv6ome+7pRiic2LPnzTfiSo=" + url: + css: "https://cdn.jsdelivr.net/npm/venobox@{{version}}/dist/venobox.min.css" + js: "https://cdn.jsdelivr.net/npm/venobox@{{version}}/dist/venobox.min.js" + version: "2.1.8" # ----------------------------------------------------------------------------- # Get external JSON data diff --git a/_data/socials.yml b/_data/socials.yml new file mode 100644 index 0000000000000..2414bee9da16f --- /dev/null +++ b/_data/socials.yml @@ -0,0 +1,58 @@ +# this file contains the social media links and usernames of the author +# the commented lines are the default social media links supported by the template +# the socials will be displayed in the order they are defined here + +# academia_edu: your organization and your username Ex. https://organization.academia.edu/UserName +# organization: princeton # your organization as appears in the subdomain +# username: AlbertEinstein # your username +# acm_id: # your dl.acm.org/profile/id +# arxiv_id: # your arXiv author ID +# blogger_url: # your blogger URL +# bluesky_url: # your bluesky URL +# cv_pdf: # /assets/pdf/example_pdf.pdf # path to your CV PDF file +# dblp_url: # your DBLP profile url +# discord_id: # your discord id (18-digit unique numerical identifier) +# email: # your email address +# facebook_id: # your facebook id +# flickr_id: # your flickr id +# github_username: # your GitHub user name +# gitlab_username: # your GitLab user name +# hal_id: # your HAL id (https://hal.science/) +# ieee_id: # your ieeexplore.ieee.org/author/id +# inspirehep_id: # Inspire HEP author ID +# instagram_id: # your instagram id +# kaggle_id: # your kaggle id +# keybase_username: # your keybase user name +# lastfm_id: # your lastfm id +# lattes_id: # your ID on Lattes (Brazilian Lattes CV) +# leetcode_id: # your LeetCode id +# linkedin_username: # your LinkedIn user name +# mastodon_username: # your mastodon instance+username in the format instance.tld/@username +# medium_username: # your Medium username +orcid_id: 0000-0003-4940-341X # your ORCID ID +# osf_id: # your OSF ID +# pinterest_id: # your pinterest id +# publons_id: # your ID on Publons +# quora_username: # your Quora username +# research_gate_profile: # your profile on ResearchGate +rss_icon: true # comment this line to hide the RSS icon +scholar_userid: XNaNgkwAAAAJ # your Google Scholar ID +# scopus_id: # your profile on Scopus +# semanticscholar_id: # your Semantic Scholar ID +# spotify_id: # your spotify id +# stackoverflow_id: # your stackoverflow id +# strava_userid: # your strava user id +# telegram_username: # your Telegram user name +# unsplash_id: # your unsplash id +# wechat_qr: # filename of your wechat qr-code saved as an image (e.g., wechat-qr.png if saved to assets/img/wechat-qr.png) +# whatsapp_number: # your WhatsApp number (full phone number in international format. Omit any zeroes, brackets, or dashes when adding the phone number in international format.) +# wikidata_id: # your wikidata id +# wikipedia_id: # your wikipedia id (Case sensitive) +# work_url: # work page URL +# x_username: # your X handle +# youtube_id: # your youtube channel id (youtube.com/@) +# zotero_username: # your zotero username +# custom_social: # can be any name here other than the ones already defined above + # logo: https://www.alberteinstein.com/wp-content/uploads/2024/03/cropped-favicon-192x192.png # can be png, svg, jpg + # title: Custom Social + # url: https://www.alberteinstein.com/ diff --git a/_includes/distill_scripts.liquid b/_includes/distill_scripts.liquid new file mode 100644 index 0000000000000..8a8aa1f329486 --- /dev/null +++ b/_includes/distill_scripts.liquid @@ -0,0 +1,294 @@ + + + + + + + + + + +{% if page.mermaid and page.mermaid.enabled %} + + + {% if page.mermaid.zoomable %} + + {% endif %} + +{% endif %} + +{% if page.code_diff %} + + + + +{% endif %} + +{% if page.map %} + + + +{% endif %} + +{% if page.chart and page.chart.chartjs %} + + + +{% endif %} + +{% if page.chart and page.chart.echarts %} + + + {% if site.enable_darkmode %} + + {% endif %} + +{% endif %} + +{% if page.chart and page.chart.plotly %} + + + +{% endif %} + +{% if page.chart and page.chart.vega_lite %} + + + + + +{% endif %} + +{% if page.tikzjax %} + + +{% endif %} + +{% if page.typograms %} + + +{% endif %} + +{% if site.enable_tooltips %} + + +{% endif %} + +{% if site.enable_medium_zoom %} + + + +{% endif %} + +{% if page.toc and page.toc.sidebar %} + + +{% endif %} + +{% if page.pretty_table %} + + + +{% endif %} + + + + + + + + + + + +{% if site.enable_math %} + + + + + +{% endif %} + +{% if site.enable_google_analytics %} + + + + +{% endif %} + +{% if site.enable_cronitor_analytics %} + + + +{% endif %} +{% if site.enable_pirsch_analytics %} + +{% endif %} +{% if site.enable_openpanel_analytics %} + + +{% endif %} + +{% if site.enable_progressbar %} + + +{% endif %} + +{% if page.images %} + + {% if page.images.compare %} + + {% endif %} + {% if page.images.lightbox2 %} + + {% endif %} + {% if page.images.photoswipe %} + + {% endif %} + {% if page.images.slider %} + + {% endif %} + {% if page.images.spotlight %} + + {% endif %} + {% if page.images.venobox %} + + + {% endif %} +{% endif %} + +{% if page.tabs %} + + +{% endif %} + +{% if site.back_to_top %} + + + +{% endif %} + +{% if site.search_enabled %} + + + + + + +{% endif %} diff --git a/_includes/figure.liquid b/_includes/figure.liquid index b7af274ef91d1..b844f29b0e09b 100644 --- a/_includes/figure.liquid +++ b/_includes/figure.liquid @@ -14,20 +14,22 @@ https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images for info on defining 'sizes' for responsive images --> {% if site.imagemagick.enabled %} - + {% unless include.avoid_scaling %} + + {% endunless %} {% endif %} Impressum. + {% endif %} + {% if site.last_updated %} + Last updated: {{ 'now' | date: '%B %d, %Y' }}. + {% endif %} +{% endcapture %} + {% if site.footer_fixed %}
- © Copyright {{ site.time | date: '%Y' }} - {{ site.first_name }} - {{ site.middle_name }} - {{ site.last_name }}. {{ site.footer_text }} - {% if site.impressum_path %} - Impressum. - {% endif %} - {% if site.last_updated %} - Last updated: {{ 'now' | date: '%B %d, %Y' }}. - {% endif %} + {{ footer_contents }}
{% else %}
{% if site.newsletter.enabled %} - {% include scripts/newsletter.liquid %} + {% include newsletter.liquid %} {% endif %}
- © Copyright {{ site.time | date: '%Y' }} - {{ site.first_name }} - {{ site.middle_name }} - {{ site.last_name }}. {{ site.footer_text }} - {% if site.impressum_path %} - Impressum. - {% endif %} - {% if site.last_updated %} - Last updated: {{ 'now' | date: '%B %d, %Y' }}. - {% endif %} + {{ footer_contents }}
{% endif %} diff --git a/_includes/giscus.liquid b/_includes/giscus.liquid index 8ac16ee1d06a1..f4e6f06905e09 100644 --- a/_includes/giscus.liquid +++ b/_includes/giscus.liquid @@ -1,32 +1,25 @@ -
- {% if site.giscus.repo %} - - + {% if site.giscus.repo %} + + {% else %} - {% capture giscus_warning %} > ##### giscus comments misconfigured > Please follow instructions at - [http://giscus.app](http://giscus.app) and update your giscus configuration. {: .block-danger } {% endcapture %} + {% capture giscus_warning %} +> ##### giscus comments misconfigured +> Please follow instructions at [http://giscus.app](http://giscus.app) and update your giscus configuration. +{: .block-danger } + {% endcapture %} {{ giscus_warning | markdownify }} {% endif %}
diff --git a/_includes/head.liquid b/_includes/head.liquid index b4f32b06eccef..69e99de9a39bf 100644 --- a/_includes/head.liquid +++ b/_includes/head.liquid @@ -10,8 +10,8 @@ crossorigin="anonymous" > - {% if page.pretty_table %} + + - {% if page.pseudocode %} + - - {% if site.enable_darkmode %} + + {% endif %} - {% if page.map %} + {% endif %} - {% if page.code_diff %} + {% if page.images.compare %} + {% endif %} - + {% if page.images.lightbox2 %} + + + {% endif %} + {% if page.images.photoswipe %} + + + {% endif %} {% if page.images.slider %} + {% endif %} + {% if page.images.spotlight %} + + + {% endif %} + {% if page.images.venobox %} + + + {% endif %} {% endif %} {% if page.tikzjax %} diff --git a/_includes/header.liquid b/_includes/header.liquid index c6bcb57023c85..063b72f1fba68 100644 --- a/_includes/header.liquid +++ b/_includes/header.liquid @@ -55,47 +55,61 @@ {% assign sorted_pages = site.pages | sort: 'nav_order' %} {% for p in sorted_pages %} {% if p.nav and p.autogen == null %} - {% if p.dropdown %} - {% assign has_active_child = false %} - {% for child in p.children %} - {% if page.title == child.title %} - {% assign has_active_child = true %} - {% endif %} - {% endfor %} - - {% else %} - {% assign parent_link = p.permalink | remove: 'index.html' %} - - {% endif %} + + {% else %} + {% assign parent_link = p.permalink | remove: 'index.html' %} + + {% endif %} {% endif %} {% endfor %} {% if site.search_enabled %} diff --git a/_includes/latest_posts.liquid b/_includes/latest_posts.liquid index e710727a605eb..3342619cd38b8 100644 --- a/_includes/latest_posts.liquid +++ b/_includes/latest_posts.liquid @@ -1,16 +1,16 @@
- {% if site.latest_posts != blank %} + {% if page.latest_posts != blank %} {% assign latest_posts_size = site.posts | size %}
3 %} + {% if page.latest_posts.scrollable and latest_posts_size > 3 %} style="max-height: 60vw" {% endif %} > {% assign latest_posts = site.posts %} - {% if site.latest_posts.limit %} - {% assign latest_posts_limit = site.latest_posts.limit %} + {% if page.latest_posts.limit %} + {% assign latest_posts_limit = page.latest_posts.limit %} {% else %} {% assign latest_posts_limit = latest_posts_size %} {% endif %} diff --git a/_includes/metadata.liquid b/_includes/metadata.liquid index 15464caeeb04c..e12e394b40d05 100644 --- a/_includes/metadata.liquid +++ b/_includes/metadata.liquid @@ -80,145 +80,151 @@ {% comment %} Social links generator for "sameAs schema" {% endcomment %} {% assign sameaslinks = '' | split: ',' %} - {% if site.orcid_id %} - {% capture link %}https://orcid.org/{{ site.orcid_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.scholar_userid %} - {% capture link %}https://scholar.google.com/citations?user={{ site.scholar_userid }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.semanticscholar_id %} - {% capture link %}https://www.semanticscholar.org/author/{{ site.semanticscholar_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.publons_id %} - {% capture link %}https://publons.com/a/{{ site.publons_id }}/{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.lattes_id %} - {% capture link %}http://lattes.cnpq.br/{{ site.lattes_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.osf_id %} - {% capture link %}https://osf.io/{{ site.osf_id }}/{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.research_gate_profile %} - {% capture link %}https://www.researchgate.net/profile/{{ site.research_gate_profile }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.scopus_id %} - {% capture link %}https://www.scopus.com/authid/detail.uri?authorId={{ site.scopus_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.github_username %} - {% capture link %}https://github.com/{{ site.github_username }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.telegram_username %} - {% capture link %}https://telegram.me/{{ site.telegram_username }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.linkedin_username %} - {% capture link %}https://www.linkedin.com/in/{{ site.linkedin_username }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.x_username %} - {% capture link %}https://twitter.com/{{ site.x_username }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.mastodon_username %} - {% capture link %}https://{{ site.mastodon_username }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.medium_username %} - {% capture link %}https://medium.com/@{{ site.medium_username }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.quora_username %} - {% capture link %}https://www.quora.com/profile/{{ site.quora_username }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.blogger_url %} - {% capture link %}{{ site.blogger_url }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.work_url %} - {% capture link %}{{ site.work_url }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.wikidata_id %} - {% capture link %}https://www.wikidata.org/wiki/{{ site.wikidata_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.wikipedia_id %} - {% capture link %}https://wikipedia.org/wiki/User:{{ site.wikipedia_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.strava_userid %} - {% capture link %}https://www.strava.com/athletes/{{ site.strava_userid }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.keybase_username %} - {% capture link %}https://keybase.io/{{ site.keybase_username }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.gitlab_username %} - {% capture link %}https://gitlab.com/{{ site.gitlab_username }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.dblp_url %} - {% capture link %}{{ site.dblp_url }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.stackoverflow_id %} - {% capture link %}https://stackoverflow.com/users/{{ site.stackoverflow_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.kaggle_id %} - {% capture link %}https://www.kaggle.com/{{ site.kaggle_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.lastfm_id %} - {% capture link %}https://www.last.fm/user/{{ site.lastfm_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.spotify_id %} - {% capture link %}https://open.spotify.com/user/{{ site.spotify_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.pinterest_id %} - {% capture link %}https://www.pinterest.com/{{ site.pinterest_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.unsplash_id %} - {% capture link %}https://unsplash.com/@{{ site.unsplash_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.instagram_id %} - {% capture link %}https://instagram.com/{{ site.instagram_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.facebook_id %} - {% capture link %}https://facebook.com/{{ site.facebook_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.youtube_id %} - {% capture link %}https://youtube.com/@{{ site.youtube_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.discord_id %} - {% capture link %}https://discord.com/users/{{ site.discord_id }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if site.zotero_username %} - {% capture link %}https://www.zotero.org/{{ site.zotero_username }}{% endcapture %} - {% assign sameaslinks = sameaslinks | push: link %} - {% endif %} - {% if sameaslinks != blank %} - {% assign sameaslinks = sameaslinks | split: '' %} - {% endif %} + {% for social in site.data.socials %} + {% case social[0] %} + {% when 'acm_id' %} + {% capture link %}https://dl.acm.org/profile/{{ social[1] }}/{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'arxiv_id' %} + {% capture link %}https://arxiv.org/a/{{ social[1] }}.html{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'blogger_url' %} + {% capture link %}{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'bluesky_url' %} + {% capture link %}{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'dblp_url' %} + {% capture link %}{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'discord_id' %} + {% capture link %}https://discord.com/users/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'email' %} + {% comment %} + {% capture link %}mailto:{{ social[1] | encode_email }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% endcomment %} + {% when 'facebook_id' %} + {% capture link %}https://facebook.com/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'flickr_id' %} + {% capture link %}https://www.flickr.com/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'github_username' %} + {% capture link %}https://github.com/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'gitlab_username' %} + {% capture link %}https://gitlab.com/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'hal_id' %} + {% capture link %}https://cv.hal.science/{{ social[1] }}/{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'ieee_id' %} + {% capture link %}https://ieeexplore.ieee.org/author/{{ social[1] }}/{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'inspirehep_id' %} + {% capture link %}https://inspirehep.net/authors/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'instagram_id' %} + {% capture link %}https://instagram.com/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'kaggle_id' %} + {% capture link %}https://www.kaggle.com/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'keybase_username' %} + {% capture link %}https://keybase.io/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'lastfm_id' %} + {% capture link %}https://www.last.fm/user/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'lattes_id' %} + {% capture link %}http://lattes.cnpq.br/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'leetcode_id' %} + {% capture link %}https://leetcode.com/u/{{ social[1] }}/{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'linkedin_username' %} + {% capture link %}https://www.linkedin.com/in/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'mastodon_username' %} + {% capture link %}https://{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'medium_username' %} + {% capture link %}https://medium.com/@{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'orcid_id' %} + {% capture link %}https://orcid.org/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'osf_id' %} + {% capture link %}https://osf.io/{{ social[1] }}/{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'pinterest_id' %} + {% capture link %}https://www.pinterest.com/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'publons_id' %} + {% capture link %}https://publons.com/a/{{ social[1] }}/{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'quora_username' %} + {% capture link %}https://www.quora.com/profile/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'research_gate_profile' %} + {% capture link %}https://www.researchgate.net/profile/{{ social[1] }}/{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'rss_icon' %} + {% comment %} + {% capture link %}{{ site.baseurl }}/feed.xml{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% endcomment %} + {% when 'scholar_userid' %} + {% capture link %}https://scholar.google.com/citations?user={{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'scopus_id' %} + {% capture link %}https://www.scopus.com/authid/detail.uri?authorId={{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'semanticscholar_id' %} + {% capture link %}https://www.semanticscholar.org/author/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'spotify_id' %} + {% capture link %}https://open.spotify.com/user/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'stackoverflow_id' %} + {% capture link %}https://stackoverflow.com/users/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'strava_userid' %} + {% capture link %}https://www.strava.com/athletes/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'telegram_username' %} + {% capture link %}https://telegram.me/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'unsplash_id' %} + {% capture link %}https://unsplash.com/@{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'whatsapp_number' %} + {% capture link %}https://wa.me/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'wikidata_id' %} + {% capture link %}https://www.wikidata.org/wiki/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'wikipedia_id' %} + {% capture link %}https://wikipedia.org/wiki/User:{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'work_url' %} + {% capture link %}{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'x_username' %} + {% capture link %}https://twitter.com/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'youtube_id' %} + {% capture link %}https://youtube.com/@{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% when 'zotero_username' %} + {% capture link %}https://www.zotero.org/{{ social[1] }}{% endcapture %} + {% assign sameaslinks = sameaslinks | push: link %} + {% else %} + {% assign sameaslinks = sameaslinks | push: social[1].url %} + {% endcase %} + {% endfor %} + + + + + +{% if site.enable_masonry %} + + + + +{% endif %} + +{% if page.mermaid and page.mermaid.enabled %} + + + {% if page.mermaid.zoomable %} + + {% endif %} + +{% endif %} + +{% if page.code_diff %} + + + + +{% endif %} + +{% if page.map %} + + + +{% endif %} + +{% if page.chart and page.chart.chartjs %} + + + +{% endif %} + +{% if page.chart and page.chart.echarts %} + + + {% if site.enable_darkmode %} + + {% endif %} + +{% endif %} + +{% if page.chart and page.chart.plotly %} + + + +{% endif %} + +{% if page.chart and page.chart.vega_lite %} + + + + + +{% endif %} + +{% if page.tikzjax %} + + +{% endif %} + +{% if page.typograms %} + + +{% endif %} + +{% if site.enable_tooltips %} + + +{% endif %} + +{% if site.enable_medium_zoom %} + + + +{% endif %} + +{% if page.toc and page.toc.sidebar %} + + +{% endif %} + +{% if page.pretty_table %} + + + +{% endif %} + + + + + + + + + + +{% if site.enable_publication_badges.altmetric %} + +{% endif %} +{% if site.enable_publication_badges.dimensions %} + +{% endif %} + +{% if site.enable_math %} + + + {% unless page.pseudocode %} + + + {% else %} + + + {% endunless %} +{% endif %} + +{% if site.enable_google_analytics %} + + + + +{% endif %} + +{% if site.enable_cronitor_analytics %} + + + +{% endif %} +{% if site.enable_pirsch_analytics %} + +{% endif %} +{% if site.enable_openpanel_analytics %} + + +{% endif %} + +{% if site.enable_progressbar %} + + +{% endif %} + +{% if page.images %} + + {% if page.images.compare %} + + {% endif %} + {% if page.images.lightbox2 %} + + {% endif %} + {% if page.images.photoswipe %} + + {% endif %} + {% if page.images.slider %} + + {% endif %} + {% if page.images.spotlight %} + + {% endif %} + {% if page.images.venobox %} + + + {% endif %} +{% endif %} + +{% if page.tabs %} + + +{% endif %} + +{% if site.back_to_top %} + + + +{% endif %} + +{% if site.search_enabled %} + + + + + + +{% endif %} + +{% if site.newsletter.enabled %} + +{% endif %} diff --git a/_includes/scripts/analytics.liquid b/_includes/scripts/analytics.liquid deleted file mode 100644 index d04052822e15d..0000000000000 --- a/_includes/scripts/analytics.liquid +++ /dev/null @@ -1,32 +0,0 @@ -{% if site.enable_google_analytics %} - - - -{% endif %} -{% if site.enable_cronitor_analytics %} - - - -{% endif %} -{% if site.enable_pirsch_analytics %} - -{% endif %} diff --git a/_includes/scripts/back_to_top.liquid b/_includes/scripts/back_to_top.liquid deleted file mode 100644 index 0b74448b7e7a2..0000000000000 --- a/_includes/scripts/back_to_top.liquid +++ /dev/null @@ -1,6 +0,0 @@ -{% if site.back_to_top %} - - -{% endif %} diff --git a/_includes/scripts/badges.liquid b/_includes/scripts/badges.liquid deleted file mode 100644 index 72706905136d3..0000000000000 --- a/_includes/scripts/badges.liquid +++ /dev/null @@ -1,6 +0,0 @@ -{% if site.enable_publication_badges.altmetric %} - -{% endif %} -{% if site.enable_publication_badges.dimensions %} - -{% endif %} diff --git a/_includes/scripts/bootstrap.liquid b/_includes/scripts/bootstrap.liquid deleted file mode 100644 index 2573e77c50915..0000000000000 --- a/_includes/scripts/bootstrap.liquid +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/_includes/scripts/chartjs.liquid b/_includes/scripts/chartjs.liquid deleted file mode 100644 index bb21be2292ee1..0000000000000 --- a/_includes/scripts/chartjs.liquid +++ /dev/null @@ -1,24 +0,0 @@ -{% if page.chart and page.chart.chartjs %} - - -{% endif %} diff --git a/_includes/scripts/diff2html.liquid b/_includes/scripts/diff2html.liquid deleted file mode 100644 index 0c9f0e0ba5ef8..0000000000000 --- a/_includes/scripts/diff2html.liquid +++ /dev/null @@ -1,30 +0,0 @@ -{% if page.code_diff %} - - - -{% endif %} diff --git a/_includes/scripts/echarts.liquid b/_includes/scripts/echarts.liquid deleted file mode 100644 index fce103d5356b4..0000000000000 --- a/_includes/scripts/echarts.liquid +++ /dev/null @@ -1,45 +0,0 @@ -{% if page.chart and page.chart.echarts %} - - {% if site.enable_darkmode %} - - {% endif %} - -{% endif %} diff --git a/_includes/scripts/imageLayouts.liquid b/_includes/scripts/imageLayouts.liquid deleted file mode 100644 index 4bdef5fd130b2..0000000000000 --- a/_includes/scripts/imageLayouts.liquid +++ /dev/null @@ -1,18 +0,0 @@ -{% if page.images %} - {% if page.images.compare %} - - {% endif %} - {% if page.images.slider %} - - {% endif %} -{% endif %} diff --git a/_includes/scripts/jekyll_tabs.liquid b/_includes/scripts/jekyll_tabs.liquid deleted file mode 100644 index 57d08ac91205f..0000000000000 --- a/_includes/scripts/jekyll_tabs.liquid +++ /dev/null @@ -1,3 +0,0 @@ -{% if page.tabs %} - -{% endif %} diff --git a/_includes/scripts/jquery.liquid b/_includes/scripts/jquery.liquid deleted file mode 100644 index 66635305cdc5c..0000000000000 --- a/_includes/scripts/jquery.liquid +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/_includes/scripts/leaflet.liquid b/_includes/scripts/leaflet.liquid deleted file mode 100644 index 393fdf4817b4e..0000000000000 --- a/_includes/scripts/leaflet.liquid +++ /dev/null @@ -1,31 +0,0 @@ -{% if page.map %} - - -{% endif %} diff --git a/_includes/scripts/masonry.liquid b/_includes/scripts/masonry.liquid deleted file mode 100644 index ec07f18e60f3d..0000000000000 --- a/_includes/scripts/masonry.liquid +++ /dev/null @@ -1,16 +0,0 @@ -{% if site.enable_masonry %} - - - - -{% endif %} diff --git a/_includes/scripts/mathjax.liquid b/_includes/scripts/mathjax.liquid deleted file mode 100644 index df9d5fa4c938b..0000000000000 --- a/_includes/scripts/mathjax.liquid +++ /dev/null @@ -1,25 +0,0 @@ -{% if site.enable_math %} - {% unless page.pseudocode %} - - - - - {% endunless %} -{% endif %} diff --git a/_includes/scripts/mermaid.liquid b/_includes/scripts/mermaid.liquid deleted file mode 100644 index 8edab72fc5413..0000000000000 --- a/_includes/scripts/mermaid.liquid +++ /dev/null @@ -1,55 +0,0 @@ -{% if page.mermaid and page.mermaid.enabled %} - - {% if page.mermaid.zoomable %} - - {% endif %} - -{% endif %} diff --git a/_includes/scripts/misc.liquid b/_includes/scripts/misc.liquid deleted file mode 100644 index 56d68f52498bb..0000000000000 --- a/_includes/scripts/misc.liquid +++ /dev/null @@ -1,43 +0,0 @@ -{% if site.enable_tooltips %} - - -{% endif %} -{% if site.enable_medium_zoom %} - - - -{% endif %} -{% if page.toc and page.toc.sidebar %} - - -{% endif %} - - -{% if page.pretty_table %} - - -{% endif %} - - - - - - - - - -{% assign site.test-library.url = site.test-library.url | append: 'teste' %} diff --git a/_includes/scripts/newsletter.liquid b/_includes/scripts/newsletter.liquid deleted file mode 100644 index 0204ffa9028c3..0000000000000 --- a/_includes/scripts/newsletter.liquid +++ /dev/null @@ -1,176 +0,0 @@ - - - - - diff --git a/_includes/scripts/progressBar.liquid b/_includes/scripts/progressBar.liquid deleted file mode 100644 index 08d1915584735..0000000000000 --- a/_includes/scripts/progressBar.liquid +++ /dev/null @@ -1,78 +0,0 @@ -{% if site.enable_progressbar %} - - -{% endif %} diff --git a/_includes/scripts/pseudocode.liquid b/_includes/scripts/pseudocode.liquid deleted file mode 100644 index be942ed34f661..0000000000000 --- a/_includes/scripts/pseudocode.liquid +++ /dev/null @@ -1,52 +0,0 @@ -{% if site.enable_math and page.pseudocode %} - - - - - -{% endif %} diff --git a/_includes/scripts/search.liquid b/_includes/scripts/search.liquid deleted file mode 100644 index a1be0482419cb..0000000000000 --- a/_includes/scripts/search.liquid +++ /dev/null @@ -1,579 +0,0 @@ -{% if site.search_enabled %} - - - - - -{% endif %} diff --git a/_includes/scripts/tikzjax.liquid b/_includes/scripts/tikzjax.liquid deleted file mode 100644 index 2bd6e91613284..0000000000000 --- a/_includes/scripts/tikzjax.liquid +++ /dev/null @@ -1,8 +0,0 @@ -{% if page.tikzjax %} - -{% endif %} diff --git a/_includes/scripts/typograms.liquid b/_includes/scripts/typograms.liquid deleted file mode 100644 index 0983b2c2141ef..0000000000000 --- a/_includes/scripts/typograms.liquid +++ /dev/null @@ -1,23 +0,0 @@ -{% if page.typograms %} - - - -{% endif %} diff --git a/_includes/scripts/vega.liquid b/_includes/scripts/vega.liquid deleted file mode 100644 index 49f1236029f73..0000000000000 --- a/_includes/scripts/vega.liquid +++ /dev/null @@ -1,47 +0,0 @@ -{% if page.chart and page.chart.vega_lite %} - - - - - -{% endif %} diff --git a/_includes/scripts/wechatModal.liquid b/_includes/scripts/wechatModal.liquid deleted file mode 100644 index 17285b3032cb3..0000000000000 --- a/_includes/scripts/wechatModal.liquid +++ /dev/null @@ -1,18 +0,0 @@ -{% if site.wechat_qr %} - - - -{% endif %} diff --git a/_includes/social.liquid b/_includes/social.liquid index 0bbc4bb165932..b9017393bed9f 100644 --- a/_includes/social.liquid +++ b/_includes/social.liquid @@ -1,133 +1,120 @@ -{% if site.email %} - -{% endif %} -{% if site.telegram_username %} - -{% endif %} -{% if site.whatsapp_number %} - -{% endif %} -{% if site.orcid_id %} - -{% endif %} -{% if site.scholar_userid %} - -{% endif %} -{% if site.inspirehep_id %} - -{% endif %} -{% if site.semanticscholar_id %} - -{% endif %} -{% if site.publons_id %} - -{% endif %} -{% if site.lattes_id %} - -{% endif %} -{% if site.osf_id %} - -{% endif %} -{% if site.research_gate_profile %} - -{% endif %} -{% if site.ieee_id %} - -{% endif %} -{% if site.acm_id %} - -{% endif %} -{% if site.scopus_id %} - -{% endif %} -{% if site.github_username %} - -{% endif %} -{% if site.linkedin_username %} - -{% endif %} -{% if site.x_username %} - -{% endif %} -{% if site.mastodon_username %} - -{% endif %} -{% if site.medium_username %} - -{% endif %} -{% if site.quora_username %} - -{% endif %} -{% if site.flickr_id %} - -{% endif %} -{% if site.blogger_url %} - -{% endif %} -{% if site.work_url %} - -{% endif %} -{% if site.wikidata_id %} - -{% endif %} -{% if site.wikipedia_id %} - -{% endif %} -{% if site.strava_userid %} - -{% endif %} -{% if site.keybase_username %} - -{% endif %} -{% if site.gitlab_username %} - -{% endif %} -{% if site.dblp_url %} - -{% endif %} -{% if site.stackoverflow_id %} - -{% endif %} -{% if site.kaggle_id %} - -{% endif %} -{% if site.lastfm_id %} - -{% endif %} -{% if site.spotify_id %} - -{% endif %} -{% if site.pinterest_id %} - -{% endif %} -{% if site.unsplash_id %} - -{% endif %} -{% if site.instagram_id %} - -{% endif %} -{% if site.facebook_id %} - -{% endif %} -{% if site.bluesky_url %} - -{% endif %} -{% if site.youtube_id %} - -{% endif %} -{% if site.discord_id %} - -{% endif %} -{% if site.zotero_username %} - -{% endif %} -{% if site.rss_icon %} - -{% endif %} -{% if site.wechat_qr %} - -
- WeChat QR -
- {% include scripts/wechatModal.liquid %} -{% endif %} +{% for social in site.data.socials %} + {% case social[0] %} + {% when 'academia_edu' %} + + {% when 'acm_id' %} + + {% when 'arxiv_id' %} + + {% when 'blogger_url' %} + + {% when 'bluesky_url' %} + + {% when 'cv_pdf' %} + + {% when 'dblp_url' %} + + {% when 'discord_id' %} + + {% when 'email' %} + + {% when 'facebook_id' %} + + {% when 'flickr_id' %} + + {% when 'github_username' %} + + {% when 'gitlab_username' %} + + {% when 'hal_id' %} + + {% when 'ieee_id' %} + + {% when 'inspirehep_id' %} + + {% when 'instagram_id' %} + + {% when 'kaggle_id' %} + + {% when 'keybase_username' %} + + {% when 'lastfm_id' %} + + {% when 'lattes_id' %} + + {% when 'leetcode_id' %} + + {% when 'linkedin_username' %} + + {% when 'mastodon_username' %} + + {% when 'medium_username' %} + + {% when 'orcid_id' %} + + {% when 'osf_id' %} + + {% when 'pinterest_id' %} + + {% when 'publons_id' %} + + {% when 'quora_username' %} + + {% when 'research_gate_profile' %} + + {% when 'rss_icon' %} + {% if social[1] == true %} + + {% endif %} + {% when 'scholar_userid' %} + + {% when 'scopus_id' %} + + {% when 'semanticscholar_id' %} + + {% when 'spotify_id' %} + + {% when 'stackoverflow_id' %} + + {% when 'strava_userid' %} + + {% when 'telegram_username' %} + + {% when 'unsplash_id' %} + + {% when 'wechat_qr' %} + +
+ WeChat QR +
+ + {% when 'whatsapp_number' %} + + {% when 'wikidata_id' %} + + {% when 'wikipedia_id' %} + + {% when 'work_url' %} + + {% when 'x_username' %} + + {% when 'youtube_id' %} + + {% when 'zotero_username' %} + + {% else %} + + {% assign file_ext = social[1].logo | split: '.' | last %} + {% if file_ext == 'svg' %} + + + + {% else %} + {{ social[1].title }} + {% endif %} + + {% endcase %} +{% endfor %} diff --git a/_layouts/about.liquid b/_layouts/about.liquid index 3e6c34f4bceda..02d496b7d4a40 100644 --- a/_layouts/about.liquid +++ b/_layouts/about.liquid @@ -41,7 +41,7 @@ layout: default
{{ content }}
- {% if page.news and site.announcements.enabled %} + {% if page.announcements and page.announcements.enabled %}

News

@@ -49,7 +49,7 @@ layout: default {% endif %} - {% if site.latest_posts.enabled %} + {% if page.latest_posts and page.latest_posts.enabled %}

latest posts

@@ -73,8 +73,8 @@ layout: default {% endif %} - {% if site.newsletter.enabled and site.footer_fixed %} - {% include scripts/newsletter.liquid center=true %} + {% if site.newsletter and site.newsletter.enabled and site.footer_fixed %} + {% include newsletter.liquid center=true %} {% endif %} diff --git a/_layouts/archive-category.liquid b/_layouts/archive-category.liquid deleted file mode 100644 index 2fc5009f890e8..0000000000000 --- a/_layouts/archive-category.liquid +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default ---- -
-
-

{{ page.title }}

-

an archive of posts in this category

-
- -
-
-
- {% for post in page.posts %} - - - - - {% endfor %} -
{{ post.date | date: '%b %d, %Y' }} - {% if post.redirect == blank %} - {{ post.title }} - {% elsif post.redirect contains '://' %} - {{ post.title }} - {% else %} - {{ post.title }} - {% endif %} -
-
- -
diff --git a/_layouts/archive-tag.liquid b/_layouts/archive-tag.liquid deleted file mode 100644 index 81019a0bbea52..0000000000000 --- a/_layouts/archive-tag.liquid +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default ---- -
-
-

{{ page.title }}

-

an archive of posts with this tag

-
- -
-
- - {% for post in page.posts %} - - - - - {% endfor %} -
{{ post.date | date: '%b %d, %Y' }} - {% if post.redirect == blank %} - {{ post.title }} - {% elsif post.redirect contains '://' %} - {{ post.title }} - {% else %} - {{ post.title }} - {% endif %} -
-
-
-
diff --git a/_layouts/archive-year.liquid b/_layouts/archive-year.liquid deleted file mode 100644 index 0ce93efcf2e44..0000000000000 --- a/_layouts/archive-year.liquid +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default ---- -
-
-

{{ page.date | date: '%Y' }}

-

an archive of posts from this year

-
- -
-
- - {% for post in page.posts %} - - - - - {% endfor %} -
{{ post.date | date: '%b %d, %Y' }} - {% if post.redirect == blank %} - {{ post.title }} - {% elsif post.redirect contains '://' %} - {{ post.title }} - {% else %} - {{ post.title }} - {% endif %} -
-
-
-
diff --git a/_layouts/archive.liquid b/_layouts/archive.liquid new file mode 100644 index 0000000000000..b8d81b6761962 --- /dev/null +++ b/_layouts/archive.liquid @@ -0,0 +1,38 @@ +--- +layout: default +--- +
+
+ {% if page.type == 'categories' %} +

{{ page.title }}

+

an archive of {{ page.collection_name }} in this category

+ {% elsif page.type == 'year' %} +

{{ page.date | date: '%Y' }}

+

an archive of {{ page.collection_name }} from this year

+ {% elsif page.type == 'tags' %} +

{{ page.title }}

+

an archive of {{ page.collection_name }} with this tag

+ {% endif %} +
+ + +
diff --git a/_layouts/bib.liquid b/_layouts/bib.liquid index d9f6663cb06b5..ab0953ed87d71 100644 --- a/_layouts/bib.liquid +++ b/_layouts/bib.liquid @@ -37,6 +37,7 @@ sizes = "200px" class="preview z-depth-1 rounded" zoomable=true + avoid_scaling=true alt=entry.preview %} {% endif %} @@ -73,13 +74,15 @@ {% if coauthor.firstname contains author.first %} {%- assign coauthor_url = coauthor.url -%} {% break %} - {% endif %} + {%- endif -%} {% endfor %} {%- endif -%} {%- if forloop.length > 1 -%} - {% if forloop.first == false %}, {% endif %} - {%- if forloop.last and author_array_limit == author_array_size %}and {% endif -%} + {% if forloop.first == false -%} + {%- if forloop.length > 2 %}, {% elsif forloop.length == 2 %} {% endif %} + {%- endif %} + {%- if forloop.last and author_array_limit == author_array_size %}and {% endif -%} {% endif %} {%- if author_is_self -%} @@ -307,13 +310,31 @@ {% endif %} {% if site.enable_publication_badges.google_scholar and entry_has_google_scholar_badge %} + {% assign citation_count = 0 %} + {% assign scholar_id_key = site.scholar_userid | append: ':' | append: entry.google_scholar_id %} + {% assign publication_key = entry.google_scholar_id %} + + {% if site.data.citations.papers[scholar_id_key] %} + {% assign citation_count = site.data.citations.papers[scholar_id_key].citations %} + {% elsif site.data.citations.papers[publication_key] %} + {% assign citation_count = site.data.citations.papers[publication_key].citations %} + {% else %} + {% for paper in site.data.citations.papers %} + {% assign paper_key = paper[0] %} + {% if paper_key contains entry.google_scholar_id %} + {% assign citation_count = paper[1].citations %} + {% break %} + {% endif %} + {% endfor %} + {% endif %} + {% google_scholar_citations site.scholar_userid entry.google_scholar_id %} Google Scholar citations {% endif %} diff --git a/_layouts/book-review.liquid b/_layouts/book-review.liquid new file mode 100644 index 0000000000000..02a60a5bed8d8 --- /dev/null +++ b/_layouts/book-review.liquid @@ -0,0 +1,257 @@ +--- +layout: default +--- +{% assign year = page.started | date: '%Y' %} +{% assign tags = page.tags | join: '' %} +{% assign categories = page.categories | join: '' %} + +{% if page._styles %} + + +{% endif %} + +
+
+

{{ page.title }}

+ {% if page.author or page.released %} + + {% endif %} + + {% if page.started or page.finished or page.stars %} + + {% endif %} + +
+
+ +
+ {% if content == '' %} +
+ {% if page.cover %} + {{ page.title }} cover +
+ Cover of {{ page.title }} +
+ {% elsif page.olid %} + {{ page.title }} cover +
+ Cover of {{ page.title }} on the Open Library. +
+ {% elsif page.isbn %} + {{ page.title }} cover +
+ Cover of {{ page.title }} on the Open Library. +
+ {% endif %} +
+ {% assign status = page.status | upcase %} +
+

{{ status }}

+
+ {% else %} +
+ {% if page.cover %} + {{ page.title }} cover +
+ Cover of {{ page.title }} +
+ {% elsif page.olid %} + {{ page.title }} cover +
+ Cover of {{ page.title }} on the Open Library. +
+ {% elsif page.isbn %} + {{ page.title }} cover +
+ Cover of {{ page.title }} on the Open Library. +
+ {% endif %} +
+
+

+ {% if page.start %} Start Date: {{ page.start | date: '%-d %B %Y' }}. {% endif %} + {% if page.end %} End Date: {{ page.end | date: '%-d %B %Y' }}. {% endif %} +

+ {{ content }} + {% endif %} +
+ + {% if site.giscus and page.giscus_comments %} + {% include giscus.liquid %} + {% endif %} +
+ + diff --git a/_layouts/book-shelf.liquid b/_layouts/book-shelf.liquid new file mode 100644 index 0000000000000..09b0ad70d18d0 --- /dev/null +++ b/_layouts/book-shelf.liquid @@ -0,0 +1,49 @@ +--- +layout: page +--- +{{ content }} + +{% if page.collection and page.collection.size > 0 %} + {% assign collection = site[page.collection] %} + {% if collection and collection.size > 0 %} + {% for item in collection reversed %} + {% assign current_year = item.date | date: '%Y' %} + {% if current_year != year %} + {% unless forloop.first %} + + {% endunless %} +

+ {{ current_year }} +

+ + {% endif %} + {% endfor %} + {% endif %} +{% endif %} diff --git a/_layouts/cv.liquid b/_layouts/cv.liquid index 0ce33a0772db5..17f6c415373dc 100644 --- a/_layouts/cv.liquid +++ b/_layouts/cv.liquid @@ -8,12 +8,17 @@ layout: default {{ page.title }} {% if page.cv_pdf %} + > + + {% endif %} {% if page.description %} @@ -54,12 +59,17 @@ layout: default {{ page.title }} {% if page.cv_pdf %} + > + + {% endif %} {% if page.description %} diff --git a/_layouts/default.liquid b/_layouts/default.liquid index 3f4af10e524a5..ea103706a8661 100644 --- a/_layouts/default.liquid +++ b/_layouts/default.liquid @@ -51,27 +51,6 @@ {% include footer.liquid %} - {% include scripts/jquery.liquid %} - {% include scripts/bootstrap.liquid %} - {% include scripts/masonry.liquid %} - {% include scripts/mermaid.liquid %} - {% include scripts/diff2html.liquid %} - {% include scripts/leaflet.liquid %} - {% include scripts/chartjs.liquid %} - {% include scripts/echarts.liquid %} - {% include scripts/vega.liquid %} - {% include scripts/tikzjax.liquid %} - {% include scripts/typograms.liquid %} - {% include scripts/misc.liquid %} - {% include scripts/badges.liquid %} - {% include scripts/mathjax.liquid %} - {% include scripts/pseudocode.liquid %} - {% include scripts/analytics.liquid %} - {% include scripts/progressBar.liquid %} - {% include scripts/wechatModal.liquid %} - {% include scripts/imageLayouts.liquid %} - {% include scripts/jekyll_tabs.liquid %} - {% include scripts/back_to_top.liquid %} - {% include scripts/search.liquid %} + {% include scripts.liquid %} diff --git a/_layouts/distill.liquid b/_layouts/distill.liquid index 500077d78109b..d9e8684fb1dcd 100644 --- a/_layouts/distill.liquid +++ b/_layouts/distill.liquid @@ -2,22 +2,10 @@ {% include head.liquid %} - {% if site.enable_medium_zoom %} - - - - {% endif %} - {% include scripts/jquery.liquid %} - {% include scripts/mathjax.liquid %} + - {% if page._styles %} {% endif %} -{% assign url_beginning = page.url | slice: 0, 6 %} -

{{ page.title }}

References

- {% bibliography --cited_in_order %} + {% bibliography --group_by none --cited_in_order %}
{% endif %} - {% if site.related_blog_posts.enabled %} + {% if site.related_blog_posts and site.related_blog_posts.enabled %} {% if page.related_posts == null or page.related_posts %} {% include related_posts.liquid %} {% endif %} diff --git a/_news/announcement_38.md b/_news/announcement_38.md new file mode 100644 index 0000000000000..24defe8f4c8f7 --- /dev/null +++ b/_news/announcement_38.md @@ -0,0 +1,10 @@ +--- +layout: post +title: VIP-SMUR shares Fall 2025 project highlights +date: 2025-12-13 09:00:00-0500 +inline: false +--- + +The VIP SMUR team shared their Fall 2025 work, see below. + +

View the LinkedIn post

diff --git a/_pages/about.md b/_pages/about.md index 89b801da54147..36d47d8c2e551 100644 --- a/_pages/about.md +++ b/_pages/about.md @@ -10,9 +10,18 @@ profile: image_circular: false # crops the image to make it circular more_info: # School of Architecture — Georgia Institute of Technology -news: true # includes a list of news items selected_papers: true # includes a list of papers marked as "selected={true}" social: true # includes social icons at the bottom of the page + +announcements: + enabled: true # includes a list of news items + scrollable: true # adds a vertical scroll bar if there are more than 3 news items + limit: 5 # leave blank to include all the news in the `_news` folder + +latest_posts: + enabled: true + scrollable: true # adds a vertical scroll bar if there are more than 3 new posts items + limit: 3 # leave blank to include all the blog posts --- {% remote_include https://raw.githubusercontent.com/SustainableUrbanSystemsLab/.github/refs/heads/main/profile/README.md %} diff --git a/_pages/blog.md b/_pages/blog.md deleted file mode 100644 index 17c93adc2d9da..0000000000000 --- a/_pages/blog.md +++ /dev/null @@ -1,196 +0,0 @@ ---- -layout: default -permalink: /blog/ -title: Blog -nav: false -nav_order: 1 -pagination: - enabled: true - collection: posts - permalink: /page/:num/ - per_page: 5 - sort_field: date - sort_reverse: true - trail: - before: 1 # The number of links before the current page - after: 3 # The number of links after the current page ---- - -
- -{% assign blog_name_size = site.blog_name | size %} -{% assign blog_description_size = site.blog_description | size %} - -{% if blog_name_size > 0 or blog_description_size > 0 %} - -
-

{{ site.blog_name }}

-

{{ site.blog_description }}

-
- {% endif %} - -{% if site.display_tags and site.display_tags.size > 0 or site.display_categories and site.display_categories.size > 0 %} - -
-
    - {% for tag in site.display_tags %} -
  • - {{ tag }} -
  • - {% unless forloop.last %} -

    - {% endunless %} - {% endfor %} - {% if site.display_categories.size > 0 and site.display_tags.size > 0 %} -

    - {% endif %} - {% for category in site.display_categories %} -
  • - {{ category }} -
  • - {% unless forloop.last %} -

    - {% endunless %} - {% endfor %} -
-
- {% endif %} - -{% assign featured_posts = site.posts | where: "featured", "true" %} -{% if featured_posts.size > 0 %} -
- - -
- -{% endif %} - -
    - - {% if page.pagination.enabled %} - {% assign postlist = paginator.posts %} - {% else %} - {% assign postlist = site.posts %} - {% endif %} - - {% for post in postlist %} - - {% if post.external_source == blank %} - {% assign read_time = post.content | number_of_words | divided_by: 180 | plus: 1 %} - {% else %} - {% assign read_time = post.feed_content | strip_html | number_of_words | divided_by: 180 | plus: 1 %} - {% endif %} - {% assign year = post.date | date: "%Y" %} - {% assign tags = post.tags | join: "" %} - {% assign categories = post.categories | join: "" %} - -
  • - -{% if post.thumbnail %} - -
    -
    -{% endif %} -

    - {% if post.redirect == blank %} - {{ post.title }} - {% elsif post.redirect contains '://' %} - {{ post.title }} - - - - {% else %} - {{ post.title }} - {% endif %} -

    -

    {{ post.description }}

    - - - -{% if post.thumbnail %} - -
    - -
    - image -
    -
    -{% endif %} -
  • - - {% endfor %} - -
- -{% if page.pagination.enabled %} -{% include pagination.liquid %} -{% endif %} - -
diff --git a/_pages/join.md b/_pages/join.md index fa63c12bd0b1e..ba49a8f172bc2 100644 --- a/_pages/join.md +++ b/_pages/join.md @@ -10,7 +10,7 @@ nav_order: 9 I appreciate your interest in working with me. I receive a fair number of inquiries from prospective students and put together this page to provide more information.
- We seek students from all backgrounds. + We seek students from many backgrounds.

@@ -18,7 +18,6 @@ I appreciate your interest in working with me. I receive a fair number of inquir - If you are a coder or from a technical background, you will learn how your skills can help build tools to empower others to design and plan sustainable cities. After working with us, [our alumni](https://sustainableurbansystems.com/team/) typically go on to receive competitive offers at industry leaders such as Perkins&Will, Thornton Tomasetti and others, or go on to continue their academic journey at institutions such ETH Zurich, Cambridge University, NREL etc. - You can start working with us in a number of ways, depending on whether you are a Georgia Tech (GT) student or external to GT. ### External to GT diff --git a/_pages/research/children/theses.md b/_pages/research/children/theses.md index 0d674fbac9e88..a730b8ac85cd1 100644 --- a/_pages/research/children/theses.md +++ b/_pages/research/children/theses.md @@ -5,7 +5,7 @@ permalink: /theses/ description: A growing collection of completed work in the lab. nav: false nav_order: 2 -display_categories: [MS, Capstone, BArch, Abstract] +display_categories: [PhD, MS, Capstone, BArch, Abstract] horizontal: true --- @@ -17,7 +17,7 @@ horizontal: true {%- for category in page.display_categories %}

{{ category }}

{%- assign categorized_projects = site.projects | where: "category", category -%} - {%- assign sorted_projects = categorized_projects | sort: "importance" %} + {%- assign sorted_projects = categorized_projects | sort: "importance" | reverse %} {% if page.horizontal -%}
@@ -40,7 +40,7 @@ horizontal: true -{%- assign sorted_projects = site.projects | sort: "importance" -%} +{%- assign sorted_projects = site.projects | sort: "importance" | reverse -%} diff --git a/_pages/teaching.md b/_pages/teaching.md index c52a6d29de5f6..95a4aaa2260dc 100644 --- a/_pages/teaching.md +++ b/_pages/teaching.md @@ -41,7 +41,7 @@ horizontal: true -{% assign sorted_projects = site.projects | sort: "importance" %} +{% assign sorted_projects = site.projects | sort: "importance" | reverse %} diff --git a/_plugins/download-3rd-party.rb b/_plugins/download-3rd-party.rb index 30bc1c6f9edb2..59f809f4de6f8 100644 --- a/_plugins/download-3rd-party.rb +++ b/_plugins/download-3rd-party.rb @@ -70,7 +70,7 @@ def download_file(url, dest) unless File.file?(dest) puts "Downloading #{url} to #{dest}" File.open(dest, "wb") do |saved_file| - URI.open(url, "rb") do |read_file| + URI(url).open("rb") do |read_file| saved_file.write(read_file.read) end end @@ -92,7 +92,7 @@ def download_fonts(url, dest, file_types) unless File.directory?(dest) && !Dir.empty?(dest) puts "Downloading fonts from #{url} to #{dest}" # get available fonts from the url - doc = Nokogiri::HTML(URI.open(url, "User-Agent" => "Ruby/#{RUBY_VERSION}")) + doc = Nokogiri::HTML(URI(url).open("User-Agent" => "Ruby/#{RUBY_VERSION}")) doc.css('a').each do |link| # get the file name from the url file_name = link['href'].split('/').last.split('?').first @@ -116,7 +116,7 @@ def download_images(url, dest, file_types) unless File.directory?(dest) && !Dir.empty?(dest) puts "Downloading images from #{url} to #{dest}" # get available fonts from the url - doc = Nokogiri::HTML(URI.open(url, "User-Agent" => "Ruby/#{RUBY_VERSION}")) + doc = Nokogiri::HTML(URI(url).open("User-Agent" => "Ruby/#{RUBY_VERSION}")) doc.xpath('/html/body/div/div[3]/table/tbody/tr/td[1]/a').each do |link| # get the file name from the url file_name = link['href'].split('/').last.split('?').first @@ -148,7 +148,7 @@ def download_fonts_from_css(config, url, dest, lib_name, file_types) puts "Downloading fonts from #{url} to #{dest}" # download the css file with a fake user agent to force downloading woff2 fonts instead of ttf # user agent from https://www.whatismybrowser.com/guides/the-latest-user-agent/chrome - doc = Nokogiri::HTML(URI.open(url, "User-Agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36")) + doc = Nokogiri::HTML(URI(url).open("User-Agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36")) css = CssParser::Parser.new css.load_string! doc.document.text diff --git a/_plugins/external-posts.rb b/_plugins/external-posts.rb index 41a6c43606577..de812e6c49cfb 100644 --- a/_plugins/external-posts.rb +++ b/_plugins/external-posts.rb @@ -25,7 +25,12 @@ def generate(site) def fetch_from_rss(site, src) xml = HTTParty.get(src['rss_url']).body return if xml.nil? - feed = Feedjira.parse(xml) + begin + feed = Feedjira.parse(xml) + rescue StandardError => e + puts "Error parsing RSS feed from #{src['rss_url']} - #{e.message}" + return + end process_entries(site, src, feed.entries) end @@ -62,6 +67,7 @@ def create_document(site, source_name, url, content) doc.data['description'] = content[:summary] doc.data['date'] = content[:published] doc.data['redirect'] = url + doc.content = content[:content] site.collections['posts'].docs << doc end @@ -90,8 +96,12 @@ def fetch_content_from_url(url) parsed_html = Nokogiri::HTML(html) title = parsed_html.at('head title')&.text.strip || '' - description = parsed_html.at('head meta[name="description"]')&.attr('content') || '' - body_content = parsed_html.at('body')&.inner_html || '' + description = parsed_html.at('head meta[name="description"]')&.attr('content') + description ||= parsed_html.at('head meta[name="og:description"]')&.attr('content') + description ||= parsed_html.at('head meta[property="og:description"]')&.attr('content') + + body_content = parsed_html.search('p').map { |e| e.text } + body_content = body_content.join() || '' { title: title, diff --git a/_plugins/google-scholar-citations.rb b/_plugins/google-scholar-citations.rb index 12566318990a4..7fde002626d44 100644 --- a/_plugins/google-scholar-citations.rb +++ b/_plugins/google-scholar-citations.rb @@ -15,6 +15,14 @@ def initialize(tag_name, params, tokens) splitted = params.split(" ").map(&:strip) @scholar_id = splitted[0] @article_id = splitted[1] + + if @scholar_id.nil? || @scholar_id.empty? + puts "Invalid scholar_id provided" + end + + if @article_id.nil? || @article_id.empty? + puts "Invalid article_id provided" + end end def render(context) @@ -65,10 +73,9 @@ def render(context) citation_count = "N/A" # Print the error message including the exception class and message - puts "Error fetching citation count for #{article_id}: #{e.class} - #{e.message}" + puts "Error fetching citation count for #{article_id} in #{article_url}: #{e.class} - #{e.message}" end - GoogleScholarCitationsTag::Citations[article_id] = citation_count return "#{citation_count}" end diff --git a/_projects/1_capstone.md b/_projects/1_capstone.md deleted file mode 100644 index d3e0d924cb61f..0000000000000 --- a/_projects/1_capstone.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: Influence of Vegetation Structure on Urban Microclimate -description: Chinmay Rothe -img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-Influence-of-Vegetation-Structure-on-Urban-Microclimate/refs/heads/main/Figures/GraphicalAbstract.gif -importance: 1 -category: Capstone ---- - -{% capture remote_content %}{% remote_include https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-Influence-of-Vegetation-Structure-on-Urban-Microclimate/refs/heads/main/README.md %}{% endcapture %} -{% assign lines = remote_content | split: ' -' %} -{% for line in lines offset:2 %} -{{ line }} -{% endfor %} - -## Source - -[Link](https://github.com/SustainableUrbanSystemsLab/CS-Influence-of-Vegetation-Structure-on-Urban-Microclimate/) to the repository. \ No newline at end of file diff --git a/_projects/1_thesis.md b/_projects/1_thesis.md deleted file mode 100644 index 28275dfe87edd..0000000000000 --- a/_projects/1_thesis.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: 3D Heat Transfer Analysis in Architectural Modeling -description: Maryam Almaian -img: assets/img/theses/thesis_1.png -importance: 1 -category: MS ---- - -{% capture remote_content %}{% remote_include https://raw.githubusercontent.com/SustainableUrbanSystemsLab/MT-3D-Heat-Transfer-Analysis-in-Architectural-Modeling/main/README.md %}{% endcapture %} -{% assign lines = remote_content | split: ' -' %} -{% for line in lines offset:2 %} -{{ line }} -{% endfor %} - -## Source - -[Link](https://github.com/SustainableUrbanSystemsLab/MT-3D-Heat-Transfer-Analysis-in-Architectural-Modeling/) to the repository. diff --git a/_projects/2_capstone.md b/_projects/2_capstone.md deleted file mode 100644 index 6f32d24de81ed..0000000000000 --- a/_projects/2_capstone.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "BASELINE: Benchmarking Scenarios for Env. Layouts and Integrative Nbhd Eval." -description: Shruti Jadhav -img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-Benchmark-Cases-for-Urban-Scale-Microclimate-Simulations/refs/heads/main/Figures/GraphicalAbstract.png -importance: 1 -category: Capstone ---- - -{% capture remote_content %}{% remote_include https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-Benchmark-Cases-for-Urban-Scale-Microclimate-Simulations/refs/heads/main/README.md %}{% endcapture %} -{% assign lines = remote_content | split: ' -' %} -{% for line in lines offset:2 %} -{{ line }} -{% endfor %} - -## Source - -[Link](https://github.com/SustainableUrbanSystemsLab/CS-Benchmark-Cases-for-Urban-Scale-Microclimate-Simulations/) to the repository. diff --git a/_projects/1_abstract.md b/_projects/ABS-ZeYuJiang.md similarity index 94% rename from _projects/1_abstract.md rename to _projects/ABS-ZeYuJiang.md index 99f138d7d6b7f..16ace7c95e4b4 100644 --- a/_projects/1_abstract.md +++ b/_projects/ABS-ZeYuJiang.md @@ -3,7 +3,7 @@ layout: page title: A Comparative Study on the Urban Weather Generator description: Ze Yu Jiang img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/Abstract-GNI-Symposium-Microclimate/refs/heads/main/Figures/georgia_tech_map_with_tiles.png -importance: 1 +importance: 20250302 category: Abstract --- @@ -12,4 +12,4 @@ category: Abstract ' %} {% for line in lines offset:2 %} {{ line }} -{% endfor %} \ No newline at end of file +{% endfor %} diff --git a/_projects/2_thesis.md b/_projects/BT-LukeKratsios.md similarity index 100% rename from _projects/2_thesis.md rename to _projects/BT-LukeKratsios.md diff --git a/_projects/CS-ChinmayRothe.md b/_projects/CS-ChinmayRothe.md new file mode 100644 index 0000000000000..08bca279adfba --- /dev/null +++ b/_projects/CS-ChinmayRothe.md @@ -0,0 +1,19 @@ +--- +layout: page +title: Influence of Vegetation Structure on Urban Microclimate +description: Chinmay Rothe +img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-ChinmayRothe/refs/heads/main/Figures/GraphicalAbstract.gif +importance: 20241205 +category: Capstone +--- + +{% capture remote_content %}{% remote_include https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-ChinmayRothe/refs/heads/main/README.md %}{% endcapture %} +{% assign lines = remote_content | split: ' +' %} +{% for line in lines offset:2 %} +{{ line }} +{% endfor %} + +## Source + +[Link](https://github.com/SustainableUrbanSystemsLab/CS-ChinmayRothe/) to the repository. diff --git a/_projects/CS-NitikshaMota.md b/_projects/CS-NitikshaMota.md new file mode 100644 index 0000000000000..4191537d19493 --- /dev/null +++ b/_projects/CS-NitikshaMota.md @@ -0,0 +1,19 @@ +--- +layout: page +title: Climate-Migration Readiness in Atlanta - Missing-Middle Housing +description: Nitiksha Mota +img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-NitikshaMota/refs/heads/main/GraphicalAbstract.png +importance: 20251214 +category: Capstone +--- + +{% capture remote_content %}{% remote_include https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-NitikshaMota/refs/heads/main/README.md %}{% endcapture %} +{% assign lines = remote_content | split: ' +' %} +{% for line in lines offset:2 %} +{{ line }} +{% endfor %} + +## Source + +[Link](https://github.com/SustainableUrbanSystemsLab/CS-NitikshaMota/) to the repository. diff --git a/_projects/CS-ShaibaSiddiqui.md b/_projects/CS-ShaibaSiddiqui.md new file mode 100644 index 0000000000000..83e9bcabf7c23 --- /dev/null +++ b/_projects/CS-ShaibaSiddiqui.md @@ -0,0 +1,19 @@ +--- +layout: page +title: Heat Equity Design Toolkit - Street-Tree Canopy for Pedestrian Comfort +description: Shaiba Bano Siddiqui +img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-ShaibaSiddiqui/refs/heads/main/GraphicalAbstract.jpg +importance: 20251215 +category: Capstone +--- + +{% capture remote_content %}{% remote_include https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-ShaibaSiddiqui/refs/heads/main/README.md %}{% endcapture %} +{% assign lines = remote_content | split: ' +' %} +{% for line in lines offset:2 %} +{{ line }} +{% endfor %} + +## Source + +[Link](https://github.com/SustainableUrbanSystemsLab/CS-ShaibaSiddiqui/) to the repository. diff --git a/_projects/CS-SharmistaDebnath.md b/_projects/CS-SharmistaDebnath.md new file mode 100644 index 0000000000000..e14d4cea223e0 --- /dev/null +++ b/_projects/CS-SharmistaDebnath.md @@ -0,0 +1,19 @@ +--- +layout: page +title: Evaluating Ventilation Strategies for ICU Isolation Rooms +description: Sharmista Debnath +img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-SharmistaDebnath/refs/heads/main/comparison.jpg +importance: 20251207 +category: Capstone +--- + +{% capture remote_content %}{% remote_include https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-SharmistaDebnath/refs/heads/main/README.md %}{% endcapture %} +{% assign lines = remote_content | split: ' +' %} +{% for line in lines offset:1 %} +{{ line }} +{% endfor %} + +## Source + +[Link](https://github.com/SustainableUrbanSystemsLab/CS-SharmistaDebnath/) to the repository. diff --git a/_projects/CS-ShrutiJadhav.md b/_projects/CS-ShrutiJadhav.md new file mode 100644 index 0000000000000..965b239439827 --- /dev/null +++ b/_projects/CS-ShrutiJadhav.md @@ -0,0 +1,19 @@ +--- +layout: page +title: "BASELINE: Benchmarking Scenarios for Env. Layouts and Integrative Nbhd Eval." +description: Shruti Jadhav +img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-ShrutiJadhav/refs/heads/main/Figures/GraphicalAbstract.png +importance: 20241204 +category: Capstone +--- + +{% capture remote_content %}{% remote_include https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CS-ShrutiJadhav/refs/heads/main/README.md %}{% endcapture %} +{% assign lines = remote_content | split: ' +' %} +{% for line in lines offset:2 %} +{{ line }} +{% endfor %} + +## Source + +[Link](https://github.com/SustainableUrbanSystemsLab/CS-ShrutiJadhav/) to the repository. diff --git a/_projects/4_capstone.md b/_projects/CS-SilviaVangelov-2.md similarity index 97% rename from _projects/4_capstone.md rename to _projects/CS-SilviaVangelov-2.md index 629f5d010f54f..f0842899d2f09 100644 --- a/_projects/4_capstone.md +++ b/_projects/CS-SilviaVangelov-2.md @@ -3,7 +3,7 @@ layout: page title: Assessing Solar Potential of Buildings Using LiDAR and Footprint Data description: Silvia Vangelova img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/CP-SIGRADI2024-Assessing-Solar-Potential-of-Buildings-Using-LiDAR-and-Footprint-Data/main/Resources/methods%20overview.jpg -importance: 1 +importance: 20241008 category: Capstone --- diff --git a/_projects/3_capstone.md b/_projects/CS-SilviaVangelova.md similarity index 97% rename from _projects/3_capstone.md rename to _projects/CS-SilviaVangelova.md index 706c4bcf3636d..c1d387be6418f 100644 --- a/_projects/3_capstone.md +++ b/_projects/CS-SilviaVangelova.md @@ -3,7 +3,7 @@ layout: page title: LiDAR Data for Enriching Open Geospatial Building Datasets description: Silvia Vangelova img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/GNI-Symposium-Enriching-geospatial-building-datasets/main/Figures/GraphicalAbstract.jpg -importance: 1 +importance: 20240821 category: Capstone --- diff --git a/_projects/MT-MarceloAlvarez.md b/_projects/MT-MarceloAlvarez.md new file mode 100644 index 0000000000000..61386da1d0c3c --- /dev/null +++ b/_projects/MT-MarceloAlvarez.md @@ -0,0 +1,19 @@ +--- +layout: page +title: Urban Microclimate Comparative Study - ENVI-met vs Outdoor+ +description: Marcelo Alvarez +img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/MT-MarceloAlvarez/refs/heads/main/graph_abstract.png +importance: 20251003 +category: MS +--- + +{% capture remote_content %}{% remote_include https://raw.githubusercontent.com/SustainableUrbanSystemsLab/MT-MarceloAlvarez/refs/heads/main/README.md %}{% endcapture %} +{% assign lines = remote_content | split: ' +' %} +{% for line in lines offset:2 %} +{{ line }} +{% endfor %} + +## Source + +[Link](https://github.com/SustainableUrbanSystemsLab/MT-MarceloAlvarez/) to the repository. diff --git a/_projects/MT-MaryamAlmaian.md b/_projects/MT-MaryamAlmaian.md new file mode 100644 index 0000000000000..6254c1178e706 --- /dev/null +++ b/_projects/MT-MaryamAlmaian.md @@ -0,0 +1,19 @@ +--- +layout: page +title: 3D Heat Transfer Analysis in Architectural Modeling +description: Maryam Almaian +img: https://raw.githubusercontent.com/SustainableUrbanSystemsLab/MT-MaryamAlmaian/main/LaTeX/Figures/newvalleg.png +importance: 20240421 +category: MS +--- + +{% capture remote_content %}{% remote_include https://raw.githubusercontent.com/SustainableUrbanSystemsLab/MT-MaryamAlmaian/main/README.md %}{% endcapture %} +{% assign lines = remote_content | split: ' +' %} +{% for line in lines offset:2 %} +{{ line }} +{% endfor %} + +## Source + +[Link](https://github.com/SustainableUrbanSystemsLab/MT-MaryamAlmaian/) to the repository. diff --git a/_projects/PhD-SinaRahimi.md b/_projects/PhD-SinaRahimi.md new file mode 100644 index 0000000000000..3a13aa6723b1e --- /dev/null +++ b/_projects/PhD-SinaRahimi.md @@ -0,0 +1,14 @@ +--- +layout: page +title: PhD Thesis +description: Sina Rahimi +img: +importance: 20251210 +category: PhD +--- + +This PhD defense is currently in scheduled for Jan 2026. The repository will host materials and documentation as the thesis gets accepted. + +## Source + +[Link](https://github.com/SustainableUrbanSystemsLab/PhD-SinaRahimi/) to the repository. diff --git a/_sass/_base.scss b/_sass/_base.scss index d226dca9ab149..189f2f7703916 100644 --- a/_sass/_base.scss +++ b/_sass/_base.scss @@ -79,6 +79,7 @@ blockquote { color: var(--global-tip-block-text); } + a, h1, h2, h3, @@ -100,6 +101,7 @@ blockquote { color: var(--global-warning-block-text); } + a, h1, h2, h3, @@ -121,6 +123,7 @@ blockquote { color: var(--global-danger-block-text); } + a, h1, h2, h3, @@ -250,7 +253,8 @@ ul.task-list input[type="checkbox"] { opacity: 0.95; } -.navbar .dropdown-menu { +.navbar .dropdown-menu, +.btn-group.dropdown .dropdown-menu { background-color: var(--global-bg-color); border: 1px solid var(--global-divider-color); @@ -276,6 +280,16 @@ ul.task-list input[type="checkbox"] { } } +.dropdown-item.active, +.dropdown-item:active { + background-color: var(--global-hover-color); + color: var(--global-hover-text-color) !important; + + &:hover { + color: var(--global-hover-text-color); + } +} + .navbar.navbar-light { a { &:hover { @@ -311,6 +325,24 @@ ul.task-list input[type="checkbox"] { font-size: 1.7rem; a { + img { + width: 1.7rem; + height: 1.7rem; + margin-bottom: 0.5rem; + // margin: 0.5rem; + } + + svg { + width: 1.7rem; + height: 1.7rem; + margin-bottom: 0.5rem; + + image { + width: 1.7rem; + height: 1.7rem; + } + } + i::before { color: var(--global-text-color); transition-property: all 0.2s ease-in-out; @@ -386,12 +418,31 @@ ul.task-list input[type="checkbox"] { font-size: 4rem; a { + img { + width: 3.2rem; + height: 3.2rem; + margin-bottom: 1rem; + } + + svg { + width: 3.5rem; + height: 4rem; + margin-bottom: 0.5rem; + + image { + width: 3.5rem; + height: 3.5rem; + } + } + i::before { color: var(--global-text-color); transition-property: all 0.2s ease-in-out; } &:hover { + text-decoration: none; + i::before { color: var(--global-theme-color); } @@ -589,6 +640,7 @@ footer.sticky-bottom { .page-item { .page-link { color: var(--global-text-color); + padding: 0.75rem 1.15rem; &:hover { color: $black-color; @@ -606,6 +658,12 @@ footer.sticky-bottom { } } +// diff2html - Fix for diff2html line number overflow + +.d2h-diff-table { + position: relative; +} + // Distill .distill { @@ -701,6 +759,7 @@ footer.sticky-bottom { display: inline-block; background-color: var(--global-theme-color); margin-bottom: 0.5rem; + color: var(--global-card-bg-color) !important; a { color: white; @@ -835,6 +894,18 @@ footer.sticky-bottom { // Rouge Color Customization figure.highlight { margin: 0 0 1rem; + + // Responsive code block container + overflow-x: auto; + -webkit-overflow-scrolling: touch; + + pre { + // Ensure code blocks can scroll horizontally + white-space: pre; + word-wrap: normal; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } } pre { @@ -843,6 +914,12 @@ pre { border-radius: 6px; padding: 6px 12px; + // Responsive behavior for code blocks + overflow-x: auto; + -webkit-overflow-scrolling: touch; + white-space: pre; + word-wrap: normal; + pre, code { background-color: transparent; @@ -857,6 +934,10 @@ code { background-color: var(--global-code-bg-color); border-radius: 3px; padding: 3px 3px; + + // Inline code should wrap + white-space: normal; + word-wrap: break-word; } // Transitioning Themes @@ -996,29 +1077,6 @@ progress::-moz-progress-bar { color: var(--global-hover-text-color) !important; } } - - .dropdown-menu { - background-color: var(--global-bg-color); - } - - .dropdown-item { - background-color: var(--global-bg-color); - color: var(--global-text-color); - - &:hover { - color: var(--global-hover-color); - } - } - - .dropdown-item.active, - .dropdown-item:active { - background-color: var(--global-hover-color); - color: var(--global-hover-text-color) !important; - - &:hover { - color: var(--global-hover-text-color); - } - } } /* Table of Contents */ @@ -1059,6 +1117,62 @@ nav[data-toggle="toc"] { height: 0; top: 0; } + + /* Responsive code blocks for mobile */ + pre { + font-size: 0.875rem; + padding: 8px 10px; + margin: 0.5rem 0; + } + + figure.highlight { + margin: 0.5rem 0; + + pre { + font-size: 0.875rem; + padding: 8px 10px; + } + } + + code { + font-size: 0.875rem; + padding: 2px 4px; + } +} + +/* Extra small screens */ +@media (max-width: 400px) { + pre { + font-size: 0.8rem; + padding: 6px 8px; + } + + figure.highlight { + pre { + font-size: 0.8rem; + padding: 6px 8px; + } + } + + code { + font-size: 0.8rem; + padding: 1px 3px; + } +} + +/* Medium screens - optimize for tablets */ +@media (min-width: 577px) and (max-width: 768px) { + pre { + font-size: 0.9rem; + padding: 8px 12px; + } + + figure.highlight { + pre { + font-size: 0.9rem; + padding: 8px 12px; + } + } } .featured-posts { @@ -1304,3 +1418,81 @@ ninja-keys::part(ninja-input-wrapper) { background-color: var(--global-theme-color); color: var(--global-text-color); } + +figure.cover { + display: inline-block; + text-align: center; + margin: 0.5rem; /* adjust as needed */ + + img { + vertical-align: bottom; + } + + figcaption.abandoned { + font-family: monospace; + color: #23212d; + text-transform: uppercase; + background-color: #ee5f5b; + } + + figcaption.finished, + figcaption.watched { + font-family: monospace; + color: #23212d; + text-transform: uppercase; + background-color: #62c462; + } + + figcaption.interested { + font-family: monospace; + color: #23212d; + text-transform: uppercase; + background-color: #7691db; + } + + figcaption.paused { + font-family: monospace; + color: #23212d; + text-transform: uppercase; + background-color: #bdac7e; + } + + figcaption.queued { + font-family: monospace; + color: #23212d; + text-transform: uppercase; + background-color: #9e76b5; + } + + figcaption.reading, + figcaption.watching { + font-family: monospace; + color: #23212d; + text-transform: uppercase; + background-color: #f89406; + } + + figcaption.reread, + figcaption.rewatch { + font-family: monospace; + color: #23212d; + text-transform: uppercase; + background-color: #a6517d; + } + + figcaption.uncategorized { + font-family: monospace; + color: #23212d; + text-transform: uppercase; + background-color: #b0abb3; + } + + /* mouse over link */ + a.cover-link:hover { + color: #23212d !important; + } +} + +mjx-container[jax="CHTML"][display="true"] { + overflow-x: auto; +} diff --git a/_sass/_cv.scss b/_sass/_cv.scss index d733ba32c1626..7a785f401417d 100644 --- a/_sass/_cv.scss +++ b/_sass/_cv.scss @@ -8,6 +8,11 @@ div.container-link-button { table.table-cv { background-color: transparent !important; + + td, + th { + padding: 1px; + } } a.btncv { diff --git a/_sass/_distill.scss b/_sass/_distill.scss index acf5311bb9028..8e68645a2401a 100644 --- a/_sass/_distill.scss +++ b/_sass/_distill.scss @@ -132,6 +132,20 @@ d-article { d-footnote { scroll-margin-top: 66px; + color: var(--global-theme-color) !important; /* Footnote text color */ + &:hover { + color: var(--global-hover-color) !important; /* Footnote hover color */ + } + } + + /* Citations */ + d-cite a, + a.citation { + /* Target citations within d-cite and also general .citation links */ + color: var(--global-theme-color) !important; + &:hover { + color: var(--global-hover-color) !important; + } } } diff --git a/_sass/_themes.scss b/_sass/_themes.scss index 1ca106bcab42c..bfe104ee81912 100644 --- a/_sass/_themes.scss +++ b/_sass/_themes.scss @@ -5,6 +5,7 @@ @use "sass:color"; :root { + color-scheme: light; --global-bg-color: #{$white-color}; --global-code-bg-color: #{$code-bg-color-light}; --global-text-color: #{$black-color}; @@ -56,10 +57,11 @@ display: none; } - .repo-img-light { + .only-light { display: block; } - .repo-img-dark { + + .only-dark { display: none; } @@ -75,6 +77,7 @@ } html[data-theme="dark"] { + color-scheme: dark; --global-bg-color: #{$grey-color-dark}; --global-code-bg-color: #{$code-bg-color-dark}; --global-text-color: #{$grey-color-light}; @@ -99,22 +102,23 @@ html[data-theme="dark"] { --global-newsletter-text-color: #{$grey-color-dark}; --global-tip-block: #42b983; - --global-tip-block-bg: #e2f5ec; - --global-tip-block-text: #215d42; - --global-tip-block-title: #359469; + --global-tip-block-bg: #215d42; + --global-tip-block-text: #beffe2; + --global-tip-block-title: #e2f5ec; --global-warning-block: #e7c000; - --global-warning-block-bg: #fff8d8; - --global-warning-block-text: #6b5900; - --global-warning-block-title: #b29400; + --global-warning-block-bg: #6b5900; + --global-warning-block-text: #fff2af; + --global-warning-block-title: #fff8d8; --global-danger-block: #c00; - --global-danger-block-bg: #ffe0e0; - --global-danger-block-text: #600; - --global-danger-block-title: #c00; + --global-danger-block-bg: #600; + --global-danger-block-text: #ffb9b9; + --global-danger-block-title: #ffe0e0; - .repo-img-light { + .only-light { display: none; } - .repo-img-dark { + + .only-dark { display: block; } } diff --git a/_sass/font-awesome/_core.scss b/_sass/font-awesome/_core.scss index d82bb39945eff..420e557071d71 100644 --- a/_sass/font-awesome/_core.scss +++ b/_sass/font-awesome/_core.scss @@ -6,14 +6,12 @@ font-weight: var(--#{$fa-css-prefix}-style, #{$fa-style}); } -.#{$fa-css-prefix}-solid, -.#{$fa-css-prefix}-regular, -.#{$fa-css-prefix}-brands, .fas, .far, .fab, -.#{$fa-css-prefix}-sharp-solid, -.#{$fa-css-prefix}-classic, +.#{$fa-css-prefix}-solid, +.#{$fa-css-prefix}-regular, +.#{$fa-css-prefix}-brands, .#{$fa-css-prefix} { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; @@ -24,20 +22,28 @@ text-rendering: auto; } -.fas, +.fas::before, +.far::before, +.fab::before, +.#{$fa-css-prefix}-solid::before, +.#{$fa-css-prefix}-regular::before, +.#{$fa-css-prefix}-brands::before, +.fa::before { + content: var(#{$fa-icon-property}); +} + .#{$fa-css-prefix}-classic, +.fas, .#{$fa-css-prefix}-solid, .far, .#{$fa-css-prefix}-regular { font-family: 'Font Awesome 6 Free'; } - -.fab, -.#{$fa-css-prefix}-brands { +.#{$fa-css-prefix}-brands, +.fab { font-family: 'Font Awesome 6 Brands'; } - %fa-icon { @include fa-icon; } diff --git a/_sass/font-awesome/_icons.scss b/_sass/font-awesome/_icons.scss index 0f5592650f5ca..1dd1b0434bf41 100644 --- a/_sass/font-awesome/_icons.scss +++ b/_sass/font-awesome/_icons.scss @@ -5,6 +5,9 @@ readers do not read off random characters that represent icons */ @each $name, $icon in $fa-icons { - .#{$fa-css-prefix}-#{$name}::before { content: unquote("\"#{ $icon }\""); } + .#{$fa-css-prefix}-#{$name} { + #{$fa-icon-property}: unquote("\"#{ $icon }\""); + #{$fa-duotone-icon-property}: unquote("\"#{$icon}#{$icon}\""); + } } diff --git a/_sass/font-awesome/_mixins.scss b/_sass/font-awesome/_mixins.scss index 80ab5c81b2284..71f99ad8d4c9e 100644 --- a/_sass/font-awesome/_mixins.scss +++ b/_sass/font-awesome/_mixins.scss @@ -42,31 +42,24 @@ } // sets a specific icon family to use alongside style + icon mixins +@mixin fa-family-classic() { + @extend .fa-classic; +} // convenience mixins for declaring pseudo-elements by CSS variable, -// including all style-specific font properties, and both the ::before -// and ::after elements in the duotone case. +// including all style-specific font properties @mixin fa-icon-solid($fa-var) { - @extend %fa-icon; @extend .fa-solid; - &::before { - content: unquote("\"#{ $fa-var }\""); - } + & { #{$fa-icon-property}: unquote("\"#{ $fa-var }\""); #{$fa-duotone-icon-property}: unquote("\"#{ $fa-var }#{ $fa-var }\""); } } @mixin fa-icon-regular($fa-var) { - @extend %fa-icon; @extend .fa-regular; - &::before { - content: unquote("\"#{ $fa-var }\""); - } + & { #{$fa-icon-property}: unquote("\"#{ $fa-var }\""); #{$fa-duotone-icon-property}: unquote("\"#{ $fa-var }#{ $fa-var }\""); } } @mixin fa-icon-brands($fa-var) { - @extend %fa-icon; @extend .fa-brands; - &::before { - content: unquote("\"#{ $fa-var }\""); - } + & { #{$fa-icon-property}: unquote("\"#{ $fa-var }\""); #{$fa-duotone-icon-property}: unquote("\"#{ $fa-var }#{ $fa-var }\""); } } diff --git a/_sass/font-awesome/_shims.scss b/_sass/font-awesome/_shims.scss index 7a894a63a5309..3fb6d41f187b0 100644 --- a/_sass/font-awesome/_shims.scss +++ b/_sass/font-awesome/_shims.scss @@ -1,104 +1,104 @@ -.#{$fa-css-prefix}.#{$fa-css-prefix}-glass:before { content: unquote("\"#{ $fa-var-martini-glass-empty }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-glass { #{$fa-icon-property}: unquote("\"#{ $fa-var-martini-glass-empty }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-o:before { content: unquote("\"#{ $fa-var-envelope }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-envelope }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-star-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-star-o:before { content: unquote("\"#{ $fa-var-star }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-remove:before { content: unquote("\"#{ $fa-var-xmark }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-close:before { content: unquote("\"#{ $fa-var-xmark }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-gear:before { content: unquote("\"#{ $fa-var-gear }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-star }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-remove { #{$fa-icon-property}: unquote("\"#{ $fa-var-xmark }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-close { #{$fa-icon-property}: unquote("\"#{ $fa-var-xmark }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-gear { #{$fa-icon-property}: unquote("\"#{ $fa-var-gear }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-trash-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-trash-o:before { content: unquote("\"#{ $fa-var-trash-can }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-home:before { content: unquote("\"#{ $fa-var-house }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-trash-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-trash-can }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-home { #{$fa-icon-property}: unquote("\"#{ $fa-var-house }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-o:before { content: unquote("\"#{ $fa-var-file }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-clock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-clock-o:before { content: unquote("\"#{ $fa-var-clock }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-clock-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-clock }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-down:before { content: unquote("\"#{ $fa-var-circle-down }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-down { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-down }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-up:before { content: unquote("\"#{ $fa-var-circle-up }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-up { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-up }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-play-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-play-circle-o:before { content: unquote("\"#{ $fa-var-circle-play }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-repeat:before { content: unquote("\"#{ $fa-var-arrow-rotate-right }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-rotate-right:before { content: unquote("\"#{ $fa-var-arrow-rotate-right }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-refresh:before { content: unquote("\"#{ $fa-var-arrows-rotate }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-play-circle-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-play }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-repeat { #{$fa-icon-property}: unquote("\"#{ $fa-var-arrow-rotate-right }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-rotate-right { #{$fa-icon-property}: unquote("\"#{ $fa-var-arrow-rotate-right }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-refresh { #{$fa-icon-property}: unquote("\"#{ $fa-var-arrows-rotate }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-list-alt { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-list-alt:before { content: unquote("\"#{ $fa-var-rectangle-list }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-dedent:before { content: unquote("\"#{ $fa-var-outdent }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-video-camera:before { content: unquote("\"#{ $fa-var-video }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-list-alt { #{$fa-icon-property}: unquote("\"#{ $fa-var-rectangle-list }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-dedent { #{$fa-icon-property}: unquote("\"#{ $fa-var-outdent }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-video-camera { #{$fa-icon-property}: unquote("\"#{ $fa-var-video }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-picture-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-picture-o:before { content: unquote("\"#{ $fa-var-image }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-picture-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-image }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-photo { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-photo:before { content: unquote("\"#{ $fa-var-image }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-photo { #{$fa-icon-property}: unquote("\"#{ $fa-var-image }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-image { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-image:before { content: unquote("\"#{ $fa-var-image }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-map-marker:before { content: unquote("\"#{ $fa-var-location-dot }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-image { #{$fa-icon-property}: unquote("\"#{ $fa-var-image }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-map-marker { #{$fa-icon-property}: unquote("\"#{ $fa-var-location-dot }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-pencil-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-pencil-square-o:before { content: unquote("\"#{ $fa-var-pen-to-square }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-pencil-square-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-pen-to-square }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-edit { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-edit:before { content: unquote("\"#{ $fa-var-pen-to-square }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-share-square-o:before { content: unquote("\"#{ $fa-var-share-from-square }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-edit { #{$fa-icon-property}: unquote("\"#{ $fa-var-pen-to-square }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-share-square-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-share-from-square }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-check-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-check-square-o:before { content: unquote("\"#{ $fa-var-square-check }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows:before { content: unquote("\"#{ $fa-var-up-down-left-right }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-check-square-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-check }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows { #{$fa-icon-property}: unquote("\"#{ $fa-var-up-down-left-right }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-times-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-times-circle-o:before { content: unquote("\"#{ $fa-var-circle-xmark }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-times-circle-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-xmark }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-check-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-check-circle-o:before { content: unquote("\"#{ $fa-var-circle-check }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-forward:before { content: unquote("\"#{ $fa-var-share }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-expand:before { content: unquote("\"#{ $fa-var-up-right-and-down-left-from-center }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-compress:before { content: unquote("\"#{ $fa-var-down-left-and-up-right-to-center }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-check-circle-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-check }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-forward { #{$fa-icon-property}: unquote("\"#{ $fa-var-share }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-expand { #{$fa-icon-property}: unquote("\"#{ $fa-var-up-right-and-down-left-from-center }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-compress { #{$fa-icon-property}: unquote("\"#{ $fa-var-down-left-and-up-right-to-center }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-eye { font-family: 'Font Awesome 6 Free'; font-weight: 400; @@ -107,67 +107,67 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-warning:before { content: unquote("\"#{ $fa-var-triangle-exclamation }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar:before { content: unquote("\"#{ $fa-var-calendar-days }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-v:before { content: unquote("\"#{ $fa-var-up-down }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-h:before { content: unquote("\"#{ $fa-var-left-right }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-bar-chart:before { content: unquote("\"#{ $fa-var-chart-column }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-bar-chart-o:before { content: unquote("\"#{ $fa-var-chart-column }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-warning { #{$fa-icon-property}: unquote("\"#{ $fa-var-triangle-exclamation }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar { #{$fa-icon-property}: unquote("\"#{ $fa-var-calendar-days }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-v { #{$fa-icon-property}: unquote("\"#{ $fa-var-up-down }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-h { #{$fa-icon-property}: unquote("\"#{ $fa-var-left-right }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-bar-chart { #{$fa-icon-property}: unquote("\"#{ $fa-var-chart-column }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-bar-chart-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-chart-column }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-twitter-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-twitter-square:before { content: unquote("\"#{ $fa-var-square-twitter }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-twitter-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-twitter }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-square:before { content: unquote("\"#{ $fa-var-square-facebook }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-gears:before { content: unquote("\"#{ $fa-var-gears }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-facebook }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-gears { #{$fa-icon-property}: unquote("\"#{ $fa-var-gears }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-up:before { content: unquote("\"#{ $fa-var-thumbs-up }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-up { #{$fa-icon-property}: unquote("\"#{ $fa-var-thumbs-up }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-down:before { content: unquote("\"#{ $fa-var-thumbs-down }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-down { #{$fa-icon-property}: unquote("\"#{ $fa-var-thumbs-down }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-heart-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-heart-o:before { content: unquote("\"#{ $fa-var-heart }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sign-out:before { content: unquote("\"#{ $fa-var-right-from-bracket }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-heart-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-heart }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sign-out { #{$fa-icon-property}: unquote("\"#{ $fa-var-right-from-bracket }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin-square:before { content: unquote("\"#{ $fa-var-linkedin }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-thumb-tack:before { content: unquote("\"#{ $fa-var-thumbtack }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-external-link:before { content: unquote("\"#{ $fa-var-up-right-from-square }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sign-in:before { content: unquote("\"#{ $fa-var-right-to-bracket }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-linkedin }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-thumb-tack { #{$fa-icon-property}: unquote("\"#{ $fa-var-thumbtack }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-external-link { #{$fa-icon-property}: unquote("\"#{ $fa-var-up-right-from-square }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sign-in { #{$fa-icon-property}: unquote("\"#{ $fa-var-right-to-bracket }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-github-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-github-square:before { content: unquote("\"#{ $fa-var-square-github }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-github-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-github }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-lemon-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-lemon-o:before { content: unquote("\"#{ $fa-var-lemon }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-lemon-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-lemon }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-square-o:before { content: unquote("\"#{ $fa-var-square }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-square-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-square }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-bookmark-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-bookmark-o:before { content: unquote("\"#{ $fa-var-bookmark }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-bookmark-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-bookmark }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-twitter { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -176,12 +176,12 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook:before { content: unquote("\"#{ $fa-var-facebook-f }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook { #{$fa-icon-property}: unquote("\"#{ $fa-var-facebook-f }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-f { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-f:before { content: unquote("\"#{ $fa-var-facebook-f }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-f { #{$fa-icon-property}: unquote("\"#{ $fa-var-facebook-f }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-github { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -190,56 +190,56 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-feed:before { content: unquote("\"#{ $fa-var-rss }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-feed { #{$fa-icon-property}: unquote("\"#{ $fa-var-rss }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hdd-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hdd-o:before { content: unquote("\"#{ $fa-var-hard-drive }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hdd-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hard-drive }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-right:before { content: unquote("\"#{ $fa-var-hand-point-right }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-right { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand-point-right }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-left:before { content: unquote("\"#{ $fa-var-hand-point-left }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-left { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand-point-left }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-up:before { content: unquote("\"#{ $fa-var-hand-point-up }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-up { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand-point-up }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-down:before { content: unquote("\"#{ $fa-var-hand-point-down }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-globe:before { content: unquote("\"#{ $fa-var-earth-americas }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-tasks:before { content: unquote("\"#{ $fa-var-bars-progress }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-alt:before { content: unquote("\"#{ $fa-var-maximize }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-group:before { content: unquote("\"#{ $fa-var-users }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-chain:before { content: unquote("\"#{ $fa-var-link }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-cut:before { content: unquote("\"#{ $fa-var-scissors }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-down { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand-point-down }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-globe { #{$fa-icon-property}: unquote("\"#{ $fa-var-earth-americas }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-tasks { #{$fa-icon-property}: unquote("\"#{ $fa-var-bars-progress }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-alt { #{$fa-icon-property}: unquote("\"#{ $fa-var-maximize }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-group { #{$fa-icon-property}: unquote("\"#{ $fa-var-users }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-chain { #{$fa-icon-property}: unquote("\"#{ $fa-var-link }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-cut { #{$fa-icon-property}: unquote("\"#{ $fa-var-scissors }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-files-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-files-o:before { content: unquote("\"#{ $fa-var-copy }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-files-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-copy }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-floppy-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-floppy-o:before { content: unquote("\"#{ $fa-var-floppy-disk }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-floppy-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-floppy-disk }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-save { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-save:before { content: unquote("\"#{ $fa-var-floppy-disk }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-navicon:before { content: unquote("\"#{ $fa-var-bars }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-reorder:before { content: unquote("\"#{ $fa-var-bars }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-magic:before { content: unquote("\"#{ $fa-var-wand-magic-sparkles }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-save { #{$fa-icon-property}: unquote("\"#{ $fa-var-floppy-disk }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-navicon { #{$fa-icon-property}: unquote("\"#{ $fa-var-bars }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-reorder { #{$fa-icon-property}: unquote("\"#{ $fa-var-bars }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-magic { #{$fa-icon-property}: unquote("\"#{ $fa-var-wand-magic-sparkles }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -248,80 +248,80 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest-square:before { content: unquote("\"#{ $fa-var-square-pinterest }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-pinterest }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-square:before { content: unquote("\"#{ $fa-var-square-google-plus }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-google-plus }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus:before { content: unquote("\"#{ $fa-var-google-plus-g }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-money:before { content: unquote("\"#{ $fa-var-money-bill-1 }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-unsorted:before { content: unquote("\"#{ $fa-var-sort }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-desc:before { content: unquote("\"#{ $fa-var-sort-down }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-asc:before { content: unquote("\"#{ $fa-var-sort-up }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus { #{$fa-icon-property}: unquote("\"#{ $fa-var-google-plus-g }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-money { #{$fa-icon-property}: unquote("\"#{ $fa-var-money-bill-1 }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-unsorted { #{$fa-icon-property}: unquote("\"#{ $fa-var-sort }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-desc { #{$fa-icon-property}: unquote("\"#{ $fa-var-sort-down }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-asc { #{$fa-icon-property}: unquote("\"#{ $fa-var-sort-up }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin:before { content: unquote("\"#{ $fa-var-linkedin-in }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-rotate-left:before { content: unquote("\"#{ $fa-var-arrow-rotate-left }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-legal:before { content: unquote("\"#{ $fa-var-gavel }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-tachometer:before { content: unquote("\"#{ $fa-var-gauge-high }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-dashboard:before { content: unquote("\"#{ $fa-var-gauge-high }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin { #{$fa-icon-property}: unquote("\"#{ $fa-var-linkedin-in }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-rotate-left { #{$fa-icon-property}: unquote("\"#{ $fa-var-arrow-rotate-left }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-legal { #{$fa-icon-property}: unquote("\"#{ $fa-var-gavel }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-tachometer { #{$fa-icon-property}: unquote("\"#{ $fa-var-gauge-high }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-dashboard { #{$fa-icon-property}: unquote("\"#{ $fa-var-gauge-high }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-comment-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-comment-o:before { content: unquote("\"#{ $fa-var-comment }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-comment-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-comment }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-comments-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-comments-o:before { content: unquote("\"#{ $fa-var-comments }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-flash:before { content: unquote("\"#{ $fa-var-bolt }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-clipboard:before { content: unquote("\"#{ $fa-var-paste }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-comments-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-comments }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-flash { #{$fa-icon-property}: unquote("\"#{ $fa-var-bolt }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-clipboard { #{$fa-icon-property}: unquote("\"#{ $fa-var-paste }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-lightbulb-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-lightbulb-o:before { content: unquote("\"#{ $fa-var-lightbulb }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-exchange:before { content: unquote("\"#{ $fa-var-right-left }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-cloud-download:before { content: unquote("\"#{ $fa-var-cloud-arrow-down }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-cloud-upload:before { content: unquote("\"#{ $fa-var-cloud-arrow-up }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-lightbulb-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-lightbulb }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-exchange { #{$fa-icon-property}: unquote("\"#{ $fa-var-right-left }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-cloud-download { #{$fa-icon-property}: unquote("\"#{ $fa-var-cloud-arrow-down }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-cloud-upload { #{$fa-icon-property}: unquote("\"#{ $fa-var-cloud-arrow-up }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-bell-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-o:before { content: unquote("\"#{ $fa-var-bell }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-cutlery:before { content: unquote("\"#{ $fa-var-utensils }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-bell }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-cutlery { #{$fa-icon-property}: unquote("\"#{ $fa-var-utensils }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-text-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-text-o:before { content: unquote("\"#{ $fa-var-file-lines }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-text-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-lines }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-building-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-building-o:before { content: unquote("\"#{ $fa-var-building }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-building-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-building }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hospital-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hospital-o:before { content: unquote("\"#{ $fa-var-hospital }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-tablet:before { content: unquote("\"#{ $fa-var-tablet-screen-button }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-mobile:before { content: unquote("\"#{ $fa-var-mobile-screen-button }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-mobile-phone:before { content: unquote("\"#{ $fa-var-mobile-screen-button }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hospital-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hospital }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-tablet { #{$fa-icon-property}: unquote("\"#{ $fa-var-tablet-screen-button }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-mobile { #{$fa-icon-property}: unquote("\"#{ $fa-var-mobile-screen-button }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-mobile-phone { #{$fa-icon-property}: unquote("\"#{ $fa-var-mobile-screen-button }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-o:before { content: unquote("\"#{ $fa-var-circle }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-reply:before { content: unquote("\"#{ $fa-var-reply }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-reply { #{$fa-icon-property}: unquote("\"#{ $fa-var-reply }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-github-alt { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -330,61 +330,61 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-o:before { content: unquote("\"#{ $fa-var-folder }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-folder }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-folder-open-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-open-o:before { content: unquote("\"#{ $fa-var-folder-open }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-open-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-folder-open }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-smile-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-smile-o:before { content: unquote("\"#{ $fa-var-face-smile }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-smile-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-face-smile }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-frown-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-frown-o:before { content: unquote("\"#{ $fa-var-face-frown }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-frown-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-face-frown }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-meh-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-meh-o:before { content: unquote("\"#{ $fa-var-face-meh }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-meh-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-face-meh }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-keyboard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-keyboard-o:before { content: unquote("\"#{ $fa-var-keyboard }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-keyboard-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-keyboard }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-flag-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-flag-o:before { content: unquote("\"#{ $fa-var-flag }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-reply-all:before { content: unquote("\"#{ $fa-var-reply-all }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-flag-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-flag }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-reply-all { #{$fa-icon-property}: unquote("\"#{ $fa-var-reply-all }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-o:before { content: unquote("\"#{ $fa-var-star-half-stroke }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-star-half-stroke }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-empty { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-empty:before { content: unquote("\"#{ $fa-var-star-half-stroke }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-empty { #{$fa-icon-property}: unquote("\"#{ $fa-var-star-half-stroke }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-full { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-full:before { content: unquote("\"#{ $fa-var-star-half-stroke }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-code-fork:before { content: unquote("\"#{ $fa-var-code-branch }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-chain-broken:before { content: unquote("\"#{ $fa-var-link-slash }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-unlink:before { content: unquote("\"#{ $fa-var-link-slash }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-full { #{$fa-icon-property}: unquote("\"#{ $fa-var-star-half-stroke }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-code-fork { #{$fa-icon-property}: unquote("\"#{ $fa-var-code-branch }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-chain-broken { #{$fa-icon-property}: unquote("\"#{ $fa-var-link-slash }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-unlink { #{$fa-icon-property}: unquote("\"#{ $fa-var-link-slash }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-o:before { content: unquote("\"#{ $fa-var-calendar }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-calendar }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-maxcdn { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -397,16 +397,16 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-unlock-alt:before { content: unquote("\"#{ $fa-var-unlock }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-unlock-alt { #{$fa-icon-property}: unquote("\"#{ $fa-var-unlock }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-minus-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-minus-square-o:before { content: unquote("\"#{ $fa-var-square-minus }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-level-up:before { content: unquote("\"#{ $fa-var-turn-up }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-level-down:before { content: unquote("\"#{ $fa-var-turn-down }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-pencil-square:before { content: unquote("\"#{ $fa-var-square-pen }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-external-link-square:before { content: unquote("\"#{ $fa-var-square-up-right }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-minus-square-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-minus }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-level-up { #{$fa-icon-property}: unquote("\"#{ $fa-var-turn-up }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-level-down { #{$fa-icon-property}: unquote("\"#{ $fa-var-turn-down }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-pencil-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-pen }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-external-link-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-up-right }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-compass { font-family: 'Font Awesome 6 Free'; font-weight: 400; @@ -415,48 +415,48 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-down:before { content: unquote("\"#{ $fa-var-square-caret-down }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-down { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-caret-down }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-down:before { content: unquote("\"#{ $fa-var-square-caret-down }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-down { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-caret-down }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-up:before { content: unquote("\"#{ $fa-var-square-caret-up }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-up { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-caret-up }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-up:before { content: unquote("\"#{ $fa-var-square-caret-up }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-up { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-caret-up }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-right:before { content: unquote("\"#{ $fa-var-square-caret-right }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-right { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-caret-right }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-right:before { content: unquote("\"#{ $fa-var-square-caret-right }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-eur:before { content: unquote("\"#{ $fa-var-euro-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-euro:before { content: unquote("\"#{ $fa-var-euro-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-gbp:before { content: unquote("\"#{ $fa-var-sterling-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-usd:before { content: unquote("\"#{ $fa-var-dollar-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-dollar:before { content: unquote("\"#{ $fa-var-dollar-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-inr:before { content: unquote("\"#{ $fa-var-indian-rupee-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-rupee:before { content: unquote("\"#{ $fa-var-indian-rupee-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-jpy:before { content: unquote("\"#{ $fa-var-yen-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-cny:before { content: unquote("\"#{ $fa-var-yen-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-rmb:before { content: unquote("\"#{ $fa-var-yen-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-yen:before { content: unquote("\"#{ $fa-var-yen-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-rub:before { content: unquote("\"#{ $fa-var-ruble-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-ruble:before { content: unquote("\"#{ $fa-var-ruble-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-rouble:before { content: unquote("\"#{ $fa-var-ruble-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-krw:before { content: unquote("\"#{ $fa-var-won-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-won:before { content: unquote("\"#{ $fa-var-won-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-right { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-caret-right }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-eur { #{$fa-icon-property}: unquote("\"#{ $fa-var-euro-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-euro { #{$fa-icon-property}: unquote("\"#{ $fa-var-euro-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-gbp { #{$fa-icon-property}: unquote("\"#{ $fa-var-sterling-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-usd { #{$fa-icon-property}: unquote("\"#{ $fa-var-dollar-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-dollar { #{$fa-icon-property}: unquote("\"#{ $fa-var-dollar-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-inr { #{$fa-icon-property}: unquote("\"#{ $fa-var-indian-rupee-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-rupee { #{$fa-icon-property}: unquote("\"#{ $fa-var-indian-rupee-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-jpy { #{$fa-icon-property}: unquote("\"#{ $fa-var-yen-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-cny { #{$fa-icon-property}: unquote("\"#{ $fa-var-yen-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-rmb { #{$fa-icon-property}: unquote("\"#{ $fa-var-yen-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-yen { #{$fa-icon-property}: unquote("\"#{ $fa-var-yen-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-rub { #{$fa-icon-property}: unquote("\"#{ $fa-var-ruble-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-ruble { #{$fa-icon-property}: unquote("\"#{ $fa-var-ruble-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-rouble { #{$fa-icon-property}: unquote("\"#{ $fa-var-ruble-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-krw { #{$fa-icon-property}: unquote("\"#{ $fa-var-won-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-won { #{$fa-icon-property}: unquote("\"#{ $fa-var-won-sign }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-btc { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -465,19 +465,19 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-bitcoin:before { content: unquote("\"#{ $fa-var-btc }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-text:before { content: unquote("\"#{ $fa-var-file-lines }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-alpha-asc:before { content: unquote("\"#{ $fa-var-arrow-down-a-z }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-alpha-desc:before { content: unquote("\"#{ $fa-var-arrow-down-z-a }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-amount-asc:before { content: unquote("\"#{ $fa-var-arrow-down-short-wide }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-amount-desc:before { content: unquote("\"#{ $fa-var-arrow-down-wide-short }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-numeric-asc:before { content: unquote("\"#{ $fa-var-arrow-down-1-9 }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-numeric-desc:before { content: unquote("\"#{ $fa-var-arrow-down-9-1 }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-bitcoin { #{$fa-icon-property}: unquote("\"#{ $fa-var-btc }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-text { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-lines }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-alpha-asc { #{$fa-icon-property}: unquote("\"#{ $fa-var-arrow-down-a-z }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-alpha-desc { #{$fa-icon-property}: unquote("\"#{ $fa-var-arrow-down-z-a }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-amount-asc { #{$fa-icon-property}: unquote("\"#{ $fa-var-arrow-down-short-wide }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-amount-desc { #{$fa-icon-property}: unquote("\"#{ $fa-var-arrow-down-wide-short }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-numeric-asc { #{$fa-icon-property}: unquote("\"#{ $fa-var-arrow-down-1-9 }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-numeric-desc { #{$fa-icon-property}: unquote("\"#{ $fa-var-arrow-down-9-1 }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-square:before { content: unquote("\"#{ $fa-var-square-youtube }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-youtube }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-youtube { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -490,12 +490,12 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-xing-square:before { content: unquote("\"#{ $fa-var-square-xing }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-xing-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-xing }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-play { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-play:before { content: unquote("\"#{ $fa-var-youtube }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-play { #{$fa-icon-property}: unquote("\"#{ $fa-var-youtube }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-dropbox { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -524,7 +524,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-bitbucket-square:before { content: unquote("\"#{ $fa-var-bitbucket }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-bitbucket-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-bitbucket }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-tumblr { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -533,11 +533,11 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-tumblr-square:before { content: unquote("\"#{ $fa-var-square-tumblr }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-down:before { content: unquote("\"#{ $fa-var-down-long }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-up:before { content: unquote("\"#{ $fa-var-up-long }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-left:before { content: unquote("\"#{ $fa-var-left-long }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-right:before { content: unquote("\"#{ $fa-var-right-long }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-tumblr-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-tumblr }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-down { #{$fa-icon-property}: unquote("\"#{ $fa-var-down-long }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-up { #{$fa-icon-property}: unquote("\"#{ $fa-var-up-long }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-left { #{$fa-icon-property}: unquote("\"#{ $fa-var-left-long }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-right { #{$fa-icon-property}: unquote("\"#{ $fa-var-right-long }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-apple { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -578,17 +578,17 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-gittip:before { content: unquote("\"#{ $fa-var-gratipay }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-gittip { #{$fa-icon-property}: unquote("\"#{ $fa-var-gratipay }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-sun-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sun-o:before { content: unquote("\"#{ $fa-var-sun }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sun-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-sun }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-moon-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-moon-o:before { content: unquote("\"#{ $fa-var-moon }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-moon-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-moon }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-vk { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -613,39 +613,39 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-right:before { content: unquote("\"#{ $fa-var-circle-right }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-right { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-right }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-left:before { content: unquote("\"#{ $fa-var-circle-left }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-left { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-left }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-left:before { content: unquote("\"#{ $fa-var-square-caret-left }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-left { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-caret-left }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-left:before { content: unquote("\"#{ $fa-var-square-caret-left }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-left { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-caret-left }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-dot-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-dot-circle-o:before { content: unquote("\"#{ $fa-var-circle-dot }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-dot-circle-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-dot }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo-square:before { content: unquote("\"#{ $fa-var-square-vimeo }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-try:before { content: unquote("\"#{ $fa-var-turkish-lira-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-turkish-lira:before { content: unquote("\"#{ $fa-var-turkish-lira-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-vimeo }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-try { #{$fa-icon-property}: unquote("\"#{ $fa-var-turkish-lira-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-turkish-lira { #{$fa-icon-property}: unquote("\"#{ $fa-var-turkish-lira-sign }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-plus-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-plus-square-o:before { content: unquote("\"#{ $fa-var-square-plus }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-plus-square-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-plus }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-slack { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -658,9 +658,9 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-institution:before { content: unquote("\"#{ $fa-var-building-columns }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-bank:before { content: unquote("\"#{ $fa-var-building-columns }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-mortar-board:before { content: unquote("\"#{ $fa-var-graduation-cap }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-institution { #{$fa-icon-property}: unquote("\"#{ $fa-var-building-columns }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-bank { #{$fa-icon-property}: unquote("\"#{ $fa-var-building-columns }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-mortar-board { #{$fa-icon-property}: unquote("\"#{ $fa-var-graduation-cap }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-yahoo { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -677,7 +677,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-reddit-square:before { content: unquote("\"#{ $fa-var-square-reddit }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-reddit-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-reddit }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-stumbleupon-circle { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -718,7 +718,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-behance-square:before { content: unquote("\"#{ $fa-var-square-behance }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-behance-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-behance }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-steam { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -727,9 +727,9 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-steam-square:before { content: unquote("\"#{ $fa-var-square-steam }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-automobile:before { content: unquote("\"#{ $fa-var-car }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-cab:before { content: unquote("\"#{ $fa-var-taxi }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-steam-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-steam }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-automobile { #{$fa-icon-property}: unquote("\"#{ $fa-var-car }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-cab { #{$fa-icon-property}: unquote("\"#{ $fa-var-taxi }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-spotify { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -746,72 +746,72 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-pdf-o:before { content: unquote("\"#{ $fa-var-file-pdf }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-pdf-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-pdf }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-word-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-word-o:before { content: unquote("\"#{ $fa-var-file-word }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-word-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-word }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-excel-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-excel-o:before { content: unquote("\"#{ $fa-var-file-excel }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-excel-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-excel }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-powerpoint-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-powerpoint-o:before { content: unquote("\"#{ $fa-var-file-powerpoint }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-powerpoint-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-powerpoint }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-image-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-image-o:before { content: unquote("\"#{ $fa-var-file-image }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-image-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-image }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-photo-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-photo-o:before { content: unquote("\"#{ $fa-var-file-image }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-photo-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-image }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-picture-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-picture-o:before { content: unquote("\"#{ $fa-var-file-image }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-picture-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-image }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-archive-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-archive-o:before { content: unquote("\"#{ $fa-var-file-zipper }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-archive-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-zipper }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-zip-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-zip-o:before { content: unquote("\"#{ $fa-var-file-zipper }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-zip-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-zipper }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-audio-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-audio-o:before { content: unquote("\"#{ $fa-var-file-audio }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-audio-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-audio }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-sound-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-sound-o:before { content: unquote("\"#{ $fa-var-file-audio }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-sound-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-audio }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-video-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-video-o:before { content: unquote("\"#{ $fa-var-file-video }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-video-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-video }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-movie-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-movie-o:before { content: unquote("\"#{ $fa-var-file-video }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-movie-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-video }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-file-code-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-file-code-o:before { content: unquote("\"#{ $fa-var-file-code }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-code-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-file-code }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-vine { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -824,11 +824,11 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-life-bouy:before { content: unquote("\"#{ $fa-var-life-ring }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-life-buoy:before { content: unquote("\"#{ $fa-var-life-ring }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-life-saver:before { content: unquote("\"#{ $fa-var-life-ring }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-support:before { content: unquote("\"#{ $fa-var-life-ring }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-o-notch:before { content: unquote("\"#{ $fa-var-circle-notch }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-life-bouy { #{$fa-icon-property}: unquote("\"#{ $fa-var-life-ring }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-life-buoy { #{$fa-icon-property}: unquote("\"#{ $fa-var-life-ring }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-life-saver { #{$fa-icon-property}: unquote("\"#{ $fa-var-life-ring }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-support { #{$fa-icon-property}: unquote("\"#{ $fa-var-life-ring }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-o-notch { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-notch }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-rebel { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -837,12 +837,12 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-ra:before { content: unquote("\"#{ $fa-var-rebel }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-ra { #{$fa-icon-property}: unquote("\"#{ $fa-var-rebel }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-resistance { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-resistance:before { content: unquote("\"#{ $fa-var-rebel }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-resistance { #{$fa-icon-property}: unquote("\"#{ $fa-var-rebel }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-empire { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -851,12 +851,12 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-ge:before { content: unquote("\"#{ $fa-var-empire }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-ge { #{$fa-icon-property}: unquote("\"#{ $fa-var-empire }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-git-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-git-square:before { content: unquote("\"#{ $fa-var-square-git }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-git-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-git }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-git { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -869,12 +869,12 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-y-combinator-square:before { content: unquote("\"#{ $fa-var-hacker-news }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-y-combinator-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-hacker-news }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-yc-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-yc-square:before { content: unquote("\"#{ $fa-var-hacker-news }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-yc-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-hacker-news }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-tencent-weibo { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -891,34 +891,34 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-wechat:before { content: unquote("\"#{ $fa-var-weixin }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-send:before { content: unquote("\"#{ $fa-var-paper-plane }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-wechat { #{$fa-icon-property}: unquote("\"#{ $fa-var-weixin }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-send { #{$fa-icon-property}: unquote("\"#{ $fa-var-paper-plane }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-paper-plane-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-paper-plane-o:before { content: unquote("\"#{ $fa-var-paper-plane }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-paper-plane-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-paper-plane }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-send-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-send-o:before { content: unquote("\"#{ $fa-var-paper-plane }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-send-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-paper-plane }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-circle-thin { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-thin:before { content: unquote("\"#{ $fa-var-circle }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-header:before { content: unquote("\"#{ $fa-var-heading }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-thin { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-header { #{$fa-icon-property}: unquote("\"#{ $fa-var-heading }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-futbol-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-futbol-o:before { content: unquote("\"#{ $fa-var-futbol }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-futbol-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-futbol }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-soccer-ball-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-soccer-ball-o:before { content: unquote("\"#{ $fa-var-futbol }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-soccer-ball-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-futbol }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-slideshare { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -935,7 +935,7 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-newspaper-o:before { content: unquote("\"#{ $fa-var-newspaper }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-newspaper-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-newspaper }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-paypal { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -972,16 +972,16 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-slash-o:before { content: unquote("\"#{ $fa-var-bell-slash }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-trash:before { content: unquote("\"#{ $fa-var-trash-can }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-slash-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-bell-slash }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-trash { #{$fa-icon-property}: unquote("\"#{ $fa-var-trash-can }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-copyright { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-eyedropper:before { content: unquote("\"#{ $fa-var-eye-dropper }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-area-chart:before { content: unquote("\"#{ $fa-var-chart-area }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-pie-chart:before { content: unquote("\"#{ $fa-var-chart-pie }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-line-chart:before { content: unquote("\"#{ $fa-var-chart-line }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-eyedropper { #{$fa-icon-property}: unquote("\"#{ $fa-var-eye-dropper }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-area-chart { #{$fa-icon-property}: unquote("\"#{ $fa-var-chart-area }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-pie-chart { #{$fa-icon-property}: unquote("\"#{ $fa-var-chart-pie }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-line-chart { #{$fa-icon-property}: unquote("\"#{ $fa-var-chart-line }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-lastfm { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -990,7 +990,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-lastfm-square:before { content: unquote("\"#{ $fa-var-square-lastfm }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-lastfm-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-lastfm }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-ioxhost { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1003,10 +1003,10 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-cc:before { content: unquote("\"#{ $fa-var-closed-captioning }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-ils:before { content: unquote("\"#{ $fa-var-shekel-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-shekel:before { content: unquote("\"#{ $fa-var-shekel-sign }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sheqel:before { content: unquote("\"#{ $fa-var-shekel-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-cc { #{$fa-icon-property}: unquote("\"#{ $fa-var-closed-captioning }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-ils { #{$fa-icon-property}: unquote("\"#{ $fa-var-shekel-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-shekel { #{$fa-icon-property}: unquote("\"#{ $fa-var-shekel-sign }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sheqel { #{$fa-icon-property}: unquote("\"#{ $fa-var-shekel-sign }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-buysellads { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1047,15 +1047,15 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-diamond:before { content: unquote("\"#{ $fa-var-gem }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-transgender:before { content: unquote("\"#{ $fa-var-mars-and-venus }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-intersex:before { content: unquote("\"#{ $fa-var-mars-and-venus }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-transgender-alt:before { content: unquote("\"#{ $fa-var-transgender }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-diamond { #{$fa-icon-property}: unquote("\"#{ $fa-var-gem }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-transgender { #{$fa-icon-property}: unquote("\"#{ $fa-var-mars-and-venus }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-intersex { #{$fa-icon-property}: unquote("\"#{ $fa-var-mars-and-venus }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-transgender-alt { #{$fa-icon-property}: unquote("\"#{ $fa-var-transgender }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-official { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-official:before { content: unquote("\"#{ $fa-var-facebook }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-official { #{$fa-icon-property}: unquote("\"#{ $fa-var-facebook }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest-p { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1064,7 +1064,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hotel:before { content: unquote("\"#{ $fa-var-bed }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hotel { #{$fa-icon-property}: unquote("\"#{ $fa-var-bed }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-viacoin { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1081,7 +1081,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-yc:before { content: unquote("\"#{ $fa-var-y-combinator }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-yc { #{$fa-icon-property}: unquote("\"#{ $fa-var-y-combinator }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-optin-monster { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1094,12 +1094,12 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-4:before { content: unquote("\"#{ $fa-var-battery-full }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-battery:before { content: unquote("\"#{ $fa-var-battery-full }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-3:before { content: unquote("\"#{ $fa-var-battery-three-quarters }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-2:before { content: unquote("\"#{ $fa-var-battery-half }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-1:before { content: unquote("\"#{ $fa-var-battery-quarter }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-0:before { content: unquote("\"#{ $fa-var-battery-empty }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-4 { #{$fa-icon-property}: unquote("\"#{ $fa-var-battery-full }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery { #{$fa-icon-property}: unquote("\"#{ $fa-var-battery-full }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-3 { #{$fa-icon-property}: unquote("\"#{ $fa-var-battery-three-quarters }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-2 { #{$fa-icon-property}: unquote("\"#{ $fa-var-battery-half }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-1 { #{$fa-icon-property}: unquote("\"#{ $fa-var-battery-quarter }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-0 { #{$fa-icon-property}: unquote("\"#{ $fa-var-battery-empty }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-object-group { font-family: 'Font Awesome 6 Free'; font-weight: 400; @@ -1112,7 +1112,7 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-sticky-note-o:before { content: unquote("\"#{ $fa-var-note-sticky }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-sticky-note-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-note-sticky }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-cc-jcb { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1125,55 +1125,55 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-o:before { content: unquote("\"#{ $fa-var-hourglass }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-1:before { content: unquote("\"#{ $fa-var-hourglass-start }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-2:before { content: unquote("\"#{ $fa-var-hourglass-half }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-3:before { content: unquote("\"#{ $fa-var-hourglass-end }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hourglass }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-1 { #{$fa-icon-property}: unquote("\"#{ $fa-var-hourglass-start }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-2 { #{$fa-icon-property}: unquote("\"#{ $fa-var-hourglass-half }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-3 { #{$fa-icon-property}: unquote("\"#{ $fa-var-hourglass-end }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-rock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-rock-o:before { content: unquote("\"#{ $fa-var-hand-back-fist }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-rock-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand-back-fist }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-grab-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-grab-o:before { content: unquote("\"#{ $fa-var-hand-back-fist }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-grab-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand-back-fist }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-paper-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-paper-o:before { content: unquote("\"#{ $fa-var-hand }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-paper-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-stop-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-stop-o:before { content: unquote("\"#{ $fa-var-hand }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-stop-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-scissors-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-scissors-o:before { content: unquote("\"#{ $fa-var-hand-scissors }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-scissors-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand-scissors }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-lizard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-lizard-o:before { content: unquote("\"#{ $fa-var-hand-lizard }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-lizard-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand-lizard }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-spock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-spock-o:before { content: unquote("\"#{ $fa-var-hand-spock }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-spock-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand-spock }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-pointer-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-pointer-o:before { content: unquote("\"#{ $fa-var-hand-pointer }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-pointer-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand-pointer }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-hand-peace-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-peace-o:before { content: unquote("\"#{ $fa-var-hand-peace }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-peace-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-hand-peace }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-registered { font-family: 'Font Awesome 6 Free'; font-weight: 400; @@ -1198,7 +1198,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-odnoklassniki-square:before { content: unquote("\"#{ $fa-var-square-odnoklassniki }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-odnoklassniki-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-odnoklassniki }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-get-pocket { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1227,7 +1227,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-television:before { content: unquote("\"#{ $fa-var-tv }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-television { #{$fa-icon-property}: unquote("\"#{ $fa-var-tv }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-contao { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1244,33 +1244,33 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-plus-o:before { content: unquote("\"#{ $fa-var-calendar-plus }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-plus-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-calendar-plus }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-minus-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-minus-o:before { content: unquote("\"#{ $fa-var-calendar-minus }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-minus-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-calendar-minus }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-times-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-times-o:before { content: unquote("\"#{ $fa-var-calendar-xmark }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-times-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-calendar-xmark }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-check-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-check-o:before { content: unquote("\"#{ $fa-var-calendar-check }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-check-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-calendar-check }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-map-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-map-o:before { content: unquote("\"#{ $fa-var-map }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-commenting:before { content: unquote("\"#{ $fa-var-comment-dots }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-map-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-map }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-commenting { #{$fa-icon-property}: unquote("\"#{ $fa-var-comment-dots }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-commenting-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-commenting-o:before { content: unquote("\"#{ $fa-var-comment-dots }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-commenting-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-comment-dots }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-houzz { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1279,7 +1279,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo:before { content: unquote("\"#{ $fa-var-vimeo-v }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo { #{$fa-icon-property}: unquote("\"#{ $fa-var-vimeo-v }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-black-tie { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1296,7 +1296,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-credit-card-alt:before { content: unquote("\"#{ $fa-var-credit-card }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-credit-card-alt { #{$fa-icon-property}: unquote("\"#{ $fa-var-credit-card }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-codiepie { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1329,12 +1329,12 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-pause-circle-o:before { content: unquote("\"#{ $fa-var-circle-pause }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-pause-circle-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-pause }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-stop-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-stop-circle-o:before { content: unquote("\"#{ $fa-var-circle-stop }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-stop-circle-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-stop }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-bluetooth { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1363,16 +1363,16 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-wheelchair-alt:before { content: unquote("\"#{ $fa-var-accessible-icon }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-wheelchair-alt { #{$fa-icon-property}: unquote("\"#{ $fa-var-accessible-icon }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-question-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-question-circle-o:before { content: unquote("\"#{ $fa-var-circle-question }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-volume-control-phone:before { content: unquote("\"#{ $fa-var-phone-volume }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-asl-interpreting:before { content: unquote("\"#{ $fa-var-hands-asl-interpreting }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-deafness:before { content: unquote("\"#{ $fa-var-ear-deaf }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-hard-of-hearing:before { content: unquote("\"#{ $fa-var-ear-deaf }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-question-circle-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-question }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-volume-control-phone { #{$fa-icon-property}: unquote("\"#{ $fa-var-phone-volume }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-asl-interpreting { #{$fa-icon-property}: unquote("\"#{ $fa-var-hands-asl-interpreting }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-deafness { #{$fa-icon-property}: unquote("\"#{ $fa-var-ear-deaf }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-hard-of-hearing { #{$fa-icon-property}: unquote("\"#{ $fa-var-ear-deaf }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-glide { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1381,7 +1381,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-signing:before { content: unquote("\"#{ $fa-var-hands }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-signing { #{$fa-icon-property}: unquote("\"#{ $fa-var-hands }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-viadeo { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1390,7 +1390,7 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-viadeo-square:before { content: unquote("\"#{ $fa-var-square-viadeo }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-viadeo-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-viadeo }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1399,12 +1399,12 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-ghost:before { content: unquote("\"#{ $fa-var-snapchat }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-ghost { #{$fa-icon-property}: unquote("\"#{ $fa-var-snapchat }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-square:before { content: unquote("\"#{ $fa-var-square-snapchat }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-square { #{$fa-icon-property}: unquote("\"#{ $fa-var-square-snapchat }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-pied-piper { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1425,12 +1425,12 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-official:before { content: unquote("\"#{ $fa-var-google-plus }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-official { #{$fa-icon-property}: unquote("\"#{ $fa-var-google-plus }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-circle { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-circle:before { content: unquote("\"#{ $fa-var-google-plus }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-circle { #{$fa-icon-property}: unquote("\"#{ $fa-var-google-plus }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-font-awesome { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1439,17 +1439,17 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-fa:before { content: unquote("\"#{ $fa-var-font-awesome }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-fa { #{$fa-icon-property}: unquote("\"#{ $fa-var-font-awesome }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-handshake-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-handshake-o:before { content: unquote("\"#{ $fa-var-handshake }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-handshake-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-handshake }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-open-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-open-o:before { content: unquote("\"#{ $fa-var-envelope-open }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-open-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-envelope-open }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-linode { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1458,43 +1458,43 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-address-book-o:before { content: unquote("\"#{ $fa-var-address-book }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-vcard:before { content: unquote("\"#{ $fa-var-address-card }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-address-book-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-address-book }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-vcard { #{$fa-icon-property}: unquote("\"#{ $fa-var-address-card }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-address-card-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-address-card-o:before { content: unquote("\"#{ $fa-var-address-card }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-address-card-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-address-card }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-vcard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-vcard-o:before { content: unquote("\"#{ $fa-var-address-card }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-vcard-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-address-card }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-user-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-user-circle-o:before { content: unquote("\"#{ $fa-var-circle-user }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-user-circle-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-circle-user }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-user-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-user-o:before { content: unquote("\"#{ $fa-var-user }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-user-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-user }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-id-badge { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-drivers-license:before { content: unquote("\"#{ $fa-var-id-card }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-drivers-license { #{$fa-icon-property}: unquote("\"#{ $fa-var-id-card }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-id-card-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-id-card-o:before { content: unquote("\"#{ $fa-var-id-card }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-id-card-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-id-card }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-drivers-license-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-drivers-license-o:before { content: unquote("\"#{ $fa-var-id-card }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-drivers-license-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-id-card }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-quora { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1507,14 +1507,14 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-4:before { content: unquote("\"#{ $fa-var-temperature-full }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer:before { content: unquote("\"#{ $fa-var-temperature-full }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-3:before { content: unquote("\"#{ $fa-var-temperature-three-quarters }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-2:before { content: unquote("\"#{ $fa-var-temperature-half }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-1:before { content: unquote("\"#{ $fa-var-temperature-quarter }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-0:before { content: unquote("\"#{ $fa-var-temperature-empty }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-bathtub:before { content: unquote("\"#{ $fa-var-bath }\""); } -.#{$fa-css-prefix}.#{$fa-css-prefix}-s15:before { content: unquote("\"#{ $fa-var-bath }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-4 { #{$fa-icon-property}: unquote("\"#{ $fa-var-temperature-full }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer { #{$fa-icon-property}: unquote("\"#{ $fa-var-temperature-full }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-3 { #{$fa-icon-property}: unquote("\"#{ $fa-var-temperature-three-quarters }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-2 { #{$fa-icon-property}: unquote("\"#{ $fa-var-temperature-half }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-1 { #{$fa-icon-property}: unquote("\"#{ $fa-var-temperature-quarter }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-0 { #{$fa-icon-property}: unquote("\"#{ $fa-var-temperature-empty }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-bathtub { #{$fa-icon-property}: unquote("\"#{ $fa-var-bath }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-s15 { #{$fa-icon-property}: unquote("\"#{ $fa-var-bath }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-window-maximize { font-family: 'Font Awesome 6 Free'; font-weight: 400; @@ -1523,17 +1523,17 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-times-rectangle:before { content: unquote("\"#{ $fa-var-rectangle-xmark }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-times-rectangle { #{$fa-icon-property}: unquote("\"#{ $fa-var-rectangle-xmark }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-window-close-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-window-close-o:before { content: unquote("\"#{ $fa-var-rectangle-xmark }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-window-close-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-rectangle-xmark }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-times-rectangle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-times-rectangle-o:before { content: unquote("\"#{ $fa-var-rectangle-xmark }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-times-rectangle-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-rectangle-xmark }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-bandcamp { font-family: 'Font Awesome 6 Brands'; font-weight: 400; @@ -1558,12 +1558,12 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-eercast:before { content: unquote("\"#{ $fa-var-sellcast }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-eercast { #{$fa-icon-property}: unquote("\"#{ $fa-var-sellcast }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-snowflake-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.#{$fa-css-prefix}.#{$fa-css-prefix}-snowflake-o:before { content: unquote("\"#{ $fa-var-snowflake }\""); } +.#{$fa-css-prefix}.#{$fa-css-prefix}-snowflake-o { #{$fa-icon-property}: unquote("\"#{ $fa-var-snowflake }\""); } .#{$fa-css-prefix}.#{$fa-css-prefix}-superpowers { font-family: 'Font Awesome 6 Brands'; font-weight: 400; diff --git a/_sass/font-awesome/_variables.scss b/_sass/font-awesome/_variables.scss index e125d31e347db..2ba8cf7ca6d2c 100644 --- a/_sass/font-awesome/_variables.scss +++ b/_sass/font-awesome/_variables.scss @@ -1,52 +1,55 @@ // variables // -------------------------- -$fa-css-prefix : fa !default; -$fa-style : 900 !default; -$fa-style-family : "Font Awesome 6 Free" !default; +$fa-css-prefix : fa !default; +$fa-style : 900 !default; +$fa-style-family : "Font Awesome 6 Free" !default; -$fa-display : inline-block !default; +$fa-icon-property : --fa; +$fa-duotone-icon-property : --fa--fa; -$fa-fw-width : fa-divide(20em, 16) !default; -$fa-inverse : #fff !default; +$fa-display : inline-block !default; -$fa-border-color : #eee !default; -$fa-border-padding : .2em .25em .15em !default; -$fa-border-radius : .1em !default; -$fa-border-style : solid !default; -$fa-border-width : .08em !default; +$fa-fw-width : fa-divide(20em, 16) !default; +$fa-inverse : #fff !default; -$fa-size-scale-2xs : 10 !default; -$fa-size-scale-xs : 12 !default; -$fa-size-scale-sm : 14 !default; -$fa-size-scale-base : 16 !default; -$fa-size-scale-lg : 20 !default; -$fa-size-scale-xl : 24 !default; -$fa-size-scale-2xl : 32 !default; +$fa-border-color : #eee !default; +$fa-border-padding : .2em .25em .15em !default; +$fa-border-radius : .1em !default; +$fa-border-style : solid !default; +$fa-border-width : .08em !default; + +$fa-size-scale-2xs : 10 !default; +$fa-size-scale-xs : 12 !default; +$fa-size-scale-sm : 14 !default; +$fa-size-scale-base : 16 !default; +$fa-size-scale-lg : 20 !default; +$fa-size-scale-xl : 24 !default; +$fa-size-scale-2xl : 32 !default; $fa-sizes: ( - "2xs" : $fa-size-scale-2xs, - "xs" : $fa-size-scale-xs, - "sm" : $fa-size-scale-sm, - "lg" : $fa-size-scale-lg, - "xl" : $fa-size-scale-xl, - "2xl" : $fa-size-scale-2xl + "2xs" : $fa-size-scale-2xs, + "xs" : $fa-size-scale-xs, + "sm" : $fa-size-scale-sm, + "lg" : $fa-size-scale-lg, + "xl" : $fa-size-scale-xl, + "2xl" : $fa-size-scale-2xl ) !default; -$fa-li-width : 2em !default; -$fa-li-margin : $fa-li-width * fa-divide(5, 4) !default; +$fa-li-width : 2em !default; +$fa-li-margin : $fa-li-width * fa-divide(5, 4) !default; -$fa-pull-margin : .3em !default; +$fa-pull-margin : .3em !default; -$fa-primary-opacity : 1 !default; -$fa-secondary-opacity : .4 !default; +$fa-primary-opacity : 1 !default; +$fa-secondary-opacity : .4 !default; -$fa-stack-vertical-align: middle !default; -$fa-stack-width : ($fa-fw-width * 2) !default; -$fa-stack-z-index : auto !default; +$fa-stack-vertical-align : middle !default; +$fa-stack-width : ($fa-fw-width * 2) !default; +$fa-stack-z-index : auto !default; -$fa-font-display : block !default; -$fa-font-path : "../webfonts" !default; +$fa-font-display : block !default; +$fa-font-path : "../webfonts" !default; $fa-var-0: \30; $fa-var-1: \31; @@ -636,6 +639,7 @@ $fa-var-square-nfi: \e576; $fa-var-arrow-up-from-ground-water: \e4b5; $fa-var-martini-glass: \f57b; $fa-var-glass-martini-alt: \f57b; +$fa-var-square-binary: \e69b; $fa-var-rotate-left: \f2ea; $fa-var-rotate-back: \f2ea; $fa-var-rotate-backward: \f2ea; @@ -1055,6 +1059,7 @@ $fa-var-face-grin-squint: \f585; $fa-var-grin-squint: \f585; $fa-var-hand-holding-dollar: \f4c0; $fa-var-hand-holding-usd: \f4c0; +$fa-var-chart-diagram: \e695; $fa-var-bacterium: \e05a; $fa-var-hand-pointer: \f25a; $fa-var-drum-steelpan: \f56a; @@ -1087,6 +1092,7 @@ $fa-var-door-closed: \f52a; $fa-var-shield-virus: \e06c; $fa-var-dice-six: \f526; $fa-var-mosquito-net: \e52c; +$fa-var-file-fragment: \e697; $fa-var-bridge-water: \e4ce; $fa-var-person-booth: \f756; $fa-var-text-width: \f035; @@ -1268,6 +1274,7 @@ $fa-var-vials: \f493; $fa-var-plug-circle-plus: \e55f; $fa-var-place-of-worship: \f67f; $fa-var-grip-vertical: \f58e; +$fa-var-hexagon-nodes: \e699; $fa-var-arrow-turn-up: \f148; $fa-var-level-up: \f148; $fa-var-u: \55; @@ -1657,6 +1664,7 @@ $fa-var-rocket: \f135; $fa-var-photo-film: \f87c; $fa-var-photo-video: \f87c; $fa-var-folder-minus: \f65d; +$fa-var-hexagon-nodes-bolt: \e69a; $fa-var-store: \f54e; $fa-var-arrow-trend-up: \e098; $fa-var-plug-circle-minus: \e55e; @@ -1744,6 +1752,7 @@ $fa-var-shield: \f132; $fa-var-shield-blank: \f132; $fa-var-arrow-up-short-wide: \f885; $fa-var-sort-amount-up-alt: \f885; +$fa-var-comment-nodes: \e696; $fa-var-house-medical: \e3b2; $fa-var-golf-ball-tee: \f450; $fa-var-golf-ball: \f450; @@ -1934,6 +1943,7 @@ $fa-var-window-minimize: \f2d1; $fa-var-mug-saucer: \f0f4; $fa-var-coffee: \f0f4; $fa-var-brush: \f55d; +$fa-var-file-half-dashed: \e698; $fa-var-mask: \f6fa; $fa-var-magnifying-glass-minus: \f010; $fa-var-search-minus: \f010; @@ -2124,6 +2134,7 @@ $fa-var-scribd: \f28a; $fa-var-debian: \e60b; $fa-var-openid: \f19b; $fa-var-instalod: \e081; +$fa-var-files-pinwheel: \e69f; $fa-var-expeditedssl: \f23e; $fa-var-sellcast: \f2da; $fa-var-square-twitter: \f081; @@ -2165,6 +2176,7 @@ $fa-var-square-letterboxd: \e62e; $fa-var-sticker-mule: \f3f7; $fa-var-creative-commons-zero: \f4f3; $fa-var-hips: \f452; +$fa-var-css: \e6a2; $fa-var-behance: \f1b4; $fa-var-reddit: \f1a1; $fa-var-discord: \f392; @@ -2308,6 +2320,7 @@ $fa-var-magento: \f3c4; $fa-var-spotify: \f1bc; $fa-var-optin-monster: \f23c; $fa-var-fly: \f417; +$fa-var-square-bluesky: \e6a3; $fa-var-aviato: \f421; $fa-var-itunes: \f3b4; $fa-var-cuttlefish: \f38c; @@ -3121,6 +3134,7 @@ $fa-icons: ( "arrow-up-from-ground-water": $fa-var-arrow-up-from-ground-water, "martini-glass": $fa-var-martini-glass, "glass-martini-alt": $fa-var-glass-martini-alt, + "square-binary": $fa-var-square-binary, "rotate-left": $fa-var-rotate-left, "rotate-back": $fa-var-rotate-back, "rotate-backward": $fa-var-rotate-backward, @@ -3540,6 +3554,7 @@ $fa-icons: ( "grin-squint": $fa-var-grin-squint, "hand-holding-dollar": $fa-var-hand-holding-dollar, "hand-holding-usd": $fa-var-hand-holding-usd, + "chart-diagram": $fa-var-chart-diagram, "bacterium": $fa-var-bacterium, "hand-pointer": $fa-var-hand-pointer, "drum-steelpan": $fa-var-drum-steelpan, @@ -3572,6 +3587,7 @@ $fa-icons: ( "shield-virus": $fa-var-shield-virus, "dice-six": $fa-var-dice-six, "mosquito-net": $fa-var-mosquito-net, + "file-fragment": $fa-var-file-fragment, "bridge-water": $fa-var-bridge-water, "person-booth": $fa-var-person-booth, "text-width": $fa-var-text-width, @@ -3753,6 +3769,7 @@ $fa-icons: ( "plug-circle-plus": $fa-var-plug-circle-plus, "place-of-worship": $fa-var-place-of-worship, "grip-vertical": $fa-var-grip-vertical, + "hexagon-nodes": $fa-var-hexagon-nodes, "arrow-turn-up": $fa-var-arrow-turn-up, "level-up": $fa-var-level-up, "u": $fa-var-u, @@ -4142,6 +4159,7 @@ $fa-icons: ( "photo-film": $fa-var-photo-film, "photo-video": $fa-var-photo-video, "folder-minus": $fa-var-folder-minus, + "hexagon-nodes-bolt": $fa-var-hexagon-nodes-bolt, "store": $fa-var-store, "arrow-trend-up": $fa-var-arrow-trend-up, "plug-circle-minus": $fa-var-plug-circle-minus, @@ -4229,6 +4247,7 @@ $fa-icons: ( "shield-blank": $fa-var-shield-blank, "arrow-up-short-wide": $fa-var-arrow-up-short-wide, "sort-amount-up-alt": $fa-var-sort-amount-up-alt, + "comment-nodes": $fa-var-comment-nodes, "house-medical": $fa-var-house-medical, "golf-ball-tee": $fa-var-golf-ball-tee, "golf-ball": $fa-var-golf-ball, @@ -4419,6 +4438,7 @@ $fa-icons: ( "mug-saucer": $fa-var-mug-saucer, "coffee": $fa-var-coffee, "brush": $fa-var-brush, + "file-half-dashed": $fa-var-file-half-dashed, "mask": $fa-var-mask, "magnifying-glass-minus": $fa-var-magnifying-glass-minus, "search-minus": $fa-var-search-minus, @@ -4611,6 +4631,7 @@ $fa-brand-icons: ( "debian": $fa-var-debian, "openid": $fa-var-openid, "instalod": $fa-var-instalod, + "files-pinwheel": $fa-var-files-pinwheel, "expeditedssl": $fa-var-expeditedssl, "sellcast": $fa-var-sellcast, "square-twitter": $fa-var-square-twitter, @@ -4652,6 +4673,7 @@ $fa-brand-icons: ( "sticker-mule": $fa-var-sticker-mule, "creative-commons-zero": $fa-var-creative-commons-zero, "hips": $fa-var-hips, + "css": $fa-var-css, "behance": $fa-var-behance, "reddit": $fa-var-reddit, "discord": $fa-var-discord, @@ -4795,6 +4817,7 @@ $fa-brand-icons: ( "spotify": $fa-var-spotify, "optin-monster": $fa-var-optin-monster, "fly": $fa-var-fly, + "square-bluesky": $fa-var-square-bluesky, "aviato": $fa-var-aviato, "itunes": $fa-var-itunes, "cuttlefish": $fa-var-cuttlefish, diff --git a/_sass/font-awesome/brands.scss b/_sass/font-awesome/brands.scss index 5061742233fa2..8c2fc60092019 100644 --- a/_sass/font-awesome/brands.scss +++ b/_sass/font-awesome/brands.scss @@ -1,5 +1,5 @@ /*! - * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ @@ -26,5 +26,5 @@ } @each $name, $icon in $fa-brand-icons { - .#{$fa-css-prefix}-#{$name}:before { content: unquote("\"#{ $icon }\""); } + .#{$fa-css-prefix}-#{$name} { #{$fa-icon-property}: unquote("\"#{ $icon }\""); } } diff --git a/_sass/font-awesome/fontawesome.scss b/_sass/font-awesome/fontawesome.scss index 69fd9ebab1a70..0194337539760 100644 --- a/_sass/font-awesome/fontawesome.scss +++ b/_sass/font-awesome/fontawesome.scss @@ -1,5 +1,5 @@ /*! - * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ diff --git a/_sass/font-awesome/regular.scss b/_sass/font-awesome/regular.scss index 8e9d6ddf84cfd..3d927f170f0f6 100644 --- a/_sass/font-awesome/regular.scss +++ b/_sass/font-awesome/regular.scss @@ -1,5 +1,5 @@ /*! - * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ diff --git a/_sass/font-awesome/solid.scss b/_sass/font-awesome/solid.scss index 09878493530f2..beda7b197dfd1 100644 --- a/_sass/font-awesome/solid.scss +++ b/_sass/font-awesome/solid.scss @@ -1,5 +1,5 @@ /*! - * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ diff --git a/_sass/font-awesome/v4-shims.scss b/_sass/font-awesome/v4-shims.scss index f034e7de29f4f..f528295f18796 100644 --- a/_sass/font-awesome/v4-shims.scss +++ b/_sass/font-awesome/v4-shims.scss @@ -1,5 +1,5 @@ /*! - * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ diff --git a/_sass/tabler-icons/tabler-icons-filled.scss b/_sass/tabler-icons/tabler-icons-filled.scss index a59d51c8d959b..868a50e52160a 100644 --- a/_sass/tabler-icons/tabler-icons-filled.scss +++ b/_sass/tabler-icons/tabler-icons-filled.scss @@ -1,6 +1,6 @@ @charset "UTF-8"; /*! - * Tabler Icons 3.16.0 by tabler - https://tabler.io + * Tabler Icons 3.20.0 by tabler - https://tabler.io * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE */ $ti-font-family: 'tabler-icons-filled' !default; @@ -13,9 +13,9 @@ $ti-prefix: 'ti' !default; font-style: normal; font-weight: 400; font-display: $ti-font-display; - src: url('#{$ti-font-path}/tabler-icons-filled.woff2?v3.16.0') format('woff2'), + src: url('#{$ti-font-path}/tabler-icons-filled.woff2?v3.20.0') format('woff2'), url('#{$ti-font-path}/tabler-icons-filled.woff?') format('woff'), - url('#{$ti-font-path}/tabler-icons-filled.ttf?v3.16.0') format('truetype'); + url('#{$ti-font-path}/tabler-icons-filled.ttf?v3.20.0') format('truetype'); } .#{$ti-prefix} { @@ -224,8 +224,10 @@ $ti-icon-cannabis: unicode('10015'); $ti-icon-capsule: unicode('fc24'); $ti-icon-capsule-horizontal: unicode('fc25'); $ti-icon-capture: unicode('fb29'); +$ti-icon-car: unicode('1004c'); $ti-icon-car-4wd: unicode('1001e'); $ti-icon-car-fan: unicode('1001d'); +$ti-icon-car-suv: unicode('1004d'); $ti-icon-carambola: unicode('10014'); $ti-icon-cardboards: unicode('1001c'); $ti-icon-cards: unicode('fc26'); @@ -359,10 +361,22 @@ $ti-icon-crop-landscape: unicode('fe4a'); $ti-icon-crop-portrait: unicode('fe49'); $ti-icon-cross: unicode('f675'); $ti-icon-dashboard: unicode('10019'); +$ti-icon-device-cctv: unicode('1004b'); +$ti-icon-device-desktop: unicode('1004a'); +$ti-icon-device-gamepad-3: unicode('10049'); $ti-icon-device-heart-monitor: unicode('fa38'); +$ti-icon-device-imac: unicode('10048'); +$ti-icon-device-ipad: unicode('10047'); $ti-icon-device-mobile: unicode('fa39'); +$ti-icon-device-remote: unicode('10046'); +$ti-icon-device-speaker: unicode('10045'); $ti-icon-device-tablet: unicode('fa3a'); +$ti-icon-device-tv: unicode('10043'); +$ti-icon-device-tv-old: unicode('10044'); $ti-icon-device-unknown: unicode('10018'); +$ti-icon-device-usb: unicode('10042'); +$ti-icon-device-vision-pro: unicode('10041'); +$ti-icon-device-watch: unicode('10040'); $ti-icon-dialpad: unicode('fa3b'); $ti-icon-diamond: unicode('f73d'); $ti-icon-diamonds: unicode('f676'); @@ -374,13 +388,18 @@ $ti-icon-dice-4: unicode('f741'); $ti-icon-dice-5: unicode('f742'); $ti-icon-dice-6: unicode('f743'); $ti-icon-direction-sign: unicode('f745'); +$ti-icon-directions: unicode('1003f'); +$ti-icon-disc: unicode('1003e'); +$ti-icon-discount: unicode('1003d'); $ti-icon-droplet: unicode('ee80'); $ti-icon-droplet-half: unicode('f6c5'); $ti-icon-droplet-half-2: unicode('fb6c'); $ti-icon-egg: unicode('f678'); $ti-icon-egg-cracked: unicode('10012'); +$ti-icon-elevator: unicode('1003c'); $ti-icon-exclamation-circle: unicode('ff62'); $ti-icon-eye: unicode('f679'); +$ti-icon-favicon: unicode('10071'); $ti-icon-feather: unicode('10011'); $ti-icon-file: unicode('f747'); $ti-icon-file-x: unicode('f748'); @@ -458,6 +477,7 @@ $ti-icon-hexagon-plus: unicode('fe2c'); $ti-icon-home: unicode('fe2b'); $ti-icon-hospital-circle: unicode('fed2'); $ti-icon-hourglass: unicode('f756'); +$ti-icon-icons: unicode('10070'); $ti-icon-info-circle: unicode('f6d8'); $ti-icon-info-hexagon: unicode('fa43'); $ti-icon-info-octagon: unicode('fa44'); @@ -473,6 +493,10 @@ $ti-icon-inner-shadow-top: unicode('f75c'); $ti-icon-inner-shadow-top-left: unicode('f75d'); $ti-icon-inner-shadow-top-right: unicode('f75e'); $ti-icon-ironing: unicode('fe2a'); +$ti-icon-ironing-1: unicode('1006f'); +$ti-icon-ironing-2: unicode('1006e'); +$ti-icon-ironing-3: unicode('1006d'); +$ti-icon-ironing-steam: unicode('1006c'); $ti-icon-jetpack: unicode('fe29'); $ti-icon-jewish-star: unicode('f67e'); $ti-icon-key: unicode('fe28'); @@ -572,6 +596,21 @@ $ti-icon-pill: unicode('ff07'); $ti-icon-pin: unicode('f68d'); $ti-icon-pinned: unicode('f68e'); $ti-icon-pizza: unicode('10008'); +$ti-icon-play-card-1: unicode('10083'); +$ti-icon-play-card-10: unicode('10082'); +$ti-icon-play-card-2: unicode('10081'); +$ti-icon-play-card-3: unicode('10080'); +$ti-icon-play-card-4: unicode('1007f'); +$ti-icon-play-card-5: unicode('1007e'); +$ti-icon-play-card-6: unicode('1007d'); +$ti-icon-play-card-7: unicode('1007c'); +$ti-icon-play-card-8: unicode('1007b'); +$ti-icon-play-card-9: unicode('1007a'); +$ti-icon-play-card-a: unicode('10079'); +$ti-icon-play-card-j: unicode('10078'); +$ti-icon-play-card-k: unicode('10077'); +$ti-icon-play-card-q: unicode('10076'); +$ti-icon-play-card-star: unicode('10075'); $ti-icon-player-eject: unicode('f68f'); $ti-icon-player-pause: unicode('f690'); $ti-icon-player-play: unicode('f691'); @@ -614,6 +653,7 @@ $ti-icon-shirt: unicode('f6a0'); $ti-icon-shopping-cart: unicode('fc3f'); $ti-icon-sign-left: unicode('f6a1'); $ti-icon-sign-right: unicode('f6a2'); +$ti-icon-sitemap: unicode('1006b'); $ti-icon-sort-ascending-2: unicode('ff5b'); $ti-icon-sort-ascending-shapes: unicode('ff5a'); $ti-icon-sort-descending-2: unicode('ff59'); @@ -986,8 +1026,10 @@ $ti-icon-zoom-scan: unicode('fdbf'); .#{$ti-prefix}-capsule:before { content: $ti-icon-capsule; } .#{$ti-prefix}-capsule-horizontal:before { content: $ti-icon-capsule-horizontal; } .#{$ti-prefix}-capture:before { content: $ti-icon-capture; } +.#{$ti-prefix}-car:before { content: $ti-icon-car; } .#{$ti-prefix}-car-4wd:before { content: $ti-icon-car-4wd; } .#{$ti-prefix}-car-fan:before { content: $ti-icon-car-fan; } +.#{$ti-prefix}-car-suv:before { content: $ti-icon-car-suv; } .#{$ti-prefix}-carambola:before { content: $ti-icon-carambola; } .#{$ti-prefix}-cardboards:before { content: $ti-icon-cardboards; } .#{$ti-prefix}-cards:before { content: $ti-icon-cards; } @@ -1121,10 +1163,22 @@ $ti-icon-zoom-scan: unicode('fdbf'); .#{$ti-prefix}-crop-portrait:before { content: $ti-icon-crop-portrait; } .#{$ti-prefix}-cross:before { content: $ti-icon-cross; } .#{$ti-prefix}-dashboard:before { content: $ti-icon-dashboard; } +.#{$ti-prefix}-device-cctv:before { content: $ti-icon-device-cctv; } +.#{$ti-prefix}-device-desktop:before { content: $ti-icon-device-desktop; } +.#{$ti-prefix}-device-gamepad-3:before { content: $ti-icon-device-gamepad-3; } .#{$ti-prefix}-device-heart-monitor:before { content: $ti-icon-device-heart-monitor; } +.#{$ti-prefix}-device-imac:before { content: $ti-icon-device-imac; } +.#{$ti-prefix}-device-ipad:before { content: $ti-icon-device-ipad; } .#{$ti-prefix}-device-mobile:before { content: $ti-icon-device-mobile; } +.#{$ti-prefix}-device-remote:before { content: $ti-icon-device-remote; } +.#{$ti-prefix}-device-speaker:before { content: $ti-icon-device-speaker; } .#{$ti-prefix}-device-tablet:before { content: $ti-icon-device-tablet; } +.#{$ti-prefix}-device-tv:before { content: $ti-icon-device-tv; } +.#{$ti-prefix}-device-tv-old:before { content: $ti-icon-device-tv-old; } .#{$ti-prefix}-device-unknown:before { content: $ti-icon-device-unknown; } +.#{$ti-prefix}-device-usb:before { content: $ti-icon-device-usb; } +.#{$ti-prefix}-device-vision-pro:before { content: $ti-icon-device-vision-pro; } +.#{$ti-prefix}-device-watch:before { content: $ti-icon-device-watch; } .#{$ti-prefix}-dialpad:before { content: $ti-icon-dialpad; } .#{$ti-prefix}-diamond:before { content: $ti-icon-diamond; } .#{$ti-prefix}-diamonds:before { content: $ti-icon-diamonds; } @@ -1136,13 +1190,18 @@ $ti-icon-zoom-scan: unicode('fdbf'); .#{$ti-prefix}-dice-5:before { content: $ti-icon-dice-5; } .#{$ti-prefix}-dice-6:before { content: $ti-icon-dice-6; } .#{$ti-prefix}-direction-sign:before { content: $ti-icon-direction-sign; } +.#{$ti-prefix}-directions:before { content: $ti-icon-directions; } +.#{$ti-prefix}-disc:before { content: $ti-icon-disc; } +.#{$ti-prefix}-discount:before { content: $ti-icon-discount; } .#{$ti-prefix}-droplet:before { content: $ti-icon-droplet; } .#{$ti-prefix}-droplet-half:before { content: $ti-icon-droplet-half; } .#{$ti-prefix}-droplet-half-2:before { content: $ti-icon-droplet-half-2; } .#{$ti-prefix}-egg:before { content: $ti-icon-egg; } .#{$ti-prefix}-egg-cracked:before { content: $ti-icon-egg-cracked; } +.#{$ti-prefix}-elevator:before { content: $ti-icon-elevator; } .#{$ti-prefix}-exclamation-circle:before { content: $ti-icon-exclamation-circle; } .#{$ti-prefix}-eye:before { content: $ti-icon-eye; } +.#{$ti-prefix}-favicon:before { content: $ti-icon-favicon; } .#{$ti-prefix}-feather:before { content: $ti-icon-feather; } .#{$ti-prefix}-file:before { content: $ti-icon-file; } .#{$ti-prefix}-file-x:before { content: $ti-icon-file-x; } @@ -1220,6 +1279,7 @@ $ti-icon-zoom-scan: unicode('fdbf'); .#{$ti-prefix}-home:before { content: $ti-icon-home; } .#{$ti-prefix}-hospital-circle:before { content: $ti-icon-hospital-circle; } .#{$ti-prefix}-hourglass:before { content: $ti-icon-hourglass; } +.#{$ti-prefix}-icons:before { content: $ti-icon-icons; } .#{$ti-prefix}-info-circle:before { content: $ti-icon-info-circle; } .#{$ti-prefix}-info-hexagon:before { content: $ti-icon-info-hexagon; } .#{$ti-prefix}-info-octagon:before { content: $ti-icon-info-octagon; } @@ -1235,6 +1295,10 @@ $ti-icon-zoom-scan: unicode('fdbf'); .#{$ti-prefix}-inner-shadow-top-left:before { content: $ti-icon-inner-shadow-top-left; } .#{$ti-prefix}-inner-shadow-top-right:before { content: $ti-icon-inner-shadow-top-right; } .#{$ti-prefix}-ironing:before { content: $ti-icon-ironing; } +.#{$ti-prefix}-ironing-1:before { content: $ti-icon-ironing-1; } +.#{$ti-prefix}-ironing-2:before { content: $ti-icon-ironing-2; } +.#{$ti-prefix}-ironing-3:before { content: $ti-icon-ironing-3; } +.#{$ti-prefix}-ironing-steam:before { content: $ti-icon-ironing-steam; } .#{$ti-prefix}-jetpack:before { content: $ti-icon-jetpack; } .#{$ti-prefix}-jewish-star:before { content: $ti-icon-jewish-star; } .#{$ti-prefix}-key:before { content: $ti-icon-key; } @@ -1334,6 +1398,21 @@ $ti-icon-zoom-scan: unicode('fdbf'); .#{$ti-prefix}-pin:before { content: $ti-icon-pin; } .#{$ti-prefix}-pinned:before { content: $ti-icon-pinned; } .#{$ti-prefix}-pizza:before { content: $ti-icon-pizza; } +.#{$ti-prefix}-play-card-1:before { content: $ti-icon-play-card-1; } +.#{$ti-prefix}-play-card-10:before { content: $ti-icon-play-card-10; } +.#{$ti-prefix}-play-card-2:before { content: $ti-icon-play-card-2; } +.#{$ti-prefix}-play-card-3:before { content: $ti-icon-play-card-3; } +.#{$ti-prefix}-play-card-4:before { content: $ti-icon-play-card-4; } +.#{$ti-prefix}-play-card-5:before { content: $ti-icon-play-card-5; } +.#{$ti-prefix}-play-card-6:before { content: $ti-icon-play-card-6; } +.#{$ti-prefix}-play-card-7:before { content: $ti-icon-play-card-7; } +.#{$ti-prefix}-play-card-8:before { content: $ti-icon-play-card-8; } +.#{$ti-prefix}-play-card-9:before { content: $ti-icon-play-card-9; } +.#{$ti-prefix}-play-card-a:before { content: $ti-icon-play-card-a; } +.#{$ti-prefix}-play-card-j:before { content: $ti-icon-play-card-j; } +.#{$ti-prefix}-play-card-k:before { content: $ti-icon-play-card-k; } +.#{$ti-prefix}-play-card-q:before { content: $ti-icon-play-card-q; } +.#{$ti-prefix}-play-card-star:before { content: $ti-icon-play-card-star; } .#{$ti-prefix}-player-eject:before { content: $ti-icon-player-eject; } .#{$ti-prefix}-player-pause:before { content: $ti-icon-player-pause; } .#{$ti-prefix}-player-play:before { content: $ti-icon-player-play; } @@ -1376,6 +1455,7 @@ $ti-icon-zoom-scan: unicode('fdbf'); .#{$ti-prefix}-shopping-cart:before { content: $ti-icon-shopping-cart; } .#{$ti-prefix}-sign-left:before { content: $ti-icon-sign-left; } .#{$ti-prefix}-sign-right:before { content: $ti-icon-sign-right; } +.#{$ti-prefix}-sitemap:before { content: $ti-icon-sitemap; } .#{$ti-prefix}-sort-ascending-2:before { content: $ti-icon-sort-ascending-2; } .#{$ti-prefix}-sort-ascending-shapes:before { content: $ti-icon-sort-ascending-shapes; } .#{$ti-prefix}-sort-descending-2:before { content: $ti-icon-sort-descending-2; } diff --git a/_sass/tabler-icons/tabler-icons-outline.scss b/_sass/tabler-icons/tabler-icons-outline.scss index cfd44b1050268..f5ff98f72a65f 100644 --- a/_sass/tabler-icons/tabler-icons-outline.scss +++ b/_sass/tabler-icons/tabler-icons-outline.scss @@ -1,6 +1,6 @@ @charset "UTF-8"; /*! - * Tabler Icons 3.16.0 by tabler - https://tabler.io + * Tabler Icons 3.20.0 by tabler - https://tabler.io * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE */ $ti-font-family: 'tabler-icons-outline' !default; @@ -13,9 +13,9 @@ $ti-prefix: 'ti' !default; font-style: normal; font-weight: 400; font-display: $ti-font-display; - src: url('#{$ti-font-path}/tabler-icons-outline.woff2?v3.16.0') format('woff2'), + src: url('#{$ti-font-path}/tabler-icons-outline.woff2?v3.20.0') format('woff2'), url('#{$ti-font-path}/tabler-icons-outline.woff?') format('woff'), - url('#{$ti-font-path}/tabler-icons-outline.ttf?v3.16.0') format('truetype'); + url('#{$ti-font-path}/tabler-icons-outline.ttf?v3.20.0') format('truetype'); } .#{$ti-prefix} { @@ -221,6 +221,7 @@ $ti-icon-arrow-curve-right: unicode('f049'); $ti-icon-arrow-down: unicode('ea16'); $ti-icon-arrow-down-bar: unicode('ed98'); $ti-icon-arrow-down-circle: unicode('ea11'); +$ti-icon-arrow-down-dashed: unicode('1006a'); $ti-icon-arrow-down-from-arc: unicode('fd86'); $ti-icon-arrow-down-left: unicode('ea13'); $ti-icon-arrow-down-left-circle: unicode('ea12'); @@ -241,6 +242,7 @@ $ti-icon-arrow-iteration: unicode('f578'); $ti-icon-arrow-left: unicode('ea19'); $ti-icon-arrow-left-bar: unicode('ed9c'); $ti-icon-arrow-left-circle: unicode('ea18'); +$ti-icon-arrow-left-dashed: unicode('10069'); $ti-icon-arrow-left-from-arc: unicode('fd88'); $ti-icon-arrow-left-rhombus: unicode('f61e'); $ti-icon-arrow-left-right: unicode('f04b'); @@ -262,9 +264,13 @@ $ti-icon-arrow-move-left: unicode('f2bb'); $ti-icon-arrow-move-right: unicode('f2bc'); $ti-icon-arrow-move-up: unicode('f2bd'); $ti-icon-arrow-narrow-down: unicode('ea1a'); +$ti-icon-arrow-narrow-down-dashed: unicode('10068'); $ti-icon-arrow-narrow-left: unicode('ea1b'); +$ti-icon-arrow-narrow-left-dashed: unicode('10067'); $ti-icon-arrow-narrow-right: unicode('ea1c'); +$ti-icon-arrow-narrow-right-dashed: unicode('10066'); $ti-icon-arrow-narrow-up: unicode('ea1d'); +$ti-icon-arrow-narrow-up-dashed: unicode('10065'); $ti-icon-arrow-ramp-left: unicode('ed3c'); $ti-icon-arrow-ramp-left-2: unicode('f04f'); $ti-icon-arrow-ramp-left-3: unicode('f050'); @@ -274,6 +280,7 @@ $ti-icon-arrow-ramp-right-3: unicode('f052'); $ti-icon-arrow-right: unicode('ea1f'); $ti-icon-arrow-right-bar: unicode('eda1'); $ti-icon-arrow-right-circle: unicode('ea1e'); +$ti-icon-arrow-right-dashed: unicode('10064'); $ti-icon-arrow-right-from-arc: unicode('fd8a'); $ti-icon-arrow-right-rhombus: unicode('f61f'); $ti-icon-arrow-right-square: unicode('eda2'); @@ -293,6 +300,7 @@ $ti-icon-arrow-sharp-turn-right: unicode('f05b'); $ti-icon-arrow-up: unicode('ea25'); $ti-icon-arrow-up-bar: unicode('eda4'); $ti-icon-arrow-up-circle: unicode('ea20'); +$ti-icon-arrow-up-dashed: unicode('10063'); $ti-icon-arrow-up-from-arc: unicode('fd8c'); $ti-icon-arrow-up-left: unicode('ea22'); $ti-icon-arrow-up-left-circle: unicode('ea21'); @@ -1045,6 +1053,7 @@ $ti-icon-building-carousel: unicode('ed87'); $ti-icon-building-castle: unicode('ed88'); $ti-icon-building-church: unicode('ea4c'); $ti-icon-building-circus: unicode('f4bf'); +$ti-icon-building-cog: unicode('10062'); $ti-icon-building-community: unicode('ebf6'); $ti-icon-building-cottage: unicode('ee1b'); $ti-icon-building-estate: unicode('f5a5'); @@ -1053,10 +1062,12 @@ $ti-icon-building-factory-2: unicode('f082'); $ti-icon-building-fortress: unicode('ed89'); $ti-icon-building-hospital: unicode('ea4d'); $ti-icon-building-lighthouse: unicode('ed8a'); +$ti-icon-building-minus: unicode('10061'); $ti-icon-building-monument: unicode('ed26'); $ti-icon-building-mosque: unicode('fa57'); $ti-icon-building-off: unicode('fefd'); $ti-icon-building-pavilion: unicode('ebf7'); +$ti-icon-building-plus: unicode('10060'); $ti-icon-building-skyscraper: unicode('ec39'); $ti-icon-building-stadium: unicode('f641'); $ti-icon-building-store: unicode('ea4e'); @@ -2175,6 +2186,7 @@ $ti-icon-feather: unicode('ee8b'); $ti-icon-feather-off: unicode('f128'); $ti-icon-fence: unicode('ef2a'); $ti-icon-fence-off: unicode('f129'); +$ti-icon-ferry: unicode('10074'); $ti-icon-fidget-spinner: unicode('f068'); $ti-icon-file: unicode('eaa4'); $ti-icon-file-3d: unicode('f032'); @@ -2745,6 +2757,7 @@ $ti-icon-jewish-star: unicode('f3ff'); $ti-icon-join-bevel: unicode('ff4c'); $ti-icon-join-round: unicode('ff4b'); $ti-icon-join-straight: unicode('ff4a'); +$ti-icon-joker: unicode('1005f'); $ti-icon-jpg: unicode('f3ac'); $ti-icon-json: unicode('f7b2'); $ti-icon-jump-rope: unicode('ed8f'); @@ -3129,6 +3142,7 @@ $ti-icon-math-tg: unicode('ff33'); $ti-icon-math-x-divide-2: unicode('f4ef'); $ti-icon-math-x-divide-y: unicode('f4f1'); $ti-icon-math-x-divide-y-2: unicode('f4f0'); +$ti-icon-math-x-floor-divide-y: unicode('10073'); $ti-icon-math-x-minus-x: unicode('f4f2'); $ti-icon-math-x-minus-y: unicode('f4f3'); $ti-icon-math-x-plus-x: unicode('f4f4'); @@ -3408,8 +3422,10 @@ $ti-icon-number-0: unicode('edf0'); $ti-icon-number-0-small: unicode('fce1'); $ti-icon-number-1: unicode('edf1'); $ti-icon-number-1-small: unicode('fce2'); +$ti-icon-number-10: unicode('1005e'); $ti-icon-number-10-small: unicode('fce3'); $ti-icon-number-100-small: unicode('10005'); +$ti-icon-number-11: unicode('1005d'); $ti-icon-number-11-small: unicode('fce4'); $ti-icon-number-12-small: unicode('fce5'); $ti-icon-number-123: unicode('f554'); @@ -3726,7 +3742,22 @@ $ti-icon-plant-2-off: unicode('f17c'); $ti-icon-plant-off: unicode('f17d'); $ti-icon-play-basketball: unicode('fa66'); $ti-icon-play-card: unicode('eebf'); +$ti-icon-play-card-1: unicode('1005c'); +$ti-icon-play-card-10: unicode('1005b'); +$ti-icon-play-card-2: unicode('1005a'); +$ti-icon-play-card-3: unicode('10059'); +$ti-icon-play-card-4: unicode('10058'); +$ti-icon-play-card-5: unicode('10057'); +$ti-icon-play-card-6: unicode('10056'); +$ti-icon-play-card-7: unicode('10055'); +$ti-icon-play-card-8: unicode('10054'); +$ti-icon-play-card-9: unicode('10053'); +$ti-icon-play-card-a: unicode('10052'); +$ti-icon-play-card-j: unicode('10051'); +$ti-icon-play-card-k: unicode('10050'); $ti-icon-play-card-off: unicode('f17e'); +$ti-icon-play-card-q: unicode('1004f'); +$ti-icon-play-card-star: unicode('1004e'); $ti-icon-play-football: unicode('fa67'); $ti-icon-play-handball: unicode('fa68'); $ti-icon-play-volleyball: unicode('fa69'); @@ -4847,6 +4878,7 @@ $ti-icon-writing-off: unicode('f1cb'); $ti-icon-writing-sign: unicode('ef07'); $ti-icon-writing-sign-off: unicode('f1cc'); $ti-icon-x: unicode('eb55'); +$ti-icon-x-power-y: unicode('10072'); $ti-icon-xbox-a: unicode('f2b6'); $ti-icon-xbox-b: unicode('f2b7'); $ti-icon-xbox-x: unicode('f2b8'); @@ -5073,6 +5105,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-arrow-down:before { content: $ti-icon-arrow-down; } .#{$ti-prefix}-arrow-down-bar:before { content: $ti-icon-arrow-down-bar; } .#{$ti-prefix}-arrow-down-circle:before { content: $ti-icon-arrow-down-circle; } +.#{$ti-prefix}-arrow-down-dashed:before { content: $ti-icon-arrow-down-dashed; } .#{$ti-prefix}-arrow-down-from-arc:before { content: $ti-icon-arrow-down-from-arc; } .#{$ti-prefix}-arrow-down-left:before { content: $ti-icon-arrow-down-left; } .#{$ti-prefix}-arrow-down-left-circle:before { content: $ti-icon-arrow-down-left-circle; } @@ -5093,6 +5126,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-arrow-left:before { content: $ti-icon-arrow-left; } .#{$ti-prefix}-arrow-left-bar:before { content: $ti-icon-arrow-left-bar; } .#{$ti-prefix}-arrow-left-circle:before { content: $ti-icon-arrow-left-circle; } +.#{$ti-prefix}-arrow-left-dashed:before { content: $ti-icon-arrow-left-dashed; } .#{$ti-prefix}-arrow-left-from-arc:before { content: $ti-icon-arrow-left-from-arc; } .#{$ti-prefix}-arrow-left-rhombus:before { content: $ti-icon-arrow-left-rhombus; } .#{$ti-prefix}-arrow-left-right:before { content: $ti-icon-arrow-left-right; } @@ -5114,9 +5148,13 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-arrow-move-right:before { content: $ti-icon-arrow-move-right; } .#{$ti-prefix}-arrow-move-up:before { content: $ti-icon-arrow-move-up; } .#{$ti-prefix}-arrow-narrow-down:before { content: $ti-icon-arrow-narrow-down; } +.#{$ti-prefix}-arrow-narrow-down-dashed:before { content: $ti-icon-arrow-narrow-down-dashed; } .#{$ti-prefix}-arrow-narrow-left:before { content: $ti-icon-arrow-narrow-left; } +.#{$ti-prefix}-arrow-narrow-left-dashed:before { content: $ti-icon-arrow-narrow-left-dashed; } .#{$ti-prefix}-arrow-narrow-right:before { content: $ti-icon-arrow-narrow-right; } +.#{$ti-prefix}-arrow-narrow-right-dashed:before { content: $ti-icon-arrow-narrow-right-dashed; } .#{$ti-prefix}-arrow-narrow-up:before { content: $ti-icon-arrow-narrow-up; } +.#{$ti-prefix}-arrow-narrow-up-dashed:before { content: $ti-icon-arrow-narrow-up-dashed; } .#{$ti-prefix}-arrow-ramp-left:before { content: $ti-icon-arrow-ramp-left; } .#{$ti-prefix}-arrow-ramp-left-2:before { content: $ti-icon-arrow-ramp-left-2; } .#{$ti-prefix}-arrow-ramp-left-3:before { content: $ti-icon-arrow-ramp-left-3; } @@ -5126,6 +5164,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-arrow-right:before { content: $ti-icon-arrow-right; } .#{$ti-prefix}-arrow-right-bar:before { content: $ti-icon-arrow-right-bar; } .#{$ti-prefix}-arrow-right-circle:before { content: $ti-icon-arrow-right-circle; } +.#{$ti-prefix}-arrow-right-dashed:before { content: $ti-icon-arrow-right-dashed; } .#{$ti-prefix}-arrow-right-from-arc:before { content: $ti-icon-arrow-right-from-arc; } .#{$ti-prefix}-arrow-right-rhombus:before { content: $ti-icon-arrow-right-rhombus; } .#{$ti-prefix}-arrow-right-square:before { content: $ti-icon-arrow-right-square; } @@ -5145,6 +5184,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-arrow-up:before { content: $ti-icon-arrow-up; } .#{$ti-prefix}-arrow-up-bar:before { content: $ti-icon-arrow-up-bar; } .#{$ti-prefix}-arrow-up-circle:before { content: $ti-icon-arrow-up-circle; } +.#{$ti-prefix}-arrow-up-dashed:before { content: $ti-icon-arrow-up-dashed; } .#{$ti-prefix}-arrow-up-from-arc:before { content: $ti-icon-arrow-up-from-arc; } .#{$ti-prefix}-arrow-up-left:before { content: $ti-icon-arrow-up-left; } .#{$ti-prefix}-arrow-up-left-circle:before { content: $ti-icon-arrow-up-left-circle; } @@ -5897,6 +5937,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-building-castle:before { content: $ti-icon-building-castle; } .#{$ti-prefix}-building-church:before { content: $ti-icon-building-church; } .#{$ti-prefix}-building-circus:before { content: $ti-icon-building-circus; } +.#{$ti-prefix}-building-cog:before { content: $ti-icon-building-cog; } .#{$ti-prefix}-building-community:before { content: $ti-icon-building-community; } .#{$ti-prefix}-building-cottage:before { content: $ti-icon-building-cottage; } .#{$ti-prefix}-building-estate:before { content: $ti-icon-building-estate; } @@ -5905,10 +5946,12 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-building-fortress:before { content: $ti-icon-building-fortress; } .#{$ti-prefix}-building-hospital:before { content: $ti-icon-building-hospital; } .#{$ti-prefix}-building-lighthouse:before { content: $ti-icon-building-lighthouse; } +.#{$ti-prefix}-building-minus:before { content: $ti-icon-building-minus; } .#{$ti-prefix}-building-monument:before { content: $ti-icon-building-monument; } .#{$ti-prefix}-building-mosque:before { content: $ti-icon-building-mosque; } .#{$ti-prefix}-building-off:before { content: $ti-icon-building-off; } .#{$ti-prefix}-building-pavilion:before { content: $ti-icon-building-pavilion; } +.#{$ti-prefix}-building-plus:before { content: $ti-icon-building-plus; } .#{$ti-prefix}-building-skyscraper:before { content: $ti-icon-building-skyscraper; } .#{$ti-prefix}-building-stadium:before { content: $ti-icon-building-stadium; } .#{$ti-prefix}-building-store:before { content: $ti-icon-building-store; } @@ -7027,6 +7070,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-feather-off:before { content: $ti-icon-feather-off; } .#{$ti-prefix}-fence:before { content: $ti-icon-fence; } .#{$ti-prefix}-fence-off:before { content: $ti-icon-fence-off; } +.#{$ti-prefix}-ferry:before { content: $ti-icon-ferry; } .#{$ti-prefix}-fidget-spinner:before { content: $ti-icon-fidget-spinner; } .#{$ti-prefix}-file:before { content: $ti-icon-file; } .#{$ti-prefix}-file-3d:before { content: $ti-icon-file-3d; } @@ -7597,6 +7641,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-join-bevel:before { content: $ti-icon-join-bevel; } .#{$ti-prefix}-join-round:before { content: $ti-icon-join-round; } .#{$ti-prefix}-join-straight:before { content: $ti-icon-join-straight; } +.#{$ti-prefix}-joker:before { content: $ti-icon-joker; } .#{$ti-prefix}-jpg:before { content: $ti-icon-jpg; } .#{$ti-prefix}-json:before { content: $ti-icon-json; } .#{$ti-prefix}-jump-rope:before { content: $ti-icon-jump-rope; } @@ -7981,6 +8026,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-math-x-divide-2:before { content: $ti-icon-math-x-divide-2; } .#{$ti-prefix}-math-x-divide-y:before { content: $ti-icon-math-x-divide-y; } .#{$ti-prefix}-math-x-divide-y-2:before { content: $ti-icon-math-x-divide-y-2; } +.#{$ti-prefix}-math-x-floor-divide-y:before { content: $ti-icon-math-x-floor-divide-y; } .#{$ti-prefix}-math-x-minus-x:before { content: $ti-icon-math-x-minus-x; } .#{$ti-prefix}-math-x-minus-y:before { content: $ti-icon-math-x-minus-y; } .#{$ti-prefix}-math-x-plus-x:before { content: $ti-icon-math-x-plus-x; } @@ -8260,8 +8306,10 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-number-0-small:before { content: $ti-icon-number-0-small; } .#{$ti-prefix}-number-1:before { content: $ti-icon-number-1; } .#{$ti-prefix}-number-1-small:before { content: $ti-icon-number-1-small; } +.#{$ti-prefix}-number-10:before { content: $ti-icon-number-10; } .#{$ti-prefix}-number-10-small:before { content: $ti-icon-number-10-small; } .#{$ti-prefix}-number-100-small:before { content: $ti-icon-number-100-small; } +.#{$ti-prefix}-number-11:before { content: $ti-icon-number-11; } .#{$ti-prefix}-number-11-small:before { content: $ti-icon-number-11-small; } .#{$ti-prefix}-number-12-small:before { content: $ti-icon-number-12-small; } .#{$ti-prefix}-number-123:before { content: $ti-icon-number-123; } @@ -8578,7 +8626,22 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-plant-off:before { content: $ti-icon-plant-off; } .#{$ti-prefix}-play-basketball:before { content: $ti-icon-play-basketball; } .#{$ti-prefix}-play-card:before { content: $ti-icon-play-card; } +.#{$ti-prefix}-play-card-1:before { content: $ti-icon-play-card-1; } +.#{$ti-prefix}-play-card-10:before { content: $ti-icon-play-card-10; } +.#{$ti-prefix}-play-card-2:before { content: $ti-icon-play-card-2; } +.#{$ti-prefix}-play-card-3:before { content: $ti-icon-play-card-3; } +.#{$ti-prefix}-play-card-4:before { content: $ti-icon-play-card-4; } +.#{$ti-prefix}-play-card-5:before { content: $ti-icon-play-card-5; } +.#{$ti-prefix}-play-card-6:before { content: $ti-icon-play-card-6; } +.#{$ti-prefix}-play-card-7:before { content: $ti-icon-play-card-7; } +.#{$ti-prefix}-play-card-8:before { content: $ti-icon-play-card-8; } +.#{$ti-prefix}-play-card-9:before { content: $ti-icon-play-card-9; } +.#{$ti-prefix}-play-card-a:before { content: $ti-icon-play-card-a; } +.#{$ti-prefix}-play-card-j:before { content: $ti-icon-play-card-j; } +.#{$ti-prefix}-play-card-k:before { content: $ti-icon-play-card-k; } .#{$ti-prefix}-play-card-off:before { content: $ti-icon-play-card-off; } +.#{$ti-prefix}-play-card-q:before { content: $ti-icon-play-card-q; } +.#{$ti-prefix}-play-card-star:before { content: $ti-icon-play-card-star; } .#{$ti-prefix}-play-football:before { content: $ti-icon-play-football; } .#{$ti-prefix}-play-handball:before { content: $ti-icon-play-handball; } .#{$ti-prefix}-play-volleyball:before { content: $ti-icon-play-volleyball; } @@ -9699,6 +9762,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-writing-sign:before { content: $ti-icon-writing-sign; } .#{$ti-prefix}-writing-sign-off:before { content: $ti-icon-writing-sign-off; } .#{$ti-prefix}-x:before { content: $ti-icon-x; } +.#{$ti-prefix}-x-power-y:before { content: $ti-icon-x-power-y; } .#{$ti-prefix}-xbox-a:before { content: $ti-icon-xbox-a; } .#{$ti-prefix}-xbox-b:before { content: $ti-icon-xbox-b; } .#{$ti-prefix}-xbox-x:before { content: $ti-icon-xbox-x; } diff --git a/_sass/tabler-icons/tabler-icons.scss b/_sass/tabler-icons/tabler-icons.scss index 856bb2b83ebb9..96fac652c69e2 100644 --- a/_sass/tabler-icons/tabler-icons.scss +++ b/_sass/tabler-icons/tabler-icons.scss @@ -1,6 +1,6 @@ @charset "UTF-8"; /*! - * Tabler Icons 3.16.0 by tabler - https://tabler.io + * Tabler Icons 3.20.0 by tabler - https://tabler.io * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE */ $ti-font-family: 'tabler-icons' !default; @@ -13,9 +13,9 @@ $ti-prefix: 'ti' !default; font-style: normal; font-weight: 400; font-display: $ti-font-display; - src: url('#{$ti-font-path}/tabler-icons.woff2?v3.16.0') format('woff2'), + src: url('#{$ti-font-path}/tabler-icons.woff2?v3.20.0') format('woff2'), url('#{$ti-font-path}/tabler-icons.woff?') format('woff'), - url('#{$ti-font-path}/tabler-icons.ttf?v3.16.0') format('truetype'); + url('#{$ti-font-path}/tabler-icons.ttf?v3.20.0') format('truetype'); } .#{$ti-prefix} { @@ -273,6 +273,7 @@ $ti-icon-arrow-down: unicode('ea16'); $ti-icon-arrow-down-bar: unicode('ed98'); $ti-icon-arrow-down-circle: unicode('ea11'); $ti-icon-arrow-down-circle-filled: unicode('1003b'); +$ti-icon-arrow-down-dashed: unicode('1006a'); $ti-icon-arrow-down-from-arc: unicode('fd86'); $ti-icon-arrow-down-left: unicode('ea13'); $ti-icon-arrow-down-left-circle: unicode('ea12'); @@ -297,6 +298,7 @@ $ti-icon-arrow-left: unicode('ea19'); $ti-icon-arrow-left-bar: unicode('ed9c'); $ti-icon-arrow-left-circle: unicode('ea18'); $ti-icon-arrow-left-circle-filled: unicode('10037'); +$ti-icon-arrow-left-dashed: unicode('10069'); $ti-icon-arrow-left-from-arc: unicode('fd88'); $ti-icon-arrow-left-rhombus: unicode('f61e'); $ti-icon-arrow-left-rhombus-filled: unicode('10036'); @@ -324,9 +326,13 @@ $ti-icon-arrow-move-right-filled: unicode('10032'); $ti-icon-arrow-move-up: unicode('f2bd'); $ti-icon-arrow-move-up-filled: unicode('10031'); $ti-icon-arrow-narrow-down: unicode('ea1a'); +$ti-icon-arrow-narrow-down-dashed: unicode('10068'); $ti-icon-arrow-narrow-left: unicode('ea1b'); +$ti-icon-arrow-narrow-left-dashed: unicode('10067'); $ti-icon-arrow-narrow-right: unicode('ea1c'); +$ti-icon-arrow-narrow-right-dashed: unicode('10066'); $ti-icon-arrow-narrow-up: unicode('ea1d'); +$ti-icon-arrow-narrow-up-dashed: unicode('10065'); $ti-icon-arrow-ramp-left: unicode('ed3c'); $ti-icon-arrow-ramp-left-2: unicode('f04f'); $ti-icon-arrow-ramp-left-3: unicode('f050'); @@ -337,6 +343,7 @@ $ti-icon-arrow-right: unicode('ea1f'); $ti-icon-arrow-right-bar: unicode('eda1'); $ti-icon-arrow-right-circle: unicode('ea1e'); $ti-icon-arrow-right-circle-filled: unicode('10030'); +$ti-icon-arrow-right-dashed: unicode('10064'); $ti-icon-arrow-right-from-arc: unicode('fd8a'); $ti-icon-arrow-right-rhombus: unicode('f61f'); $ti-icon-arrow-right-rhombus-filled: unicode('1002f'); @@ -359,6 +366,7 @@ $ti-icon-arrow-up: unicode('ea25'); $ti-icon-arrow-up-bar: unicode('eda4'); $ti-icon-arrow-up-circle: unicode('ea20'); $ti-icon-arrow-up-circle-filled: unicode('1002d'); +$ti-icon-arrow-up-dashed: unicode('10063'); $ti-icon-arrow-up-from-arc: unicode('fd8c'); $ti-icon-arrow-up-left: unicode('ea22'); $ti-icon-arrow-up-left-circle: unicode('ea21'); @@ -1220,6 +1228,7 @@ $ti-icon-building-carousel: unicode('ed87'); $ti-icon-building-castle: unicode('ed88'); $ti-icon-building-church: unicode('ea4c'); $ti-icon-building-circus: unicode('f4bf'); +$ti-icon-building-cog: unicode('10062'); $ti-icon-building-community: unicode('ebf6'); $ti-icon-building-cottage: unicode('ee1b'); $ti-icon-building-estate: unicode('f5a5'); @@ -1228,10 +1237,12 @@ $ti-icon-building-factory-2: unicode('f082'); $ti-icon-building-fortress: unicode('ed89'); $ti-icon-building-hospital: unicode('ea4d'); $ti-icon-building-lighthouse: unicode('ed8a'); +$ti-icon-building-minus: unicode('10061'); $ti-icon-building-monument: unicode('ed26'); $ti-icon-building-mosque: unicode('fa57'); $ti-icon-building-off: unicode('fefd'); $ti-icon-building-pavilion: unicode('ebf7'); +$ti-icon-building-plus: unicode('10060'); $ti-icon-building-skyscraper: unicode('ec39'); $ti-icon-building-stadium: unicode('f641'); $ti-icon-building-store: unicode('ea4e'); @@ -1352,9 +1363,11 @@ $ti-icon-car-fan-2: unicode('fdb6'); $ti-icon-car-fan-3: unicode('fdb5'); $ti-icon-car-fan-auto: unicode('fdb4'); $ti-icon-car-fan-filled: unicode('1001d'); +$ti-icon-car-filled: unicode('1004c'); $ti-icon-car-garage: unicode('fc77'); $ti-icon-car-off: unicode('f0c7'); $ti-icon-car-suv: unicode('fc8b'); +$ti-icon-car-suv-filled: unicode('1004d'); $ti-icon-car-turbine: unicode('f4fd'); $ti-icon-carambola: unicode('feb9'); $ti-icon-carambola-filled: unicode('10014'); @@ -2117,6 +2130,7 @@ $ti-icon-device-analytics: unicode('ee72'); $ti-icon-device-audio-tape: unicode('ee73'); $ti-icon-device-camera-phone: unicode('f233'); $ti-icon-device-cctv: unicode('ee74'); +$ti-icon-device-cctv-filled: unicode('1004b'); $ti-icon-device-cctv-off: unicode('f3e3'); $ti-icon-device-computer-camera: unicode('ee76'); $ti-icon-device-computer-camera-off: unicode('ee75'); @@ -2130,6 +2144,7 @@ $ti-icon-device-desktop-cog: unicode('f862'); $ti-icon-device-desktop-dollar: unicode('f863'); $ti-icon-device-desktop-down: unicode('f864'); $ti-icon-device-desktop-exclamation: unicode('f865'); +$ti-icon-device-desktop-filled: unicode('1004a'); $ti-icon-device-desktop-heart: unicode('f866'); $ti-icon-device-desktop-minus: unicode('f867'); $ti-icon-device-desktop-off: unicode('ee78'); @@ -2146,6 +2161,7 @@ $ti-icon-device-floppy: unicode('eb62'); $ti-icon-device-gamepad: unicode('eb63'); $ti-icon-device-gamepad-2: unicode('f1d2'); $ti-icon-device-gamepad-3: unicode('fc58'); +$ti-icon-device-gamepad-3-filled: unicode('10049'); $ti-icon-device-heart-monitor: unicode('f060'); $ti-icon-device-heart-monitor-filled: unicode('fa38'); $ti-icon-device-imac: unicode('f7a7'); @@ -2157,6 +2173,7 @@ $ti-icon-device-imac-cog: unicode('f875'); $ti-icon-device-imac-dollar: unicode('f876'); $ti-icon-device-imac-down: unicode('f877'); $ti-icon-device-imac-exclamation: unicode('f878'); +$ti-icon-device-imac-filled: unicode('10048'); $ti-icon-device-imac-heart: unicode('f879'); $ti-icon-device-imac-minus: unicode('f87a'); $ti-icon-device-imac-off: unicode('f87b'); @@ -2178,6 +2195,7 @@ $ti-icon-device-ipad-cog: unicode('f889'); $ti-icon-device-ipad-dollar: unicode('f88a'); $ti-icon-device-ipad-down: unicode('f88b'); $ti-icon-device-ipad-exclamation: unicode('f88c'); +$ti-icon-device-ipad-filled: unicode('10047'); $ti-icon-device-ipad-heart: unicode('f88d'); $ti-icon-device-ipad-horizontal: unicode('f647'); $ti-icon-device-ipad-horizontal-bolt: unicode('f88e'); @@ -2244,12 +2262,14 @@ $ti-icon-device-nintendo: unicode('f026'); $ti-icon-device-nintendo-off: unicode('f111'); $ti-icon-device-projector: unicode('fc11'); $ti-icon-device-remote: unicode('f792'); +$ti-icon-device-remote-filled: unicode('10046'); $ti-icon-device-sd-card: unicode('f384'); $ti-icon-device-sim: unicode('f4b2'); $ti-icon-device-sim-1: unicode('f4af'); $ti-icon-device-sim-2: unicode('f4b0'); $ti-icon-device-sim-3: unicode('f4b1'); $ti-icon-device-speaker: unicode('ea8b'); +$ti-icon-device-speaker-filled: unicode('10045'); $ti-icon-device-speaker-off: unicode('f112'); $ti-icon-device-tablet: unicode('ea8c'); $ti-icon-device-tablet-bolt: unicode('f8c0'); @@ -2274,12 +2294,16 @@ $ti-icon-device-tablet-star: unicode('f8d0'); $ti-icon-device-tablet-up: unicode('f8d1'); $ti-icon-device-tablet-x: unicode('f8d2'); $ti-icon-device-tv: unicode('ea8d'); +$ti-icon-device-tv-filled: unicode('10043'); $ti-icon-device-tv-off: unicode('f064'); $ti-icon-device-tv-old: unicode('f1d3'); +$ti-icon-device-tv-old-filled: unicode('10044'); $ti-icon-device-unknown: unicode('fef4'); $ti-icon-device-unknown-filled: unicode('10018'); $ti-icon-device-usb: unicode('fc59'); +$ti-icon-device-usb-filled: unicode('10042'); $ti-icon-device-vision-pro: unicode('fae7'); +$ti-icon-device-vision-pro-filled: unicode('10041'); $ti-icon-device-watch: unicode('ebf9'); $ti-icon-device-watch-bolt: unicode('f8d3'); $ti-icon-device-watch-cancel: unicode('f8d4'); @@ -2289,6 +2313,7 @@ $ti-icon-device-watch-cog: unicode('f8d7'); $ti-icon-device-watch-dollar: unicode('f8d8'); $ti-icon-device-watch-down: unicode('f8d9'); $ti-icon-device-watch-exclamation: unicode('f8da'); +$ti-icon-device-watch-filled: unicode('10040'); $ti-icon-device-watch-heart: unicode('f8db'); $ti-icon-device-watch-minus: unicode('f8dc'); $ti-icon-device-watch-off: unicode('f065'); @@ -2361,14 +2386,17 @@ $ti-icon-direction-sign: unicode('f1f7'); $ti-icon-direction-sign-filled: unicode('f745'); $ti-icon-direction-sign-off: unicode('f3e5'); $ti-icon-directions: unicode('ea8e'); +$ti-icon-directions-filled: unicode('1003f'); $ti-icon-directions-off: unicode('f116'); $ti-icon-disabled: unicode('ea8f'); $ti-icon-disabled-2: unicode('ebaf'); $ti-icon-disabled-off: unicode('f117'); $ti-icon-disc: unicode('ea90'); +$ti-icon-disc-filled: unicode('1003e'); $ti-icon-disc-golf: unicode('f385'); $ti-icon-disc-off: unicode('f118'); $ti-icon-discount: unicode('ebbd'); +$ti-icon-discount-filled: unicode('1003d'); $ti-icon-discount-off: unicode('f3e7'); $ti-icon-divide: unicode('ed5c'); $ti-icon-dna: unicode('ee7d'); @@ -2444,6 +2472,7 @@ $ti-icon-egg-fried: unicode('f386'); $ti-icon-egg-off: unicode('f11f'); $ti-icon-eggs: unicode('f500'); $ti-icon-elevator: unicode('efdf'); +$ti-icon-elevator-filled: unicode('1003c'); $ti-icon-elevator-off: unicode('f3e8'); $ti-icon-emergency-bed: unicode('ef5d'); $ti-icon-empathize: unicode('f29b'); @@ -2516,11 +2545,13 @@ $ti-icon-face-mask: unicode('efb5'); $ti-icon-face-mask-off: unicode('f127'); $ti-icon-fall: unicode('ecb9'); $ti-icon-favicon: unicode('fd65'); +$ti-icon-favicon-filled: unicode('10071'); $ti-icon-feather: unicode('ee8b'); $ti-icon-feather-filled: unicode('10011'); $ti-icon-feather-off: unicode('f128'); $ti-icon-fence: unicode('ef2a'); $ti-icon-fence-off: unicode('f129'); +$ti-icon-ferry: unicode('10074'); $ti-icon-fidget-spinner: unicode('f068'); $ti-icon-file: unicode('eaa4'); $ti-icon-file-3d: unicode('f032'); @@ -3115,6 +3146,7 @@ $ti-icon-ice-cream-2: unicode('ee9f'); $ti-icon-ice-cream-off: unicode('f148'); $ti-icon-ice-skating: unicode('efcb'); $ti-icon-icons: unicode('f1d4'); +$ti-icon-icons-filled: unicode('10070'); $ti-icon-icons-off: unicode('f3fc'); $ti-icon-id: unicode('eac3'); $ti-icon-id-badge: unicode('eff7'); @@ -3166,11 +3198,15 @@ $ti-icon-input-x: unicode('fc5c'); $ti-icon-invoice: unicode('feab'); $ti-icon-ironing: unicode('fa7c'); $ti-icon-ironing-1: unicode('f2f4'); +$ti-icon-ironing-1-filled: unicode('1006f'); $ti-icon-ironing-2: unicode('f2f5'); +$ti-icon-ironing-2-filled: unicode('1006e'); $ti-icon-ironing-3: unicode('f2f6'); +$ti-icon-ironing-3-filled: unicode('1006d'); $ti-icon-ironing-filled: unicode('fe2a'); $ti-icon-ironing-off: unicode('f2f7'); $ti-icon-ironing-steam: unicode('f2f9'); +$ti-icon-ironing-steam-filled: unicode('1006c'); $ti-icon-ironing-steam-off: unicode('f2f8'); $ti-icon-irregular-polyhedron: unicode('faab'); $ti-icon-irregular-polyhedron-off: unicode('faa9'); @@ -3184,6 +3220,7 @@ $ti-icon-jewish-star-filled: unicode('f67e'); $ti-icon-join-bevel: unicode('ff4c'); $ti-icon-join-round: unicode('ff4b'); $ti-icon-join-straight: unicode('ff4a'); +$ti-icon-joker: unicode('1005f'); $ti-icon-jpg: unicode('f3ac'); $ti-icon-json: unicode('f7b2'); $ti-icon-jump-rope: unicode('ed8f'); @@ -3617,6 +3654,7 @@ $ti-icon-math-tg: unicode('ff33'); $ti-icon-math-x-divide-2: unicode('f4ef'); $ti-icon-math-x-divide-y: unicode('f4f1'); $ti-icon-math-x-divide-y-2: unicode('f4f0'); +$ti-icon-math-x-floor-divide-y: unicode('10073'); $ti-icon-math-x-minus-x: unicode('f4f2'); $ti-icon-math-x-minus-y: unicode('f4f3'); $ti-icon-math-x-plus-x: unicode('f4f4'); @@ -3925,8 +3963,10 @@ $ti-icon-number-0: unicode('edf0'); $ti-icon-number-0-small: unicode('fce1'); $ti-icon-number-1: unicode('edf1'); $ti-icon-number-1-small: unicode('fce2'); +$ti-icon-number-10: unicode('1005e'); $ti-icon-number-10-small: unicode('fce3'); $ti-icon-number-100-small: unicode('10005'); +$ti-icon-number-11: unicode('1005d'); $ti-icon-number-11-small: unicode('fce4'); $ti-icon-number-12-small: unicode('fce5'); $ti-icon-number-123: unicode('f554'); @@ -4262,7 +4302,37 @@ $ti-icon-plant-2-off: unicode('f17c'); $ti-icon-plant-off: unicode('f17d'); $ti-icon-play-basketball: unicode('fa66'); $ti-icon-play-card: unicode('eebf'); +$ti-icon-play-card-1: unicode('1005c'); +$ti-icon-play-card-1-filled: unicode('10083'); +$ti-icon-play-card-10: unicode('1005b'); +$ti-icon-play-card-10-filled: unicode('10082'); +$ti-icon-play-card-2: unicode('1005a'); +$ti-icon-play-card-2-filled: unicode('10081'); +$ti-icon-play-card-3: unicode('10059'); +$ti-icon-play-card-3-filled: unicode('10080'); +$ti-icon-play-card-4: unicode('10058'); +$ti-icon-play-card-4-filled: unicode('1007f'); +$ti-icon-play-card-5: unicode('10057'); +$ti-icon-play-card-5-filled: unicode('1007e'); +$ti-icon-play-card-6: unicode('10056'); +$ti-icon-play-card-6-filled: unicode('1007d'); +$ti-icon-play-card-7: unicode('10055'); +$ti-icon-play-card-7-filled: unicode('1007c'); +$ti-icon-play-card-8: unicode('10054'); +$ti-icon-play-card-8-filled: unicode('1007b'); +$ti-icon-play-card-9: unicode('10053'); +$ti-icon-play-card-9-filled: unicode('1007a'); +$ti-icon-play-card-a: unicode('10052'); +$ti-icon-play-card-a-filled: unicode('10079'); +$ti-icon-play-card-j: unicode('10051'); +$ti-icon-play-card-j-filled: unicode('10078'); +$ti-icon-play-card-k: unicode('10050'); +$ti-icon-play-card-k-filled: unicode('10077'); $ti-icon-play-card-off: unicode('f17e'); +$ti-icon-play-card-q: unicode('1004f'); +$ti-icon-play-card-q-filled: unicode('10076'); +$ti-icon-play-card-star: unicode('1004e'); +$ti-icon-play-card-star-filled: unicode('10075'); $ti-icon-play-football: unicode('fa67'); $ti-icon-play-handball: unicode('fa68'); $ti-icon-play-volleyball: unicode('fa69'); @@ -4744,6 +4814,7 @@ $ti-icon-signal-lte: unicode('f9fd'); $ti-icon-signature: unicode('eee0'); $ti-icon-signature-off: unicode('f1a5'); $ti-icon-sitemap: unicode('eb9d'); +$ti-icon-sitemap-filled: unicode('1006b'); $ti-icon-sitemap-off: unicode('f1a6'); $ti-icon-skateboard: unicode('ecc2'); $ti-icon-skateboard-off: unicode('f42b'); @@ -5589,6 +5660,7 @@ $ti-icon-writing-off: unicode('f1cb'); $ti-icon-writing-sign: unicode('ef07'); $ti-icon-writing-sign-off: unicode('f1cc'); $ti-icon-x: unicode('eb55'); +$ti-icon-x-power-y: unicode('10072'); $ti-icon-xbox-a: unicode('f2b6'); $ti-icon-xbox-a-filled: unicode('fdcb'); $ti-icon-xbox-b: unicode('f2b7'); @@ -5886,6 +5958,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-arrow-down-bar:before { content: $ti-icon-arrow-down-bar; } .#{$ti-prefix}-arrow-down-circle:before { content: $ti-icon-arrow-down-circle; } .#{$ti-prefix}-arrow-down-circle-filled:before { content: $ti-icon-arrow-down-circle-filled; } +.#{$ti-prefix}-arrow-down-dashed:before { content: $ti-icon-arrow-down-dashed; } .#{$ti-prefix}-arrow-down-from-arc:before { content: $ti-icon-arrow-down-from-arc; } .#{$ti-prefix}-arrow-down-left:before { content: $ti-icon-arrow-down-left; } .#{$ti-prefix}-arrow-down-left-circle:before { content: $ti-icon-arrow-down-left-circle; } @@ -5910,6 +5983,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-arrow-left-bar:before { content: $ti-icon-arrow-left-bar; } .#{$ti-prefix}-arrow-left-circle:before { content: $ti-icon-arrow-left-circle; } .#{$ti-prefix}-arrow-left-circle-filled:before { content: $ti-icon-arrow-left-circle-filled; } +.#{$ti-prefix}-arrow-left-dashed:before { content: $ti-icon-arrow-left-dashed; } .#{$ti-prefix}-arrow-left-from-arc:before { content: $ti-icon-arrow-left-from-arc; } .#{$ti-prefix}-arrow-left-rhombus:before { content: $ti-icon-arrow-left-rhombus; } .#{$ti-prefix}-arrow-left-rhombus-filled:before { content: $ti-icon-arrow-left-rhombus-filled; } @@ -5937,9 +6011,13 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-arrow-move-up:before { content: $ti-icon-arrow-move-up; } .#{$ti-prefix}-arrow-move-up-filled:before { content: $ti-icon-arrow-move-up-filled; } .#{$ti-prefix}-arrow-narrow-down:before { content: $ti-icon-arrow-narrow-down; } +.#{$ti-prefix}-arrow-narrow-down-dashed:before { content: $ti-icon-arrow-narrow-down-dashed; } .#{$ti-prefix}-arrow-narrow-left:before { content: $ti-icon-arrow-narrow-left; } +.#{$ti-prefix}-arrow-narrow-left-dashed:before { content: $ti-icon-arrow-narrow-left-dashed; } .#{$ti-prefix}-arrow-narrow-right:before { content: $ti-icon-arrow-narrow-right; } +.#{$ti-prefix}-arrow-narrow-right-dashed:before { content: $ti-icon-arrow-narrow-right-dashed; } .#{$ti-prefix}-arrow-narrow-up:before { content: $ti-icon-arrow-narrow-up; } +.#{$ti-prefix}-arrow-narrow-up-dashed:before { content: $ti-icon-arrow-narrow-up-dashed; } .#{$ti-prefix}-arrow-ramp-left:before { content: $ti-icon-arrow-ramp-left; } .#{$ti-prefix}-arrow-ramp-left-2:before { content: $ti-icon-arrow-ramp-left-2; } .#{$ti-prefix}-arrow-ramp-left-3:before { content: $ti-icon-arrow-ramp-left-3; } @@ -5950,6 +6028,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-arrow-right-bar:before { content: $ti-icon-arrow-right-bar; } .#{$ti-prefix}-arrow-right-circle:before { content: $ti-icon-arrow-right-circle; } .#{$ti-prefix}-arrow-right-circle-filled:before { content: $ti-icon-arrow-right-circle-filled; } +.#{$ti-prefix}-arrow-right-dashed:before { content: $ti-icon-arrow-right-dashed; } .#{$ti-prefix}-arrow-right-from-arc:before { content: $ti-icon-arrow-right-from-arc; } .#{$ti-prefix}-arrow-right-rhombus:before { content: $ti-icon-arrow-right-rhombus; } .#{$ti-prefix}-arrow-right-rhombus-filled:before { content: $ti-icon-arrow-right-rhombus-filled; } @@ -5972,6 +6051,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-arrow-up-bar:before { content: $ti-icon-arrow-up-bar; } .#{$ti-prefix}-arrow-up-circle:before { content: $ti-icon-arrow-up-circle; } .#{$ti-prefix}-arrow-up-circle-filled:before { content: $ti-icon-arrow-up-circle-filled; } +.#{$ti-prefix}-arrow-up-dashed:before { content: $ti-icon-arrow-up-dashed; } .#{$ti-prefix}-arrow-up-from-arc:before { content: $ti-icon-arrow-up-from-arc; } .#{$ti-prefix}-arrow-up-left:before { content: $ti-icon-arrow-up-left; } .#{$ti-prefix}-arrow-up-left-circle:before { content: $ti-icon-arrow-up-left-circle; } @@ -6833,6 +6913,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-building-castle:before { content: $ti-icon-building-castle; } .#{$ti-prefix}-building-church:before { content: $ti-icon-building-church; } .#{$ti-prefix}-building-circus:before { content: $ti-icon-building-circus; } +.#{$ti-prefix}-building-cog:before { content: $ti-icon-building-cog; } .#{$ti-prefix}-building-community:before { content: $ti-icon-building-community; } .#{$ti-prefix}-building-cottage:before { content: $ti-icon-building-cottage; } .#{$ti-prefix}-building-estate:before { content: $ti-icon-building-estate; } @@ -6841,10 +6922,12 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-building-fortress:before { content: $ti-icon-building-fortress; } .#{$ti-prefix}-building-hospital:before { content: $ti-icon-building-hospital; } .#{$ti-prefix}-building-lighthouse:before { content: $ti-icon-building-lighthouse; } +.#{$ti-prefix}-building-minus:before { content: $ti-icon-building-minus; } .#{$ti-prefix}-building-monument:before { content: $ti-icon-building-monument; } .#{$ti-prefix}-building-mosque:before { content: $ti-icon-building-mosque; } .#{$ti-prefix}-building-off:before { content: $ti-icon-building-off; } .#{$ti-prefix}-building-pavilion:before { content: $ti-icon-building-pavilion; } +.#{$ti-prefix}-building-plus:before { content: $ti-icon-building-plus; } .#{$ti-prefix}-building-skyscraper:before { content: $ti-icon-building-skyscraper; } .#{$ti-prefix}-building-stadium:before { content: $ti-icon-building-stadium; } .#{$ti-prefix}-building-store:before { content: $ti-icon-building-store; } @@ -6965,9 +7048,11 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-car-fan-3:before { content: $ti-icon-car-fan-3; } .#{$ti-prefix}-car-fan-auto:before { content: $ti-icon-car-fan-auto; } .#{$ti-prefix}-car-fan-filled:before { content: $ti-icon-car-fan-filled; } +.#{$ti-prefix}-car-filled:before { content: $ti-icon-car-filled; } .#{$ti-prefix}-car-garage:before { content: $ti-icon-car-garage; } .#{$ti-prefix}-car-off:before { content: $ti-icon-car-off; } .#{$ti-prefix}-car-suv:before { content: $ti-icon-car-suv; } +.#{$ti-prefix}-car-suv-filled:before { content: $ti-icon-car-suv-filled; } .#{$ti-prefix}-car-turbine:before { content: $ti-icon-car-turbine; } .#{$ti-prefix}-carambola:before { content: $ti-icon-carambola; } .#{$ti-prefix}-carambola-filled:before { content: $ti-icon-carambola-filled; } @@ -7730,6 +7815,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-device-audio-tape:before { content: $ti-icon-device-audio-tape; } .#{$ti-prefix}-device-camera-phone:before { content: $ti-icon-device-camera-phone; } .#{$ti-prefix}-device-cctv:before { content: $ti-icon-device-cctv; } +.#{$ti-prefix}-device-cctv-filled:before { content: $ti-icon-device-cctv-filled; } .#{$ti-prefix}-device-cctv-off:before { content: $ti-icon-device-cctv-off; } .#{$ti-prefix}-device-computer-camera:before { content: $ti-icon-device-computer-camera; } .#{$ti-prefix}-device-computer-camera-off:before { content: $ti-icon-device-computer-camera-off; } @@ -7743,6 +7829,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-device-desktop-dollar:before { content: $ti-icon-device-desktop-dollar; } .#{$ti-prefix}-device-desktop-down:before { content: $ti-icon-device-desktop-down; } .#{$ti-prefix}-device-desktop-exclamation:before { content: $ti-icon-device-desktop-exclamation; } +.#{$ti-prefix}-device-desktop-filled:before { content: $ti-icon-device-desktop-filled; } .#{$ti-prefix}-device-desktop-heart:before { content: $ti-icon-device-desktop-heart; } .#{$ti-prefix}-device-desktop-minus:before { content: $ti-icon-device-desktop-minus; } .#{$ti-prefix}-device-desktop-off:before { content: $ti-icon-device-desktop-off; } @@ -7759,6 +7846,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-device-gamepad:before { content: $ti-icon-device-gamepad; } .#{$ti-prefix}-device-gamepad-2:before { content: $ti-icon-device-gamepad-2; } .#{$ti-prefix}-device-gamepad-3:before { content: $ti-icon-device-gamepad-3; } +.#{$ti-prefix}-device-gamepad-3-filled:before { content: $ti-icon-device-gamepad-3-filled; } .#{$ti-prefix}-device-heart-monitor:before { content: $ti-icon-device-heart-monitor; } .#{$ti-prefix}-device-heart-monitor-filled:before { content: $ti-icon-device-heart-monitor-filled; } .#{$ti-prefix}-device-imac:before { content: $ti-icon-device-imac; } @@ -7770,6 +7858,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-device-imac-dollar:before { content: $ti-icon-device-imac-dollar; } .#{$ti-prefix}-device-imac-down:before { content: $ti-icon-device-imac-down; } .#{$ti-prefix}-device-imac-exclamation:before { content: $ti-icon-device-imac-exclamation; } +.#{$ti-prefix}-device-imac-filled:before { content: $ti-icon-device-imac-filled; } .#{$ti-prefix}-device-imac-heart:before { content: $ti-icon-device-imac-heart; } .#{$ti-prefix}-device-imac-minus:before { content: $ti-icon-device-imac-minus; } .#{$ti-prefix}-device-imac-off:before { content: $ti-icon-device-imac-off; } @@ -7791,6 +7880,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-device-ipad-dollar:before { content: $ti-icon-device-ipad-dollar; } .#{$ti-prefix}-device-ipad-down:before { content: $ti-icon-device-ipad-down; } .#{$ti-prefix}-device-ipad-exclamation:before { content: $ti-icon-device-ipad-exclamation; } +.#{$ti-prefix}-device-ipad-filled:before { content: $ti-icon-device-ipad-filled; } .#{$ti-prefix}-device-ipad-heart:before { content: $ti-icon-device-ipad-heart; } .#{$ti-prefix}-device-ipad-horizontal:before { content: $ti-icon-device-ipad-horizontal; } .#{$ti-prefix}-device-ipad-horizontal-bolt:before { content: $ti-icon-device-ipad-horizontal-bolt; } @@ -7857,12 +7947,14 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-device-nintendo-off:before { content: $ti-icon-device-nintendo-off; } .#{$ti-prefix}-device-projector:before { content: $ti-icon-device-projector; } .#{$ti-prefix}-device-remote:before { content: $ti-icon-device-remote; } +.#{$ti-prefix}-device-remote-filled:before { content: $ti-icon-device-remote-filled; } .#{$ti-prefix}-device-sd-card:before { content: $ti-icon-device-sd-card; } .#{$ti-prefix}-device-sim:before { content: $ti-icon-device-sim; } .#{$ti-prefix}-device-sim-1:before { content: $ti-icon-device-sim-1; } .#{$ti-prefix}-device-sim-2:before { content: $ti-icon-device-sim-2; } .#{$ti-prefix}-device-sim-3:before { content: $ti-icon-device-sim-3; } .#{$ti-prefix}-device-speaker:before { content: $ti-icon-device-speaker; } +.#{$ti-prefix}-device-speaker-filled:before { content: $ti-icon-device-speaker-filled; } .#{$ti-prefix}-device-speaker-off:before { content: $ti-icon-device-speaker-off; } .#{$ti-prefix}-device-tablet:before { content: $ti-icon-device-tablet; } .#{$ti-prefix}-device-tablet-bolt:before { content: $ti-icon-device-tablet-bolt; } @@ -7887,12 +7979,16 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-device-tablet-up:before { content: $ti-icon-device-tablet-up; } .#{$ti-prefix}-device-tablet-x:before { content: $ti-icon-device-tablet-x; } .#{$ti-prefix}-device-tv:before { content: $ti-icon-device-tv; } +.#{$ti-prefix}-device-tv-filled:before { content: $ti-icon-device-tv-filled; } .#{$ti-prefix}-device-tv-off:before { content: $ti-icon-device-tv-off; } .#{$ti-prefix}-device-tv-old:before { content: $ti-icon-device-tv-old; } +.#{$ti-prefix}-device-tv-old-filled:before { content: $ti-icon-device-tv-old-filled; } .#{$ti-prefix}-device-unknown:before { content: $ti-icon-device-unknown; } .#{$ti-prefix}-device-unknown-filled:before { content: $ti-icon-device-unknown-filled; } .#{$ti-prefix}-device-usb:before { content: $ti-icon-device-usb; } +.#{$ti-prefix}-device-usb-filled:before { content: $ti-icon-device-usb-filled; } .#{$ti-prefix}-device-vision-pro:before { content: $ti-icon-device-vision-pro; } +.#{$ti-prefix}-device-vision-pro-filled:before { content: $ti-icon-device-vision-pro-filled; } .#{$ti-prefix}-device-watch:before { content: $ti-icon-device-watch; } .#{$ti-prefix}-device-watch-bolt:before { content: $ti-icon-device-watch-bolt; } .#{$ti-prefix}-device-watch-cancel:before { content: $ti-icon-device-watch-cancel; } @@ -7902,6 +7998,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-device-watch-dollar:before { content: $ti-icon-device-watch-dollar; } .#{$ti-prefix}-device-watch-down:before { content: $ti-icon-device-watch-down; } .#{$ti-prefix}-device-watch-exclamation:before { content: $ti-icon-device-watch-exclamation; } +.#{$ti-prefix}-device-watch-filled:before { content: $ti-icon-device-watch-filled; } .#{$ti-prefix}-device-watch-heart:before { content: $ti-icon-device-watch-heart; } .#{$ti-prefix}-device-watch-minus:before { content: $ti-icon-device-watch-minus; } .#{$ti-prefix}-device-watch-off:before { content: $ti-icon-device-watch-off; } @@ -7974,14 +8071,17 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-direction-sign-filled:before { content: $ti-icon-direction-sign-filled; } .#{$ti-prefix}-direction-sign-off:before { content: $ti-icon-direction-sign-off; } .#{$ti-prefix}-directions:before { content: $ti-icon-directions; } +.#{$ti-prefix}-directions-filled:before { content: $ti-icon-directions-filled; } .#{$ti-prefix}-directions-off:before { content: $ti-icon-directions-off; } .#{$ti-prefix}-disabled:before { content: $ti-icon-disabled; } .#{$ti-prefix}-disabled-2:before { content: $ti-icon-disabled-2; } .#{$ti-prefix}-disabled-off:before { content: $ti-icon-disabled-off; } .#{$ti-prefix}-disc:before { content: $ti-icon-disc; } +.#{$ti-prefix}-disc-filled:before { content: $ti-icon-disc-filled; } .#{$ti-prefix}-disc-golf:before { content: $ti-icon-disc-golf; } .#{$ti-prefix}-disc-off:before { content: $ti-icon-disc-off; } .#{$ti-prefix}-discount:before { content: $ti-icon-discount; } +.#{$ti-prefix}-discount-filled:before { content: $ti-icon-discount-filled; } .#{$ti-prefix}-discount-off:before { content: $ti-icon-discount-off; } .#{$ti-prefix}-divide:before { content: $ti-icon-divide; } .#{$ti-prefix}-dna:before { content: $ti-icon-dna; } @@ -8057,6 +8157,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-egg-off:before { content: $ti-icon-egg-off; } .#{$ti-prefix}-eggs:before { content: $ti-icon-eggs; } .#{$ti-prefix}-elevator:before { content: $ti-icon-elevator; } +.#{$ti-prefix}-elevator-filled:before { content: $ti-icon-elevator-filled; } .#{$ti-prefix}-elevator-off:before { content: $ti-icon-elevator-off; } .#{$ti-prefix}-emergency-bed:before { content: $ti-icon-emergency-bed; } .#{$ti-prefix}-empathize:before { content: $ti-icon-empathize; } @@ -8129,11 +8230,13 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-face-mask-off:before { content: $ti-icon-face-mask-off; } .#{$ti-prefix}-fall:before { content: $ti-icon-fall; } .#{$ti-prefix}-favicon:before { content: $ti-icon-favicon; } +.#{$ti-prefix}-favicon-filled:before { content: $ti-icon-favicon-filled; } .#{$ti-prefix}-feather:before { content: $ti-icon-feather; } .#{$ti-prefix}-feather-filled:before { content: $ti-icon-feather-filled; } .#{$ti-prefix}-feather-off:before { content: $ti-icon-feather-off; } .#{$ti-prefix}-fence:before { content: $ti-icon-fence; } .#{$ti-prefix}-fence-off:before { content: $ti-icon-fence-off; } +.#{$ti-prefix}-ferry:before { content: $ti-icon-ferry; } .#{$ti-prefix}-fidget-spinner:before { content: $ti-icon-fidget-spinner; } .#{$ti-prefix}-file:before { content: $ti-icon-file; } .#{$ti-prefix}-file-3d:before { content: $ti-icon-file-3d; } @@ -8728,6 +8831,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-ice-cream-off:before { content: $ti-icon-ice-cream-off; } .#{$ti-prefix}-ice-skating:before { content: $ti-icon-ice-skating; } .#{$ti-prefix}-icons:before { content: $ti-icon-icons; } +.#{$ti-prefix}-icons-filled:before { content: $ti-icon-icons-filled; } .#{$ti-prefix}-icons-off:before { content: $ti-icon-icons-off; } .#{$ti-prefix}-id:before { content: $ti-icon-id; } .#{$ti-prefix}-id-badge:before { content: $ti-icon-id-badge; } @@ -8779,11 +8883,15 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-invoice:before { content: $ti-icon-invoice; } .#{$ti-prefix}-ironing:before { content: $ti-icon-ironing; } .#{$ti-prefix}-ironing-1:before { content: $ti-icon-ironing-1; } +.#{$ti-prefix}-ironing-1-filled:before { content: $ti-icon-ironing-1-filled; } .#{$ti-prefix}-ironing-2:before { content: $ti-icon-ironing-2; } +.#{$ti-prefix}-ironing-2-filled:before { content: $ti-icon-ironing-2-filled; } .#{$ti-prefix}-ironing-3:before { content: $ti-icon-ironing-3; } +.#{$ti-prefix}-ironing-3-filled:before { content: $ti-icon-ironing-3-filled; } .#{$ti-prefix}-ironing-filled:before { content: $ti-icon-ironing-filled; } .#{$ti-prefix}-ironing-off:before { content: $ti-icon-ironing-off; } .#{$ti-prefix}-ironing-steam:before { content: $ti-icon-ironing-steam; } +.#{$ti-prefix}-ironing-steam-filled:before { content: $ti-icon-ironing-steam-filled; } .#{$ti-prefix}-ironing-steam-off:before { content: $ti-icon-ironing-steam-off; } .#{$ti-prefix}-irregular-polyhedron:before { content: $ti-icon-irregular-polyhedron; } .#{$ti-prefix}-irregular-polyhedron-off:before { content: $ti-icon-irregular-polyhedron-off; } @@ -8797,6 +8905,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-join-bevel:before { content: $ti-icon-join-bevel; } .#{$ti-prefix}-join-round:before { content: $ti-icon-join-round; } .#{$ti-prefix}-join-straight:before { content: $ti-icon-join-straight; } +.#{$ti-prefix}-joker:before { content: $ti-icon-joker; } .#{$ti-prefix}-jpg:before { content: $ti-icon-jpg; } .#{$ti-prefix}-json:before { content: $ti-icon-json; } .#{$ti-prefix}-jump-rope:before { content: $ti-icon-jump-rope; } @@ -9230,6 +9339,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-math-x-divide-2:before { content: $ti-icon-math-x-divide-2; } .#{$ti-prefix}-math-x-divide-y:before { content: $ti-icon-math-x-divide-y; } .#{$ti-prefix}-math-x-divide-y-2:before { content: $ti-icon-math-x-divide-y-2; } +.#{$ti-prefix}-math-x-floor-divide-y:before { content: $ti-icon-math-x-floor-divide-y; } .#{$ti-prefix}-math-x-minus-x:before { content: $ti-icon-math-x-minus-x; } .#{$ti-prefix}-math-x-minus-y:before { content: $ti-icon-math-x-minus-y; } .#{$ti-prefix}-math-x-plus-x:before { content: $ti-icon-math-x-plus-x; } @@ -9538,8 +9648,10 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-number-0-small:before { content: $ti-icon-number-0-small; } .#{$ti-prefix}-number-1:before { content: $ti-icon-number-1; } .#{$ti-prefix}-number-1-small:before { content: $ti-icon-number-1-small; } +.#{$ti-prefix}-number-10:before { content: $ti-icon-number-10; } .#{$ti-prefix}-number-10-small:before { content: $ti-icon-number-10-small; } .#{$ti-prefix}-number-100-small:before { content: $ti-icon-number-100-small; } +.#{$ti-prefix}-number-11:before { content: $ti-icon-number-11; } .#{$ti-prefix}-number-11-small:before { content: $ti-icon-number-11-small; } .#{$ti-prefix}-number-12-small:before { content: $ti-icon-number-12-small; } .#{$ti-prefix}-number-123:before { content: $ti-icon-number-123; } @@ -9875,7 +9987,37 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-plant-off:before { content: $ti-icon-plant-off; } .#{$ti-prefix}-play-basketball:before { content: $ti-icon-play-basketball; } .#{$ti-prefix}-play-card:before { content: $ti-icon-play-card; } +.#{$ti-prefix}-play-card-1:before { content: $ti-icon-play-card-1; } +.#{$ti-prefix}-play-card-1-filled:before { content: $ti-icon-play-card-1-filled; } +.#{$ti-prefix}-play-card-10:before { content: $ti-icon-play-card-10; } +.#{$ti-prefix}-play-card-10-filled:before { content: $ti-icon-play-card-10-filled; } +.#{$ti-prefix}-play-card-2:before { content: $ti-icon-play-card-2; } +.#{$ti-prefix}-play-card-2-filled:before { content: $ti-icon-play-card-2-filled; } +.#{$ti-prefix}-play-card-3:before { content: $ti-icon-play-card-3; } +.#{$ti-prefix}-play-card-3-filled:before { content: $ti-icon-play-card-3-filled; } +.#{$ti-prefix}-play-card-4:before { content: $ti-icon-play-card-4; } +.#{$ti-prefix}-play-card-4-filled:before { content: $ti-icon-play-card-4-filled; } +.#{$ti-prefix}-play-card-5:before { content: $ti-icon-play-card-5; } +.#{$ti-prefix}-play-card-5-filled:before { content: $ti-icon-play-card-5-filled; } +.#{$ti-prefix}-play-card-6:before { content: $ti-icon-play-card-6; } +.#{$ti-prefix}-play-card-6-filled:before { content: $ti-icon-play-card-6-filled; } +.#{$ti-prefix}-play-card-7:before { content: $ti-icon-play-card-7; } +.#{$ti-prefix}-play-card-7-filled:before { content: $ti-icon-play-card-7-filled; } +.#{$ti-prefix}-play-card-8:before { content: $ti-icon-play-card-8; } +.#{$ti-prefix}-play-card-8-filled:before { content: $ti-icon-play-card-8-filled; } +.#{$ti-prefix}-play-card-9:before { content: $ti-icon-play-card-9; } +.#{$ti-prefix}-play-card-9-filled:before { content: $ti-icon-play-card-9-filled; } +.#{$ti-prefix}-play-card-a:before { content: $ti-icon-play-card-a; } +.#{$ti-prefix}-play-card-a-filled:before { content: $ti-icon-play-card-a-filled; } +.#{$ti-prefix}-play-card-j:before { content: $ti-icon-play-card-j; } +.#{$ti-prefix}-play-card-j-filled:before { content: $ti-icon-play-card-j-filled; } +.#{$ti-prefix}-play-card-k:before { content: $ti-icon-play-card-k; } +.#{$ti-prefix}-play-card-k-filled:before { content: $ti-icon-play-card-k-filled; } .#{$ti-prefix}-play-card-off:before { content: $ti-icon-play-card-off; } +.#{$ti-prefix}-play-card-q:before { content: $ti-icon-play-card-q; } +.#{$ti-prefix}-play-card-q-filled:before { content: $ti-icon-play-card-q-filled; } +.#{$ti-prefix}-play-card-star:before { content: $ti-icon-play-card-star; } +.#{$ti-prefix}-play-card-star-filled:before { content: $ti-icon-play-card-star-filled; } .#{$ti-prefix}-play-football:before { content: $ti-icon-play-football; } .#{$ti-prefix}-play-handball:before { content: $ti-icon-play-handball; } .#{$ti-prefix}-play-volleyball:before { content: $ti-icon-play-volleyball; } @@ -10357,6 +10499,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-signature:before { content: $ti-icon-signature; } .#{$ti-prefix}-signature-off:before { content: $ti-icon-signature-off; } .#{$ti-prefix}-sitemap:before { content: $ti-icon-sitemap; } +.#{$ti-prefix}-sitemap-filled:before { content: $ti-icon-sitemap-filled; } .#{$ti-prefix}-sitemap-off:before { content: $ti-icon-sitemap-off; } .#{$ti-prefix}-skateboard:before { content: $ti-icon-skateboard; } .#{$ti-prefix}-skateboard-off:before { content: $ti-icon-skateboard-off; } @@ -11202,6 +11345,7 @@ $ti-icon-zzz-off: unicode('f440'); .#{$ti-prefix}-writing-sign:before { content: $ti-icon-writing-sign; } .#{$ti-prefix}-writing-sign-off:before { content: $ti-icon-writing-sign-off; } .#{$ti-prefix}-x:before { content: $ti-icon-x; } +.#{$ti-prefix}-x-power-y:before { content: $ti-icon-x-power-y; } .#{$ti-prefix}-xbox-a:before { content: $ti-icon-xbox-a; } .#{$ti-prefix}-xbox-a-filled:before { content: $ti-icon-xbox-a-filled; } .#{$ti-prefix}-xbox-b:before { content: $ti-icon-xbox-b; } diff --git a/_scripts/cronitor-analytics-setup.js b/_scripts/cronitor-analytics-setup.js new file mode 100644 index 0000000000000..8e0ac3e602ba0 --- /dev/null +++ b/_scripts/cronitor-analytics-setup.js @@ -0,0 +1,9 @@ +--- +permalink: /assets/js/cronitor-analytics-setup.js +--- +window.cronitor = + window.cronitor || + function () { + (window.cronitor.q = window.cronitor.q || []).push(arguments); + }; +cronitor("config", { clientKey: "{{ site.cronitor_analytics }}" }); diff --git a/_scripts/giscus-setup.js b/_scripts/giscus-setup.js new file mode 100644 index 0000000000000..b18f2dfbfa40a --- /dev/null +++ b/_scripts/giscus-setup.js @@ -0,0 +1,48 @@ +--- +permalink: /assets/js/giscus-setup.js +--- + +function determineGiscusTheme() { + {% if site.enable_darkmode %} + let theme = + localStorage.getItem("theme") || + document.documentElement.getAttribute("data-theme") || + "system"; + + if (theme === "dark") return "{{ site.giscus.dark_theme }}"; + if (theme === "light") return "{{ site.giscus.light_theme }}"; + + const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches; + return prefersDark ? "{{ site.giscus.dark_theme }}" : "{{ site.giscus.light_theme }}"; + {% else %} + return "{{ site.giscus.light_theme }}"; + {% endif %} +} + +(function setupGiscus() { + let giscusTheme = determineGiscusTheme(); + + let giscusAttributes = { + src: "https://giscus.app/client.js", + "data-repo": "{{ site.giscus.repo }}", + "data-repo-id": "{{ site.giscus.repo_id }}", + "data-category": "{{ site.giscus.category }}", + "data-category-id": "{{ site.giscus.category_id }}", + "data-mapping": "{{ site.giscus.mapping }}", + "data-strict": "{{ site.giscus.strict }}", + "data-reactions-enabled": "{{ site.giscus.reactions_enabled }}", + "data-emit-metadata": "{{ site.giscus.emit_metadata }}", + "data-input-position": "{{ site.giscus.input_position }}", + "data-theme": giscusTheme, + "data-lang": "{{ site.giscus.lang }}", + crossorigin: "anonymous", + async: true, + }; + + let giscusScript = document.createElement("script"); + Object.entries(giscusAttributes).forEach(([key, value]) => + giscusScript.setAttribute(key, value) + ); + document.getElementById("giscus_thread").appendChild(giscusScript); +})(); + diff --git a/_scripts/google-analytics-setup.js b/_scripts/google-analytics-setup.js new file mode 100644 index 0000000000000..b341ab9f80200 --- /dev/null +++ b/_scripts/google-analytics-setup.js @@ -0,0 +1,9 @@ +--- +permalink: /assets/js/google-analytics-setup.js +--- +window.dataLayer = window.dataLayer || []; +function gtag() { + window.dataLayer.push(arguments); +} +gtag("js", new Date()); +gtag("config", "{{ site.google_analytics }}"); diff --git a/_scripts/open-panel-analytics-setup.js b/_scripts/open-panel-analytics-setup.js new file mode 100644 index 0000000000000..c36ebb5559fcd --- /dev/null +++ b/_scripts/open-panel-analytics-setup.js @@ -0,0 +1,14 @@ +--- +permalink: /assets/js/open-panel-analytics-setup.js +--- +window.op = + window.op || + function (...args) { + (window.op.q = window.op.q || []).push(args); + }; +window.op("init", { + clientId: "{{ site.openpanel_analytics }}", + trackScreenViews: true, + trackOutgoingLinks: true, + trackAttributes: true, +}); diff --git a/_scripts/photoswipe-setup.js b/_scripts/photoswipe-setup.js new file mode 100644 index 0000000000000..e115512f092c9 --- /dev/null +++ b/_scripts/photoswipe-setup.js @@ -0,0 +1,11 @@ +--- +permalink: /assets/js/photoswipe-setup.js +--- +import PhotoSwipeLightbox from "{{ site.third_party_libraries.photoswipe-lightbox.url.js }}"; +import PhotoSwipe from "{{ site.third_party_libraries.photoswipe.url.js }}"; +const photoswipe = new PhotoSwipeLightbox({ + gallery: ".pswp-gallery", + children: "a", + pswpModule: PhotoSwipe, +}); +photoswipe.init(); diff --git a/_scripts/search.liquid.js b/_scripts/search.liquid.js new file mode 100644 index 0000000000000..e43540c1c6eaa --- /dev/null +++ b/_scripts/search.liquid.js @@ -0,0 +1,341 @@ +--- +permalink: /assets/js/search-data.js +--- +// get the ninja-keys element +const ninja = document.querySelector('ninja-keys'); + +// add the home and posts menu items +ninja.data = [ + {%- for page in site.pages -%} + {%- if page.permalink == '/' -%}{%- assign about_title = page.title | strip -%}{%- endif -%} + {%- endfor -%} + { + id: "nav-{{ about_title | slugify }}", + title: "{{ about_title | truncatewords: 13 }}", + section: "Navigation", + handler: () => { + window.location.href = "{{ '/' | relative_url }}"; + }, + }, + {%- assign sorted_pages = site.pages | sort: "nav_order" -%} + {%- for p in sorted_pages -%} + {%- if p.nav and p.autogen == null -%} + {%- if p.dropdown -%} + {%- for child in p.children -%} + {%- unless child.title == 'divider' -%} + { + {%- assign title = child.title | escape | strip -%} + {%- if child.permalink contains "/blog/" -%}{%- assign url = "/blog/" -%} {%- else -%}{%- assign url = child.permalink -%}{%- endif -%} + id: "dropdown-{{ title | slugify }}", + title: "{{ title | truncatewords: 13 }}", + description: "{{ child.description | strip_html | strip_newlines | escape | strip }}", + section: "Dropdown", + handler: () => { + window.location.href = "{{ url | relative_url }}"; + }, + }, + {%- endunless -%} + {%- endfor -%} + + {%- else -%} + { + {%- assign title = p.title | escape | strip -%} + {%- if p.permalink contains "/blog/" -%}{%- assign url = "/blog/" -%} {%- else -%}{%- assign url = p.url -%}{%- endif -%} + id: "nav-{{ title | slugify }}", + title: "{{ title | truncatewords: 13 }}", + description: "{{ p.description | strip_html | strip_newlines | escape | strip }}", + section: "Navigation", + handler: () => { + window.location.href = "{{ url | relative_url }}"; + }, + }, + {%- endif -%} + {%- endif -%} + {%- endfor -%} + {%- if site.posts_in_search -%} + {%- for post in site.posts -%} + { + {%- assign title = post.title | escape | strip -%} + id: "post-{{ title | slugify }}", + {% if post.redirect == blank %} + title: "{{ title | truncatewords: 13 }}", + {% elsif post.redirect contains '://' %} + title: '{{ title | truncatewords: 13 }} ', + {% else %} + title: "{{ title | truncatewords: 13 }}", + {% endif %} + description: "{{ post.description | strip_html | strip_newlines | escape | strip }}", + section: "Posts", + handler: () => { + {% if post.redirect == blank %} + window.location.href = "{{ post.url | relative_url }}"; + {% elsif post.redirect contains '://' %} + window.open("{{ post.redirect }}", "_blank"); + {% else %} + window.location.href = "{{ post.redirect | relative_url }}"; + {% endif %} + }, + }, + {%- endfor -%} + {%- endif -%} + {%- for collection in site.collections -%} + {%- if collection.label != 'posts' -%} + {%- for item in collection.docs -%} + { + {%- if item.inline -%} + {%- assign title = item.content | newline_to_br | replace: "
", " " | replace: "
", " " | strip_html | strip_newlines | escape | strip -%} + {%- else -%} + {%- assign title = item.title | newline_to_br | replace: "
", " " | replace: "
", " " | strip_html | strip_newlines | escape | strip -%} + {%- endif -%} + id: "{{ collection.label }}-{{ title | slugify }}", + title: '{{ title | escape | emojify | truncatewords: 13 }}', + description: "{{ item.description | strip_html | strip_newlines | escape | strip }}", + section: "{{ collection.label | capitalize }}", + {%- unless item.inline -%} + handler: () => { + window.location.href = "{{ item.url | relative_url }}"; + }, + {%- endunless -%} + }, + {%- endfor -%} + {%- endif -%} + {%- endfor -%} + {%- if site.socials_in_search -%} + {%- for social in site.data.socials -%} + {%- case social[0] -%} + {%- when "acm_id" -%} + {%- assign social_id = "social-acm" -%} + {%- assign social_title = "ACM DL" -%} + {%- capture social_url %}"https://dl.acm.org/profile/{{ social[1] }}/"{% endcapture -%} + {%- when "arxiv_id" -%} + {%- assign social_id = "social-arxiv" -%} + {%- assign social_title = "arXiv" -%} + {%- capture social_url %}"https://arxiv.org/a/{{ social[1] }}.html"{% endcapture -%} + {%- when "blogger_url" -%} + {%- assign social_id = "social-blogger" -%} + {%- assign social_title = "Blogger" -%} + {%- capture social_url %}"{{ social[1] }}"{% endcapture -%} + {%- when "bluesky_url" -%} + {%- assign social_id = "social-bluesky" -%} + {%- assign social_title = "Bluesky" -%} + {%- capture social_url %}"{{ social[1] }}"{% endcapture -%} + {%- when "cv_pdf" -%} + {%- assign social_id = "social-cv" -%} + {%- assign social_title = "CV" -%} + {%- capture social_url %}"{{ social[1] | relative_url }}"{% endcapture -%} + {%- when "dblp_url" -%} + {%- assign social_id = "social-dblp" -%} + {%- assign social_title = "DBLP" -%} + {%- capture social_url %}"{{ social[1] }}"{% endcapture -%} + {%- when "discord_id" -%} + {%- assign social_id = "social-discord" -%} + {%- assign social_title = "Discord" -%} + {%- capture social_url %}"https://discord.com/users/{{ social[1] }}"{% endcapture -%} + {%- when "email" -%} + {%- assign social_id = "social-email" -%} + {%- assign social_title = "email" -%} + {%- capture social_url %}"mailto:{{ social[1] | encode_email }}"{% endcapture -%} + {%- when "facebook_id" -%} + {%- assign social_id = "social-facebook" -%} + {%- assign social_title = "Facebook" -%} + {%- capture social_url %}"https://facebook.com/{{ social[1] }}"{% endcapture -%} + {%- when "flickr_id" -%} + {%- assign social_id = "social-flickr" -%} + {%- assign social_title = "Flickr" -%} + {%- capture social_url %}"https://www.flickr.com/{{ social[1] }}"{% endcapture -%} + {%- when "github_username" -%} + {%- assign social_id = "social-github" -%} + {%- assign social_title = "GitHub" -%} + {%- capture social_url %}"https://github.com/{{ social[1] }}"{% endcapture -%} + {%- when "gitlab_username" -%} + {%- assign social_id = "social-gitlab" -%} + {%- assign social_title = "GitLab" -%} + {%- capture social_url %}"https://gitlab.com/{{ social[1] }}"{% endcapture -%} + {%- when "hal_id" -%} + {%- assign social_id = "social-hal" -%} + {%- assign social_title = "HAL" -%} + {%- capture social_url %}"https://cv.hal.science/{{ social[1] }}"{% endcapture -%} + {%- when "ieee_id" -%} + {%- assign social_id = "social-ieee" -%} + {%- assign social_title = "IEEE Xplore" -%} + {%- capture social_url %}"https://ieeexplore.ieee.org/author/{{ social[1] }}/"{% endcapture -%} + {%- when "inspirehep_id" -%} + {%- assign social_id = "social-inspire" -%} + {%- assign social_title = "Inspire HEP" -%} + {%- capture social_url %}"https://inspirehep.net/authors/{{ social[1] }}"{% endcapture -%} + {%- when "instagram_id" -%} + {%- assign social_id = "social-instagram" -%} + {%- assign social_title = "Instagram" -%} + {%- capture social_url %}"https://instagram.com/{{ social[1] }}"{% endcapture -%} + {%- when "kaggle_id" -%} + {%- assign social_id = "social-kaggle" -%} + {%- assign social_title = "Kaggle" -%} + {%- capture social_url %}"https://www.kaggle.com/{{ social[1] }}"{% endcapture -%} + {%- when "keybase_username" -%} + {%- assign social_id = "social-keybase" -%} + {%- assign social_title = "Keybase" -%} + {%- capture social_url %}"https://keybase.io/{{ social[1] }}"{% endcapture -%} + {%- when "lastfm_id" -%} + {%- assign social_id = "social-lastfm" -%} + {%- assign social_title = "Last FM" -%} + {%- capture social_url %}"https://www.last.fm/user/{{ social[1] }}"{% endcapture -%} + {%- when "lattes_id" -%} + {%- assign social_id = "social-lattes" -%} + {%- assign social_title = "Lattes" -%} + {%- capture social_url %}"http://lattes.cnpq.br/{{ social[1] }}"{% endcapture -%} + {%- when "leetcode_id" -%} + {%- assign social_id = "social-leetcode" -%} + {%- assign social_title = "LeetCode" -%} + {%- capture social_url %}"https://leetcode.com/u/{{ social[1] }}/"{% endcapture -%} + {%- when "linkedin_username" -%} + {%- assign social_id = "social-linkedin" -%} + {%- assign social_title = "LinkedIn" -%} + {%- capture social_url %}"https://www.linkedin.com/in/{{ social[1] }}"{% endcapture -%} + {%- when "mastodon_username" -%} + {%- assign social_id = "social-mastodon" -%} + {%- assign social_title = "Mastodon" -%} + {%- capture social_url %}"https://{{ social[1] }}"{% endcapture -%} + {%- when "medium_username" -%} + {%- assign social_id = "social-medium" -%} + {%- assign social_title = "Medium" -%} + {%- capture social_url %}"https://medium.com/@{{ social[1] }}"{% endcapture -%} + {%- when "orcid_id" -%} + {%- assign social_id = "social-orcid" -%} + {%- assign social_title = "ORCID" -%} + {%- capture social_url %}"https://orcid.org/{{ social[1] }}"{% endcapture -%} + {%- when "osf_id" -%} + {%- assign social_id = "social-osf" -%} + {%- assign social_title = "Open Science Framework" -%} + {%- capture social_url %}"https://osf.io/{{ social[1] }}/"{% endcapture -%} + {%- when "pinterest_id" -%} + {%- assign social_id = "social-pinterest" -%} + {%- assign social_title = "Pinterest" -%} + {%- capture social_url %}"https://www.pinterest.com/{{ social[1] }}"{% endcapture -%} + {%- when "publons_id" -%} + {%- assign social_id = "social-publons" -%} + {%- assign social_title = "Publons" -%} + {%- capture social_url %}"https://publons.com/a/{{ social[1] }}/"{% endcapture -%} + {%- when "quora_username" -%} + {%- assign social_id = "social-quora" -%} + {%- assign social_title = "Quora" -%} + {%- capture social_url %}"https://www.quora.com/profile/{{ social[1] }}"{% endcapture -%} + {%- when "research_gate_profile" -%} + {%- assign social_id = "social-researchgate" -%} + {%- assign social_title = "ResearchGate" -%} + {%- capture social_url %}"https://www.researchgate.net/profile/{{ social[1] }}/"{% endcapture -%} + {%- when "rss_icon" -%} + {%- assign social_id = "social-rss" -%} + {%- assign social_title = "RSS Feed" -%} + {%- capture social_url %}"{{ site.baseurl }}/feed.xml"{% endcapture -%} + {%- when "scholar_userid" -%} + {%- assign social_id = "social-scholar" -%} + {%- assign social_title = "Google Scholar" -%} + {%- capture social_url %}"https://scholar.google.com/citations?user={{ social[1] }}"{% endcapture -%} + {%- when "scopus_id" -%} + {%- assign social_id = "social-scopus" -%} + {%- assign social_title = "Scopus" -%} + {%- capture social_url %}"https://www.scopus.com/authid/detail.uri?authorId={{ social[1] }}"{% endcapture -%} + {%- when "semanticscholar_id" -%} + {%- assign social_id = "social-semanticscholar" -%} + {%- assign social_title = "Semantic Scholar" -%} + {%- capture social_url %}"https://www.semanticscholar.org/author/{{ social[1] }}"{% endcapture -%} + {%- when "spotify_id" -%} + {%- assign social_id = "social-spotify" -%} + {%- assign social_title = "Spotify" -%} + {%- capture social_url %}"https://open.spotify.com/user/{{ social[1] }}"{% endcapture -%} + {%- when "stackoverflow_id" -%} + {%- assign social_id = "social-stackoverflow" -%} + {%- assign social_title = "Stackoverflow" -%} + {%- capture social_url %}"https://stackoverflow.com/users/{{ social[1] }}"{% endcapture -%} + {%- when "strava_userid" -%} + {%- assign social_id = "social-strava" -%} + {%- assign social_title = "Strava" -%} + {%- capture social_url %}"https://www.strava.com/athletes/{{ social[1] }}"{% endcapture -%} + {%- when "telegram_username" -%} + {%- assign social_id = "social-telegram" -%} + {%- assign social_title = "telegram" -%} + {%- capture social_url %}"https://telegram.me/{{ social[1] }}"{% endcapture -%} + {%- when "unsplash_id" -%} + {%- assign social_id = "social-unsplash" -%} + {%- assign social_title = "Unsplash" -%} + {%- capture social_url %}"https://unsplash.com/@{{ social[1] }}"{% endcapture -%} + {%- comment -%} + // check how to add wechat qr code + {%- when "wechat_qr" -%} + {%- assign social_id = "social-wechat" -%} + {%- assign social_title = "WeChat" -%} + {%- capture social_url %}"https://wechat.com/{{ social[1] }}"{% endcapture -%} + {%- endcomment -%} + {%- when "whatsapp_number" -%} + {%- assign social_id = "social-whatsapp" -%} + {%- assign social_title = "whatsapp" -%} + {%- capture social_url %}"https://wa.me/{{ social[1] }}"{% endcapture -%} + {%- when "wikidata_id" -%} + {%- assign social_id = "social-wikidata" -%} + {%- assign social_title = "Wikidata" -%} + {%- capture social_url %}"https://www.wikidata.org/wiki/{{ social[1] }}"{% endcapture -%} + {%- when "wikipedia_id" -%} + {%- assign social_id = "social-wikipedia" -%} + {%- assign social_title = "Wikipedia" -%} + {%- capture social_url %}"https://wikipedia.org/wiki/User:{{ social[1] }}"{% endcapture -%} + {%- when "work_url" -%} + {%- assign social_id = "social-work" -%} + {%- assign social_title = "Work" -%} + {%- capture social_url %}"{{ social[1] }}"{% endcapture -%} + {%- when "x_username" -%} + {%- assign social_id = "social-x" -%} + {%- assign social_title = "X" -%} + {%- capture social_url %}"https://twitter.com/{{ social[1] }}"{% endcapture -%} + {%- when "youtube_id" -%} + {%- assign social_id = "social-youtube" -%} + {%- assign social_title = "YouTube" -%} + {%- capture social_url %}"https://youtube.com/@{{ social[1] }}"{% endcapture -%} + {%- when "zotero_username" -%} + {%- assign social_id = "social-zotero" -%} + {%- assign social_title = "Zotero" -%} + {%- capture social_url %}"https://www.zotero.org/{{ social[1] }}"{% endcapture -%} + {%- else -%} + {%- assign social_id = "social-" | append: social[0] -%} + {%- assign social_title = social[0] | capitalize -%} + {%- capture social_url %}"{{ social[1].url }}"{% endcapture -%} + {%- endcase -%} + { + id: '{{ social_id }}', + title: '{{ social_title }}', + section: 'Socials', + handler: () => { + window.open({{ social_url }}, "_blank"); + }, + }, + {%- endfor -%} + {%- endif -%} + {%- if site.enable_darkmode -%} + { + id: 'light-theme', + title: 'Change theme to light', + description: 'Change the theme of the site to Light', + section: 'Theme', + handler: () => { + setThemeSetting("light"); + }, + }, + { + id: 'dark-theme', + title: 'Change theme to dark', + description: 'Change the theme of the site to Dark', + section: 'Theme', + handler: () => { + setThemeSetting("dark"); + }, + }, + { + id: 'system-theme', + title: 'Use system default theme', + description: 'Change the theme of the site to System Default', + section: 'Theme', + handler: () => { + setThemeSetting("system"); + }, + }, + {%- endif -%} +]; diff --git a/_teaching/gt-arch-4833-8833.md b/_teaching/gt-arch-4833-8833.md index c9b95f45f9fad..5e80362571478 100644 --- a/_teaching/gt-arch-4833-8833.md +++ b/_teaching/gt-arch-4833-8833.md @@ -7,4 +7,9 @@ importance: 6 category: Georgia Tech --- -More info coming soon. +This is the first in the series of three courses that focus on technical issues of building design and systems integration. The course is taught in two modules with the first focusing on the environmental impact of buildings and the design of building systems to respond to the climate in which they are placed. The second module focuses on the structural environment, with a focus on lateral forces and the building systems used to resist them. Both modules will use the Kendeda Building on the Georgia Tech campus as a testbed for discussion and analysis of building environmental and structural systems. + +Module 1 focuses on lateral forces in buildings and on how life safety is ensured in building structural systems under extreme wind and seismic loading. The module builds awareness of the coordination required between architects and structural engineers in the analysis of buildings under extreme loading and the design and integration of lateral force resisting systems into buildings. Students will complete an assessment of the lateral force demand from code-specified wind and earthquake loading on buildings in multiple locations in the United States and select and proportion lateral force resisting systems (LFRS) for those loads. The class will involve an understanding of the code required forces, computation of lateral forces and an introduction to reading structural drawings. One project includes building idealized lateral systems and loading them to failure for reflection and comparison among project groups. Another project will include comprehending structural drawings of a building on campus; documenting the loads and their paths for gravity and lateral forces; and exploring an alternate lateral force resisting for the building. Projects will be done in groups. There will be weekly homework assignments completed individually. + +Module 2 introduces the students to the basics of equilibrium as a guiding principle for designing building systems. The module explores thermal, and luminous environmental design in the context of architectural building systems. The course first focuses on the building envelope as a fundamental element in defining a building and then explores how it integrates with other systems in a unified ecosystem. Furthermore, integrated building systems are emphasized, including active mechanical systems, plumbing, electrical systems, and lighting. The module assignments are individual and connect performance analysis with design through Building Performance Simulation (BPS). This module focuses on the active systems in buildings and how they impact the design of the building and vice versa. The objective of this module is to equip you with an understanding of these systems sufficient for you to design a building in concert with its environmental systems. + diff --git a/_teaching/gt-arch-7014.md b/_teaching/gt-arch-7014.md index 36ac74b66029c..7e81af1a75f25 100644 --- a/_teaching/gt-arch-7014.md +++ b/_teaching/gt-arch-7014.md @@ -9,14 +9,26 @@ category: Georgia Tech ## Downtown Doraville 2050 +
+Spring 2024 Studio (click to view)
- {% include figure.liquid path="assets/img/teaching/ARCH7014-1.jpg" title="ARCH7014-Teaser-1" class="img-fluid z-depth-1" %} + {% include figure.liquid path="assets/img/teaching/ARCH7014/ARCH7014-Sp24-1.jpg" title="ARCH7014 Spring 2024 — Panel 1" class="img-fluid z-depth-1" %}
-
- {% include figure.liquid path="assets/img/teaching/ARCH7014-2.jpg" title="ARCH7014-Teaser-2" class="img-fluid z-depth-1" %} +
+ {% include figure.liquid path="assets/img/teaching/ARCH7014/ARCH7014-Sp24-2.jpg" title="ARCH7014 Spring 2024 — Panel 2" class="img-fluid z-depth-1" %} +
+
+ {% include figure.liquid path="assets/img/teaching/ARCH7014/ARCH7014-Sp24-3.jpg" title="ARCH7014 Spring 2024 — Panel 3" class="img-fluid z-depth-1" %}
-
- {% include figure.liquid path="assets/img/teaching/ARCH7014-3.jpg" title="ARCH7014-Teaser-3" class="img-fluid z-depth-1" %} +
+
+ +
+Spring 2025 Studio (click to view) +
+
+ {% include figure.liquid path="assets/img/teaching/ARCH7014/ARCH7014-Sp25-1.jpg" title="ARCH7014 Spring 2025 — Panel 1" class="img-fluid z-depth-1" %}
+
diff --git a/_teaching/gt-chbe-8801.md b/_teaching/gt-chbe-8801.md index 56a24da8c4685..c143811dbfa9f 100644 --- a/_teaching/gt-chbe-8801.md +++ b/_teaching/gt-chbe-8801.md @@ -7,4 +7,6 @@ importance: 6 category: Georgia Tech --- -More info coming soon. \ No newline at end of file +This course will address current and foundational scholarship and research in sustainability and sustainable systems. The course is open to graduate students from all Georgia Tech programs and will be co-taught by faculty from the Colleges of Engineering, Design, Ivan Allen, and Sciences. + +The course will emphasize core sustainability concepts, methods, and competencies at the PhD level, e.g. scholarship with which students pursuing a career in sustainability should be familiar. diff --git a/_team/beesen.md b/_team/beesen.md index 4dcb65c18f190..0180a006300fa 100644 --- a/_team/beesen.md +++ b/_team/beesen.md @@ -2,9 +2,9 @@ layout: page title: Atharva Beesen description: BS Computer Science -img: assets/img/team/Beesen.jpg +img: # assets/img/team/Beesen.jpg importance: 72 -category: Lab +category: Alumni ---
diff --git a/_team/jadhav.md b/_team/jadhav.md index f21307bd72496..1da3ec3673c92 100644 --- a/_team/jadhav.md +++ b/_team/jadhav.md @@ -1,7 +1,7 @@ --- layout: page title: Shruti Jadhav -description: # MS in Architecture (High Performance Building) +description: MS in Architecture (High Performance Building) img: # assets/img/team/Jadhav.jpg importance: 1 category: Alumni @@ -14,4 +14,4 @@ category: Alumni Shruti graduated from her MS in Architecture with a [capstone](/projects/2_capstone) specialization in High Performance Building. -After graduation, Shruti started as a Sustainability Consultant at [Thornton Tomasetti](https://www.thorntontomasetti.com/). \ No newline at end of file +After graduation, Shruti started as a Sustainability Consultant at [Thornton Tomasetti](https://www.thorntontomasetti.com/). diff --git a/_team/ma.md b/_team/ma.md index dfee1c48cabde..45215d04f815b 100644 --- a/_team/ma.md +++ b/_team/ma.md @@ -1,7 +1,7 @@ --- layout: page title: Changda Ma -description: # MS in Architecture +description: MS in Architecture img: # assets/img/team/Ma.jpg importance: 1 category: Alumni diff --git a/_team/mahajan.md b/_team/mahajan.md index 9e618f0c5620f..dffa21b3b44d4 100644 --- a/_team/mahajan.md +++ b/_team/mahajan.md @@ -1,7 +1,7 @@ --- layout: page title: Anubha Mahajan -description: # BS Computer Science +description: BS Computer Science img: # assets/img/team/Mahajan.jpg importance: 1 category: Alumni diff --git a/_team/mallika.md b/_team/mallika.md index 1e67ced4f62d3..c27681fbef99c 100644 --- a/_team/mallika.md +++ b/_team/mallika.md @@ -2,9 +2,9 @@ layout: page title: Mallika Champaneria description: MArch Architecture -img: https://avatars.githubusercontent.com/u/213637183?v=4 +img: # https://avatars.githubusercontent.com/u/213637183?v=4 importance: 43 -category: Lab +category: Alumni ---
diff --git a/_team/mondal.md b/_team/mondal.md index 85fae1071675a..5374251bd8710 100644 --- a/_team/mondal.md +++ b/_team/mondal.md @@ -2,9 +2,9 @@ layout: page title: Devam Mondal description: BS Computer Science -img: assets/img/team/Mondal.jpg +img: # assets/img/team/Mondal.jpg importance: 76 -category: Lab +category: Alumni ---
diff --git a/_team/mujica.md b/_team/mujica.md index 2c38f6e49fd91..133c7fe1705e1 100644 --- a/_team/mujica.md +++ b/_team/mujica.md @@ -1,7 +1,7 @@ --- layout: page title: Sofia Mujica -description: # BS in Mechanical Engineering +description: BS in Mechanical Engineering img: # assets/img/team/Mujica.jpg importance: 1 category: Alumni diff --git a/_team/patel.md b/_team/patel.md index 631c21c04e3dc..2dacfdbabc743 100644 --- a/_team/patel.md +++ b/_team/patel.md @@ -1,7 +1,7 @@ --- layout: page title: Shivam Patel -description: # BS Computer Science +description: BS Computer Science img: # assets/img/team/Patel.jpg importance: 1 category: Alumni diff --git a/_team/rothe.md b/_team/rothe.md index 5cf037e9b9c27..d4446adfa6086 100644 --- a/_team/rothe.md +++ b/_team/rothe.md @@ -1,7 +1,7 @@ --- layout: page title: Chinmay Rothe -description: # MS in Architecture (High Performance Building) +description: MS in Architecture (High Performance Building) img: # https://arch.gatech.edu/sites/default/files/2023-11/Rothe.jpeg importance: 1 category: Alumni @@ -12,4 +12,4 @@ category: Alumni

-Chinmay graduated from his MS in Architecture with a [capstone](/projects/1_capstone) specialization in High Performance Building. Chinmay started as an Architectural Designer at [NJRA Architects, Inc](https://njraarchitects.com/). \ No newline at end of file +Chinmay graduated from his MS in Architecture with a [capstone](/projects/1_capstone) specialization in High Performance Building. Chinmay started as an Architectural Designer at [NJRA Architects, Inc](https://njraarchitects.com/). diff --git a/_team/sankar.md b/_team/sankar.md index 74a4f1f9959ab..0d1601437c9e1 100644 --- a/_team/sankar.md +++ b/_team/sankar.md @@ -2,9 +2,9 @@ layout: page title: Vishnu Sankar description: MS Computational Science and Engineering -img: https://avatars.githubusercontent.com/u/80573003?v=4 +img: # https://avatars.githubusercontent.com/u/80573003?v=4 importance: 52 -category: Lab +category: Alumni ---
diff --git a/_team/vangelova.md b/_team/vangelova.md index 2aa7629ff7f4c..0b17755b5bf7e 100644 --- a/_team/vangelova.md +++ b/_team/vangelova.md @@ -1,7 +1,7 @@ --- layout: page title: Silvia Vangelova -description: # OMS in Analytics (ISyE) +description: OMS in Analytics (ISyE) img: # assets/img/team/Vangelova.jpg importance: 1 category: Alumni diff --git a/_team/wallis.md b/_team/wallis.md index 78f93e1ad7aa8..4ac5b0ca4ae50 100644 --- a/_team/wallis.md +++ b/_team/wallis.md @@ -2,9 +2,9 @@ layout: page title: Catherine Wallis description: BArch Architecture -img: https://avatars.githubusercontent.com/u/191314718?v=4 +img: # https://avatars.githubusercontent.com/u/191314718?v=4 importance: 71 -category: Lab +category: Alumni ---
diff --git a/assets/css/scholar-icons.css b/assets/css/scholar-icons.css new file mode 100644 index 0000000000000..d3783348a5c79 --- /dev/null +++ b/assets/css/scholar-icons.css @@ -0,0 +1,386 @@ +/* + * Scholar Icons v1.0.2 by @louisfacun – https://github.com/louisfacun/scholar-icons + * License – Fonts: SIL OFL 1.1, Codes: MIT License, Icons: CC BY 4.0 + */ + +@font-face { + font-family: "Scholar Icons"; + src: url("../fonts/scholar-icons.eot"); + src: + url("../fonts/scholar-icons.eot") format("embedded-opentype"), + url("../fonts/scholar-icons.ttf") format("truetype"), + url("../fonts/scholar-icons.woff") format("woff"), + url("../fonts/scholar-icons.svg") format("svg"); + font-style: normal; + font-weight: normal; + font-display: block; +} + +.si { + font-family: "Scholar Icons" !important; + font-weight: 400; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + text-transform: none; + line-height: 1; +} + +.si-1x { + font-size: 1em; +} + +.si-2x { + font-size: 2em; +} + +.si-3x { + font-size: 3em; +} + +.si-4x { + font-size: 4em; +} + +.si-5x { + font-size: 5em; +} + +.si-6x { + font-size: 6em; +} + +.si-7x { + font-size: 7em; +} + +.si-8x { + font-size: 8em; +} +.si-arduino:before { + content: "\e956"; +} +.si-biorxiv:before { + content: "\e957"; +} +.si-cplusplus:before { + content: "\e958"; +} +.si-csharp:before { + content: "\e959"; +} +.si-css3:before { + content: "\e95a"; +} +.si-debian:before { + content: "\e95b"; +} +.si-debian-diversity:before { + content: "\e95c"; +} +.si-dotnet:before { + content: "\e95d"; +} +.si-gitlab:before { + content: "\e95e"; +} +.si-hackerearth:before { + content: "\e95f"; +} +.si-hackerrank:before { + content: "\e960"; +} +.si-hal:before { + content: "\e961"; +} +.si-html5:before { + content: "\e962"; +} +.si-lattes:before { + content: "\e963"; +} +.si-leetcode:before { + content: "\e964"; +} +.si-medrxiv:before { + content: "\e965"; +} +.si-mysql:before { + content: "\e966"; +} +.si-php:before { + content: "\e967"; +} +.si-r:before { + content: "\e968"; +} +.si-sas:before { + content: "\e969"; +} +.si-tableau:before { + content: "\e96a"; +} +.si-the-conversation:before { + content: "\e96b"; +} +.si-academia:before { + content: "\e900"; +} +.si-academia-square:before { + content: "\e901"; +} +.si-acm:before { + content: "\e902"; +} +.si-arxiv:before { + content: "\e903"; +} +.si-citavi:before { + content: "\e904"; +} +.si-codecademy:before { + content: "\e905"; +} +.si-coursera:before { + content: "\e906"; +} +.si-crossref:before { + content: "\e907"; +} +.si-dblp:before { + content: "\e908"; +} +.si-deeplearning-ai:before { + content: "\e909"; +} +.si-degree-bs:before { + content: "\e90a"; +} +.si-degree-ma:before { + content: "\e90b"; +} +.si-degree-mba:before { + content: "\e90c"; +} +.si-degree-md:before { + content: "\e90d"; +} +.si-degree-ms:before { + content: "\e90e"; +} +.si-degree-phd:before { + content: "\e90f"; +} +.si-devto:before { + content: "\e910"; +} +.si-doaj:before { + content: "\e911"; +} +.si-doi:before { + content: "\e912"; +} +.si-edx:before { + content: "\e913"; +} +.si-elsevier:before { + content: "\e914"; +} +.si-endnote:before { + content: "\e915"; +} +.si-endnote-square:before { + content: "\e916"; +} +.si-facebook:before { + content: "\e917"; +} +.si-freecodecamp:before { + content: "\e918"; +} +.si-futurelearn:before { + content: "\e919"; +} +.si-github:before { + content: "\e91a"; +} +.si-google-scholar:before { + content: "\e91b"; +} +.si-hackernoon:before { + content: "\e91c"; +} +.si-ieee:before { + content: "\e91d"; +} +.si-ieee-alt:before { + content: "\e91e"; +} +.si-iet:before { + content: "\e91f"; +} +.si-image-sc:before { + content: "\e920"; +} +.si-impact-story:before { + content: "\e921"; +} +.si-jstor:before { + content: "\e922"; +} +.si-kaggle:before { + content: "\e923"; +} +.si-keras:before { + content: "\e924"; +} +.si-khan-academy:before { + content: "\e925"; +} +.si-latex:before { + content: "\e926"; +} +.si-latex-alt:before { + content: "\e927"; +} +.si-linkedin:before { + content: "\e928"; +} +.si-mathworks:before { + content: "\e929"; +} +.si-medium:before { + content: "\e92a"; +} +.si-mendeley:before { + content: "\e92b"; +} +.si-numpy:before { + content: "\e92c"; +} +.si-nwo-nl:before { + content: "\e92d"; +} +.si-open-access:before { + content: "\e92e"; +} +.si-opencv:before { + content: "\e92f"; +} +.si-openscience-nl:before { + content: "\e930"; +} +.si-orcid:before { + content: "\e931"; +} +.si-pandas:before { + content: "\e932"; +} +.si-papers-with-code:before { + content: "\e933"; +} +.si-piazza:before { + content: "\e934"; +} +.si-piazza-square:before { + content: "\e935"; +} +.si-publons:before { + content: "\e936"; +} +.si-publons-square:before { + content: "\e937"; +} +.si-pubmed:before { + content: "\e938"; +} +.si-python:before { + content: "\e939"; +} +.si-pytorch:before { + content: "\e93a"; +} +.si-quora:before { + content: "\e93b"; +} +.si-reddit:before { + content: "\e93c"; +} +.si-researchgate:before { + content: "\e93d"; +} +.si-researchgate-square:before { + content: "\e93e"; +} +.si-scopus:before { + content: "\e93f"; +} +.si-scribd:before { + content: "\e940"; +} +.si-se-academia:before { + content: "\e941"; +} +.si-se-ai:before { + content: "\e942"; +} +.si-se-ask-ubuntu:before { + content: "\e943"; +} +.si-semantic-scholar:before { + content: "\e944"; +} +.si-se-mathematics:before { + content: "\e945"; +} +.si-se-superuser:before { + content: "\e946"; +} +.si-skillshare:before { + content: "\e947"; +} +.si-sklearn:before { + content: "\e948"; +} +.si-springer:before { + content: "\e949"; +} +.si-springer-nature:before { + content: "\e94a"; +} +.si-ssrn:before { + content: "\e94b"; +} +.si-stack-exchange:before { + content: "\e94c"; +} +.si-stack-overflow:before { + content: "\e94d"; +} +.si-surf-nl:before { + content: "\e94e"; +} +.si-tensorflow:before { + content: "\e94f"; +} +.si-twitter:before { + content: "\e950"; +} +.si-udacity:before { + content: "\e951"; +} +.si-udemy:before { + content: "\e952"; +} +.si-xing:before { + content: "\e953"; +} +.si-zenodo:before { + content: "\e954"; +} +.si-zotero:before { + content: "\e955"; +} diff --git a/assets/fonts/scholar-icons.ttf b/assets/fonts/scholar-icons.ttf new file mode 100644 index 0000000000000..4ecda91612ace Binary files /dev/null and b/assets/fonts/scholar-icons.ttf differ diff --git a/assets/fonts/scholar-icons.woff b/assets/fonts/scholar-icons.woff new file mode 100644 index 0000000000000..f0cb07ee67702 Binary files /dev/null and b/assets/fonts/scholar-icons.woff differ diff --git a/assets/fonts/tabler-icons-filled.ttf b/assets/fonts/tabler-icons-filled.ttf index aaeb96fcf87e3..062c666a44c94 100644 Binary files a/assets/fonts/tabler-icons-filled.ttf and b/assets/fonts/tabler-icons-filled.ttf differ diff --git a/assets/fonts/tabler-icons-filled.woff b/assets/fonts/tabler-icons-filled.woff index a9b264bb459b8..12d691431c106 100644 Binary files a/assets/fonts/tabler-icons-filled.woff and b/assets/fonts/tabler-icons-filled.woff differ diff --git a/assets/fonts/tabler-icons-filled.woff2 b/assets/fonts/tabler-icons-filled.woff2 index 43b44dc3dbb9a..e151eda6eb80d 100644 Binary files a/assets/fonts/tabler-icons-filled.woff2 and b/assets/fonts/tabler-icons-filled.woff2 differ diff --git a/assets/fonts/tabler-icons-outline.ttf b/assets/fonts/tabler-icons-outline.ttf index 02800215a99f3..656992255b143 100644 Binary files a/assets/fonts/tabler-icons-outline.ttf and b/assets/fonts/tabler-icons-outline.ttf differ diff --git a/assets/fonts/tabler-icons-outline.woff b/assets/fonts/tabler-icons-outline.woff index c952cd715a973..e503489fd640b 100644 Binary files a/assets/fonts/tabler-icons-outline.woff and b/assets/fonts/tabler-icons-outline.woff differ diff --git a/assets/fonts/tabler-icons-outline.woff2 b/assets/fonts/tabler-icons-outline.woff2 index 7f4b2abcc7771..e6cf527a7eb82 100644 Binary files a/assets/fonts/tabler-icons-outline.woff2 and b/assets/fonts/tabler-icons-outline.woff2 differ diff --git a/assets/fonts/tabler-icons.ttf b/assets/fonts/tabler-icons.ttf index 837ed9c792814..8ffef0e709325 100644 Binary files a/assets/fonts/tabler-icons.ttf and b/assets/fonts/tabler-icons.ttf differ diff --git a/assets/fonts/tabler-icons.woff b/assets/fonts/tabler-icons.woff index 387cd717fca57..bb05ab6562a1b 100644 Binary files a/assets/fonts/tabler-icons.woff and b/assets/fonts/tabler-icons.woff differ diff --git a/assets/fonts/tabler-icons.woff2 b/assets/fonts/tabler-icons.woff2 index 83337fa850d7f..db4d0c615de45 100644 Binary files a/assets/fonts/tabler-icons.woff2 and b/assets/fonts/tabler-icons.woff2 differ diff --git a/assets/img/publication_preview/BS2025-vegetation.png b/assets/img/publication_preview/BS2025-vegetation.png new file mode 100644 index 0000000000000..17dfa6271b4f1 Binary files /dev/null and b/assets/img/publication_preview/BS2025-vegetation.png differ diff --git a/assets/img/publication_preview/OpenPyStruct2025.png b/assets/img/publication_preview/OpenPyStruct2025.png new file mode 100644 index 0000000000000..ed9a267b4b98b Binary files /dev/null and b/assets/img/publication_preview/OpenPyStruct2025.png differ diff --git a/assets/img/teaching/ARCH7014-1.jpg b/assets/img/teaching/ARCH7014/ARCH7014-Sp24-1.jpg similarity index 100% rename from assets/img/teaching/ARCH7014-1.jpg rename to assets/img/teaching/ARCH7014/ARCH7014-Sp24-1.jpg diff --git a/assets/img/teaching/ARCH7014-2.jpg b/assets/img/teaching/ARCH7014/ARCH7014-Sp24-2.jpg similarity index 100% rename from assets/img/teaching/ARCH7014-2.jpg rename to assets/img/teaching/ARCH7014/ARCH7014-Sp24-2.jpg diff --git a/assets/img/teaching/ARCH7014-3.jpg b/assets/img/teaching/ARCH7014/ARCH7014-Sp24-3.jpg similarity index 100% rename from assets/img/teaching/ARCH7014-3.jpg rename to assets/img/teaching/ARCH7014/ARCH7014-Sp24-3.jpg diff --git a/assets/img/teaching/ARCH7014/ARCH7014-Sp25-1.jpg b/assets/img/teaching/ARCH7014/ARCH7014-Sp25-1.jpg new file mode 100644 index 0000000000000..5edbe6e5af3d6 Binary files /dev/null and b/assets/img/teaching/ARCH7014/ARCH7014-Sp25-1.jpg differ diff --git a/assets/js/chartjs-setup.js b/assets/js/chartjs-setup.js new file mode 100644 index 0000000000000..b5c83d26ab344 --- /dev/null +++ b/assets/js/chartjs-setup.js @@ -0,0 +1,14 @@ +$(document).ready(function () { + var $canvas = null, + $this = null, + _ctx = null, + _text = ""; + $(".language-chartjs").each(function () { + $this = $(this); + $canvas = $(""); + _text = $this.text(); + $this.text("").append($canvas); + _ctx = $canvas.get(0).getContext("2d"); + _ctx && _text && new Chart(_ctx, JSON.parse(_text)) && $this.attr("data-processed", true); + }); +}); diff --git a/assets/js/common.js b/assets/js/common.js index a2088c3636e30..6f3fa496e58d8 100644 --- a/assets/js/common.js +++ b/assets/js/common.js @@ -28,6 +28,7 @@ $(document).ready(function () { Toc.init($myNav); $("body").scrollspy({ target: navSelector, + offset: 100, }); } diff --git a/assets/js/copy_code.js b/assets/js/copy_code.js index cf0e1da578758..c2f78eddef033 100644 --- a/assets/js/copy_code.js +++ b/assets/js/copy_code.js @@ -8,6 +8,7 @@ codeBlocks.forEach(function (codeBlock) { codeBlock.querySelector("code:not(.language-echarts)") && codeBlock.querySelector("code:not(.language-geojson)") && codeBlock.querySelector("code:not(.language-mermaid)") && + codeBlock.querySelector("code:not(.language-plotly)") && codeBlock.querySelector("code:not(.language-vega_lite)") ) { // create copy button diff --git a/assets/js/diff2html-setup.js b/assets/js/diff2html-setup.js new file mode 100644 index 0000000000000..dedcd8bc4ca84 --- /dev/null +++ b/assets/js/diff2html-setup.js @@ -0,0 +1,20 @@ +let diff2HtmlTheme = determineComputedTheme(); + +/* Create diff2html as another node and hide the code block, appending the diff2html node after it + this is done to enable retrieving the code again when changing theme between light/dark */ +document.addEventListener("readystatechange", () => { + if (document.readyState === "complete") { + document.querySelectorAll("pre>code.language-diff2html").forEach((elem) => { + const textData = elem.textContent; + const backup = elem.parentElement; + backup.classList.add("unloaded"); + /* create diff node */ + let diffElement = document.createElement("div"); + diffElement.classList.add("diff2html"); + backup.after(diffElement); + const configuration = { colorScheme: diff2HtmlTheme, drawFileList: true, highlight: true, matching: "lines" }; + const diff2htmlUi = new Diff2HtmlUI(diffElement, textData, configuration); + diff2htmlUi.draw(); + }); + } +}); diff --git a/assets/js/distillpub/overrides.js b/assets/js/distillpub/overrides.js index 2bb3c1da16eea..2a80592fffaf5 100644 --- a/assets/js/distillpub/overrides.js +++ b/assets/js/distillpub/overrides.js @@ -1,5 +1,4 @@ -$(document).ready(function () { - // Override styles of the footnotes. +$(window).on("load", function () { document.querySelectorAll("d-footnote").forEach(function (footnote) { footnote.shadowRoot.querySelector("sup > span").setAttribute("style", "color: var(--global-theme-color);"); footnote.shadowRoot diff --git a/assets/js/distillpub/template.v2.js b/assets/js/distillpub/template.v2.js index 33d23109b1825..4c7667ea64d30 100644 --- a/assets/js/distillpub/template.v2.js +++ b/assets/js/distillpub/template.v2.js @@ -2136,7 +2136,7 @@ d-appendix > distill-appendix { } .citation { - color: hsla(206, 90%, 20%, 0.7); + color: var(--global-theme-color); } .citation-number { @@ -2144,7 +2144,7 @@ d-appendix > distill-appendix { white-space: nowrap; font-family: -apple-system, BlinkMacSystemFont, "Roboto", Helvetica, sans-serif; font-size: 75%; - color: hsla(206, 90%, 20%, 0.7); + color: var(--global-theme-color); display: inline-block; line-height: 1.1em; text-align: center; @@ -2596,7 +2596,7 @@ d-citation-list .references .title { var env = { callback: callback, container: container, - selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code', + selector: 'd-code', }; _.hooks.run("before-highlightall", env); @@ -4277,7 +4277,7 @@ sup { } span { - color: hsla(206, 90%, 20%, 0.7); + color: var(--global-theme-color); cursor: default; } @@ -4446,14 +4446,26 @@ d-footnote-list a.footnote-backlink { top: 0; left: 0; width: 100%; - border: 1px solid rgba(0, 0, 0, 0.1); - background-color: rgba(250, 250, 250, 0.95); - box-shadow: 0 0 7px rgba(0, 0, 0, 0.1); - border-radius: 4px; - box-sizing: border-box; + /* Original styles retained and new theming variables added */ + border: 1px solid var(--global-divider-color); /* Themed border */ + background-color: var(--global-card-bg-color); /* Themed background */ + color: var(--global-text-color); /* Themed text color */ + box-shadow: 0 0 7px rgba(0, 0, 0, 0.1); /* Existing shadow */ + border-radius: 4px; /* Existing border-radius */ + box-sizing: border-box; /* Existing box-sizing */ + + backdrop-filter: blur(2px); /* Existing backdrop-filter */ + -webkit-backdrop-filter: blur(2px); /* Existing backdrop-filter */ +} + +.panel a { + color: var(--global-theme-color); + text-decoration: none; +} - backdrop-filter: blur(2px); - -webkit-backdrop-filter: blur(2px); +.panel a:hover { + color: var(--global-hover-color); + text-decoration: underline; } diff --git a/assets/js/echarts-setup.js b/assets/js/echarts-setup.js new file mode 100644 index 0000000000000..074f6ab21564c --- /dev/null +++ b/assets/js/echarts-setup.js @@ -0,0 +1,29 @@ +let echartsTheme = determineComputedTheme(); + +/* Create echarts chart as another node and hide the code block, appending the echarts node after it + this is done to enable retrieving the code again when changing theme between light/dark */ +document.addEventListener("readystatechange", () => { + if (document.readyState === "complete") { + document.querySelectorAll("pre>code.language-echarts").forEach((elem) => { + const jsonData = elem.textContent; + const backup = elem.parentElement; + backup.classList.add("unloaded"); + /* create echarts node */ + let chartElement = document.createElement("div"); + chartElement.classList.add("echarts"); + backup.after(chartElement); + + /* create echarts */ + if (echartsTheme === "dark") { + var chart = echarts.init(chartElement, "dark-fresh-cut"); + } else { + var chart = echarts.init(chartElement); + } + + chart.setOption(JSON.parse(jsonData)); + window.addEventListener("resize", function () { + chart.resize(); + }); + }); + } +}); diff --git a/assets/js/leaflet-setup.js b/assets/js/leaflet-setup.js new file mode 100644 index 0000000000000..d1f4607ca1945 --- /dev/null +++ b/assets/js/leaflet-setup.js @@ -0,0 +1,22 @@ +/* Create leaflet map as another node and hide the code block, appending the leaflet node after it */ +document.addEventListener("readystatechange", () => { + if (document.readyState === "complete") { + document.querySelectorAll("pre>code.language-geojson").forEach((elem) => { + const jsonData = elem.textContent; + const backup = elem.parentElement; + backup.classList.add("unloaded"); + /* create leaflet node */ + let mapElement = document.createElement("div"); + mapElement.classList.add("map"); + backup.after(mapElement); + + var map = L.map(mapElement); + L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", { + maxZoom: 19, + attribution: '© OpenStreetMap', + }).addTo(map); + let geoJSON = L.geoJSON(JSON.parse(jsonData)).addTo(map); + map.fitBounds(geoJSON.getBounds()); + }); + } +}); diff --git a/assets/js/mathjax-setup.js b/assets/js/mathjax-setup.js new file mode 100644 index 0000000000000..53f40b45da776 --- /dev/null +++ b/assets/js/mathjax-setup.js @@ -0,0 +1,26 @@ +window.MathJax = { + tex: { + tags: "ams", + inlineMath: [ + ["$", "$"], + ["\\(", "\\)"], + ], + }, + options: { + renderActions: { + addCss: [ + 200, + function (doc) { + const style = document.createElement("style"); + style.innerHTML = ` + .mjx-container { + color: inherit; + } + `; + document.head.appendChild(style); + }, + "", + ], + }, + }, +}; diff --git a/assets/js/mermaid-setup.js b/assets/js/mermaid-setup.js new file mode 100644 index 0000000000000..c555f927a5018 --- /dev/null +++ b/assets/js/mermaid-setup.js @@ -0,0 +1,37 @@ +let mermaidTheme = determineComputedTheme(); + +/* Create mermaid diagram as another node and hide the code block, appending the mermaid node after it + this is done to enable retrieving the code again when changing theme between light/dark */ +document.addEventListener("readystatechange", () => { + if (document.readyState === "complete") { + document.querySelectorAll("pre>code.language-mermaid").forEach((elem) => { + const svgCode = elem.textContent; + const backup = elem.parentElement; + backup.classList.add("unloaded"); + /* create mermaid node */ + let mermaid = document.createElement("pre"); + mermaid.classList.add("mermaid"); + const text = document.createTextNode(svgCode); + mermaid.appendChild(text); + backup.after(mermaid); + }); + + mermaid.initialize({ theme: mermaidTheme }); + + /* Zoomable mermaid diagrams */ + if (typeof d3 !== "undefined") { + window.addEventListener("load", function () { + var svgs = d3.selectAll(".mermaid svg"); + svgs.each(function () { + var svg = d3.select(this); + svg.html("" + svg.html() + ""); + var inner = svg.select("g"); + var zoom = d3.zoom().on("zoom", function (event) { + inner.attr("transform", event.transform); + }); + svg.call(zoom); + }); + }); + } + } +}); diff --git a/assets/js/newsletter.js b/assets/js/newsletter.js new file mode 100644 index 0000000000000..679e42bda90e4 --- /dev/null +++ b/assets/js/newsletter.js @@ -0,0 +1,105 @@ +function submitHandler(event) { + event.preventDefault(); + var container = event.target.parentNode; + var form = container.querySelector(".newsletter-form"); + var formInput = container.querySelector(".newsletter-form-input"); + var success = container.querySelector(".newsletter-success"); + var errorContainer = container.querySelector(".newsletter-error"); + var errorMessage = container.querySelector(".newsletter-error-message"); + var backButton = container.querySelector(".newsletter-back-button"); + var submitButton = container.querySelector(".newsletter-form-button"); + var loadingButton = container.querySelector(".newsletter-loading-button"); + + const rateLimit = () => { + errorContainer.style.display = "flex"; + errorMessage.innerText = "Too many signups, please try again in a little while"; + submitButton.style.display = "none"; + formInput.style.display = "none"; + backButton.style.display = "block"; + }; + + // Compare current time with time of previous sign up + var time = new Date(); + var timestamp = time.valueOf(); + var previousTimestamp = localStorage.getItem("loops-form-timestamp"); + + // If last sign up was less than a minute ago + // display error + if (previousTimestamp && Number(previousTimestamp) + 60000 > timestamp) { + rateLimit(); + return; + } + localStorage.setItem("loops-form-timestamp", timestamp); + + submitButton.style.display = "none"; + loadingButton.style.display = "flex"; + + var formBody = "userGroup=&email=" + encodeURIComponent(formInput.value); + fetch(event.target.action, { + method: "POST", + body: formBody, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + }, + }) + .then((res) => [res.ok, res.json(), res]) + .then(([ok, dataPromise, res]) => { + if (ok) { + // If response successful + // display success + success.style.display = "flex"; + form.reset(); + } else { + // If response unsuccessful + // display error message or response status + dataPromise.then((data) => { + errorContainer.style.display = "flex"; + errorMessage.innerText = data.message ? data.message : res.statusText; + }); + } + }) + .catch((error) => { + // check for cloudflare error + if (error.message === "Failed to fetch") { + rateLimit(); + return; + } + // If error caught + // display error message if available + errorContainer.style.display = "flex"; + if (error.message) errorMessage.innerText = error.message; + localStorage.setItem("loops-form-timestamp", ""); + }) + .finally(() => { + formInput.style.display = "none"; + loadingButton.style.display = "none"; + backButton.style.display = "block"; + }); +} +function resetFormHandler(event) { + var container = event.target.parentNode; + var formInput = container.querySelector(".newsletter-form-input"); + var success = container.querySelector(".newsletter-success"); + var errorContainer = container.querySelector(".newsletter-error"); + var errorMessage = container.querySelector(".newsletter-error-message"); + var backButton = container.querySelector(".newsletter-back-button"); + var submitButton = container.querySelector(".newsletter-form-button"); + + success.style.display = "none"; + errorContainer.style.display = "none"; + errorMessage.innerText = "Oops! Something went wrong, please try again"; + backButton.style.display = "none"; + formInput.style.display = "flex"; + submitButton.style.display = "flex"; +} + +var formContainers = document.getElementsByClassName("newsletter-form-container"); + +for (var i = 0; i < formContainers.length; i++) { + var formContainer = formContainers[i]; + var handlersAdded = formContainer.classList.contains("newsletter-handlers-added"); + if (handlersAdded) continue; + formContainer.querySelector(".newsletter-form").addEventListener("submit", submitHandler); + formContainer.querySelector(".newsletter-back-button").addEventListener("click", resetFormHandler); + formContainer.classList.add("newsletter-handlers-added"); +} diff --git a/assets/js/plotly-setup.js b/assets/js/plotly-setup.js new file mode 100644 index 0000000000000..a6c21f6b1c08e --- /dev/null +++ b/assets/js/plotly-setup.js @@ -0,0 +1,52 @@ +let plotlyTheme = determineComputedTheme(); +/* Create plotly chart as another node and hide the code block, appending the plotly node after it + this is done to enable retrieving the code again when changing theme between light/dark */ +document.addEventListener("readystatechange", () => { + if (document.readyState === "complete") { + document.querySelectorAll("pre>code.language-plotly").forEach((elem) => { + const jsonCode = elem.textContent; + const backup = elem.parentElement; + backup.classList.add("unloaded"); + /* create plotly node */ + let chartElement = document.createElement("div"); + backup.after(chartElement); + + /* create plotly */ + var jsonData = JSON.parse(jsonCode); + + if (plotlyTheme === "dark") { + // dark theme extracted from https://github.com/plotly/plotly.py/blob/main/plotly/package_data/templates/plotly_dark.json?raw=true + // prettier-ignore + const plotlyDarkLayout = {"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#f2f5fa"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"rgb(17,17,17)","plot_bgcolor":"rgb(17,17,17)","polar":{"bgcolor":"rgb(17,17,17)","angularaxis":{"gridcolor":"#506784","linecolor":"#506784","ticks":""},"radialaxis":{"gridcolor":"#506784","linecolor":"#506784","ticks":""}},"ternary":{"bgcolor":"rgb(17,17,17)","aaxis":{"gridcolor":"#506784","linecolor":"#506784","ticks":""},"baxis":{"gridcolor":"#506784","linecolor":"#506784","ticks":""},"caxis":{"gridcolor":"#506784","linecolor":"#506784","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"#283442","linecolor":"#506784","ticks":"","title":{"standoff":15},"zerolinecolor":"#283442","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"#283442","linecolor":"#506784","ticks":"","title":{"standoff":15},"zerolinecolor":"#283442","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"rgb(17,17,17)","gridcolor":"#506784","linecolor":"#506784","showbackground":true,"ticks":"","zerolinecolor":"#C8D4E3","gridwidth":2},"yaxis":{"backgroundcolor":"rgb(17,17,17)","gridcolor":"#506784","linecolor":"#506784","showbackground":true,"ticks":"","zerolinecolor":"#C8D4E3","gridwidth":2},"zaxis":{"backgroundcolor":"rgb(17,17,17)","gridcolor":"#506784","linecolor":"#506784","showbackground":true,"ticks":"","zerolinecolor":"#C8D4E3","gridwidth":2}},"shapedefaults":{"line":{"color":"#f2f5fa"}},"annotationdefaults":{"arrowcolor":"#f2f5fa","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"rgb(17,17,17)","landcolor":"rgb(17,17,17)","subunitcolor":"#506784","showland":true,"showlakes":true,"lakecolor":"rgb(17,17,17)"},"title":{"x":0.05},"updatemenudefaults":{"bgcolor":"#506784","borderwidth":0},"sliderdefaults":{"bgcolor":"#C8D4E3","borderwidth":1,"bordercolor":"rgb(17,17,17)","tickwidth":0},"mapbox":{"style":"dark"}},"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"marker":{"line":{"color":"#283442"}},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#f2f5fa"},"error_y":{"color":"#f2f5fa"},"marker":{"line":{"color":"rgb(17,17,17)","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"marker":{"line":{"color":"#283442"}},"type":"scattergl"}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#A2B1C6","gridcolor":"#506784","linecolor":"#506784","minorgridcolor":"#506784","startlinecolor":"#A2B1C6"},"baxis":{"endlinecolor":"#A2B1C6","gridcolor":"#506784","linecolor":"#506784","minorgridcolor":"#506784","startlinecolor":"#A2B1C6"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#506784"},"line":{"color":"rgb(17,17,17)"}},"header":{"fill":{"color":"#2a3f5f"},"line":{"color":"rgb(17,17,17)"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"rgb(17,17,17)","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]}}; + + // if jsonData.layout exists, then update the theme + if (jsonData.layout) { + if (jsonData.layout.template) { + jsonData.layout.template = { ...plotlyDarkLayout, ...jsonData.layout.template }; + } else { + jsonData.layout.template = plotlyDarkLayout; + } + } else { + jsonData.layout = { template: plotlyDarkLayout }; + } + } else { + // light theme extracted from https://github.com/plotly/plotly.py/blob/main/plotly/package_data/templates/plotly_white.json?raw=true + // prettier-ignore + const plotlyLightLayout = {"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"bgcolor":"white","angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"ternary":{"bgcolor":"white","aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8","gridwidth":2},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8","gridwidth":2},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"white","subunitcolor":"#C8D4E3","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}},"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]}}; + + // if jsonData.layout exists, then update the theme + if (jsonData.layout) { + if (jsonData.layout.template) { + jsonData.layout.template = { ...plotlyLightLayout, ...jsonData.layout.template }; + } else { + jsonData.layout.template = plotlyLightLayout; + } + } else { + jsonData.layout = { template: plotlyLightLayout }; + } + } + + Plotly.react(chartElement, jsonData.data, jsonData.layout); + }); + } +}); diff --git a/assets/js/progress-bar.js b/assets/js/progress-bar.js new file mode 100644 index 0000000000000..3604934048f68 --- /dev/null +++ b/assets/js/progress-bar.js @@ -0,0 +1,73 @@ +/* + * This JavaScript code has been adapted from the article + * https://css-tricks.com/reading-position-indicator/ authored by Pankaj Parashar, + * published on the website https://css-tricks.com on the 7th of May, 2014. + * Couple of changes were made to the original code to make it compatible + * with the `al-foio` theme. + */ +const progressBar = $("#progress"); +/* + * We set up the bar after all elements are done loading. + * In some cases, if the images in the page are larger than the intended + * size they'll have on the page, they'll be resized via CSS to accomodate + * the desired size. This mistake, however, breaks the computations as the + * scroll size is computed as soon as the elements finish loading. + * To account for this, a minimal delay was introduced before computing the + * values. + */ +window.onload = function () { + setTimeout(progressBarSetup, 50); +}; +/* + * We set up the bar according to the browser. + * If the browser supports the progress element we use that. + * Otherwise, we resize the bar thru CSS styling + */ +function progressBarSetup() { + if ("max" in document.createElement("progress")) { + initializeProgressElement(); + $(document).on("scroll", function () { + progressBar.attr({ value: getCurrentScrollPosition() }); + }); + $(window).on("resize", initializeProgressElement); + } else { + resizeProgressBar(); + $(document).on("scroll", resizeProgressBar); + $(window).on("resize", resizeProgressBar); + } +} +/* + * The vertical scroll position is the same as the number of pixels that + * are hidden from view above the scrollable area. Thus, a value > 0 is + * how much the user has scrolled from the top + */ +function getCurrentScrollPosition() { + return $(window).scrollTop(); +} + +function initializeProgressElement() { + let navbarHeight = $("#navbar").outerHeight(true); + $("body").css({ "padding-top": navbarHeight }); + $("progress-container").css({ "padding-top": navbarHeight }); + progressBar.css({ top: navbarHeight }); + progressBar.attr({ + max: getDistanceToScroll(), + value: getCurrentScrollPosition(), + }); +} +/* + * The offset between the html document height and the browser viewport + * height will be greater than zero if vertical scroll is possible. + * This is the distance the user can scroll + */ +function getDistanceToScroll() { + return $(document).height() - $(window).height(); +} + +function resizeProgressBar() { + progressBar.css({ width: getWidthPercentage() + "%" }); +} +// The scroll ratio equals the percentage to resize the bar +function getWidthPercentage() { + return (getCurrentScrollPosition() / getDistanceToScroll()) * 100; +} diff --git a/assets/js/pseudocode-setup.js b/assets/js/pseudocode-setup.js new file mode 100644 index 0000000000000..8a16f83238404 --- /dev/null +++ b/assets/js/pseudocode-setup.js @@ -0,0 +1,33 @@ +window.MathJax = { + tex: { + inlineMath: [ + ["$", "$"], + ["\\(", "\\)"], + ], + displayMath: [ + ["$$", "$$"], + ["\\[", "\\]"], + ], + processEscapes: true, + processEnvironments: true, + }, +}; + +document.addEventListener("readystatechange", () => { + if (document.readyState === "complete") { + document.querySelectorAll("pre>code.language-pseudocode").forEach((elem) => { + const texData = elem.textContent; + const parent = elem.parentElement.parentElement; + /* create pseudocode node */ + let pseudoCodeElement = document.createElement("pre"); + pseudoCodeElement.classList.add("pseudocode"); + const text = document.createTextNode(texData); + pseudoCodeElement.appendChild(text); + /* add pseudocode node and remove the original code block */ + parent.appendChild(pseudoCodeElement); + parent.removeChild(elem.parentElement); + /* embed the visualization in the container */ + pseudocode.renderElement(pseudoCodeElement); + }); + } +}); diff --git a/assets/js/search-setup.js b/assets/js/search-setup.js new file mode 100644 index 0000000000000..12294f75ad274 --- /dev/null +++ b/assets/js/search-setup.js @@ -0,0 +1,17 @@ +let searchTheme = determineComputedTheme(); +const ninjaKeys = document.querySelector("ninja-keys"); + +if (searchTheme === "dark") { + ninjaKeys.classList.add("dark"); +} else { + ninjaKeys.classList.remove("dark"); +} + +const openSearchModal = () => { + // collapse navbarNav if expanded on mobile + const $navbarNav = $("#navbarNav"); + if ($navbarNav.hasClass("show")) { + $navbarNav.collapse("hide"); + } + ninjaKeys.open(); +}; diff --git a/assets/js/theme.js b/assets/js/theme.js index 9fa1db7629707..35f3a04126fb4 100644 --- a/assets/js/theme.js +++ b/assets/js/theme.js @@ -45,6 +45,11 @@ let applyTheme = () => { setEchartsTheme(theme); } + // if Plotly is not defined, do nothing + if (typeof Plotly !== "undefined") { + setPlotlyTheme(theme); + } + // if vegaEmbed is not defined, do nothing if (typeof vegaEmbed !== "undefined") { setVegaLiteTheme(theme); @@ -174,6 +179,47 @@ let setEchartsTheme = (theme) => { }); }; +let setPlotlyTheme = (theme) => { + document.querySelectorAll(".js-plotly-plot").forEach((elem) => { + // Get the code block content from previous element, since it is the plotly code itself as defined in Markdown, but it is hidden + let jsonData = JSON.parse(elem.previousSibling.childNodes[0].innerHTML); + + if (theme === "dark") { + // dark theme extracted from https://github.com/plotly/plotly.py/blob/main/plotly/package_data/templates/plotly_dark.json?raw=true + // prettier-ignore + const plotlyDarkLayout = {"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#f2f5fa"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"rgb(17,17,17)","plot_bgcolor":"rgb(17,17,17)","polar":{"bgcolor":"rgb(17,17,17)","angularaxis":{"gridcolor":"#506784","linecolor":"#506784","ticks":""},"radialaxis":{"gridcolor":"#506784","linecolor":"#506784","ticks":""}},"ternary":{"bgcolor":"rgb(17,17,17)","aaxis":{"gridcolor":"#506784","linecolor":"#506784","ticks":""},"baxis":{"gridcolor":"#506784","linecolor":"#506784","ticks":""},"caxis":{"gridcolor":"#506784","linecolor":"#506784","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"#283442","linecolor":"#506784","ticks":"","title":{"standoff":15},"zerolinecolor":"#283442","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"#283442","linecolor":"#506784","ticks":"","title":{"standoff":15},"zerolinecolor":"#283442","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"rgb(17,17,17)","gridcolor":"#506784","linecolor":"#506784","showbackground":true,"ticks":"","zerolinecolor":"#C8D4E3","gridwidth":2},"yaxis":{"backgroundcolor":"rgb(17,17,17)","gridcolor":"#506784","linecolor":"#506784","showbackground":true,"ticks":"","zerolinecolor":"#C8D4E3","gridwidth":2},"zaxis":{"backgroundcolor":"rgb(17,17,17)","gridcolor":"#506784","linecolor":"#506784","showbackground":true,"ticks":"","zerolinecolor":"#C8D4E3","gridwidth":2}},"shapedefaults":{"line":{"color":"#f2f5fa"}},"annotationdefaults":{"arrowcolor":"#f2f5fa","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"rgb(17,17,17)","landcolor":"rgb(17,17,17)","subunitcolor":"#506784","showland":true,"showlakes":true,"lakecolor":"rgb(17,17,17)"},"title":{"x":0.05},"updatemenudefaults":{"bgcolor":"#506784","borderwidth":0},"sliderdefaults":{"bgcolor":"#C8D4E3","borderwidth":1,"bordercolor":"rgb(17,17,17)","tickwidth":0},"mapbox":{"style":"dark"}},"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"marker":{"line":{"color":"#283442"}},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#f2f5fa"},"error_y":{"color":"#f2f5fa"},"marker":{"line":{"color":"rgb(17,17,17)","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"marker":{"line":{"color":"#283442"}},"type":"scattergl"}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#A2B1C6","gridcolor":"#506784","linecolor":"#506784","minorgridcolor":"#506784","startlinecolor":"#A2B1C6"},"baxis":{"endlinecolor":"#A2B1C6","gridcolor":"#506784","linecolor":"#506784","minorgridcolor":"#506784","startlinecolor":"#A2B1C6"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#506784"},"line":{"color":"rgb(17,17,17)"}},"header":{"fill":{"color":"#2a3f5f"},"line":{"color":"rgb(17,17,17)"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"rgb(17,17,17)","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]}}; + + // if jsonData.layout exists, then update the theme + if (jsonData.layout) { + if (jsonData.layout.template) { + jsonData.layout.template = { ...plotlyDarkLayout, ...jsonData.layout.template }; + } else { + jsonData.layout.template = plotlyDarkLayout; + } + } else { + jsonData.layout = { template: plotlyDarkLayout }; + } + } else { + // light theme extracted from https://github.com/plotly/plotly.py/blob/main/plotly/package_data/templates/plotly_white.json?raw=true + // prettier-ignore + const plotlyLightLayout = {"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"bgcolor":"white","angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"ternary":{"bgcolor":"white","aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8","gridwidth":2},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8","gridwidth":2},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"white","subunitcolor":"#C8D4E3","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}},"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]}}; + + // if jsonData.layout exists, then update the theme + if (jsonData.layout) { + if (jsonData.layout.template) { + jsonData.layout.template = { ...plotlyLightLayout, ...jsonData.layout.template }; + } else { + jsonData.layout.template = plotlyLightLayout; + } + } else { + jsonData.layout = { template: plotlyLightLayout }; + } + } + + Plotly.relayout(elem, jsonData.layout); + }); +}; + let setVegaLiteTheme = (theme) => { document.querySelectorAll(".vega-lite").forEach((elem) => { // Get the code block content from previous element, since it is the vega lite code itself as defined in Markdown, but it is hidden diff --git a/assets/js/tooltips-setup.js b/assets/js/tooltips-setup.js new file mode 100644 index 0000000000000..4c847cdfc690e --- /dev/null +++ b/assets/js/tooltips-setup.js @@ -0,0 +1,3 @@ +$(function () { + $('[data-toggle="tooltip"]').tooltip(); +}); diff --git a/assets/js/typograms.js b/assets/js/typograms.js index ba5327ee97206..1d6eed433858b 100644 --- a/assets/js/typograms.js +++ b/assets/js/typograms.js @@ -1,5 +1,6 @@ // based on the original typograms code from https://github.com/google/typograms/blob/main/src/typograms.js -// only moved the css to its own file (_sass/_typograms.scss) and commented the last line of the file +// only moved the css to its own file (_sass/_typograms.scss), commented the last line of the file (module.exports = create;) +// and added the last function to the end of the file const ratio = 2; function grid(width, height) { @@ -1320,3 +1321,21 @@ function around(diagram, [x, y]) { } // module.exports = create; + +/* Create typogram as another node and hide the code block, appending the typogram node after it +this is done to enable retrieving the code again when changing theme between light/dark */ +document.addEventListener("readystatechange", () => { + if (document.readyState === "complete") { + document.querySelectorAll("pre>code.language-typograms").forEach((elem) => { + const texData = elem.textContent; + const parent = elem.parentElement.parentElement; + /* create typograms node */ + let typogram = document.createElement("pre"); + typogram.classList.add("typogram"); + const svg = create("\n" + texData, 0.3, false); + typogram.appendChild(svg); + parent.appendChild(typogram); + parent.removeChild(elem.parentElement); + }); + } +}); diff --git a/assets/js/vega-setup.js b/assets/js/vega-setup.js new file mode 100644 index 0000000000000..058ea3d9a4bcf --- /dev/null +++ b/assets/js/vega-setup.js @@ -0,0 +1,24 @@ +let vegaTheme = determineComputedTheme(); + +/* Create vega lite chart as another node and hide the code block, appending the vega lite node after it + this is done to enable retrieving the code again when changing theme between light/dark */ +document.addEventListener("readystatechange", () => { + if (document.readyState === "complete") { + document.querySelectorAll("pre>code.language-vega_lite").forEach((elem) => { + const jsonData = elem.textContent; + const backup = elem.parentElement; + backup.classList.add("unloaded"); + /* create vega lite node */ + let chartElement = document.createElement("div"); + chartElement.classList.add("vega-lite"); + backup.after(chartElement); + + /* Embed the visualization in the container */ + if (vegaTheme === "dark") { + vegaEmbed(chartElement, JSON.parse(jsonData), { theme: "dark" }); + } else { + vegaEmbed(chartElement, JSON.parse(jsonData)); + } + }); + } +}); diff --git a/assets/js/venobox-setup.js b/assets/js/venobox-setup.js new file mode 100644 index 0000000000000..582693ee2bb60 --- /dev/null +++ b/assets/js/venobox-setup.js @@ -0,0 +1,5 @@ +document.addEventListener("readystatechange", () => { + if (document.readyState === "complete") { + new VenoBox(); + } +}); diff --git a/assets/js/wechat.js b/assets/js/wechat.js new file mode 100644 index 0000000000000..2fa51aadd0269 --- /dev/null +++ b/assets/js/wechat.js @@ -0,0 +1,14 @@ +var wechatModal = document.getElementById("WeChatMod"); +var wechatBtn = document.querySelectorAll('[id="WeChatBtn"]'); + +for (var i = 0; i < wechatBtn.length; i++) { + wechatBtn[i].onclick = function () { + wechatModal.style.display = "block"; + }; +} + +window.onclick = function (event) { + if (event.target == wechatModal) { + wechatModal.style.display = "none"; + } +}; diff --git a/assets/webfonts/fa-brands-400.ttf b/assets/webfonts/fa-brands-400.ttf index 08362f3424c69..c739a396546d2 100644 Binary files a/assets/webfonts/fa-brands-400.ttf and b/assets/webfonts/fa-brands-400.ttf differ diff --git a/assets/webfonts/fa-brands-400.woff2 b/assets/webfonts/fa-brands-400.woff2 index d84512f3897d3..cb888623ca5a0 100644 Binary files a/assets/webfonts/fa-brands-400.woff2 and b/assets/webfonts/fa-brands-400.woff2 differ diff --git a/assets/webfonts/fa-regular-400.ttf b/assets/webfonts/fa-regular-400.ttf index 7f9b53c1df781..314040946f427 100644 Binary files a/assets/webfonts/fa-regular-400.ttf and b/assets/webfonts/fa-regular-400.ttf differ diff --git a/assets/webfonts/fa-regular-400.woff2 b/assets/webfonts/fa-regular-400.woff2 index 452b49c0407e7..fc0a2168aa569 100644 Binary files a/assets/webfonts/fa-regular-400.woff2 and b/assets/webfonts/fa-regular-400.woff2 differ diff --git a/assets/webfonts/fa-solid-900.ttf b/assets/webfonts/fa-solid-900.ttf index e7e2ecfa34115..f3b468e5b2558 100644 Binary files a/assets/webfonts/fa-solid-900.ttf and b/assets/webfonts/fa-solid-900.ttf differ diff --git a/assets/webfonts/fa-solid-900.woff2 b/assets/webfonts/fa-solid-900.woff2 index fec1fae77d486..42eaaa697f0e5 100644 Binary files a/assets/webfonts/fa-solid-900.woff2 and b/assets/webfonts/fa-solid-900.woff2 differ diff --git a/assets/webfonts/fa-v4compatibility.ttf b/assets/webfonts/fa-v4compatibility.ttf index 577b7a00cfa76..ba780aa899516 100644 Binary files a/assets/webfonts/fa-v4compatibility.ttf and b/assets/webfonts/fa-v4compatibility.ttf differ diff --git a/assets/webfonts/fa-v4compatibility.woff2 b/assets/webfonts/fa-v4compatibility.woff2 index 73931680d3a50..bb61b589478d8 100644 Binary files a/assets/webfonts/fa-v4compatibility.woff2 and b/assets/webfonts/fa-v4compatibility.woff2 differ diff --git a/bin/entry_point.sh b/bin/entry_point.sh index b0759545fe980..e43a1eff46554 100755 --- a/bin/entry_point.sh +++ b/bin/entry_point.sh @@ -21,6 +21,7 @@ manage_gemfile_lock() { start_jekyll() { manage_gemfile_lock + bundle check || bundle install bundle exec jekyll serve --watch --port=8080 --host=0.0.0.0 --livereload --verbose --trace --force_polling & } diff --git a/bin/update_scholar_citations.py b/bin/update_scholar_citations.py new file mode 100644 index 0000000000000..2986ec63d24dd --- /dev/null +++ b/bin/update_scholar_citations.py @@ -0,0 +1,133 @@ +#!/usr/bin/env python + +import os +import sys +import yaml +from datetime import datetime +from scholarly import scholarly + + +def load_scholar_user_id() -> str: + """Load the Google Scholar user ID from the configuration file.""" + config_file = "_data/socials.yml" + if not os.path.exists(config_file): + print( + f"Configuration file {config_file} not found. Please ensure the file exists and contains your Google Scholar user ID." + ) + sys.exit(1) + try: + with open(config_file, "r") as f: + config = yaml.safe_load(f) + scholar_user_id = config.get("scholar_userid") + if not scholar_user_id: + print( + "No 'scholar_userid' found in the configuration file. Please add 'scholar_userid' to _data/socials.yml." + ) + sys.exit(1) + return scholar_user_id + except yaml.YAMLError as e: + print( + f"Error parsing YAML file {config_file}: {e}. Please check the file for correct YAML syntax." + ) + sys.exit(1) + + +SCHOLAR_USER_ID: str = load_scholar_user_id() +OUTPUT_FILE: str = "_data/citations.yml" + + +def get_scholar_citations() -> None: + """Fetch and update Google Scholar citation data.""" + print(f"Fetching citations for Google Scholar ID: {SCHOLAR_USER_ID}") + today = datetime.now().strftime("%Y-%m-%d") + existing_data = None + + # Check if the output file was already updated today + if os.path.exists(OUTPUT_FILE): + try: + with open(OUTPUT_FILE, "r") as f: + existing_data = yaml.safe_load(f) + if ( + existing_data + and "metadata" in existing_data + and "last_updated" in existing_data["metadata"] + ): + print(f"Last updated on: {existing_data['metadata']['last_updated']}") + if existing_data["metadata"]["last_updated"] == today: + print("Citations data is already up-to-date. Skipping fetch.") + return + except Exception as e: + print( + f"Warning: Could not read existing citation data from {OUTPUT_FILE}: {e}. The file may be missing or corrupted." + ) + + citation_data = {"metadata": {"last_updated": today}, "papers": {}} + + scholarly.set_timeout(15) + scholarly.set_retries(3) + try: + author = scholarly.search_author_id(SCHOLAR_USER_ID) + author_data = scholarly.fill(author) + except Exception as e: + print( + f"Error fetching author data from Google Scholar for user ID '{SCHOLAR_USER_ID}': {e}. Please check your internet connection and Scholar user ID." + ) + sys.exit(1) + + if not author_data: + print( + f"Could not fetch author data for user ID '{SCHOLAR_USER_ID}'. Please verify the Scholar user ID and try again." + ) + sys.exit(1) + + if "publications" not in author_data: + print(f"No publications found in author data for user ID '{SCHOLAR_USER_ID}'.") + sys.exit(1) + + for pub in author_data["publications"]: + try: + pub_id = pub.get("pub_id") or pub.get("author_pub_id") + if not pub_id: + print( + f"Warning: No ID found for publication: {pub.get('bib', {}).get('title', 'Unknown')}. This publication will be skipped." + ) + continue + + title = pub.get("bib", {}).get("title", "Unknown Title") + year = pub.get("bib", {}).get("pub_year", "Unknown Year") + citations = pub.get("num_citations", 0) + + print(f"Found: {title} ({year}) - Citations: {citations}") + + citation_data["papers"][pub_id] = { + "title": title, + "year": year, + "citations": citations, + } + except Exception as e: + print( + f"Error processing publication '{pub.get('bib', {}).get('title', 'Unknown')}': {e}. This publication will be skipped." + ) + + # Compare new data with existing data + if existing_data and existing_data.get("papers") == citation_data["papers"]: + print("No changes in citation data. Skipping file update.") + return + + try: + with open(OUTPUT_FILE, "w") as f: + yaml.dump(citation_data, f, width=1000, sort_keys=True) + print(f"Citation data saved to {OUTPUT_FILE}") + except Exception as e: + print( + f"Error writing citation data to {OUTPUT_FILE}: {e}. Please check file permissions and disk space." + ) + sys.exit(1) + + +if __name__ == "__main__": + try: + get_scholar_citations() + except Exception as e: + print(f"Unexpected error: {e}") + sys.exit(1) diff --git a/docker-compose.yml b/docker-compose.yml index e299f4ae9c790..ec9539072f7c2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ # this file uses prebuilt image in dockerhub services: jekyll: - image: amirpourmand/al-folio:v0.12.1 + image: amirpourmand/al-folio:v0.14.7 build: . # uncomment these if you are having this issue with the build: # /usr/local/bundle/gems/jekyll-4.3.4/lib/jekyll/site.rb:509:in `initialize': Permission denied @ rb_sysopen - /srv/jekyll/.jekyll-cache/.gitignore (Errno::EACCES) diff --git a/package-lock.json b/package-lock.json index 3bcfaa6b74ea4..4327cd9cc1060 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "main", + "name": "al-folio", "lockfileVersion": 3, "requires": true, "packages": { @@ -10,10 +10,11 @@ } }, "node_modules/@shopify/liquid-html-parser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@shopify/liquid-html-parser/-/liquid-html-parser-2.0.0.tgz", - "integrity": "sha512-1jqA50g2/WFTnnBnaiaNVammkJLIkt+z2QU2stFN2ljnYR28ln3q0VqlXqGNS0uRojEFaVNYrJl95IzAmjP5bQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@shopify/liquid-html-parser/-/liquid-html-parser-2.2.0.tgz", + "integrity": "sha512-hD0XV+Re9BC3yMOshHCwU94LagW7LQTWPdtpU0IE/pMbco+ke7Hir1Ad7eloHAgzR+6iw4LzDEFuHFpKZWmGKw==", "dev": true, + "license": "MIT", "dependencies": { "line-column": "^1.0.2", "ohm-js": "^16.3.0" @@ -24,6 +25,7 @@ "resolved": "https://registry.npmjs.org/@shopify/prettier-plugin-liquid/-/prettier-plugin-liquid-1.4.0.tgz", "integrity": "sha512-Fd0QiPi0bpSapUG0plri1+bLew9j//Q0MFKkBjkIG4RTJC76dycVysf5Dy7JvbvIjSJ4YFxaT0PBW5v9O7JItQ==", "dev": true, + "license": "MIT", "dependencies": { "@shopify/liquid-html-parser": "^2.0.0", "html-styles": "^1.0.0" @@ -36,19 +38,22 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/html-styles/-/html-styles-1.0.0.tgz", "integrity": "sha512-cDl5dcj73oI4Hy0DSUNh54CAwslNLJRCCoO+RNkVo+sBrjA/0+7E/xzvj3zH/GxbbBLGJhE0hBe1eg+0FINC6w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, + "license": "MIT", "dependencies": { "isarray": "1.0.0" }, @@ -61,6 +66,7 @@ "resolved": "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz", "integrity": "sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww==", "dev": true, + "license": "MIT", "dependencies": { "isarray": "^1.0.0", "isobject": "^2.0.0" @@ -71,6 +77,7 @@ "resolved": "https://registry.npmjs.org/ohm-js/-/ohm-js-16.6.0.tgz", "integrity": "sha512-X9P4koSGa7swgVQ0gt71UCYtkAQGOjciJPJAz74kDxWt8nXbH5HrDOQG6qBDH7SR40ktNv4x61BwpTDE9q4lRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.1" } @@ -80,6 +87,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, diff --git a/requirements.txt b/requirements.txt index f43bea86b54e6..78b0dcfa6e9e1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,3 @@ nbconvert +pyyaml +scholarly diff --git a/serve-build-compose.bat b/serve-build-compose.bat index fc393b09f8d0b..e98a1d92eb598 100644 --- a/serve-build-compose.bat +++ b/serve-build-compose.bat @@ -1,2 +1,2 @@ -docker-compose build --no-cache +docker compose build --no-cache PAUSE diff --git a/serve-compose.command b/serve-compose.command index 0dc76e3700aae..e5a694fd620e9 100755 --- a/serve-compose.command +++ b/serve-compose.command @@ -3,4 +3,4 @@ # Move to the folder this script is in cd "$(dirname "$0")" -docker-compose up +docker compose up diff --git a/serve-compose.sh b/serve-compose.sh index 83ed0d06d3792..59f1c5d893a49 100755 --- a/serve-compose.sh +++ b/serve-compose.sh @@ -1 +1 @@ -docker-compose up +docker compose up diff --git a/serve.bat b/serve.bat index 9e3457e86c742..99d8fd4795ac6 100644 --- a/serve.bat +++ b/serve.bat @@ -2,6 +2,6 @@ REM Stop all running Docker containers FOR /f "tokens=*" %%i IN ('docker ps -q') DO docker stop %%i REM Serve Jekyll with bundler exec to resolve gem conflicts -docker run --rm -v "%cd%:/srv/jekyll" -p "8080:8080" -p "35729:35729" -it -e JEKYLL_ENV=development amirpourmand/al-folio:v0.12.1 /bin/sh -c "bundle update && bundle exec jekyll serve --host 0.0.0.0 --port 8080 --watch --livereload --force_polling" +docker compose up PAUSE \ No newline at end of file diff --git a/serve.command b/serve.command index 7c8f20599dc2a..e5a694fd620e9 100755 --- a/serve.command +++ b/serve.command @@ -3,4 +3,4 @@ # Move to the folder this script is in cd "$(dirname "$0")" -docker run --rm -v "$(pwd):/srv/jekyll" -p "8080:8080" -it amirpourmand/al-folio:v0.12.1 /bin/sh -c "bundle update && bundle exec jekyll serve --host 0.0.0.0 --port 8080 --watch --livereload --force_polling" +docker compose up diff --git a/serve.sh b/serve.sh index 1cf599337da2f..59f1c5d893a49 100755 --- a/serve.sh +++ b/serve.sh @@ -1 +1 @@ -docker run --rm -v "$(pwd):/srv/jekyll" -p "8080:8080" -it amirpourmand/al-folio:v0.12.1 /bin/sh -c "bundle update && bundle exec jekyll serve --host 0.0.0.0 --port 8080 --watch --livereload --force_polling" +docker compose up