diff --git a/.gitignore b/.gitignore index 8062a9f..8f8206c 100644 --- a/.gitignore +++ b/.gitignore @@ -12,20 +12,6 @@ *.toc _minted* auto-generated* - -# Files and directories created by pub -.dart_tool/ -.packages -# Remove the following pattern if you wish to check in your lock file -pubspec.lock - -# Conventional directory for build outputs -build/ - -# Directory created by dartdoc -doc/api/ -/web/swadesh -/web/tibetan-lexicon-layout -/web/style/.sass-cache/ -/web/style/*.css -/web/eittland-files/GIS/ +swadesh +tibetan-lexicon-layout +/ignored-folder/ diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 8fe9775..0000000 --- a/Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -FROM google/dart:2.7 - -WORKDIR /app - -# Get Dart dependencies -RUN mkdir -p /pub-cache -ENV PUB_CACHE=/pub-cache -ENV PATH="${PATH}:/pub-cache/bin" -RUN pub global activate webdev -ADD pubspec.* /app/ -RUN pub get -RUN pub get --offline - -RUN apt update && apt install ruby-sass ruby-dev build-essential -y -RUN gem install sass-listen - -ADD . /app/ - -CMD ["./start.sh"] diff --git a/web/TEMPLATE b/TEMPLATE similarity index 100% rename from web/TEMPLATE rename to TEMPLATE diff --git a/TODOs.org b/TODOs.org deleted file mode 100644 index 0dc9cbf..0000000 --- a/TODOs.org +++ /dev/null @@ -1,30 +0,0 @@ -* TODO Organization of HTML [4/4] -** DONE Add link to images that don’t have any - CLOSED: [2020-05-05 mar. 13:31] -** DONE Add English links detection - CLOSED: [2020-05-05 mar. 13:31] -** DONE Add button to display TOC - CLOSED: [2020-04-28 mar. 22:30] -** DONE Add share links [5/5] - CLOSED: [2020-04-29 mer. 00:03] -*** DONE Add Twitter share - CLOSED: [2020-04-28 mar. 23:22] -*** DONE Add Reddit share - CLOSED: [2020-04-28 mar. 23:23] -*** DONE Add Facebook share - CLOSED: [2020-04-28 mar. 23:23] -*** DONE Add LinkedIn share - CLOSED: [2020-04-29 mer. 00:03] -*** DONE Add Email share - CLOSED: [2020-04-29 mer. 00:03] -* TODO Styling [5/5] -** DONE Images - CLOSED: [2020-05-05 mar. 13:31] -** DONE Mobile version - CLOSED: [2020-05-05 mar. 13:31] -** DONE Tables - CLOSED: [2020-05-02 Sat 12:09] -** DONE Hint bubbles for phonetics (Ñyqy) - CLOSED: [2020-04-28 mar. 22:31] -** DONE Links - CLOSED: [2020-04-29 mer. 00:03] diff --git a/analysis_options.yaml b/analysis_options.yaml deleted file mode 100644 index a686c1b..0000000 --- a/analysis_options.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Defines a default set of lint rules enforced for -# projects at Google. For details and rationale, -# see https://github.com/dart-lang/pedantic#enabled-lints. -include: package:pedantic/analysis_options.yaml - -# For lint rules and documentation, see http://dart-lang.github.io/linter/lints. -# Uncomment to specify additional rules. -# linter: -# rules: -# - camel_case_types - -analyzer: -# exclude: -# - path/to/excluded/files/** diff --git a/web/clean.fish b/clean.fish similarity index 100% rename from web/clean.fish rename to clean.fish diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 8ff6606..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: '3' - -services: - web: - build: . - ports: - - "8010:8080" - restart: always - volumes: - - ./web/:/app/web/ diff --git a/web/eittland.org b/eittland.org similarity index 100% rename from web/eittland.org rename to eittland.org diff --git a/web/en/img/nyqy/basic-syntax.png b/en/img/nyqy/basic-syntax.png similarity index 100% rename from web/en/img/nyqy/basic-syntax.png rename to en/img/nyqy/basic-syntax.png diff --git a/web/en/img/nyqy/consonant-feature-tree.png b/en/img/nyqy/consonant-feature-tree.png similarity index 100% rename from web/en/img/nyqy/consonant-feature-tree.png rename to en/img/nyqy/consonant-feature-tree.png diff --git a/web/en/img/nyqy/vowel-feature-tree.png b/en/img/nyqy/vowel-feature-tree.png similarity index 100% rename from web/en/img/nyqy/vowel-feature-tree.png rename to en/img/nyqy/vowel-feature-tree.png diff --git a/web/en/nyqy.org b/en/nyqy.org similarity index 100% rename from web/en/nyqy.org rename to en/nyqy.org diff --git a/web/fonts/DoulosSIL-R-README.txt b/fonts/DoulosSIL-R-README.txt similarity index 100% rename from web/fonts/DoulosSIL-R-README.txt rename to fonts/DoulosSIL-R-README.txt diff --git a/web/fonts/DoulosSIL-R.woff b/fonts/DoulosSIL-R.woff similarity index 100% rename from web/fonts/DoulosSIL-R.woff rename to fonts/DoulosSIL-R.woff diff --git a/web/fonts/HelveticaNeue.ttf b/fonts/HelveticaNeue.ttf similarity index 100% rename from web/fonts/HelveticaNeue.ttf rename to fonts/HelveticaNeue.ttf diff --git a/web/fonts/NotoSansRunic-Regular.ttf b/fonts/NotoSansRunic-Regular.ttf similarity index 100% rename from web/fonts/NotoSansRunic-Regular.ttf rename to fonts/NotoSansRunic-Regular.ttf diff --git a/web/headers b/headers similarity index 95% rename from web/headers rename to headers index 4f1cc71..a4898a1 100644 --- a/web/headers +++ b/headers @@ -34,7 +34,7 @@ #+HTML_HEAD_EXTRA: #+HTML_HEAD_EXTRA: #+HTML_HEAD_EXTRA: -#+HTML_HEAD_EXTRA: +#+HTML_HEAD_EXTRA: # ### MACROS ################################################################### #+MACRO: newline @@latex:\hspace{0pt}\\@@ @@html:
@@ diff --git a/web/hjelp.org b/hjelp.org similarity index 100% rename from web/hjelp.org rename to hjelp.org diff --git a/web/hjelp/tools/gen.cc b/hjelp/tools/gen.cc similarity index 100% rename from web/hjelp/tools/gen.cc rename to hjelp/tools/gen.cc diff --git a/web/img/eittland/cons-feature-tree.png b/img/eittland/cons-feature-tree.png similarity index 100% rename from web/img/eittland/cons-feature-tree.png rename to img/eittland/cons-feature-tree.png diff --git a/web/img/eittland/map-biomes.png b/img/eittland/map-biomes.png similarity index 100% rename from web/img/eittland/map-biomes.png rename to img/eittland/map-biomes.png diff --git a/web/img/eittland/map-cultural.png b/img/eittland/map-cultural.png similarity index 100% rename from web/img/eittland/map-cultural.png rename to img/eittland/map-cultural.png diff --git a/web/img/eittland/map-heightmap.png b/img/eittland/map-heightmap.png similarity index 100% rename from web/img/eittland/map-heightmap.png rename to img/eittland/map-heightmap.png diff --git a/web/img/eittland/map-hq.jpg b/img/eittland/map-hq.jpg similarity index 100% rename from web/img/eittland/map-hq.jpg rename to img/eittland/map-hq.jpg diff --git a/web/img/eittland/map-physical.png b/img/eittland/map-physical.png similarity index 100% rename from web/img/eittland/map-physical.png rename to img/eittland/map-physical.png diff --git a/web/img/eittland/map-political.png b/img/eittland/map-political.png similarity index 100% rename from web/img/eittland/map-political.png rename to img/eittland/map-political.png diff --git a/web/img/eittland/map-provinces.png b/img/eittland/map-provinces.png similarity index 100% rename from web/img/eittland/map-provinces.png rename to img/eittland/map-provinces.png diff --git a/web/img/eittland/map-religion.png b/img/eittland/map-religion.png similarity index 100% rename from web/img/eittland/map-religion.png rename to img/eittland/map-religion.png diff --git a/web/img/eittland/map-simple.jpg b/img/eittland/map-simple.jpg similarity index 100% rename from web/img/eittland/map-simple.jpg rename to img/eittland/map-simple.jpg diff --git a/web/img/eittland/map-world.jpg b/img/eittland/map-world.jpg similarity index 100% rename from web/img/eittland/map-world.jpg rename to img/eittland/map-world.jpg diff --git a/web/img/eittland/religious-pop.png b/img/eittland/religious-pop.png similarity index 100% rename from web/img/eittland/religious-pop.png rename to img/eittland/religious-pop.png diff --git a/web/img/eittland/sacrifice.png b/img/eittland/sacrifice.png similarity index 100% rename from web/img/eittland/sacrifice.png rename to img/eittland/sacrifice.png diff --git a/web/img/eittland/vowel-feature-tree.png b/img/eittland/vowel-feature-tree.png similarity index 100% rename from web/img/eittland/vowel-feature-tree.png rename to img/eittland/vowel-feature-tree.png diff --git a/web/img/hjelp/tones.jpg b/img/hjelp/tones.jpg similarity index 100% rename from web/img/hjelp/tones.jpg rename to img/hjelp/tones.jpg diff --git a/web/img/matter/einlant-old-map.jpg b/img/matter/einlant-old-map.jpg similarity index 100% rename from web/img/matter/einlant-old-map.jpg rename to img/matter/einlant-old-map.jpg diff --git a/web/img/nyqy/basic-syntax.png b/img/nyqy/basic-syntax.png similarity index 100% rename from web/img/nyqy/basic-syntax.png rename to img/nyqy/basic-syntax.png diff --git a/web/img/nyqy/consonant-feature-tree.png b/img/nyqy/consonant-feature-tree.png similarity index 100% rename from web/img/nyqy/consonant-feature-tree.png rename to img/nyqy/consonant-feature-tree.png diff --git a/web/img/nyqy/syntax-nominal-clauses.png b/img/nyqy/syntax-nominal-clauses.png similarity index 100% rename from web/img/nyqy/syntax-nominal-clauses.png rename to img/nyqy/syntax-nominal-clauses.png diff --git a/web/img/nyqy/vowel-feature-tree.png b/img/nyqy/vowel-feature-tree.png similarity index 100% rename from web/img/nyqy/vowel-feature-tree.png rename to img/nyqy/vowel-feature-tree.png diff --git a/web/img/taso/consonant-feature-tree.png b/img/taso/consonant-feature-tree.png similarity index 100% rename from web/img/taso/consonant-feature-tree.png rename to img/taso/consonant-feature-tree.png diff --git a/web/img/taso/vowel-feature-tree.png b/img/taso/vowel-feature-tree.png similarity index 100% rename from web/img/taso/vowel-feature-tree.png rename to img/taso/vowel-feature-tree.png diff --git a/web/index.org b/index.org similarity index 100% rename from web/index.org rename to index.org diff --git a/web/matter.org b/matter.org similarity index 100% rename from web/matter.org rename to matter.org diff --git a/web/nyqy.org b/nyqy.org similarity index 100% rename from web/nyqy.org rename to nyqy.org diff --git a/pubspec.yaml b/pubspec.yaml deleted file mode 100644 index 96b0265..0000000 --- a/pubspec.yaml +++ /dev/null @@ -1,16 +0,0 @@ -name: languephundrakcom -description: A bare-bone server for my linguistics website. -version: 1.0.0 -homepage: https://langue.phundrak.com -author: Lucien Cartier-Tilet - -environment: - sdk: '>=2.5.0 <3.0.0' - -dependencies: - html: '^0.14.0+3' - -dev_dependencies: - build_runner: ^1.8.0 - build_web_compilers: ^2.9.0 - pedantic: ^1.9.0 diff --git a/web/sitemap.org b/sitemap.org similarity index 100% rename from web/sitemap.org rename to sitemap.org diff --git a/start.sh b/start.sh deleted file mode 100755 index c655788..0000000 --- a/start.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -sass --watch web/style/:web/style -tcompressed & -webdev serve --release --hostname 0.0.0.0 diff --git a/web/taso.org b/taso.org similarity index 100% rename from web/taso.org rename to taso.org diff --git a/web/.gitignore b/web/.gitignore deleted file mode 100644 index 1298126..0000000 --- a/web/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -/draconian-2/Vulgar_ Language generator.pdf -/ignored-folder -/css/.sass-cache/ -/css/light.css -/css/main.css -/css/dark.css -/css/nyqy.css \ No newline at end of file diff --git a/web/dart/main.dart b/web/dart/main.dart deleted file mode 100644 index 5b17663..0000000 --- a/web/dart/main.dart +++ /dev/null @@ -1,9 +0,0 @@ -import './reorganize_html.dart' show reorganizeHtml; -import './theme.dart' show enableThemeChanger, setTheme; - -Future main() async { - await setTheme(); - await reorganizeHtml().then((_) { - enableThemeChanger(); - }); -} diff --git a/web/dart/navbar.dart b/web/dart/navbar.dart deleted file mode 100644 index 4e404af..0000000 --- a/web/dart/navbar.dart +++ /dev/null @@ -1,149 +0,0 @@ -import 'dart:html'; - -import './parse_sitemap.dart' show parseSitemap; - -// Returns the title of the current webpage -String getPageTitle() { - return querySelector('title').text; -} - -Element makeIcon(List classes, [String id]) { - final icon = Element.tag('i')..classes.addAll(classes); - if (id != null) { - icon.attributes['id'] = id; - } - return icon; -} - -Future makeToc() async { - return Element.li() - ..attributes['id'] = 'toc-drop' - ..classes.addAll(['nav-item', 'has-dropdown']) - ..append(Element.a() - ..attributes['href'] = 'javascript:void(0)' - ..append(makeIcon(['fas', 'fa-list-ol'], 'tocBtn'))); -} - -Future makePages() async { - var pages = Element.ul() - ..attributes['id'] = 'drop-page' - ..classes.add('dropdown'); - await parseSitemap().then((final sitemap) => { - sitemap.forEach((url, name) { - final link = Element.li() - ..classes.add('dropdown-item') - ..insertAdjacentElement( - 'afterBegin', - Element.a() - ..attributes['href'] = url - ..innerText = name); - pages.insertAdjacentElement('beforeEnd', link); - }) - }); - return Element.li() - ..append(Element.a() - ..attributes['href'] = 'javascript:void(0)' - ..append(makeIcon(['fas', 'fa-flag']))) - ..classes.addAll(['nav-item', 'has-dropdown']) - ..insertAdjacentElement('beforeEnd', pages); -} - -Element makeShareLink(Element icon, String url) { - return Element.li() - ..classes.add('dropdown-item') - ..append(Element.a() - ..attributes['href'] = url - ..attributes['target'] = '_blank' - ..append(icon)); -} - -Future makeShare() async { - return Element.li() - ..classes.addAll(['nav-item', 'has-dropdown']) - ..append(Element.a() - ..attributes['href'] = 'javascript:void(0)' - ..append(makeIcon(['fas', 'fa-share-alt']))) - ..append(Element.ul() - ..classes.add('dropdown') - ..attributes['id'] = 'drop-share' - ..append(makeShareLink( - makeIcon(['fab', 'fa-twitter-square']), - 'https://twitter.com/share?text=${getPageTitle()}' - '&url=${window.location.href}')) - ..append(makeShareLink(makeIcon(['fab', 'fa-reddit-square']), - 'https://www.reddit.com/submit?title=${getPageTitle()}s&url=${window.location.href}')) - ..append(makeShareLink(makeIcon(['fas', 'fa-envelope-square']), - 'mailto:?subject=${getPageTitle}&body=${window.location.href}')) - ..append(makeShareLink( - makeIcon(['fab', 'fa-linkedin']), - 'https://www.linkedin.com/shareArticle?mini=true&url=${window.location.href}' - '&title=${getPageTitle()}')) - ..append(makeShareLink(makeIcon(['fab', 'fa-facebook-square']), - 'https://www.facebook.com/sharer/sharer.php?u=${window.location.href}'))); -} - -Future makeThemeChanger() async { - Element makeThemeItem(String t_btnId, Element t_icon, String t_text) { - return Element.li() - ..classes.add('dropdown-item') - ..append(Element.span() - ..attributes['id'] = t_btnId - ..append(t_icon) - ..appendText(' $t_text')); - } - - return Element.li() - ..classes.addAll(['nav-item', 'has-dropdown']) - ..append(Element.a() - ..attributes['href'] = 'javascript:void(0)' - ..append(Element.span() - ..classes.add('fa-stack') - ..style.verticalAlign = 'top' - ..append(makeIcon(['fas', 'fa-sun', 'fa-stack-1x']) - ..style.fontSize = '0.9em') - ..append(makeIcon(['fas', 'fa-moon', 'fa-stack-1x'])))) - ..append(Element.ul() - ..classes.add('dropdown') - ..attributes['id'] = 'theme-dropdown' - ..append(makeThemeItem('lightBtn', makeIcon(['fas', 'fa-sun']), 'Clair')) - ..append( - makeThemeItem('darkBtn', makeIcon(['fas', 'fa-lightbulb']), 'Sombre')) - ..append( - makeThemeItem('blackBtn', makeIcon(['fas', 'fa-moon']), 'Noir'))); -} - -Future makeHome() async { - return Element.li() - ..classes.add('nav-item') - ..insertAdjacentElement( - 'afterBegin', - Element.a() - ..attributes['href'] = '/' - ..append(makeIcon(['fas', 'fa-home']))); -} - -// Add a navbar atop of the HTML body, containing two buttons: -// - One back to home -// - A dropdown to each page detected in the sitemap -Future makeNavbar() async { - final navbar_content = Element.ul()..classes.add('navbar-nav'); - final home = await makeHome(); - final pages = await makePages(); - final toc = await makeToc(); - final share = await makeShare(); - final theme = await makeThemeChanger(); - - navbar_content - ..append(home) - ..append(pages) - ..append(toc) - ..append(share) - ..append(theme); - - // Navbar content added to navbar - final navbar = Element.nav() - ..classes.add('navbar') - ..append(navbar_content); - - return navbar; -} diff --git a/web/dart/parse_sitemap.dart b/web/dart/parse_sitemap.dart deleted file mode 100644 index 33ccd94..0000000 --- a/web/dart/parse_sitemap.dart +++ /dev/null @@ -1,43 +0,0 @@ -import 'dart:html' show HttpRequest; - -import 'package:html/parser.dart' show parse; -import 'package:html/dom.dart' show Element; - -// Get the sitemap content -Future getSitemap() async { - const path = 'sitemap.html'; - try { - return await HttpRequest.getString(path); - } catch (e) { - print('Couldn’t open $path'); - } - return 'Error'; -} - -// Parse the list of elements and detect pages from this list -Map detectPages(List sitemap, [String prefix]) { - final links = {}; - for (var elem in sitemap) { - if (elem.outerHtml.contains('index')) { - continue; - } else if (elem.innerHtml.startsWith('> parseSitemap() async { - final content = await getSitemap(); - final sitemap = parse(content).getElementsByClassName('org-ul')[0].children; - return detectPages(sitemap); -} diff --git a/web/dart/reorganize_html.dart b/web/dart/reorganize_html.dart deleted file mode 100644 index a16988a..0000000 --- a/web/dart/reorganize_html.dart +++ /dev/null @@ -1,71 +0,0 @@ -import 'dart:html'; - -import './navbar.dart' show makeNavbar; - -Future makeHeader() async { - var header = Element.tag('header'); - header - ..append(Element.img() - ..attributes['src'] = - 'https://cdn.phundrak.com/img/mahakala-monochrome.png' - ..attributes['alt'] = 'Logo de Phundrak' - ..attributes['heigh'] = '150px' - ..attributes['width'] = '150px') - ..append(querySelector('h1')); - var subt = querySelector('.subtitle'); - if (subt != null) { - header.append(subt); - } - return header; -} - -Future wrapTables() async { - for (var table in querySelectorAll('table')) { - var largetable = DivElement()..className = 'largetable'; - table.before(largetable); - largetable.children.add(table); - } -} - -// All images that are not nested inside a link will be linkified to themselves. -void linkifyImg() { - querySelectorAll('img').forEach((img) { - print(img.attributes['src']); - print(img.parent.tagName); - if (img.parent.tagName == 'P') { - final link = Element.a()..attributes['href'] = img.attributes['src']; - img.insertAdjacentElement('beforeBegin', link); - link.append(img); - } - }); -} - -Future reorganizeHtml() async { - final content = querySelector('#content'); - - // Make navbar - await makeNavbar().then((navbar) { - querySelector('body').insertAdjacentElement('afterBegin', navbar); - }); - - // Make header - await makeHeader().then((header) { - content.insertAdjacentElement('beforeBegin', header); - final subtitle = querySelector('.subtitle'); - if (subtitle != null) { - header.append(subtitle); - } - }); - - // wrap tables in container for better SCSS display - await wrapTables(); - - linkifyImg(); - - // Add correct class to TOC - querySelector('#toc-drop') - .append(querySelector('#table-of-contents')..classes.add('dropdown')); - - // Remove all
tags from HTML - querySelectorAll('br').forEach((br) => br.remove()); -} diff --git a/web/dart/theme.dart b/web/dart/theme.dart deleted file mode 100644 index 823a3f9..0000000 --- a/web/dart/theme.dart +++ /dev/null @@ -1,53 +0,0 @@ -import 'dart:html'; - -class Theme { - String _name; - String _icon; - - Theme(String t_name, String t_icon) { - _name = t_name; - _icon = t_icon; - } - - String getIcon() => _icon; - String getName() => _name; -} - -final themes = { - 'light': Theme('light', 'fa-sun'), - 'dark': Theme('dark', 'fa-lightbulb'), - 'black': Theme('black', 'fa-moon') -}; - -final localStorage = window.localStorage; - -var currentTheme = themes[localStorage['theme']]; - -void enableThemeChanger() { - final darkBtn = querySelector('#darkBtn'); - final lightBtn = querySelector('#lightBtn'); - final blackBtn = querySelector('#blackBtn'); - - lightBtn.onClick.listen((_) => switchTheme(themes['light'])); - darkBtn.onClick.listen((_) => switchTheme(themes['dark'])); - blackBtn.onClick.listen((_) => switchTheme(themes['black'])); -} - -Future setTheme() async { - if (currentTheme == null) { - currentTheme = themes['light']; - localStorage['theme'] = currentTheme.getName(); - } - querySelector('body') - ..classes.clear() - ..classes.add(currentTheme.getName()); -} - -void switchTheme(Theme currentTheme) { - // Set HTML theme - querySelector('body') - ..classes.clear() - ..classes.add(currentTheme.getName()); - // Set storage theme - localStorage['theme'] = currentTheme.getName(); -} diff --git a/web/style/style.scss b/web/style/style.scss deleted file mode 100644 index e4181ec..0000000 --- a/web/style/style.scss +++ /dev/null @@ -1,591 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic|Roboto+Slab:400,700|Inconsolata:400,700); -@font-face { - font-family: "DoulosSIL"; - font-display: swap; - src: url("/fonts/DoulosSIL-R.woff"); -} -@font-face { - font-family: "Noto Sans Runes"; - font-display: swap; - src: url("../fonts/NotoSansRunic-Regular.ttf"); -} -@font-face { - font-family: "Helvetica Neue"; - font-display: swap; - src: url("../fonts/HelveticaNeue.ttf"); -} - -/* Variables *****************************************************************/ - -$switch-small-screen: "only screen and (max-width: 600px)"; -$switch-smaller-screen: "only screen and (max-width: 400px)"; - -$navbar-height: 70px; -$postamble-height: 55px; - -// Themes ///////////////////////////////////////////////////////////////////// - -$dark: rgba( 52, 73, 94, 1); -$black: rgba( 0, 0, 0, 1); -$accent1: rgba( 93, 115, 126, 1); -$accent2: rgba( 92, 172, 126, 1); -$accent3: rgba(197, 193, 155, 1); -$light: #eee; -$grey1: #f8f8f8; -$grey2: #dbe1e8; -$grey3: #b2becd; -$grey4: #6c7983; -$grey5: #454e56; -$grey6: #12181b; - -// Accent 1 -// Black -$gradient-accent1-black-left: linear-gradient(to left, $black, $accent1, $accent1); -$gradient-accent1-black-right: linear-gradient(to right, $black, $accent1, $accent1); -// Dark -$gradient-accent1-dark-left: linear-gradient(to left, $dark, $accent1); -$gradient-accent1-dark-right: linear-gradient(to right, $dark, $accent1); -// Light -$gradient-accent1-light-left: linear-gradient(to left, $light, $accent1); -$gradient-accent1-light-right: linear-gradient(to right, $light, $accent1); -// Accent 2 -// Black -$gradient-accent2-black-left: linear-gradient(to left, $black, $accent2, $accent2); -$gradient-accent2-black-right: linear-gradient(to right, $black, $accent2, $accent2); -// Dark -$gradient-accent2-dark-left: linear-gradient(to left, $dark, $accent2); -$gradient-accent2-dark-right: linear-gradient(to right, $dark, $accent2); -// Light -$gradient-accent2-light-left: linear-gradient(to left, $light, $accent2); -$gradient-accent2-light-right: linear-gradient(to right, $light, $accent2); -// Accent 3 -// Black -$gradient-accent3-black-left: linear-gradient(to left, $black, $accent3, $accent3); -$gradient-accent3-black-right: linear-gradient(to right, $black, $accent3, $accent3); -// Dark -$gradient-accent3-dark-left: linear-gradient(to left, $dark, $accent3); -$gradient-accent3-dark-right: linear-gradient(to right, $dark, $accent3); -// Light -$gradient-accent3-light-left: linear-gradient(to left, $light, $accent3); -$gradient-accent3-light-right: linear-gradient(to right, $light, $accent3); - -.light { - $bg-nav: $gradient-accent3-light-right; - $border-color: $accent1; - - color: $dark; - background: $light; - - transition: background 500ms ease-in-out, color 1s ease-in-out; - - pre { - box-shadow: 3px 3px $dark; - border-color: $light; - } - - pre.src { - &::before { - background-color: $light; - color: $dark; - } - } - - .navbar, header { - background: $bg-nav; - } - - .status { - background: $gradient-accent3-light-left; - color: $dark; - } - - .tooltip { - border-bottom: 1px dotted $accent3; - - .tooltiptext { - background-color: $accent3; - color: $dark; - - &::after { - border-color: $accent3 transparent transparent transparent; - } - } - } - - .dropdown { - background: $accent3; - color: $dark; - } - - #content { - a { - box-shadow: inset 0 -3px 0 $accent3; - transition: box-shadow 300ms ease-in-out; - - &:hover { - box-shadow: inset 0 -23px 0 $accent3; - transition: box-shadow 300ms ease-in-out; - } - } - } - - table, th, td { - border: 1px solid $dark; - } - - th { - background: darken($light, 5%); - } - - .gentree { - filter: invert(0%); - transition: filter 1s ease-in-out; - } -} - -.dark, .black { - $bg-nav: $gradient-accent2-dark-right; - $border-color: $dark; - - color: $light; - background: $dark; - - transition: background 500ms ease-in-out, color 1s ease-in-out; - - pre { - box-shadow: 3px 3px $dark; - border: none; - } - - pre.src { - &::before { - background-color: $dark; - color: $light; - } - } - - .navbar, header { - background: $bg-nav; - } - - .status { - background: $gradient-accent2-dark-left; - color: $light; - } - - .tooltip { - border-bottom: 1px dotted $accent1; - - .tooltiptext { - background-color: $accent1; - color: $light; - - &::after { - border-color: $accent1 transparent transparent transparent; - } - } - } - - .dropdown { - background: $accent3; - color: $dark; - } - - #content { - a { - box-shadow: inset 0 -3px 0 $accent2; - transition: box-shadow 300ms ease-in-out; - - &:hover { - box-shadow: inset 0 -23px 0 $accent2; - transition: box-shadow 300ms ease-in-out; - } - } - } - - table, th, td { - border: 1px solid $accent1; - } - - th { - background: darken($dark, 2.5%); - } - - .gentree { - filter: invert(100%); - transition: filter 1s ease-in-out; - } -} - -.black { - $bg-nav: $gradient-accent1-black-right; - - background: $black; - - pre { - box-shadow: 3px 3px $light; - border: none; - } - - pre.src { - &::before { - background-color: $black; - color: $light; - } - } - - .navbar, header { - background: $bg-nav; - } - - .status { - background: $gradient-accent1-black-left; - } - - .dropdown { - background: $dark; - color: $light; - } - - #content { - a { - box-shadow: inset 0 -3px 0 $accent1; - transition: box-shadow 300ms ease-in-out; - - &:hover { - box-shadow: inset 0 -23px 0 $accent1; - transition: box-shadow 300ms ease-in-out; - } - } - } - - table, th, td { - border: 1px solid $light; - } - - th { - background: lighten($black, 15%); - } -} - -/* Style *********************************************************************/ - -* { - outline: none; -} - -body { - margin: 0; - padding: 0; - font-family: "Noto Sans Runes", "DoulosSIL", "Lato", "proxima-nova", "Helvetica Neue", Arial, sans-serif; - font-size: 1.2em; - - transition: background 500ms ease-in-out, color 1s ease-in-out; - - header, .navbar { - transition: background 500ms ease-in-out, color 1s ease-in-out; - ul { - list-style-type: none; - margin: 0; - padding: 0; - } - } -} - -a { - color: currentColor; - text-decoration: none; -} - -.navbar { - position: fixed; - top: 0; - z-index: 4; - height: $navbar-height; - width: 100%; -} - -.navbar-nav { - display: flex; - align-items: center; - justify-content: space-evenly; - height: 100%; -} - -header { - padding: 1em; - margin-top: $navbar-height; - margin-bottom: 1em; - padding-bottom: 6em; - text-align: center; - clip-path: polygon(50% 0%, 100% 0, 100% 80%, 50% 100%, 0 80%, 0 0); - transition: background 500ms ease-in-out; - - .title { - font-size: 5em; - margin: 0; - @media #{$switch-small-screen} { - font-size: 3em; - } - } - - .subtitle { - font-size: 1.2em; - } -} - -.dropdown { - position: absolute; - opacity: 0; - z-index: -1; - - border-bottom-right-radius: 8px; - border-bottom-left-radius: 8px; - - display: flex; - align-items: center; - justify-content: space-around; - min-height: 3rem; - margin-top: 1rem; - padding: 0.5rem; - top: 0; - - box-shadow: rgba(2, 8, 20, 0.1) 0px 0.175em 0.5em; - transform: translateX(-40%); - - transition: opacity 500ms ease-in-out, top 500ms ease-in-out; -} - -.has-dropdown { - &:focus-within { - .dropdown { - opacity: 1; - top: $navbar-height; - z-index: 5; - pointer-events: auto; - } - - #table-of-contents { - top: $navbar-height / 1.3; - opacity: 1; - z-index: 5; - height: 500%; - pointer-events: auto; - } - } -} - -#theme-dropdown { - width: 250px; - flex-direction: row; - transform: translateX(-75%); -} - -#drop-page { - flex-direction: column; - transform: translateX(-40%); - li { - padding: 5px; - } -} - -#drop-share { - li { - padding: 10px; - } -} - -.dropdown-item { - cursor: pointer; - - a { - width: 100%; - height: 100%; - size: 0.7rem; - padding-left: 10px; - padding-right: 10px; - font-weight: bold; - } -} - -#table-of-contents { - flex-direction: column; - padding: 20px; - float: right; - overflow-y: auto; - height: 0%; - width: 75%; - min-width: 350px; - transform: translateX(-45%); - font-size: 0.9em; - top: -40px; - - transition: height 500ms ease-in-out, opacity 500ms ease-in-out, top 500ms ease-in-out; - - li { - padding: 5px 0; - } - - h2 { - font-size: 1.2em; - } - - #text-table-of-contents { - height: 100%; - } -} - -#content { - padding: 50px; - padding-top: 0; - max-width: 1000px; - margin: 0 auto; - text-align: justify; - - a { - font-style: italic; - } -} - -#postamble { - display: grid; - grid-template-areas: 'author email date'; - - @media #{$switch-small-screen} { - grid-template-areas: 'author date' 'email email'; - } - - @media #{$switch-smaller-screen} { - grid-template-areas: 'author' 'date' 'email'; - } - - font-size: 0.8em; - align-content: space-evenly; - text-align: center; - - p { - margin: 10px 0; - } - - .author { - grid-area: author; - } - - .email { - grid-area: email; - } - - .date { - grid-area: date; - } -} - -h1, h2, h3, h4, h5, h6 { - text-align: center; -} - -h2 { - font-size: 2.5em; - @media #{$switch-small-screen} { - font-size: 1.75em; - } -} - -h3 { - font-size: 2em; - - @media #{$switch-small-screen} { - font-size: 1.5em; - } -} - -h4 { - font-size: 1.5em; - - @media #{$switch-small-screen} { - font-size: 1.3em; - } -} - -h5 { - font-size: 1.25em; - - @media #{$switch-small-screen} { - font-size: 1.2em; - } -} - -.tooltip { - position: relative; - display: inline-block; - - .tooltiptext { - visibility: hidden; - - margin-left: -60px; /* Half the width */ - bottom: 100%; - left: 10%; - padding: 5px 10px; - text-align: center; - border-radius: 6px; - - position: absolute; - z-index: 5; - - - &::after { - content: " "; - position: absolute; - top: 100%; /* At the bottom of the tooltip */ - left: 50%; - margin-left: -5px; - border-width: 5px; - border-style: solid; - } - } - - &:hover { - .tooltiptext { - visibility: visible; - } - } -} - -blockquote { - padding: 0; - margin: 20px; - font-style: italic; -} - -.largetable { - overflow-y: auto; - margin-top:20px; - margin-bottom: 20px; -} - -table { - margin: 0 auto; -} - -th, td { - white-space: nowrap; - padding: 10px; -} - -img { - max-height: 600px; - max-width: 100%; -} - -.figure { - padding: 0; -} - -ul { - padding-inline-start: 20px; -} - -pre.src { - overflow-y: auto; - -}