unaltraweb 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +20 -0
- data/Makefile +412 -0
- data/README.md +226 -0
- data/_config.yml +842 -0
- data/_data/i18n/ca.yml +278 -0
- data/_data/i18n/en.yml +278 -0
- data/_data/i18n/es.yml +278 -0
- data/_includes/audio.liquid +30 -0
- data/_includes/bib_search.liquid +5 -0
- data/_includes/blog-list.liquid +66 -0
- data/_includes/book-citation.liquid +33 -0
- data/_includes/citation.liquid +26 -0
- data/_includes/custom_head.liquid +3 -0
- data/_includes/custom_scripts.liquid +5 -0
- data/_includes/cv/list.liquid +5 -0
- data/_includes/cv/list_groups.liquid +51 -0
- data/_includes/cv/map.liquid +29 -0
- data/_includes/cv/nested_list.liquid +16 -0
- data/_includes/cv/time_table.liquid +118 -0
- data/_includes/cv-download-card.liquid +26 -0
- data/_includes/developer-mode-switcher.liquid +24 -0
- data/_includes/disqus.liquid +13 -0
- data/_includes/distill_scripts.liquid +298 -0
- data/_includes/documentation-download-detail.liquid +76 -0
- data/_includes/documentation-downloads.liquid +71 -0
- data/_includes/documentation-profile-attributes.liquid +4 -0
- data/_includes/documentation-section-toc.liquid +9 -0
- data/_includes/documentation-sidebar.liquid +112 -0
- data/_includes/figure.liquid +87 -0
- data/_includes/footer.liquid +66 -0
- data/_includes/giscus.liquid +25 -0
- data/_includes/head.liquid +220 -0
- data/_includes/header.liquid +544 -0
- data/_includes/latest_posts.liquid +61 -0
- data/_includes/localized-date.liquid +5 -0
- data/_includes/manual-bibliography.liquid +2 -0
- data/_includes/manual-featured-readings.liquid +12 -0
- data/_includes/manual-other-readings.liquid +12 -0
- data/_includes/manual-page-toc.liquid +11 -0
- data/_includes/manual-sidebar.liquid +58 -0
- data/_includes/manual-teachers.liquid +74 -0
- data/_includes/metadata.liquid +278 -0
- data/_includes/news.liquid +48 -0
- data/_includes/newsletter.liquid +68 -0
- data/_includes/page-hero.liquid +96 -0
- data/_includes/page-link.liquid +8 -0
- data/_includes/pagination.liquid +22 -0
- data/_includes/post-reading-time.liquid +29 -0
- data/_includes/previous-next.liquid +37 -0
- data/_includes/profile-card.liquid +49 -0
- data/_includes/profile-feature-matrix.liquid +75 -0
- data/_includes/profile-highlights.liquid +122 -0
- data/_includes/project-grid.liquid +26 -0
- data/_includes/project-resource-link.liquid +45 -0
- data/_includes/project-resources.liquid +21 -0
- data/_includes/projects.liquid +38 -0
- data/_includes/projects_horizontal.liquid +37 -0
- data/_includes/publications-metrics-summary.liquid +69 -0
- data/_includes/publications-summary.liquid +127 -0
- data/_includes/reading-biblio-controls.liquid +65 -0
- data/_includes/reading-cover-card.liquid +93 -0
- data/_includes/reading-rating.liquid +11 -0
- data/_includes/recommended-readings.liquid +30 -0
- data/_includes/related_posts.liquid +39 -0
- data/_includes/repository/repo.liquid +48 -0
- data/_includes/repository/repo_trophies.liquid +44 -0
- data/_includes/repository/repo_user.liquid +35 -0
- data/_includes/resume/awards.liquid +19 -0
- data/_includes/resume/basics.liquid +28 -0
- data/_includes/resume/certificates.liquid +35 -0
- data/_includes/resume/education.liquid +54 -0
- data/_includes/resume/interests.liquid +34 -0
- data/_includes/resume/languages.liquid +31 -0
- data/_includes/resume/projects.liquid +32 -0
- data/_includes/resume/publications.liquid +28 -0
- data/_includes/resume/references.liquid +31 -0
- data/_includes/resume/skills.liquid +33 -0
- data/_includes/resume/volunteer.liquid +52 -0
- data/_includes/resume/work.liquid +52 -0
- data/_includes/scripts.liquid +364 -0
- data/_includes/search-data.js.liquid +341 -0
- data/_includes/selected_papers.liquid +3 -0
- data/_includes/t.liquid +31 -0
- data/_includes/team-grid.liquid +172 -0
- data/_includes/video.liquid +97 -0
- data/_layouts/about.liquid +93 -0
- data/_layouts/archive.liquid +45 -0
- data/_layouts/bib.liquid +677 -0
- data/_layouts/book-review.liquid +225 -0
- data/_layouts/book-shelf.liquid +66 -0
- data/_layouts/cv.liquid +127 -0
- data/_layouts/default.liquid +70 -0
- data/_layouts/distill.liquid +132 -0
- data/_layouts/documentation-download-detail.liquid +5 -0
- data/_layouts/documentation-home.liquid +100 -0
- data/_layouts/documentation-page.liquid +45 -0
- data/_layouts/manual-bib.liquid +73 -0
- data/_layouts/manual-chapter.liquid +99 -0
- data/_layouts/manual-featured-bib.liquid +100 -0
- data/_layouts/manual-home.liquid +120 -0
- data/_layouts/none.liquid +1 -0
- data/_layouts/outputs.liquid +29 -0
- data/_layouts/page.liquid +52 -0
- data/_layouts/post.liquid +95 -0
- data/_layouts/profile.liquid +36 -0
- data/_layouts/profiles.liquid +36 -0
- data/_layouts/project.liquid +7 -0
- data/_layouts/repositories.liquid +58 -0
- data/_layouts/theses.liquid +126 -0
- data/_plugins/bibliography_profiles.rb +164 -0
- data/_plugins/callouts.rb +104 -0
- data/_plugins/code_blocks.rb +277 -0
- data/_plugins/computation_figure_images.rb +266 -0
- data/_plugins/computation_sources.rb +42 -0
- data/_plugins/content_search_index.rb +210 -0
- data/_plugins/details.rb +23 -0
- data/_plugins/external-posts.rb +124 -0
- data/_plugins/figure_captions.rb +800 -0
- data/_plugins/file-exists.rb +22 -0
- data/_plugins/google-scholar-citations.rb +86 -0
- data/_plugins/hide-custom-bibtex.rb +18 -0
- data/_plugins/inspirehep-citations.rb +57 -0
- data/_plugins/localized_visual_sources.rb +145 -0
- data/_plugins/manual_release_metadata.rb +47 -0
- data/_plugins/mermaid_mmd_images.rb +233 -0
- data/_plugins/profile-pages.rb +28 -0
- data/_plugins/remove-accents.rb +32 -0
- data/_plugins/reproducible_build_time.rb +55 -0
- data/_plugins/search-data.rb +83 -0
- data/_plugins/theme-cache-bust.rb +56 -0
- data/_plugins/vega_visual_images.rb +290 -0
- data/_plugins/web_capture_images.rb +154 -0
- data/_sass/_base.scss +2133 -0
- data/_sass/_blog.scss +67 -0
- data/_sass/_callouts.scss +100 -0
- data/_sass/_custom.scss +437 -0
- data/_sass/_cv.scss +274 -0
- data/_sass/_developer.scss +97 -0
- data/_sass/_distill.scss +185 -0
- data/_sass/_documentation.scss +2220 -0
- data/_sass/_layout.scss +218 -0
- data/_sass/_manual.scss +2691 -0
- data/_sass/_profile.scss +323 -0
- data/_sass/_projects.scss +163 -0
- data/_sass/_reading.scss +465 -0
- data/_sass/_site-custom.scss +3 -0
- data/_sass/_tabs.scss +48 -0
- data/_sass/_team.scss +230 -0
- data/_sass/_themes.scss +254 -0
- data/_sass/_typograms.scss +132 -0
- data/_sass/_variables.scss +52 -0
- data/_sass/font-awesome/_animated.scss +152 -0
- data/_sass/font-awesome/_bordered-pulled.scss +20 -0
- data/_sass/font-awesome/_core.scss +49 -0
- data/_sass/font-awesome/_fixed-width.scss +7 -0
- data/_sass/font-awesome/_functions.scss +57 -0
- data/_sass/font-awesome/_icons.scss +13 -0
- data/_sass/font-awesome/_list.scss +18 -0
- data/_sass/font-awesome/_mixins.scss +65 -0
- data/_sass/font-awesome/_rotated-flipped.scss +31 -0
- data/_sass/font-awesome/_screen-reader.scss +14 -0
- data/_sass/font-awesome/_shims.scss +1578 -0
- data/_sass/font-awesome/_sizing.scss +16 -0
- data/_sass/font-awesome/_stacked.scss +32 -0
- data/_sass/font-awesome/_variables.scss +5044 -0
- data/_sass/font-awesome/brands.scss +30 -0
- data/_sass/font-awesome/fontawesome.scss +21 -0
- data/_sass/font-awesome/regular.scss +27 -0
- data/_sass/font-awesome/solid.scss +27 -0
- data/_sass/font-awesome/v4-shims.scss +11 -0
- data/_sass/tabler-icons/tabler-icons-filled.scss +1646 -0
- data/_sass/tabler-icons/tabler-icons-outline.scss +9859 -0
- data/_sass/tabler-icons/tabler-icons.scss +11463 -0
- data/_scripts/cronitor-analytics-setup.js +9 -0
- data/_scripts/giscus-setup.js +48 -0
- data/_scripts/google-analytics-setup.js +9 -0
- data/_scripts/open-panel-analytics-setup.js +14 -0
- data/_scripts/photoswipe-setup.js +11 -0
- data/assets/audio/epicaly-short-113909.mp3 +0 -0
- data/assets/bibliography/2018-12-22-distill.bib +7 -0
- data/assets/css/academicons.min.css +1 -0
- data/assets/css/bootstrap-toc.min.css +4 -0
- data/assets/css/bootstrap.min.css +7 -0
- data/assets/css/bootstrap.min.css.map +1 -0
- data/assets/css/jekyll-pygments-themes-github.css +209 -0
- data/assets/css/jekyll-pygments-themes-native.css +232 -0
- data/assets/css/jupyter-grade3.css +3758 -0
- data/assets/css/jupyter-monokai.css +3758 -0
- data/assets/css/jupyter.css +383 -0
- data/assets/css/main.scss +36 -0
- data/assets/css/mdb.min.css +48 -0
- data/assets/css/mdb.min.css.map +1 -0
- data/assets/css/scholar-icons.css +386 -0
- data/assets/fonts/academicons.ttf +0 -0
- data/assets/fonts/academicons.woff +0 -0
- data/assets/fonts/scholar-icons.ttf +0 -0
- data/assets/fonts/scholar-icons.woff +0 -0
- data/assets/fonts/tabler-icons-filled.ttf +0 -0
- data/assets/fonts/tabler-icons-filled.woff +0 -0
- data/assets/fonts/tabler-icons-filled.woff2 +0 -0
- data/assets/fonts/tabler-icons-outline.ttf +0 -0
- data/assets/fonts/tabler-icons-outline.woff +0 -0
- data/assets/fonts/tabler-icons-outline.woff2 +0 -0
- data/assets/fonts/tabler-icons.ttf +0 -0
- data/assets/fonts/tabler-icons.woff +0 -0
- data/assets/fonts/tabler-icons.woff2 +0 -0
- data/assets/html/relativity.html +15 -0
- data/assets/img/1.jpg +0 -0
- data/assets/img/10.jpg +0 -0
- data/assets/img/11.jpg +0 -0
- data/assets/img/12.jpg +0 -0
- data/assets/img/2.jpg +0 -0
- data/assets/img/3.jpg +0 -0
- data/assets/img/4.jpg +0 -0
- data/assets/img/5.jpg +0 -0
- data/assets/img/6.jpg +0 -0
- data/assets/img/7.jpg +0 -0
- data/assets/img/8.jpg +0 -0
- data/assets/img/9.jpg +0 -0
- data/assets/img/book_covers/the_godfather.jpg +0 -0
- data/assets/img/brand/dosquartsdedocs-logo-cafe.svg +31 -0
- data/assets/img/brand/dosquartsdedocs-logo-footer-cafe.svg +31 -0
- data/assets/img/brand/dosquartsdedocs-logo-white.svg +31 -0
- data/assets/img/brand/dosquartsdedocs-logo.svg +31 -0
- data/assets/img/prof_pic.jpg +0 -0
- data/assets/img/prof_pic_color.png +0 -0
- data/assets/img/profile-placeholder.svg +8 -0
- data/assets/img/publication_preview/brownian-motion.gif +0 -0
- data/assets/img/publication_preview/goodchild1992-gis-cover.jpg +0 -0
- data/assets/img/publication_preview/gutierrez2020-jtrg-preview.jpg +0 -0
- data/assets/img/publication_preview/harvey1989-postmodernity-cover.jpg +0 -0
- data/assets/img/publication_preview/tobler1970-economic-geography-cover.jpg +0 -0
- data/assets/img/publication_preview/tuan1977-space-place-cover.jpg +0 -0
- data/assets/img/publication_preview/wave-mechanics.gif +0 -0
- data/assets/img/publication_preview/zaragozi2025-rooftop-pv-preview.jpg +0 -0
- data/assets/img/rhino.png +0 -0
- data/assets/img/team/aaron-gutierrez.png +0 -0
- data/assets/img/team/alba-font.png +0 -0
- data/assets/img/team/alba-viana.png +0 -0
- data/assets/img/team/alejandro-gonzalez.png +0 -0
- data/assets/img/team/ana-pastor.png +0 -0
- data/assets/img/team/antoni-domenech.png +0 -0
- data/assets/img/team/benito-zaragozi.png +0 -0
- data/assets/img/team/cinta-sanz.png +0 -0
- data/assets/img/team/daniel-miravet.png +0 -0
- data/assets/img/team/eugenia-altamirano.png +0 -0
- data/assets/img/team/fiammetta-brandajs.png +0 -0
- data/assets/img/team/francesc-gonzalez.png +0 -0
- data/assets/img/team/isabel-paulino.png +0 -0
- data/assets/img/team/joan-borras.png +0 -0
- data/assets/img/team/julie-wilson.png +0 -0
- data/assets/img/team/liliana-sole.png +0 -0
- data/assets/img/team/maria-casado.png +0 -0
- data/assets/img/team/maria-medina.png +0 -0
- data/assets/img/team/marta-nello.png +0 -0
- data/assets/img/team/mogrify +1 -0
- data/assets/img/team/oscar-saladie.png +0 -0
- data/assets/img/team/paolo-russo.png +0 -0
- data/assets/img/team/raquel-santos.png +0 -0
- data/assets/img/team/salvador-anton.png +0 -0
- data/assets/img/team/sunsi-huertas.png +0 -0
- data/assets/img/team/user-placeholder.png +0 -0
- data/assets/img/team/wilbert-den-hoed.png +0 -0
- data/assets/img/team/xavier-delclos.png +0 -0
- data/assets/img/template_error.png +0 -0
- data/assets/js/bibsearch.js +70 -0
- data/assets/js/bootstrap-toc.min.js +5 -0
- data/assets/js/bootstrap.bundle.min.js +7 -0
- data/assets/js/bootstrap.bundle.min.js.map +1 -0
- data/assets/js/callouts.js +115 -0
- data/assets/js/chartjs-setup.js +14 -0
- data/assets/js/common.js +117 -0
- data/assets/js/content-search-match.js +159 -0
- data/assets/js/content-search.js +441 -0
- data/assets/js/copy_code.js +60 -0
- data/assets/js/custom.js +6 -0
- data/assets/js/developer-mode.js +103 -0
- data/assets/js/diff2html-setup.js +20 -0
- data/assets/js/distillpub/overrides.js +27 -0
- data/assets/js/distillpub/template.v2.js +9616 -0
- data/assets/js/distillpub/template.v2.js.map +1 -0
- data/assets/js/distillpub/transforms.v2.js +14557 -0
- data/assets/js/distillpub/transforms.v2.js.map +1 -0
- data/assets/js/documentation.js +435 -0
- data/assets/js/echarts-setup.js +29 -0
- data/assets/js/highlight-search-term.js +110 -0
- data/assets/js/jupyter_new_tab.js +18 -0
- data/assets/js/leaflet-setup.js +22 -0
- data/assets/js/manual.js +308 -0
- data/assets/js/masonry.js +12 -0
- data/assets/js/mathjax-setup.js +46 -0
- data/assets/js/mermaid-setup.js +37 -0
- data/assets/js/newsletter.js +105 -0
- data/assets/js/no_defer.js +24 -0
- data/assets/js/plotly-setup.js +52 -0
- data/assets/js/profile-nav.js +92 -0
- data/assets/js/progress-bar.js +73 -0
- data/assets/js/pseudocode-setup.js +18 -0
- data/assets/js/search/base-styles.min.js +286 -0
- data/assets/js/search/command-score.min.js +7 -0
- data/assets/js/search/hotkeys-js/hotkeys.esm.min.js +18 -0
- data/assets/js/search/lit/decorators.min.js +7 -0
- data/assets/js/search/lit/directives/class-map.min.js +7 -0
- data/assets/js/search/lit/directives/join.min.js +7 -0
- data/assets/js/search/lit/directives/live.min.js +7 -0
- data/assets/js/search/lit/directives/ref.min.js +7 -0
- data/assets/js/search/lit/directives/repeat.min.js +7 -0
- data/assets/js/search/lit/directives/unsafe-html.min.js +7 -0
- data/assets/js/search/lit/index.min.js +7 -0
- data/assets/js/search/lit-element/lit-element.min.js +12 -0
- data/assets/js/search/lit-html/directives/class-map.min.js +22 -0
- data/assets/js/search/lit-html/directives/join.min.js +12 -0
- data/assets/js/search/lit-html/directives/live.min.js +28 -0
- data/assets/js/search/lit-html/directives/ref.min.js +32 -0
- data/assets/js/search/lit-html/directives/repeat.min.js +27 -0
- data/assets/js/search/lit-html/directives/unsafe-html.min.js +22 -0
- data/assets/js/search/lit-html/is-server.min.js +12 -0
- data/assets/js/search/lit-html/lit-html.min.js +12 -0
- data/assets/js/search/ninja-action.min.js +101 -0
- data/assets/js/search/ninja-footer.min.js +62 -0
- data/assets/js/search/ninja-header.min.js +78 -0
- data/assets/js/search/ninja-keys.min.js +39 -0
- data/assets/js/search/reactive-element/decorators/custom-element.min.js +12 -0
- data/assets/js/search/reactive-element/decorators/event-options.min.js +12 -0
- data/assets/js/search/reactive-element/decorators/property.min.js +22 -0
- data/assets/js/search/reactive-element/decorators/query-all.min.js +17 -0
- data/assets/js/search/reactive-element/decorators/query-assigned-elements.min.js +17 -0
- data/assets/js/search/reactive-element/decorators/query-assigned-nodes.min.js +17 -0
- data/assets/js/search/reactive-element/decorators/query-async.min.js +17 -0
- data/assets/js/search/reactive-element/decorators/query.min.js +17 -0
- data/assets/js/search/reactive-element/decorators/state.min.js +27 -0
- data/assets/js/search/reactive-element/reactive-element.min.js +17 -0
- data/assets/js/search-setup.js +17 -0
- data/assets/js/shortcut-key.js +11 -0
- data/assets/js/tabs.min.js +5 -0
- data/assets/js/theme.js +314 -0
- data/assets/js/tooltips-setup.js +3 -0
- data/assets/js/typograms.js +1341 -0
- data/assets/js/vanilla-back-to-top.min.js +1 -0
- data/assets/js/vega-setup.js +24 -0
- data/assets/js/venobox-setup.js +5 -0
- data/assets/js/wechat.js +14 -0
- data/assets/js/zoom.js +15 -0
- data/assets/json/resume.json +98 -0
- data/assets/json/table_data.json +128 -0
- data/assets/jupyter/blog.ipynb +48 -0
- data/assets/pdf/example_pdf.pdf +0 -0
- data/assets/plotly/demo.html +72 -0
- data/assets/video/pexels-engin-akyurt-6069112-960x540-30fps.mp4 +0 -0
- data/assets/webfonts/fa-brands-400.ttf +0 -0
- data/assets/webfonts/fa-brands-400.woff2 +0 -0
- data/assets/webfonts/fa-regular-400.ttf +0 -0
- data/assets/webfonts/fa-regular-400.woff2 +0 -0
- data/assets/webfonts/fa-solid-900.ttf +0 -0
- data/assets/webfonts/fa-solid-900.woff2 +0 -0
- data/assets/webfonts/fa-v4compatibility.ttf +0 -0
- data/assets/webfonts/fa-v4compatibility.woff2 +0 -0
- data/docs/Gemfile +5 -0
- data/docs/_config.yml +83 -0
- data/docs/_documentation/en/01-quick-start.md +115 -0
- data/docs/_documentation/en/02-tools.md +146 -0
- data/docs/_documentation/en/03-usage.md +107 -0
- data/docs/_documentation/en/04-jekyll-basics.md +51 -0
- data/docs/_documentation/en/05-pages-collections.md +68 -0
- data/docs/_documentation/en/06-github-web-editing.md +92 -0
- data/docs/_documentation/en/10-profiles.md +125 -0
- data/docs/_documentation/en/11-unaltreselfie.md +39 -0
- data/docs/_documentation/en/12-unaltreprojecte.md +38 -0
- data/docs/_documentation/en/13-unaltremanual.md +237 -0
- data/docs/_documentation/en/14-unaltredocs.md +92 -0
- data/docs/_documentation/en/15-profile-checklist.md +39 -0
- data/docs/_documentation/en/20-syntax.md +353 -0
- data/docs/_documentation/en/21-themes.md +103 -0
- data/docs/_documentation/en/22-feature-reference.md +56 -0
- data/docs/_documentation/en/23-front-matter.md +51 -0
- data/docs/_documentation/en/24-data-files.md +28 -0
- data/docs/_documentation/en/30-customization.md +448 -0
- data/docs/_documentation/en/31-template.md +55 -0
- data/docs/_documentation/en/32-development.md +108 -0
- data/docs/_documentation/en/33-reusable-workflows.md +136 -0
- data/docs/_documentation/en/40-distribution.md +164 -0
- data/docs/_documentation/en/41-bibliometrics.md +137 -0
- data/docs/_documentation/en/42-docker-image.md +185 -0
- data/docs/_documentation/en/50-faq.md +33 -0
- data/docs/_pages/ca/index.md +35 -0
- data/docs/_pages/en/index.md +35 -0
- data/docs/_pages/es/index.md +35 -0
- data/docs/agents/action-prompts/00-start-site-session.txt +10 -0
- data/docs/agents/action-prompts/05-create-new-web.txt +5 -0
- data/docs/agents/action-prompts/10-content-update.txt +9 -0
- data/docs/agents/action-prompts/15-edit-default-content.txt +8 -0
- data/docs/agents/action-prompts/20-manual-teaching-materials.txt +18 -0
- data/docs/agents/action-prompts/22-manual-style-audit.txt +14 -0
- data/docs/agents/action-prompts/23-manual-structure-audit.txt +17 -0
- data/docs/agents/action-prompts/25-translation-prepublish.txt +8 -0
- data/docs/agents/action-prompts/30-project-site-update.txt +7 -0
- data/docs/agents/action-prompts/40-documentation-update.txt +7 -0
- data/docs/agents/action-prompts/50-bibliography-entry.txt +7 -0
- data/docs/agents/action-prompts/60-bibliometrics-refresh.txt +7 -0
- data/docs/agents/action-prompts/70-build-and-review.txt +12 -0
- data/docs/agents/manual-authoring-components.md +255 -0
- data/docs/agents/mcp-contract.md +162 -0
- data/docs/agents/quarto-computation-adoption.md +102 -0
- data/docs/assets/img/unaltraweb-docs-hero.svg +36 -0
- data/lib/unaltraweb/version.rb +8 -0
- data/lib/unaltraweb.rb +31 -0
- data/requirements.txt +5 -0
- data/scripts/biblio/fetch_scimago_csv.sh +126 -0
- data/scripts/biblio/metrics_common.py +154 -0
- data/scripts/biblio/metrics_merge_meta.py +73 -0
- data/scripts/biblio/metrics_update.py +826 -0
- data/scripts/computations/python/Dockerfile +37 -0
- data/scripts/computations/r/Dockerfile +31 -0
- data/scripts/computations/render.py +1267 -0
- data/scripts/cv/render_pdf_preview.sh +36 -0
- data/scripts/deploy/publish_branch.sh +80 -0
- data/scripts/generate_logo_variants.py +47 -0
- data/scripts/manual/Dockerfile +31 -0
- data/scripts/manual/build_pdf.py +1780 -0
- data/scripts/manual/filters/bibliography.lua +164 -0
- data/scripts/manual/filters/code-blocks.lua +102 -0
- data/scripts/manual/filters/figure-captions.lua +35 -0
- data/scripts/manual/publish_release.sh +281 -0
- data/scripts/manual/templates/manual.tex +494 -0
- data/scripts/manual/verify_release_assets.py +650 -0
- data/scripts/test_gem_build.py +128 -0
- data/scripts/test_reproducible_jekyll_build.py +191 -0
- data/scripts/test_wheel_install.py +282 -0
- data/scripts/unaltraweb-docker-mount.sh +36 -0
- data/scripts/unaltraweb-mcp-bootstrap.sh +105 -0
- data/scripts/unaltraweb-mcp-cleanup.sh +73 -0
- data/scripts/unaltraweb-mcp-project-id.sh +34 -0
- data/scripts/validate_distribution.py +563 -0
- data/scripts/validate_workflows.py +1285 -0
- data/scripts/web_captures/Dockerfile +31 -0
- data/scripts/web_captures/capture.mjs +157 -0
- data/scripts/web_captures/package-lock.json +56 -0
- data/scripts/web_captures/package.json +9 -0
- data/scripts/web_captures/render.py +867 -0
- data/src/unaltraweb_mcp/component-contract.json +153 -0
- data/src/unaltraweb_mcp/component-contract.schema.json +87 -0
- data/src/unaltraweb_mcp/docker_mount.py +19 -0
- metadata +861 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// animating icons
|
|
2
|
+
// --------------------------
|
|
3
|
+
|
|
4
|
+
.#{$fa-css-prefix}-beat {
|
|
5
|
+
animation-name: #{$fa-css-prefix}-beat;
|
|
6
|
+
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
|
7
|
+
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
|
8
|
+
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
|
9
|
+
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
|
10
|
+
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.#{$fa-css-prefix}-bounce {
|
|
14
|
+
animation-name: #{$fa-css-prefix}-bounce;
|
|
15
|
+
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
|
16
|
+
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
|
17
|
+
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
|
18
|
+
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
|
19
|
+
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.#{$fa-css-prefix}-fade {
|
|
23
|
+
animation-name: #{$fa-css-prefix}-fade;
|
|
24
|
+
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
|
25
|
+
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
|
26
|
+
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
|
27
|
+
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
|
28
|
+
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.#{$fa-css-prefix}-beat-fade {
|
|
32
|
+
animation-name: #{$fa-css-prefix}-beat-fade;
|
|
33
|
+
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
|
34
|
+
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
|
35
|
+
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
|
36
|
+
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
|
37
|
+
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.#{$fa-css-prefix}-flip {
|
|
41
|
+
animation-name: #{$fa-css-prefix}-flip;
|
|
42
|
+
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
|
43
|
+
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
|
44
|
+
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
|
45
|
+
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
|
46
|
+
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.#{$fa-css-prefix}-shake {
|
|
50
|
+
animation-name: #{$fa-css-prefix}-shake;
|
|
51
|
+
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
|
52
|
+
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
|
53
|
+
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
|
54
|
+
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
|
55
|
+
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.#{$fa-css-prefix}-spin {
|
|
59
|
+
animation-name: #{$fa-css-prefix}-spin;
|
|
60
|
+
animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);
|
|
61
|
+
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
|
62
|
+
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 2s);
|
|
63
|
+
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
|
64
|
+
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.#{$fa-css-prefix}-spin-reverse {
|
|
68
|
+
--#{$fa-css-prefix}-animation-direction: reverse;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.#{$fa-css-prefix}-pulse,
|
|
72
|
+
.#{$fa-css-prefix}-spin-pulse {
|
|
73
|
+
animation-name: #{$fa-css-prefix}-spin;
|
|
74
|
+
animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);
|
|
75
|
+
animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);
|
|
76
|
+
animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);
|
|
77
|
+
animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, steps(8));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// if agent or operating system prefers reduced motion, disable animations
|
|
81
|
+
// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/
|
|
82
|
+
// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion
|
|
83
|
+
@media (prefers-reduced-motion: reduce) {
|
|
84
|
+
.#{$fa-css-prefix}-beat,
|
|
85
|
+
.#{$fa-css-prefix}-bounce,
|
|
86
|
+
.#{$fa-css-prefix}-fade,
|
|
87
|
+
.#{$fa-css-prefix}-beat-fade,
|
|
88
|
+
.#{$fa-css-prefix}-flip,
|
|
89
|
+
.#{$fa-css-prefix}-pulse,
|
|
90
|
+
.#{$fa-css-prefix}-shake,
|
|
91
|
+
.#{$fa-css-prefix}-spin,
|
|
92
|
+
.#{$fa-css-prefix}-spin-pulse {
|
|
93
|
+
animation-delay: -1ms;
|
|
94
|
+
animation-duration: 1ms;
|
|
95
|
+
animation-iteration-count: 1;
|
|
96
|
+
transition-delay: 0s;
|
|
97
|
+
transition-duration: 0s;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@keyframes #{$fa-css-prefix}-beat {
|
|
102
|
+
0%, 90% { transform: scale(1); }
|
|
103
|
+
45% { transform: scale(var(--#{$fa-css-prefix}-beat-scale, 1.25)); }
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@keyframes #{$fa-css-prefix}-bounce {
|
|
107
|
+
0% { transform: scale(1,1) translateY(0); }
|
|
108
|
+
10% { transform: scale(var(--#{$fa-css-prefix}-bounce-start-scale-x, 1.1),var(--#{$fa-css-prefix}-bounce-start-scale-y, 0.9)) translateY(0); }
|
|
109
|
+
30% { transform: scale(var(--#{$fa-css-prefix}-bounce-jump-scale-x, 0.9),var(--#{$fa-css-prefix}-bounce-jump-scale-y, 1.1)) translateY(var(--#{$fa-css-prefix}-bounce-height, -0.5em)); }
|
|
110
|
+
50% { transform: scale(var(--#{$fa-css-prefix}-bounce-land-scale-x, 1.05),var(--#{$fa-css-prefix}-bounce-land-scale-y, 0.95)) translateY(0); }
|
|
111
|
+
57% { transform: scale(1,1) translateY(var(--#{$fa-css-prefix}-bounce-rebound, -0.125em)); }
|
|
112
|
+
64% { transform: scale(1,1) translateY(0); }
|
|
113
|
+
100% { transform: scale(1,1) translateY(0); }
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@keyframes #{$fa-css-prefix}-fade {
|
|
117
|
+
50% { opacity: var(--#{$fa-css-prefix}-fade-opacity, 0.4); }
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@keyframes #{$fa-css-prefix}-beat-fade {
|
|
121
|
+
0%, 100% {
|
|
122
|
+
opacity: var(--#{$fa-css-prefix}-beat-fade-opacity, 0.4);
|
|
123
|
+
transform: scale(1);
|
|
124
|
+
}
|
|
125
|
+
50% {
|
|
126
|
+
opacity: 1;
|
|
127
|
+
transform: scale(var(--#{$fa-css-prefix}-beat-fade-scale, 1.125));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
@keyframes #{$fa-css-prefix}-flip {
|
|
132
|
+
50% {
|
|
133
|
+
transform: rotate3d(var(--#{$fa-css-prefix}-flip-x, 0), var(--#{$fa-css-prefix}-flip-y, 1), var(--#{$fa-css-prefix}-flip-z, 0), var(--#{$fa-css-prefix}-flip-angle, -180deg));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
@keyframes #{$fa-css-prefix}-shake {
|
|
138
|
+
0% { transform: rotate(-15deg); }
|
|
139
|
+
4% { transform: rotate(15deg); }
|
|
140
|
+
8%, 24% { transform: rotate(-18deg); }
|
|
141
|
+
12%, 28% { transform: rotate(18deg); }
|
|
142
|
+
16% { transform: rotate(-22deg); }
|
|
143
|
+
20% { transform: rotate(22deg); }
|
|
144
|
+
32% { transform: rotate(-12deg); }
|
|
145
|
+
36% { transform: rotate(12deg); }
|
|
146
|
+
40%, 100% { transform: rotate(0deg); }
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@keyframes #{$fa-css-prefix}-spin {
|
|
150
|
+
0% { transform: rotate(0deg); }
|
|
151
|
+
100% { transform: rotate(360deg); }
|
|
152
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// bordered + pulled icons
|
|
2
|
+
// -------------------------
|
|
3
|
+
|
|
4
|
+
.#{$fa-css-prefix}-border {
|
|
5
|
+
border-color: var(--#{$fa-css-prefix}-border-color, #{$fa-border-color});
|
|
6
|
+
border-radius: var(--#{$fa-css-prefix}-border-radius, #{$fa-border-radius});
|
|
7
|
+
border-style: var(--#{$fa-css-prefix}-border-style, #{$fa-border-style});
|
|
8
|
+
border-width: var(--#{$fa-css-prefix}-border-width, #{$fa-border-width});
|
|
9
|
+
padding: var(--#{$fa-css-prefix}-border-padding, #{$fa-border-padding});
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.#{$fa-css-prefix}-pull-left {
|
|
13
|
+
float: left;
|
|
14
|
+
margin-right: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.#{$fa-css-prefix}-pull-right {
|
|
18
|
+
float: right;
|
|
19
|
+
margin-left: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin});
|
|
20
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// base icon class definition
|
|
2
|
+
// -------------------------
|
|
3
|
+
|
|
4
|
+
.#{$fa-css-prefix} {
|
|
5
|
+
font-family: var(--#{$fa-css-prefix}-style-family, '#{$fa-style-family}');
|
|
6
|
+
font-weight: var(--#{$fa-css-prefix}-style, #{$fa-style});
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.fas,
|
|
10
|
+
.far,
|
|
11
|
+
.fab,
|
|
12
|
+
.#{$fa-css-prefix}-solid,
|
|
13
|
+
.#{$fa-css-prefix}-regular,
|
|
14
|
+
.#{$fa-css-prefix}-brands,
|
|
15
|
+
.#{$fa-css-prefix} {
|
|
16
|
+
-moz-osx-font-smoothing: grayscale;
|
|
17
|
+
-webkit-font-smoothing: antialiased;
|
|
18
|
+
display: var(--#{$fa-css-prefix}-display, #{$fa-display});
|
|
19
|
+
font-style: normal;
|
|
20
|
+
font-variant: normal;
|
|
21
|
+
line-height: 1;
|
|
22
|
+
text-rendering: auto;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.fas::before,
|
|
26
|
+
.far::before,
|
|
27
|
+
.fab::before,
|
|
28
|
+
.#{$fa-css-prefix}-solid::before,
|
|
29
|
+
.#{$fa-css-prefix}-regular::before,
|
|
30
|
+
.#{$fa-css-prefix}-brands::before,
|
|
31
|
+
.fa::before {
|
|
32
|
+
content: var(#{$fa-icon-property});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.#{$fa-css-prefix}-classic,
|
|
36
|
+
.fas,
|
|
37
|
+
.#{$fa-css-prefix}-solid,
|
|
38
|
+
.far,
|
|
39
|
+
.#{$fa-css-prefix}-regular {
|
|
40
|
+
font-family: 'Font Awesome 6 Free';
|
|
41
|
+
}
|
|
42
|
+
.#{$fa-css-prefix}-brands,
|
|
43
|
+
.fab {
|
|
44
|
+
font-family: 'Font Awesome 6 Brands';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
%fa-icon {
|
|
48
|
+
@include fa-icon;
|
|
49
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// functions
|
|
2
|
+
// --------------------------
|
|
3
|
+
|
|
4
|
+
// fa-content: convenience function used to set content property
|
|
5
|
+
@function fa-content($fa-var) {
|
|
6
|
+
@return unquote("\"#{ $fa-var }\"");
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// fa-divide: Originally obtained from the Bootstrap https://github.com/twbs/bootstrap
|
|
10
|
+
//
|
|
11
|
+
// Licensed under: The MIT License (MIT)
|
|
12
|
+
//
|
|
13
|
+
// Copyright (c) 2011-2021 Twitter, Inc.
|
|
14
|
+
// Copyright (c) 2011-2021 The Bootstrap Authors
|
|
15
|
+
//
|
|
16
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
17
|
+
// of this software and associated documentation files (the "Software"), to deal
|
|
18
|
+
// in the Software without restriction, including without limitation the rights
|
|
19
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
20
|
+
// copies of the Software, and to permit persons to whom the Software is
|
|
21
|
+
// furnished to do so, subject to the following conditions:
|
|
22
|
+
//
|
|
23
|
+
// The above copyright notice and this permission notice shall be included in
|
|
24
|
+
// all copies or substantial portions of the Software.
|
|
25
|
+
//
|
|
26
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
27
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
28
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
29
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
30
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
31
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
32
|
+
// THE SOFTWARE.
|
|
33
|
+
|
|
34
|
+
@function fa-divide($dividend, $divisor, $precision: 10) {
|
|
35
|
+
$sign: if($dividend > 0 and $divisor > 0, 1, -1);
|
|
36
|
+
$dividend: abs($dividend);
|
|
37
|
+
$divisor: abs($divisor);
|
|
38
|
+
$quotient: 0;
|
|
39
|
+
$remainder: $dividend;
|
|
40
|
+
@if $dividend == 0 {
|
|
41
|
+
@return 0;
|
|
42
|
+
}
|
|
43
|
+
@if $divisor == 0 {
|
|
44
|
+
@error "Cannot divide by 0";
|
|
45
|
+
}
|
|
46
|
+
@if $divisor == 1 {
|
|
47
|
+
@return $dividend;
|
|
48
|
+
}
|
|
49
|
+
@while $remainder >= $divisor {
|
|
50
|
+
$quotient: $quotient + 1;
|
|
51
|
+
$remainder: $remainder - $divisor;
|
|
52
|
+
}
|
|
53
|
+
@if $remainder > 0 and $precision > 0 {
|
|
54
|
+
$remainder: fa-divide($remainder * 10, $divisor, $precision - 1) * .1;
|
|
55
|
+
}
|
|
56
|
+
@return ($quotient + $remainder) * $sign;
|
|
57
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// specific icon class definition
|
|
2
|
+
// -------------------------
|
|
3
|
+
|
|
4
|
+
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
|
|
5
|
+
readers do not read off random characters that represent icons */
|
|
6
|
+
|
|
7
|
+
@each $name, $icon in $fa-icons {
|
|
8
|
+
.#{$fa-css-prefix}-#{$name} {
|
|
9
|
+
#{$fa-icon-property}: unquote("\"#{ $icon }\"");
|
|
10
|
+
#{$fa-duotone-icon-property}: unquote("\"#{$icon}#{$icon}\"");
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// icons in a list
|
|
2
|
+
// -------------------------
|
|
3
|
+
|
|
4
|
+
.#{$fa-css-prefix}-ul {
|
|
5
|
+
list-style-type: none;
|
|
6
|
+
margin-left: var(--#{$fa-css-prefix}-li-margin, #{$fa-li-margin});
|
|
7
|
+
padding-left: 0;
|
|
8
|
+
|
|
9
|
+
> li { position: relative; }
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.#{$fa-css-prefix}-li {
|
|
13
|
+
left: calc(-1 * var(--#{$fa-css-prefix}-li-width, #{$fa-li-width}));
|
|
14
|
+
position: absolute;
|
|
15
|
+
text-align: center;
|
|
16
|
+
width: var(--#{$fa-css-prefix}-li-width, #{$fa-li-width});
|
|
17
|
+
line-height: inherit;
|
|
18
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// mixins
|
|
2
|
+
// --------------------------
|
|
3
|
+
|
|
4
|
+
// base rendering for an icon
|
|
5
|
+
@mixin fa-icon {
|
|
6
|
+
-webkit-font-smoothing: antialiased;
|
|
7
|
+
-moz-osx-font-smoothing: grayscale;
|
|
8
|
+
display: inline-block;
|
|
9
|
+
font-style: normal;
|
|
10
|
+
font-variant: normal;
|
|
11
|
+
font-weight: normal;
|
|
12
|
+
line-height: 1;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// sets relative font-sizing and alignment (in _sizing)
|
|
16
|
+
@mixin fa-size ($font-size) {
|
|
17
|
+
font-size: fa-divide($font-size, $fa-size-scale-base) * 1em; // converts step in sizing scale into an em-based value that's relative to the scale's base
|
|
18
|
+
line-height: fa-divide(1, $font-size) * 1em; // sets the line-height of the icon back to that of it's parent
|
|
19
|
+
vertical-align: (fa-divide(6, $font-size) - fa-divide(3, 8)) * 1em; // vertically centers the icon taking into account the surrounding text's descender
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// only display content to screen readers
|
|
23
|
+
// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
|
|
24
|
+
// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/
|
|
25
|
+
@mixin fa-sr-only() {
|
|
26
|
+
position: absolute;
|
|
27
|
+
width: 1px;
|
|
28
|
+
height: 1px;
|
|
29
|
+
padding: 0;
|
|
30
|
+
margin: -1px;
|
|
31
|
+
overflow: hidden;
|
|
32
|
+
clip: rect(0, 0, 0, 0);
|
|
33
|
+
white-space: nowrap;
|
|
34
|
+
border-width: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// use in conjunction with .sr-only to only display content when it's focused
|
|
38
|
+
@mixin fa-sr-only-focusable() {
|
|
39
|
+
&:not(:focus) {
|
|
40
|
+
@include fa-sr-only();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// sets a specific icon family to use alongside style + icon mixins
|
|
45
|
+
@mixin fa-family-classic() {
|
|
46
|
+
@extend .fa-classic;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// convenience mixins for declaring pseudo-elements by CSS variable,
|
|
50
|
+
// including all style-specific font properties
|
|
51
|
+
@mixin fa-icon-solid($fa-var) {
|
|
52
|
+
@extend .fa-solid;
|
|
53
|
+
|
|
54
|
+
& { #{$fa-icon-property}: unquote("\"#{ $fa-var }\""); #{$fa-duotone-icon-property}: unquote("\"#{ $fa-var }#{ $fa-var }\""); }
|
|
55
|
+
}
|
|
56
|
+
@mixin fa-icon-regular($fa-var) {
|
|
57
|
+
@extend .fa-regular;
|
|
58
|
+
|
|
59
|
+
& { #{$fa-icon-property}: unquote("\"#{ $fa-var }\""); #{$fa-duotone-icon-property}: unquote("\"#{ $fa-var }#{ $fa-var }\""); }
|
|
60
|
+
}
|
|
61
|
+
@mixin fa-icon-brands($fa-var) {
|
|
62
|
+
@extend .fa-brands;
|
|
63
|
+
|
|
64
|
+
& { #{$fa-icon-property}: unquote("\"#{ $fa-var }\""); #{$fa-duotone-icon-property}: unquote("\"#{ $fa-var }#{ $fa-var }\""); }
|
|
65
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// rotating + flipping icons
|
|
2
|
+
// -------------------------
|
|
3
|
+
|
|
4
|
+
.#{$fa-css-prefix}-rotate-90 {
|
|
5
|
+
transform: rotate(90deg);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.#{$fa-css-prefix}-rotate-180 {
|
|
9
|
+
transform: rotate(180deg);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.#{$fa-css-prefix}-rotate-270 {
|
|
13
|
+
transform: rotate(270deg);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.#{$fa-css-prefix}-flip-horizontal {
|
|
17
|
+
transform: scale(-1, 1);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.#{$fa-css-prefix}-flip-vertical {
|
|
21
|
+
transform: scale(1, -1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.#{$fa-css-prefix}-flip-both,
|
|
25
|
+
.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical {
|
|
26
|
+
transform: scale(-1, -1);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.#{$fa-css-prefix}-rotate-by {
|
|
30
|
+
transform: rotate(var(--#{$fa-css-prefix}-rotate-angle, 0));
|
|
31
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// screen-reader utilities
|
|
2
|
+
// -------------------------
|
|
3
|
+
|
|
4
|
+
// only display content to screen readers
|
|
5
|
+
.sr-only,
|
|
6
|
+
.#{$fa-css-prefix}-sr-only {
|
|
7
|
+
@include fa-sr-only;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// use in conjunction with .sr-only to only display content when it's focused
|
|
11
|
+
.sr-only-focusable,
|
|
12
|
+
.#{$fa-css-prefix}-sr-only-focusable {
|
|
13
|
+
@include fa-sr-only-focusable;
|
|
14
|
+
}
|