diff --git a/.bundle/config b/.bundle/config new file mode 100644 index 000000000..236922881 --- /dev/null +++ b/.bundle/config @@ -0,0 +1,2 @@ +--- +BUNDLE_PATH: "vendor/bundle" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..db5431a71 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,50 @@ +name: Publish to Github Pages +on: + push: + branches: + - master + +jobs: + build-publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + with: + submodules: recursive + - uses: actions/cache@v2 + with: + path: vendor/bundle + key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-gems- + - name: ⬢ Use Node.js 12.14.1 + uses: actions/setup-node@v1 + with: + node-version: '12.14.1' + - name: 🔨 Install dependencies + run: | + npm install + npm install --only=dev + - name: 💎 Setup ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.7 + + - name: 🔨 Install gems & build site + uses: limjh16/jekyll-action-ts@v2 + with: + enable_cache: true + - name: 🏷 Prepare tag + run: | + git_hash=$(git rev-parse --short "$GITHUB_SHA") + echo "::set-output name=tag_name::master/${git_hash}" + echo "::set-output name=deploy_tag_name::deploy-master/${git_hash}" + - name: 🚀 Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./_site + publish_branch: gh-pages + keep_files: false + tag_name: ${{ steps.prepare_tag.outputs.deploy_tag_name }} + tag_message: 'Deployment ${{ steps.prepare_tag.outputs.tag_name }}' diff --git a/.gitignore b/.gitignore index ea41e47e0..4ae4e7faf 100644 --- a/.gitignore +++ b/.gitignore @@ -4,10 +4,10 @@ .jekyll-cache/ .jekyll-metadata Gemfile.lock +/vendor ### Gulp ### -package.json /node_modules/ @@ -79,4 +79,4 @@ $RECYCLE.BIN/ *.msi *.msm *.msp -*.lnk \ No newline at end of file +*.lnk diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..cfe4ef738 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "libs/lunr.js"] + path = libs/lunr.js + url = https://github.com/olivernn/lunr.js.git diff --git a/.node-version b/.node-version new file mode 100644 index 000000000..d4c43fa77 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +12.14.1 \ No newline at end of file diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..4e6dfc2e2 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ +# keep GH from autobuilding jekyll \ No newline at end of file diff --git a/404.html b/404.html deleted file mode 100644 index 086a5c9ea..000000000 --- a/404.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -permalink: /404.html -layout: default ---- - - - -
-

404

- -

Page not found :(

-

The requested page could not be found.

-
diff --git a/Gemfile b/Gemfile index 1b2e8fe83..573d4e507 100644 --- a/Gemfile +++ b/Gemfile @@ -7,22 +7,27 @@ source "https://rubygems.org" # # This will help ensure the proper Jekyll version is running. # Happy Jekylling! -gem "jekyll", "~> 4.0.0" +gem "jekyll", "~> 4.2.0" # This is the default theme for new Jekyll sites. You may change this to anything you like. # If you want to use GitHub Pages, remove the "gem "jekyll"" above and # uncomment the line below. To upgrade, run `bundle update github-pages`. # gem "github-pages", group: :jekyll_plugins # If you have any plugins, put them here! -gem "jekyll-feed", "~> 0.12" -gem "jekyll-seo-tag", "~> 2.6" +gem "jekyll-feed", "~> 0.15.1" +gem "jekyll-seo-tag", "~> 2.7.1" # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # and associated library. install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do - gem "tzinfo", "~> 1.2" + gem "tzinfo", "~> 2.0" gem "tzinfo-data" end # Performance-booster for watching directories on Windows gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform? +gem 'jemoji' +gem 'jekyll-purgecss' +gem 'jekyll-minifier' +gem 'jekyll-redirect-from' +gem "webrick", "~> 1.7" diff --git a/Gemfile.lock b/Gemfile.lock index 86b19717f..c1ecf9808 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,87 +1,132 @@ GEM remote: https://rubygems.org/ specs: + activesupport (6.1.3.2) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.7.0) public_suffix (>= 2.0.2, < 5.0) colorator (1.1.0) - concurrent-ruby (1.1.6) - em-websocket (0.5.1) + concurrent-ruby (1.1.8) + cssminify2 (2.0.1) + em-websocket (0.5.2) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) eventmachine (1.2.7) eventmachine (1.2.7-x64-mingw32) - ffi (1.12.2) - ffi (1.12.2-x64-mingw32) + execjs (2.8.1) + ffi (1.15.0) + ffi (1.15.0-x64-mingw32) forwardable-extended (2.6.0) + gemoji (3.0.1) + html-pipeline (2.14.0) + activesupport (>= 2) + nokogiri (>= 1.4) + htmlcompressor (0.4.0) http_parser.rb (0.6.0) - i18n (1.8.2) + i18n (1.8.10) concurrent-ruby (~> 1.0) - jekyll (4.0.0) + jekyll (4.2.0) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) - i18n (>= 0.9.5, < 2) + i18n (~> 1.0) jekyll-sass-converter (~> 2.0) jekyll-watch (~> 2.0) - kramdown (~> 2.1) + kramdown (~> 2.3) kramdown-parser-gfm (~> 1.0) liquid (~> 4.0) - mercenary (~> 0.3.3) + mercenary (~> 0.4.0) pathutil (~> 0.9) rouge (~> 3.0) safe_yaml (~> 1.0) - terminal-table (~> 1.8) - jekyll-feed (0.13.0) + terminal-table (~> 2.0) + jekyll-feed (0.15.1) jekyll (>= 3.7, < 5.0) + jekyll-minifier (0.1.10) + cssminify2 (~> 2.0) + htmlcompressor (~> 0.4) + jekyll (>= 3.5) + json-minify (~> 0.0.3) + uglifier (~> 4.1) + jekyll-purgecss (0.3.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) jekyll-sass-converter (2.1.0) sassc (> 2.0.1, < 3.0) - jekyll-seo-tag (2.6.1) - jekyll (>= 3.3, < 5.0) + jekyll-seo-tag (2.7.1) + jekyll (>= 3.8, < 5.0) jekyll-watch (2.2.1) listen (~> 3.0) - kramdown (2.2.0) + jemoji (0.12.0) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + json (2.5.1) + json-minify (0.0.3) + json (> 0) + kramdown (2.3.1) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) liquid (4.0.3) - listen (3.2.1) + listen (3.5.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.3.6) + mercenary (0.4.0) + mini_portile2 (2.5.1) + minitest (5.14.4) + nokogiri (1.11.4) + mini_portile2 (~> 2.5.0) + racc (~> 1.4) + nokogiri (1.11.4-x64-mingw32) + racc (~> 1.4) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (4.0.4) - rb-fsevent (0.10.3) + public_suffix (4.0.6) + racc (1.5.2) + rb-fsevent (0.11.0) rb-inotify (0.10.1) ffi (~> 1.0) - rexml (3.2.4) - rouge (3.18.0) + rexml (3.2.5) + rouge (3.26.0) safe_yaml (1.0.5) - sassc (2.3.0) + sassc (2.4.0) ffi (~> 1.9) - sassc (2.3.0-x64-mingw32) + sassc (2.4.0-x64-mingw32) ffi (~> 1.9) - terminal-table (1.8.0) + terminal-table (2.0.0) unicode-display_width (~> 1.1, >= 1.1.1) - thread_safe (0.3.6) - tzinfo (1.2.7) - thread_safe (~> 0.1) - tzinfo-data (1.2019.3) + tzinfo (2.0.4) + concurrent-ruby (~> 1.0) + tzinfo-data (1.2021.1) tzinfo (>= 1.0.0) + uglifier (4.2.0) + execjs (>= 0.3.0, < 3) unicode-display_width (1.7.0) wdm (0.1.1) + webrick (1.7.0) + zeitwerk (2.4.2) PLATFORMS ruby x64-mingw32 DEPENDENCIES - jekyll (~> 4.0.0) - jekyll-feed (~> 0.12) - jekyll-seo-tag (~> 2.6) - tzinfo (~> 1.2) + jekyll (~> 4.2.0) + jekyll-feed (~> 0.15.1) + jekyll-minifier + jekyll-purgecss + jekyll-redirect-from + jekyll-seo-tag (~> 2.7.1) + jemoji + tzinfo (~> 2.0) tzinfo-data wdm (~> 0.1.1) + webrick (~> 1.7) BUNDLED WITH - 2.1.4 + 2.2.15 diff --git a/README.md b/README.md index 91ff8f24d..2b99a945f 100644 --- a/README.md +++ b/README.md @@ -1,107 +1,245 @@ # Purdue USB Website -This repository is created for Purdue's CS Undergraduate Student Board. This website was designed to be easily maintained. Information that is frequently updated, like members, initiatives, and student resources, can all be updated by editing YAML and Markdown files. This site is built using Jekyll with a customized minima theme. Jekyll was selected due to its compatibility with GitHub Pages, as well as it's quality of life improvements. We tried to make this site fairly lightweight. Jekyll only allows for static site creation, which is fine for our purposes. -## Installation -Please follow the installation instructions found on the [Jekyll Website](https://jekyllrb.com/docs/installation/). There are instructions for Windows, macOS, and Linux. Once Jekyll is properly installed, clone the repository. Then, run `bundle exec jekyll serve` in the repository's root directory. +This repository is created for Purdue's CS Undergraduate Student Board website. Our main consideration is the ease of maintenance and content updates. Information that frequently changes, like members, initiatives, and Student Wiki, can all be updated through YAML and Markdown files. -## TODO - * Make post sidebar in student resource page independent scrollable from the article content - * Either create an about page (maybe about the history of the organization) or have it link to the landing instead - * Make social media links present on the "Hello from USB!" section +This is a static site built using [Jekyll](https://jekyllrb.com), designed on [Figma](https://figma.com), and hosted here on Github Pages. Jekyll was selected due to its compatibility with GH Pages, as well as it's out-of-the-box blog functionality. -## Usage +## **Contribution** -### Editing USB Members - 1. If necessary, add their photograph in `assets/images/members`. Make sure the images are cropped to be square. - 2. Edit `_data/members.yml` with their name, image, title, and class rank. +### **Editing Site Information** +Directly editing the main branch is forbidden. To make updates, edit another branch and submit a pull request. Netlify bot will comment on your PR with a link to a deployed preview of your changes. When you merge into main a build will commence under the Actions tab. -### Editing Initiatives - 1. Add an initiative logo in `assets/images/initiative`. The logo must be 400px by 289px in resolution. - 2. Edit `_data/initiatives.yml` with title, image, and description. +*Please take a moment to familiarize yourself with [YAML](https://learnxinyminutes.com/docs/yaml/) and [Markdown](https://learnxinyminutes.com/docs/markdown/) formats.* -### Editing Objectives - 1. Add an objective logo to `assets/images/objectives` - 2. Edit `_data/objectives.yml` with title, image, and description. +#### **Emails** +Please use an [obfuscation technique](https://mothereff.in/html-entities) to prevent web crawlers from detecting emails on our site. -### Editing Student Resources -Articles are to be written in Markdown. Look at one of the preexisting articles as a reference. Be sure to include the following "front matter" attributes to the top of the Markdown file between a pair of `---`. - * layout - This will always be `post` - * title - Title of the article - * description - Describe what the article is about. Keep this down to one sentence. - * author: Name of the author - * date - Date of most recent edit - * categories: Category this fits the article, like `technical` or `campus`. Multiple categories can be included, as long as they are comma separated, an between square brackets. +#### **Images** +Please run `webp-convert` on any directories of images you add that are not in webp format. -### Layouts +#### **Pages & Redirects** +To add a new page, create an html file in the `_pages` directory. You can access it at `purdueusb.com/filename`. You can use the `redirect_to` and `redirect_from` frontmatter attributes to add appropriate redirects or page aliases. Example: +``` +--- +title: USB Office Hours +redirect_from: + - /oh/ +redirect_to: https://www.notion.so/0bb4e5da1b154b258d8bb00793117526?v=3aa761f5611f4e788d6b9855a6c20dd0 +--- +``` -Refers to files within the `_layouts` directory, that define the markup for your theme. +#### **USB Members** +1. Edit either `_data/members.yml` or `_data/alumni.yml` with their name, title, class rank, and (optionally) an appropriate personal website. +2. If necessary, add their photograph in `assets/images/members`. Make sure the image file name matches their name in their yml entry, the images are square, and 300x300. + - We don't want to be serving images larger than they need to be. - - `default.html` — The base layout that lays the foundation for subsequent layouts. The derived layouts inject their contents into this file at the line that says ` {{ content }} ` and are linked to this file via [FrontMatter](https://jekyllrb.com/docs/frontmatter/) declaration `layout: default`. This was not used for some of our pages, due to a need for custom designs. Instead, a few pages (index.html and initiatives.html) use their own custom layouts. - - `page.html` — The layout for your documents that contain FrontMatter, but are not posts. This was used for the student resources page. - - `post.html` — The layout for your posts. Each of the student resource articles is a "post." +#### **Initiatives** +1. Add an initiative logo in `assets/images/initiative`. Please use a square resolution, or it will be cropped to fit automatically. +2. Edit `_data/initiatives.yml` with `title`, `image`, `description`, (optional) `inactive`, (optional) `buttonText` and `buttonLink` and list of participating `members` names (as spelled in members.yml). + - An inactive entry can contain either `true | string`. True will display "INACTIVE" and anything else will be displayed as-is. + - Former members can be designated alumnus by making their class a year. -### Includes +#### **Objectives** +1. Add an objective logo to `assets/images/objectives` +2. Edit `_data/objectives.yml` with title, image, and description. -Refers to snippets of code within the `_includes` directory that can be inserted in multiple layouts (and another include-file as well) within the same theme-gem. +#### **Student Wiki** +Wiki posts are written in Markdown only. To keep the flow of information consistent, please **do not use `h1 (#)` or `h2 (##)` headings**. - - `aboutus.html` — The mission and objectives of USB. - - `footer.html` — Defines the site's footer section. - - `head.html` — Code-block that defines the `` in *default* layout. - - `header.html` — Defines the site's main header section. By default, pages with a defined `title` attribute will have links displayed here. - - `members.html` — A flexbox showing the profile images of all the current members of USB. - - `postsidebar.html` — The sidebar of all articles that is seen when a user clicks on a student resource post/ - - `social.html` — Creates a row of social media icons that are used in the footer. Clicking on these icons will take the user to our respective social media pages. +You can also use emojis seen on this [cheat sheet](https://www.webfx.com/tools/emoji-cheat-sheet/)! :bangbang: + +**A note about images**: Please only use images hosted by USB - not from an outside source. In addition, use descriptive and readable captions for wiki images, as they will be displayed to the user and read aloud via screen readers. + +The filename will be the URL slug, so `lawson-fob.md` becomes `/wiki/lawson-fob`. Be sure to include the following [front matter](https://jekyllrb.com/docs/front-matter/) attributes: + +- title: Title of the article +- description: Describe what the article is about. Keep this down to one sentence. +- author: List of author names exactly as they appear in membership data files. +- date: Date of most recent edit +- categories: Category this fits the article, like `technical` or `campus`. Multiple categories can be included, as long as they are comma separated, an between square brackets. + +Example: `apply-to-usb.md` +```yaml +--- +title: How to Apply to the USB +description: A very useful resource for prospective members. +author: + - Clippy +category: + - campus + - clubs +--- +thank u for your interest +![clippy](assets/images/clippy.png) +``` -### Sass +To disable lightcase on a markdown link, use the `no-lightcase` class like so: +```markdown +[video link](https://youtu.be/iWowJBRMtpc?t=90s){:.no-lightcase} +``` + +## **Development** + +### **Installation & Setup** + +This project contains submodule dependencies, so clone using `git clone --recursive git@github.com:Purdue-CSUSB/purdueusb.com.git`. If you forgot to do this, run `git submodule update --init --recursive` in the project root. + +NPM is required ([version here](.node-version)) to run `purgecss` in production. + +You can get Jekyll running by following the [installation tutorial](https://jekyllrb.com/docs/installation/). There are instructions for Windows, macOS, and Linux. Once Jekyll is properly installed, run `bundle exec jekyll serve` in the repository's root directory. + + - **Linux users**: you can use `run.sh [-chilpt]` to run the jekyll build server conveniently. + - -c) Clean jekyll cache files. + - -h) Headless mode (don't open your browser automatically). + - -i) Run `bundle install` at start. + - -l) Live server (can cause gigabytes of cache buildup and require browser restart). + - -p) Production mode: runs `purgecss` (slow *i know*). + - -t) Debug mode, shows traceback. + +Note: Jekyll does not parse changes to `_config.yml` in watch mode. You must restart the build server for changes to take effect. + +### **TODO** +- [x] Make post sidebar in student resource page independent scrollable from the article content +- [ ] Decrease load time. + - [x] Compress all image assets. + - [x] Minify & purge css assets. Jekyll built-in compact mode is currently broken. +- [x] Add search functionality to Student Wiki. +- [ ] Ensure proper site accessibility. + - [ ] Test with screen reader. + - [ ] Make use of ally.js or another library. +- [x] Add USB alumni to collapsible section. + - [ ] Collect USB alumni photos, names, websites, and year they left usb +- [ ] Either create an about page (maybe about the history of the organization) or have it link to the landing instead. +- [x] Create 404 page doodle. +- [ ] Decrease build time + - [ ] Phase out `generate.css` with `tailwind.css` (closely modeled after this framework) +- [ ] Un-extendify sass with silent classes. +- [ ] Componentize site elements with [web components](https://css-tricks.com/an-introduction-to-web-components/) +- [ ] Future deprecation issues: convert all @import statements when support is added for @use in the jekyll sass converter. See [relevant issue](https://github.com/jekyll/jekyll-sass-converter/issues/105). + +### **Known Issues** +- Purgecss will purge style classes used/constructed programmatically. Sometimes it is necessary to exempt classes from purgecss like so: + ```scss + /*! purgecss start ignore */ + .bg { + @include generate-subclass($colors, 'background-color'); + } + /*! purgecss end ignore */ + ``` + - Purgecss doesn't like to obey ignore statements ¯\\_(ツ)\_/¯ +- Live reload can cause **major** cache buildup and exhaust your ram. +- An error seems to cause intermittent failure to load live changes: + ```ERROR Errno::ECONNRESET: Connection reset by peer @ io_fillbuf``` +- Build time is `s l o w` because of css class generation, while production builds are even slower to purge most of those classes. This is more or less a `wontfix` issue because it gives css writers major flexibility. +- Don't use tab characters in `_config.yml` +- `warning: Using the last argument as keyword parameters is deprecated` -> fix by running `bundle update jekyll` to get to `4.0.1`. +- `webp` is shamefully not supported by popular safari versions + +### Testing +You can access your changes from another device on your local network through your computer's local IP (e.g. `192.168.1.1:4000`). + +When you make a change to the website, it's necessary to test your changes on the `staging` branch before pushing to master. Once you've made a PR, netlify will automatill build and deploy a preview of the changes. You'll get a notification in the #website channel. Alternatively, you can request a build via `./build.sh [-s|-p]. + +If you make a change to the HTML/CSS/plugins of the site, test your changes on all screen sizes available in the devtools device toolbar. You never know what will break with CSS, so please look through the whole site to be sure it's working. + +### **Plugins** + +Plugins currently in use: + +- Jekyll SEO tag +- Jemoji (github emoji support) +- Jekyll purgecss +- Jekyll minifier *Netlify also handles minification* +- jekyll-redirect-from + +Local Dependencies: +- Highlight.js: Syntax highlighting +- Lightcase: Seamlessly display image and video links in a modal dialog +- Lunr.js: Site search support + +NPM Dependencies: +- Purgecss: Remove unused css classes + +CDN Dependencies: +- Anchorjs: Provide anchor link support +- MagicGrid: Align items in a masonry grid +- FontAwesome: Vast array of vector icons +- JQuery + +### **Config** +Here we define site configuration variables such as content collections, permalink formats, plugins, and other site-wide defaults. + +### **Data** +Data collections can be stored in YAML files under the `_data` directory, and can be accessed by using `site.data.` in [Liquid](https://jekyllrb.com/docs/liquid/). + +### **Layouts** +Refers to files within the `_layouts` directory, that define the markup for your theme. +- `default.html` — The base layout that lays the foundation for subsequent layouts. The derived layouts inject their contents into this file at the line that says `{{ content }}` and are linked to this file via [FrontMatter](https://jekyllrb.com/docs/frontmatter/) declaration `layout: default`. +- `wiki.html` — An extension of the base layout that includes a sidebar and content area for wiki posts. + +### **Includes** +Refers to snippets of code within the `_includes` directory that can be inserted in multiple layouts (and another include-file as well) within the same theme-gem. +- Nav + - `footer.html` — Defines the site's footer section. + - `header.html` — Defines the site's main header section. By default, pages defined in `_data/header_links` will show up here in defined order. + - `sidebar.html` — The sidebar of all wiki entries that is seen when a user clicks on a student resource link. +- Components + - `aboutus.html` — The mission and objectives of USB, and our members. + - `initiatives.html` — Shows the cards for each initiative present in `_data/initiatives.yml`. + - `members/` — A group of components showing members of USB as listed in `members.yml`. + - `post.html` — The layout of a wiki resource (excludes sidebar). + - `rating.html` — The layout of a wiki resource (excludes sidebar). + - `social.html` — Creates a row of social media icons that are used in the footer. Clicking on these icons will take the user to our respective social media pages. +- `head.html` — Code-block that defines the `` in _default_ layout. + + +### **Sass** Refers to `.scss` files within the `_sass` directory that define the site's styles. - - `minima.scss` — The core file imported by the preprocessed `main.scss`. t defines the variable defaults for the theme and also further imports sass partials to supplement itself. - - `minima/_base.scss` — Resets and defines base styles for various HTML elements. - - `minima/_layout.scss` — Defines the visual style for various layouts. - - `minima/_syntax-highlighting.scss` — Defines the styles for syntax-highlighting. - - `pages/*.scss` — In an effort to improve maintainability, each primary page has its own corresponding `.scss` file for defining custom styles. Please define future classes and ids for a page in its corresponding `.scss` file. If additional pages are added in the future, add a new `.scss` file. Be sure to import this new file in the `style.scss` file. - - `style.scss` — An additional file imported by the preprocessed `main.scss`. It imports the other custom `pages/*.scss` files, as well as sets variables that are used in those files. +- `theme.scss` — The core file imported by the preprocessed `main.scss`. It defines the variable defaults for the theme and also further imports sass partials to supplement itself. +- `mixins.scss` — A file containing all miscellaneous mixins used to dynamically include styles. +- `generate.scss` — A complex file used to generate tailwind-esque variants for html class styling, such as screen size breakpoints, or light and dark colors. Not recommended or necessary to modify this file in order to customize the theme unless you understand what you're doing. +- `utils.scss` — Supplemental and miscellaneous styles. +- `theme/_base.scss` — Defines base global styles for various HTML elements. +- `theme/_layout.scss` — Defines styles specifically for layouts and layout elements. +- `theme/_syntax-highlighting.scss` — Defines the styles for syntax-highlighting. +- `pages/*.scss` — Each primary page may draw on a corresponding sass file for their specific files. If additional pages are added in the future, add a new `.scss` file. Be sure to import this new file in the `main.scss` file. -### Assets +Special mention: +- `assets/main.scss` — The main file to be transpiled by sass into regular css. All page styles imported here on top of the theme. +### **Assets** Refers to various asset files within the `assets` directory. Contains the `main.scss` that imports sass files from within the `_sass` directory. This `main.scss` is what gets processed into the theme's main stylesheet `main.css` called by `_layouts/default.html` via `_includes/head.html`. This directory can include sub-directories to manage assets of similar type, and will be copied over as is, to the final transformed site directory. -### Change default date format +All assets will be compressed by the img-bot on github, so try to stick to compressable formats. Please check for quality. -You can change the default date format by specifying `site.minima.date_format` +### **Default date format** +You can change the default date format by specifying `site.date_format` in `_config.yml`. ``` -# Minima date format -# refer to http://shopify.github.io/liquid/filters/date/ if you want to customize this -minima: - date_format: "%b %-d, %Y" +# Date Format +# refer to https://shopify.github.io/liquid/filters/date/ to customize this +date_format: "%b %-d, %Y" ``` -### Social networks - -You can add links to the accounts you have on other sites, with respective icon, by adding one or more of the following options in your config: +### **Social networks** +You can add links to the accounts USB maintains on other sites by adding options to the config in the following format (`https://` included): ```yaml -twitter_username: jekyllrb -github_username: jekyll -dribbble_username: jekyll -facebook_username: jekyll -flickr_username: jekyll -instagram_username: jekyll -linkedin_username: jekyll -pinterest_username: jekyll -youtube_username: jekyll -googleplus_username: +jekyll -rss: rss - -mastodon: - - username: jekyll - instance: example.com - - username: jekyll2 - instance: example.com +myspace: "https://myspace.com/mycoolestprofile" ``` + +Please ensure we have an svg icon for the site you add, and add one if not. + +### **Accessibility** +The USB serves all students, and our website is no exception. Ensuring WCAG compliance is very important, and accessibility issues [have lead to lawsuits](https://www.boia.org/blog/is-there-a-legal-requirement-to-implement-wcag) as [potential violations of the ADA Title III requirement](https://www.grassley.senate.gov/sites/default/files/documents/2018-10-11%20DOJ%20to%20Grassley%20-%20ADA%20Website%20Accessibility.pdf)! + +#### **What should you do?** +The WCAG is tedious to read, but first and foremost use your head and empathize with the user. Secondly, you can read a summary or checklist such as [this one](https://uxdesign.cc/web-accessibility-standards-an-overview-for-designers-1a4d39f2fe5e) published in the UX Collective publication. + +It doesn't have to be perfect, but we should be as compliant as possible whenever we can. diff --git a/_config.yml b/_config.yml index 1ef54f08e..22a131f45 100644 --- a/_config.yml +++ b/_config.yml @@ -1,44 +1,53 @@ title: Purdue USB author: name: Purdue USB - email: usb@cs.purdue.edu + email: "usb@cs.purdue.edu" description: The Computer Science Undergraduate Student Board (USB) at Purdue University is the liaison between undergraduate CS/DS students and the CS department. show_excerpts: false # set to true to show excerpts on the homepage +include: ["_pages", "_assets/searchData.js"] +url: https://purdueusb.com/ -# Minima date format -# refer to https://shopify.github.io/liquid/filters/date/ if you want to customize this -minima: - date_format: "%b %-d, %Y" +collections: + pages: + output: true + permalink: /:name/ + wiki: + output: true + permalink: /wiki/:title - # generate social links in footer - social_links: - # twitter: jekyllrb - github: Purdue-CSUSB - # devto: jekyll - # dribbble: jekyll - facebook: purdueusb - # flickr: jekyll - instagram: purdueusb - # linkedin: jekyll - # pinterest: jekyll - # youtube: jekyll - # youtube_channel: UC8CXR0-3I70i1tfPg1PAE1g - # youtube_channel_name: CloudCannon - # telegram: jekyll - # googleplus: +jekyll - # microdotblog: jekyll - # keybase: jekyll +defaults: + - + scope: + path: "" + type: "pages" + values: + layout: "default" + - + scope: + path: "" + type: "wiki" + values: + layout: "wiki" - # Mastodon instances - # mastodon: - # - username: jekyll - # instance: example.com - # - username: jekyll2 - # instance: example.com +# Date Format +# refer to https://shopify.github.io/liquid/filters/date/ to customize this +date_format: "%B %-d, %Y" - # GitLab instances - # gitlab: - # - username: jekyll - # instance: example.com - # - username: jekyll2 - # instance: example.com +highlighter: none +markdown: kramdown +kramdown: + html_to_native: true + +css_dir: "assets" + +#ES6 in minifier +jekyll-minifier: + uglifier_args: + harmony: true + +plugins: + - jekyll-seo-tag + - jemoji + - jekyll-purgecss + - jekyll-minifier + - jekyll-redirect-from diff --git a/_data/announcement.yml b/_data/announcement.yml new file mode 100644 index 000000000..3b222c832 --- /dev/null +++ b/_data/announcement.yml @@ -0,0 +1,4 @@ +show: false +text: USB membership applications are now open until January 31! +buttontext: Apply Now! +buttonlink: https://forms.gle/EsQauUPcoYMHP7oP6 diff --git a/_data/header_links.yml b/_data/header_links.yml new file mode 100644 index 000000000..070b3a50d --- /dev/null +++ b/_data/header_links.yml @@ -0,0 +1,10 @@ +- text: Student Wiki + href: /wiki +- text: Blog + href: /blog +- text: About Us + href: /about +- text: Our Work + href: /initiatives +- text: Contact Us + href: /contact diff --git a/_data/initiatives.yml b/_data/initiatives.yml index a88dc07ca..fb274a019 100644 --- a/_data/initiatives.yml +++ b/_data/initiatives.yml @@ -1,37 +1,43 @@ - title: CS 191 Panel - image: CS191_Panel_Logo.png + image: CS191_Panel_Logo description: Q&A panel of upperclass CS/DS students + members: - title: CS 193 - image: CS193_Logo.png + image: CS193_Logo description: Tools course taught by USB members - -- title: Virtual Office Hours - image: Virtual_Office_Hours_Logo.png - description: Innovative new way to hold office hours + +- title: Response to 2022 Open Letter + image: letter_image + description: The USB wrote a response to President Daniels 2022 Open Letter + buttonText: View Response + buttonLink: /openletter/ - title: Help Room - image: Help_Room_Logo.png + image: Help_Room_Logo description: CS 193, CS 180, CS 182, and CS 240 Help buttonText: View Times - buttonLink: https://www.purdueusb.com/helproom/ - -- title: Office Hours - image: Office_Hours_Logo.png - description: Come talk with us! - buttonText: View Times - buttonLink: https://www.purdueusb.com/officehours/index.html + buttonLink: /helproom + buttonTarget: _self - title: Undergraduate Student Forum - image: Student_Forum_Logo.png + image: Student_Forum_Logo description: Forum for undergrads to discuss their experiences - title: USB Tutor List - image: Tutor_List.png + image: Tutor_List description: Tutor list maintained by USB for students looking for extra help - buttonText: View List - buttonLink: https://www.purdueusb.com/tutors/ + buttonText: View Tutors + buttonLink: /tutors/ - title: Mentorship - image: Mentorship.png - description: Working on creating a supportive community between upperclassmen and underclassmen \ No newline at end of file + image: Mentorship + description: Working on creating a supportive community between upperclassmen and underclassmen + +- title: USB Blog + image: Blog_Initiative + description: + +- title: International Student Resources + image: International-Initiative + description: Providing international students with resources and guidance as they navigate their time at Purdue. diff --git a/_data/members.yml b/_data/members.yml deleted file mode 100644 index 5c8bab044..000000000 --- a/_data/members.yml +++ /dev/null @@ -1,89 +0,0 @@ -- name: Lauren Lum - image: Lauren.jpg - title: President - class: Senior - -- name: Arianna Smith - image: Arianna.jpg - title: Vice President - class: Junior - -- name: Cindy Ding - image: Cindy.jpg - title: Treasurer - class: Junior - -- name: Neerali Shah - image: Neerali.jpg - title: Secretary - class: Sophomore - -- name: Albert Zhong - image: Albert.jpg - class: Senior - -- name: CJ Enright - image: CJ.jpg - class: Senior - -- name: Sagar Nattuvetty - image: Sagar.jpg - class: Senior - -- name: Sera Savas - image: Sera.jpg - class: Senior - -- name: Christopher Lehman - image: Christopher.jpg - class: Junior - -- name: Noah Alderton - image: Noah.jpg - class: Senior - -- name: Pallav Agarwal - image: Pallav.jpg - class: Junior - -- name: Pinaki Mohanty - image: Pinaki.jpg - class: Senior - -- name: Riley McKeever - image: Riley.jpg - class: Junior - -- name: Sarah Thomas - image: Sarah.jpg - class: Junior - -- name: Sweta Saravanan - image: Sweta.jpg - class: Sophomore - -- name: Simran Kadadi - image: Simran.jpg - class: Sophomore - -- name: Shashank Kumar - image: None.jpg - class: Sophomore - -- name: Caleb Ahn - image: Caleb.jpg - class: Sophomore - -- name: Arya Sharma - image: Arya.jpg - class: Sophomore - -- name: Anisha Bhat - image: None.jpg - class: Sophomore - -- name: Sean Flannery - title: GSB Honorary Member - image: Sean.jpg - - diff --git a/_data/objectives.yml b/_data/objectives.yml index 8c18a54b0..ca9b38a48 100644 --- a/_data/objectives.yml +++ b/_data/objectives.yml @@ -1,9 +1,9 @@ - title: Advocacy - description: USB cares- like, really cares. Visit our daily office hours or attend the undergraduate town hall to discuss ways to improve our community and student experience. + description: USB cares about improving the student experience. Visit our daily office hours or attend the undergraduate town hall to discuss ways to improve our community. image: care.svg - title: Resources - description: We're here to help CS and DS students. We developed CS193 (a tools course for freshmen), run a free help room for intro CS courses, and maintain a tutor list. + description: We're here to help CS and DS students. We teach CS193 Tools for first-years, run a free help room for intro CS courses, and maintain a tutor list. image: chart.svg - title: Events diff --git a/_data/people.yml b/_data/people.yml new file mode 100644 index 000000000..20b44415b --- /dev/null +++ b/_data/people.yml @@ -0,0 +1,298 @@ +members: &members + - name: Vindhya Banda + title: President + class: Senior + site: https://www.linkedin.com/in/vindhya-banda/ + + - name: Rohan Purandare + title: Vice President + class: Junior + site: https://www.linkedin.com/in/rohanpurandare/ + + - name: Grace Keeton + title: Treasurer + class: Junior + site: + + - name: Wei Yi Tan + title: Secretary + class: Junior + site: + + - name: Anushka Sharma + title: Chief People Officer + class: Junior + site: + + - name: Simran Kadadi + title: GSB Liaison + class: Senior + site: + + - name: Caleb Ahn + class: Senior + site: + + - name: Anisha Bhat + class: Senior + site: + + - name: Shashank Kumar + class: Senior + site: + + - name: Sweta Saravanan + class: Senior + site: https://www.linkedin.com/in/sweta-saravanan-aa3937191/ + + - name: Neerali Shah + class: Senior + site: https://www.linkedin.com/in/neerali-shah/ + + - name: Arya Sharma + class: Senior + site: + + - name: Ishika Kamchetty + class: Senior + site: + + - name: Gowri Harish + class: Senior + site: + + - name: Eddie Kim + class: Junior + site: https://www.linkedin.com/in/tae-woo-kim-95148b192/ + + - name: Elijah Colwill + class: Junior + site: https://www.linkedin.com/in/elijahcolwill/ + + - name: Riya Verma + class: Junior + site: + + - name: Mason Adams + class: Junior + site: + + - name: Tiffany Kuang + class: Sophomore + site: + + - name: Brayden Brackett + class: Sophomore + site: + + - name: Emily Hao + class: Sophomore + site: + + - name: Jillian Urgello + class: Sophomore + site: + + - name: Pooja Mathi + class: Sophomore + site: + + - name: Sarah Pushparaj + class: Sophomore + site: + + - name: Theo Park + class: Sophomore + site: + + - name: Pinaki Mohanty + class: GSB Honorary Member + site: https://www.linkedin.com/in/pinakim98/ + +alumni: &alumni + - name: Arianna Smith + title: Former President + class: 2022 + site: https://www.linkedin.com/in/arianna-smith-32229816a/ + - name: Cindy Ding + title: Former Treasurer + class: 2022 + site: https://www.linkedin.com/in/cindydhy/ + - name: Christopher Lehman + title: Former Secretary + class: 2022 + site: https://www.linkedin.com/in/christopher-lehman/ + - name: Riley McKeever + class: 2022 + site: + - name: Sarah Thomas + class: 2022 + site: + - name: Pallav Agarwal + class: 2021 + site: https://www.linkedin.com/in/pallav-agarwal/ + - name: Sean Flannery + title: Former GSB Honorary Member + class: 2021 + site: https://www.linkedin.com/in/sflanner/ + - name: Noah Alderton + class: 2021 + site: https://www.linkedin.com/in/noahalderton/ + - name: Lauren Lum + title: Former President + class: 2021 + site: https://www.linkedin.com/in/lumlauren/ + - name: Albert Zhong + class: 2021 + site: https://www.linkedin.com/in/albert-zhong-695961149/ + - name: Sagar Nattuvetty + class: 2021 + site: + - name: Sera Savaş + class: 2021 + site: https://www.linkedin.com/in/sera-savas-179968148/ + - name: CJ Enright + class: 2020 + site: https://www.linkedin.com/in/cjenright/ + - name: Zach Bryant + title: Former President + class: 2020 + site: https://www.linkedin.com/in/zachdbryant/ + - name: Nirali Rai + title: Former Treasurer + class: 2020 + - name: Megan Walsh + title: + class: 2020 + - name: Kameron Lutes + title: Former President + class: 2019 + - name: Ian Zanger + title: Former Vice President + class: 2019 + - name: Rohan Gupta + title: + class: 2019 + - name: Puja Mittal + title: + class: 2019 + - name: Ian Renfro + title: + class: 2019 + - name: Jay Hankins + title: Former President + class: 2018 + - name: Matthew Ess + title: + class: 2018 + - name: Ahad Sagheer + title: + class: 2018 + - name: Adam Loeb + title: + class: 2017 + - name: Bryan Duffy + title: + class: 2017 + - name: Evan Walsh + title: + class: 2017 + - name: Mason Everett + title: + class: 2017 + - name: Rhys Howell + title: + class: 2017 + - name: Shane DeWael + title: + class: 2017 + - name: Spencer Brown + title: + class: 2017 + - name: Emma Wynne + title: + class: 2016 + - name: Ivan Zhang + title: + class: 2016 + - name: Kirby Kohlmorgen + title: + class: 2016 + - name: Scott Opell + title: + class: 2016 + - name: Richard Wei + title: + class: 2015 + - name: Brittany Vacchiano + title: + class: 2014 + - name: Tyler Hoffman + title: + class: 2014 + - name: Tyler Wear + title: + class: 2012 + - name: Marty Kausas + title: + class: + - name: Caitlin Kennedy + title: + class: + - name: Zach Johnson + title: + class: 2018 + - name: Andrew Shildmyer + title: + class: + - name: Ben Alderfer + title: + class: + - name: Christopher Sargent + title: + class: + - name: Clyde S. Byrd III + title: + class: + - name: Conlin Durbin + title: + class: + - name: Craig Hanna + title: + class: + - name: Curtis Knapp + title: + class: + - name: David Koenig + title: + class: + - name: Emmy Zhang + title: + class: + - name: Jason Akers + title: + class: + - name: Joe Martella + title: + class: + - name: Joe Rattazzi + title: + class: + - name: Kenneth Brown + title: + class: + - name: Levi Starrett + title: + class: + - name: Lillian Liu + title: + class: + - name: Robyn Bognar + title: + class: + - name: Stephanie Kate Ragozzino (Scherer) + title: + class: + +other: + - name: Purdue Pete diff --git a/_data/social_links.yml b/_data/social_links.yml new file mode 100644 index 000000000..4bb87253e --- /dev/null +++ b/_data/social_links.yml @@ -0,0 +1,15 @@ +# Search for FontAwesome icons here (preferably solid and not round) +# https://fontawesome.com/icons?d=gallery + +instagram: + url: "instagram.com/purdueusb" + fa-icon: "instagram" +facebook: + url: "facebook.com/purdueusb" + fa-icon: "facebook-square" +reddit: + url: "reddit.com/u/purdueusb" + fa-icon: "reddit-alien" +github: + url: "github.com/Purdue-CSUSB" + fa-icon: "github" \ No newline at end of file diff --git a/_includes/aboutus.html b/_includes/aboutus.html deleted file mode 100644 index ad5ec9973..000000000 --- a/_includes/aboutus.html +++ /dev/null @@ -1,31 +0,0 @@ -
-
-
-
-

Our Mission

-

The Computer Science Undergraduate Student Board exists to promote a supportive and engaged community - within Purdue’s Computer Science Department, and to use its relationship with faculty, the Computer - Science Corporate Partners Program, and administration to advocate for the student body.

-
-
-
-
-
-
-
-
- {%- for objective in site.data.objectives -%} -
- -
-

{{ objective.title }}

-

{{ objective.description }}

-
-
- - {%- endfor -%} - -
-
-
-
\ No newline at end of file diff --git a/_includes/components/aboutus.html b/_includes/components/aboutus.html new file mode 100644 index 000000000..0a8e86a09 --- /dev/null +++ b/_includes/components/aboutus.html @@ -0,0 +1,38 @@ +
+
+
+

About Us

+
+
+
+

Our Mission

+

+ The Computer Science Undergraduate Student Board was established in 1999 to promote a supportive and engaged community + within Purdue’s Computer Science Department, and to use its relationship with faculty, the Computer + Science Corporate Partners Program, and administration to advocate for the student body. +

+
+
+
+
+
+

Our Objectives

+
+ {%- for objective in site.data.objectives -%} + {% unless forloop.first or forloop.last%} +
+ {% endunless %} +
+

{{ objective.title }}

+
+

{{ objective.description }}

+ +
+
+ {%- endfor -%} +
+
+
+
+
+
\ No newline at end of file diff --git a/_includes/components/announcement.html b/_includes/components/announcement.html new file mode 100644 index 000000000..65b8e160e --- /dev/null +++ b/_includes/components/announcement.html @@ -0,0 +1,11 @@ +{%- assign show = site.data.announcement.show -%} +{%- assign text = site.data.announcement.text -%} +{%- assign button_text = site.data.announcement.buttontext -%} +{%- assign button_link = site.data.announcement.buttonlink -%} +{% if show and text != "" and text != nil and button_text != "" and button_text != nil and button_link != "" and button_link != nil %} +
+ +

{{text}}

+ +
+{% endif %} \ No newline at end of file diff --git a/_includes/components/banner.html b/_includes/components/banner.html new file mode 100644 index 000000000..7514c0b6d --- /dev/null +++ b/_includes/components/banner.html @@ -0,0 +1,29 @@ +
+
+ + + + USB Group Picture + +
+
+

Hello from USB!

+

+ The Computer Science Undergraduate Board is dedicated to improving the student experience within Computer and Data Sciences at Purdue- whether by + managing CS193, hosting forums for student advocacy, or maintaining a database of undergrad-tailored resources, USB is continually + creating initiatives that will uphold our values. +

+
+ {% assign buttonText = "Read Student Wiki" %} + +
+
+

Stay updated with us online

+
+ {% include components/social.html svg=true %} +
+
+
+
+
+
diff --git a/_includes/components/blog-temp/blog-posts.html b/_includes/components/blog-temp/blog-posts.html new file mode 100644 index 000000000..c6426a6b2 --- /dev/null +++ b/_includes/components/blog-temp/blog-posts.html @@ -0,0 +1,10 @@ +
+
+

All Posts

+
+
+ {%- for post in site.posts -%} + {% include components/blog-temp/card.html data=post %} + {%- endfor -%} +
+
diff --git a/_includes/components/blog-temp/card.html b/_includes/components/blog-temp/card.html new file mode 100644 index 000000000..6e4a601ed --- /dev/null +++ b/_includes/components/blog-temp/card.html @@ -0,0 +1,28 @@ +{% assign mobile-breakpoint-above = "xl-above" %} +{% assign mobile-breakpoint-below = "lg-below" %} + +{% assign post = include.data %} + +{% if post and post != nil %} +
+
+ + + + + +
+
+
+

{{ post.title | escape }}

+
+

{{ post.description }}

+
+
+ +
+{% endif %} diff --git a/_includes/components/blog.html b/_includes/components/blog.html new file mode 100644 index 000000000..e2a2c9378 --- /dev/null +++ b/_includes/components/blog.html @@ -0,0 +1,57 @@ +
+ +
+

{{ page.title }}

+
+

{{ page.description }}

+
+
+ Authored by +
+ {% assign author_count = page.author | size %} + {% for author in page.author %} +
+ {% if forloop.index <= author_count and forloop.index > 1 and author_count > 2 %}, {% endif %} + {% if forloop.index == author_count and forloop.index > 1 %}and{% endif %} + +
+ {% include components/member/avatar.html member=author name=true size="icon-3" show_name=true overlay=false %} + {% endfor %} +
+
+ {%- assign date_format = site.date_format | default: "%b %-d, %Y" -%} + {{ page.date | date: site.date_format }} +
+
+
+ +
+ +
+ {{ content }} + Welcome to the Purdue Computer Science and Data Science Undergraduate Blog Page + +

This blog serves as a way for students to share and connect with our growing community. + This forum serves as an opportunity for students to explain their thoughts and converse with the rest of the student community. + As CS students, we are grounded both by the shared experience of entering a new school, meeting new people from diverse backgrounds, + and making memories to last a lifetime. Here we hope to leave some footsteps to serve as a guide for future Boilermakers.<\p> + + Latest Blogs + Our Writers + + + +

+
+ {% assign categories_size = page.categories | size %} + {% if categories_size > 0 %} + {% if categories_size > 1 %}Categories{% else %}Category{% endif %}: + {% for category in page.categories %} + {{category}} + {% endfor %} + + {% endif %} +
+ {% include components/rating.html slug=page.slug %} +
+
diff --git a/_includes/components/contact.html b/_includes/components/contact.html new file mode 100644 index 000000000..fe7c1df6b --- /dev/null +++ b/_includes/components/contact.html @@ -0,0 +1,47 @@ +

What's on your mind?

+

You can also send us an email at {{site.author.email}}

+

+ Note: + To report concerns in an official capacity, please go to the + CS Concern Form. +

+ +
+
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+ + +
+ +
+ + +
+
+
+ + +
+
+
+
+
+
+ +
+
diff --git a/_includes/components/initiative/card.html b/_includes/components/initiative/card.html new file mode 100644 index 000000000..0985b16bf --- /dev/null +++ b/_includes/components/initiative/card.html @@ -0,0 +1,54 @@ +{% assign mobile-breakpoint-above = "xl-above" %} +{% assign mobile-breakpoint-below = "lg-below" %} + +{% assign initiative = include.data %} + +{% if initiative and initiative != nil %} +
+
+ + + + + +
+
+
+

{{ initiative.title | escape }}

+ {% if initiative.inactive == true %} + + inactive + {% elsif initiative.inactive != "" and initiative.inactive != nil %} + {{initiative.inactive}} + {% endif %} +
+

{{ initiative.description }}

+
+
+ {% assign hasMembers = initiative.members != nil %} + {% assign hasButton = initiative.buttonText != "" and initiative.buttonText != nil and initiative.buttonLink != "" and initiative.buttonLink != nil %} + {% if hasMembers or hasButton %} +
+
+ {% if hasMembers %} + Members +
+ {% assign initiative_members = initiative.members | sort:"value" %} + {% include components/member/list.html members=initiative_members name=true rowLimit=11 shadow=false size="icon-square-3" spacing="mt-1" overlay=false %} +
+ {% endif %} + {% if hasMembers and hasButton %} +
+ {% endif %} + {% if hasButton %} + + {% endif %} +
+
+ {% endif %} +
+{% endif %} \ No newline at end of file diff --git a/_includes/components/initiative/initiatives.html b/_includes/components/initiative/initiatives.html new file mode 100644 index 000000000..d56d553c7 --- /dev/null +++ b/_includes/components/initiative/initiatives.html @@ -0,0 +1,13 @@ +
+
+

Our Initiatives

+

We take pride in the freedom our members have to pursue impactful initiatives both immediately and in the long term. + Some initiatives have been around for a decade or more, while others come and go as our goals evolve.

+

Check out what we've been working on!

+
+
+ {%- for initiative in site.data.initiatives -%} + {% include components/initiative/card.html data=initiative %} + {%- endfor -%} +
+
\ No newline at end of file diff --git a/_includes/components/member/avatar.html b/_includes/components/member/avatar.html new file mode 100644 index 000000000..6f69d30a3 --- /dev/null +++ b/_includes/components/member/avatar.html @@ -0,0 +1,81 @@ +{% assign member_obj = include.member %} +{% assign all_people = site.data.people.members | concat: site.data.people.alumni | concat: site.data.people.other %} +{% if include.name %} + {% assign name = member_obj | strip %} + {% assign member_obj = all_people | where:"name", name | first %} +{% endif %} + +{% if member_obj.name %} + {% assign size = include.size | default: "icon-10" %} +
+ +
+{% else %} +{% assign size = include.size | default: "icon-10" %} +
+
+
+ + {% assign image_png_path = "/assets/images/members/png/None.png" %} + {% assign image_webp_path = "/assets/images/members/webp/None.webp" %} + + + + + + {% if include.show_name %} + {{ include.member }} + {% endif %} + +
+ {% if include.overlay %} + + {% endif %} +
+
+ +{% endif %} \ No newline at end of file diff --git a/_includes/components/member/list.html b/_includes/components/member/list.html new file mode 100644 index 000000000..7d41051c0 --- /dev/null +++ b/_includes/components/member/list.html @@ -0,0 +1,10 @@ +{%- for member in include.members -%} + {% include components/member/avatar.html member=member name=include.name size=include.size spacing=include.spacing overlay=include.overlay shadow=include.shadow %} + + {% if include.rowLimit != nil %} + {% assign remainder = forloop.index | modulo: include.rowLimit %} + {% if remainder == 0 %} +
+ {% endif %} + {% endif %} +{%- endfor -%} diff --git a/_includes/components/member/members.html b/_includes/components/member/members.html new file mode 100644 index 000000000..3f5a69dae --- /dev/null +++ b/_includes/components/member/members.html @@ -0,0 +1,50 @@ +
+

Meet the Board

+ {% assign year = 'now' | date: "%Y" %} + + {% assign month = 'now' | date: "%m" %} + {% if month == '01' or month == '02' or month == '03' or month == '04' or month == '05' %} + +

{{ year | minus:1}} – {{ year }} Members

+ {% else %} +

{{ year }} – {{ year | plus:1 }} Members

+ {% endif %} + + + {% assign current_members = site.data.people.members | where_exp: "member", "member.class contains '' or member.class == nil" %} + {% assign former_members_years = site.data.people.alumni | group_by: "class" | sort: "name" | reverse %} + {% assign former_members = '' | split: ',' %} + {% for year in former_members_years %} + {% assign year_members = year.items | sort_natural: "name" %} + {% for member in year_members %} + {% assign former_members = former_members | push: member %} + {% endfor %} + {% endfor %} +
+ {% include components/member/list.html members=current_members size="icon-square-10@md-below icon-square-14@lg icon-square-18@xl" spacing="mx-1@xs-below mx-4@sm mx-6@md mx-8@lg-above my-6@md-above my-3@md-below" overlay=true %} +
+ + {% if former_members | size %} +
+
+

Former Members

+

A best-effort record of our {{former_members | size}} former members

+
+ + +
+ +
+ {% endif %} +
diff --git a/_includes/components/post.html b/_includes/components/post.html new file mode 100644 index 000000000..6602b1025 --- /dev/null +++ b/_includes/components/post.html @@ -0,0 +1,45 @@ +
+ +
+

{{ page.title }}

+
+

{{ page.description }}

+
+
+ Authored by +
+ {% assign author_count = page.author | size %} + {% for author in page.author %} +
+ {% if forloop.index <= author_count and forloop.index > 1 and author_count > 2 %}, {% endif %} + {% if forloop.index == author_count and forloop.index > 1 %}and{% endif %} + +
+ {% include components/member/avatar.html member=author name=true size="icon-3" show_name=true overlay=false %} + {% endfor %} +
+
+ {%- assign date_format = site.date_format | default: "%b %-d, %Y" -%} + {{ page.date | date: site.date_format }} +
+
+
+ +
+ +
+ {{ content }} +
+
+ {% assign categories_size = page.categories | size %} + {% if categories_size > 0 %} + {% if categories_size > 1 %}Categories{% else %}Category{% endif %}: + {% for category in page.categories %} + {{category}} + {% endfor %} + + {% endif %} +
+ {% include components/rating.html slug=page.slug %} +
+
diff --git a/_includes/components/rating.html b/_includes/components/rating.html new file mode 100644 index 000000000..e8a4d49e1 --- /dev/null +++ b/_includes/components/rating.html @@ -0,0 +1,42 @@ + + +
+
+

Was this page helpful?

+ + + + +
+
+
+
+ + +
+
+ +
+ +
+ Thank you for your feedback!:tada: +
+
diff --git a/_includes/components/social.html b/_includes/components/social.html new file mode 100644 index 000000000..4855263a1 --- /dev/null +++ b/_includes/components/social.html @@ -0,0 +1,25 @@ +{% if include.color == nil %} + {% assign include.color = "dark" %} +{% endif %} + +{% if include.svg == nil %} + {% assign include.svg = false %} +{% endif %} + +{%- for social in site.data.social_links -%} + {% assign social_url = social[1].url %} + {% assign social-brand = social[0] %} + {% assign social-fa-icon = social[1].fa-icon %} + {% if social-fa-icon == nil %} + {% assign social-fa-icon = social-brand %} + {% endif %} + + {% if include.svg == true %} + {{social[0]}} + {% else %} + + {% endif %} + + + {% unless forloop.last %}
{% endunless %} +{%- endfor -%} diff --git a/_includes/footer.html b/_includes/footer.html deleted file mode 100644 index 8149f4140..000000000 --- a/_includes/footer.html +++ /dev/null @@ -1,20 +0,0 @@ - diff --git a/_includes/head.html b/_includes/head.html index 6a387410c..3ca783271 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -1,13 +1,39 @@ - - - - - - - - - {% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %} - - + + + + + + + + + {% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %} + + + + + + + + + + + + + + + + + + + + + + + + {% if jekyll.environment == "development" %} + + {% endif %} + + {% seo %} diff --git a/_includes/header.html b/_includes/header.html deleted file mode 100644 index e8e53a0fd..000000000 --- a/_includes/header.html +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/_includes/members.html b/_includes/members.html deleted file mode 100644 index b6c7f1138..000000000 --- a/_includes/members.html +++ /dev/null @@ -1,18 +0,0 @@ -
-

Current USB Members

- -
- {%- for member in site.data.members -%} -
- -
-
- {{ member.name }} -
{{ member.title }}
-
{{ member.class }}
-
-
-
- {%- endfor -%} -
-
\ No newline at end of file diff --git a/_includes/nav/footer.html b/_includes/nav/footer.html new file mode 100644 index 000000000..3b6dca4e7 --- /dev/null +++ b/_includes/nav/footer.html @@ -0,0 +1,14 @@ + diff --git a/_includes/nav/header.html b/_includes/nav/header.html new file mode 100644 index 000000000..e025617a3 --- /dev/null +++ b/_includes/nav/header.html @@ -0,0 +1,14 @@ +
+ + {%- include components/announcement.html -%} +
\ No newline at end of file diff --git a/_includes/nav/header_links.html b/_includes/nav/header_links.html new file mode 100644 index 000000000..302c1966e --- /dev/null +++ b/_includes/nav/header_links.html @@ -0,0 +1,9 @@ +{% if include.fab == true %} + {% assign fab_menu_class = "nav-item" %} +{% else %} + {% assign fab_menu_class = "" %} +{% endif %} + +{%- for link in site.data.header_links -%} + {{link.text}} +{% endfor %} \ No newline at end of file diff --git a/_includes/nav/navmenu.html b/_includes/nav/navmenu.html new file mode 100644 index 000000000..1b5b2d6ce --- /dev/null +++ b/_includes/nav/navmenu.html @@ -0,0 +1,17 @@ +{% assign color = "light" %} +{% if include.light == nil or include.light == false or include.dark == true %} + {% assign color = "dark" %} +{% endif %} + + \ No newline at end of file diff --git a/_includes/nav/navmenu_mobile.html b/_includes/nav/navmenu_mobile.html new file mode 100644 index 000000000..efa68c138 --- /dev/null +++ b/_includes/nav/navmenu_mobile.html @@ -0,0 +1,12 @@ +
+ +
diff --git a/_includes/nav/sidebar.html b/_includes/nav/sidebar.html new file mode 100644 index 000000000..611bcb4fb --- /dev/null +++ b/_includes/nav/sidebar.html @@ -0,0 +1,41 @@ + + + diff --git a/_includes/postsidebar.html b/_includes/postsidebar.html deleted file mode 100644 index 89d2c8286..000000000 --- a/_includes/postsidebar.html +++ /dev/null @@ -1,18 +0,0 @@ - \ No newline at end of file diff --git a/_includes/social.html b/_includes/social.html deleted file mode 100644 index fed8cd932..000000000 --- a/_includes/social.html +++ /dev/null @@ -1,21 +0,0 @@ -{%- assign social = site.minima.social_links -%} - - - {%- for glb in social.gitlab -%}{%- if glb.username and glb.instance -%}{%- endif -%}{%- endfor -%} - {%- if social.dribbble -%}{%- endif -%} - {%- if social.facebook -%}{%- endif -%} - {%- if social.flickr -%}{%- endif -%} - {%- if social.github -%}{%- endif -%} - {%- if social.stackoverflow -%}{%- endif -%} - {%- if social.instagram -%}{%- endif -%} - {%- if social.linkedin -%}{%- endif -%} - {%- if social.pinterest -%}{%- endif -%} - {%- for mst in social.mastodon -%}{%- if mst.username and mst.instance -%}{%- endif -%}{%- endfor -%} - {%- if social.twitter -%}{%- endif -%} - {%- if social.youtube -%}{%- endif -%} - {%- if social.youtube_channel -%}{%- endif -%} - {%- if social.telegram -%}{%- endif -%} - {%- if social.keybase -%}{%- endif -%} - {%- if social.microdotblog -%}{%- endif -%} - {%- if social.devto -%}{%- endif -%} - \ No newline at end of file diff --git a/_layouts/default.html b/_layouts/default.html index 3229fb2cb..5e8c615b9 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,27 +1,12 @@ - - {%- include head.html -%} - - - - {%- include header.html -%} - -
- -
-

{{ page.title | escape }}

- -

{{ page.description | escape }}

-
- -
- {{ content }} -
-
- - {%- include footer.html -%} - - - + {%- include head.html -%} + + {%- include nav/header.html -%} +
+ {%- include nav/navmenu_mobile.html -%} + {{content}} +
+ {%- include nav/footer.html -%} + diff --git a/_layouts/page.html b/_layouts/page.html deleted file mode 100644 index 37ba05be1..000000000 --- a/_layouts/page.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default ---- -
- -
- {{ content }} -
- -
diff --git a/_layouts/post.html b/_layouts/post.html index 40b8f1045..395441f8d 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -1,43 +1,16 @@ - - +--- +layout: default +--- + +
+
+
+ {% include components/post.html content=content %} + +
+ +
-{%- include head.html -%} - - - -
-
- {%- include header.html -%} - {%- include postsidebar.html -%} - -
- -
-

{{ page.title | escape }}

- -
- -
- {{ content }} -
- - -
- - {%- include footer.html -%} - -
-
- - - - \ No newline at end of file diff --git a/_layouts/wiki.html b/_layouts/wiki.html new file mode 100644 index 000000000..edd4ac6ce --- /dev/null +++ b/_layouts/wiki.html @@ -0,0 +1,16 @@ +--- +layout: default +title: Student Wiki +description: Locally sourced, organic wisdom. Shared by the student body, curated by USB. +--- + +
+
+ {%- include nav/sidebar.html limit_height=true -%} +
+
+
+ {% include components/post.html content=content %} + +
+
diff --git a/_pages/404.html b/_pages/404.html new file mode 100644 index 000000000..536929ab0 --- /dev/null +++ b/_pages/404.html @@ -0,0 +1,27 @@ +--- +permalink: /404.html +--- + +
+

It's deserted here

+ + + + Tumbleweed + +
+

We're not sure if the page you're looking for exists, or if it ever existed for that matter.

+ Let us know if you need help. +
+ + +
diff --git a/_pages/about.html b/_pages/about.html new file mode 100644 index 000000000..a8b8a8c43 --- /dev/null +++ b/_pages/about.html @@ -0,0 +1,8 @@ +--- +title: About Us +--- + +
+ {%- include components/aboutus.html -%} + {%- include components/member/members.html -%} +
\ No newline at end of file diff --git a/_pages/apply.html b/_pages/apply.html new file mode 100644 index 000000000..3a4506789 --- /dev/null +++ b/_pages/apply.html @@ -0,0 +1,6 @@ +--- +title: Apply +redirect_from: + - /apply/ +redirect_to: https://forms.gle/wcq6dro8rjupKKWH7 +--- diff --git a/_pages/becomeatutor.html b/_pages/becomeatutor.html new file mode 100644 index 000000000..0480d9e7c --- /dev/null +++ b/_pages/becomeatutor.html @@ -0,0 +1,6 @@ +--- +title: CS Tutor List +redirect_from: + - /becomeatutor/ +redirect_to: https://www.notionhttps://goo.gl/forms/iagngnhnrYEOHIro2 +--- \ No newline at end of file diff --git a/_pages/blog-temp.html b/_pages/blog-temp.html new file mode 100644 index 000000000..5e4092d81 --- /dev/null +++ b/_pages/blog-temp.html @@ -0,0 +1,8 @@ +--- +title: USB Blog Posts +description: Check out what CS/DS students have to say! +--- + +
+ {%- include components/blog-temp/blog-posts.html -%} +
diff --git a/_pages/blog.html b/_pages/blog.html new file mode 100644 index 000000000..40628e919 --- /dev/null +++ b/_pages/blog.html @@ -0,0 +1,9 @@ +--- +layout: default +title: Blog +--- + + +
+ {%- include components/blog-temp/blog-posts.html -%} +
diff --git a/_pages/contact.html b/_pages/contact.html new file mode 100644 index 000000000..1f40befaf --- /dev/null +++ b/_pages/contact.html @@ -0,0 +1,8 @@ +--- +title: Contact Us +redirect_from: + - /help/ +--- +
+ {%- include components/contact.html -%} +
diff --git a/_pages/forum.html b/_pages/forum.html new file mode 100644 index 000000000..54e3db24a --- /dev/null +++ b/_pages/forum.html @@ -0,0 +1,7 @@ +--- +title: Student Forum +redirect_from: + - /forum/ + - /studentforum/ +redirect_to: https://forms.gle/UU2jjon1mWkT1diG9 +--- diff --git a/_pages/initiatives.html b/_pages/initiatives.html new file mode 100644 index 000000000..23f8a2d34 --- /dev/null +++ b/_pages/initiatives.html @@ -0,0 +1,8 @@ +--- +title: Initiatives +description: Check out what USB is currently working on! +--- + +
+ {%- include components/initiative/initiatives.html -%} +
diff --git a/_pages/officehours.html b/_pages/officehours.html new file mode 100644 index 000000000..53c5b0308 --- /dev/null +++ b/_pages/officehours.html @@ -0,0 +1,6 @@ +--- +title: USB Office Hours +redirect_from: + - /oh/ +redirect_to: https://calendar.google.com/calendar/embed?src=shkcjufcnjflfgpui0k8hiu71c%40group.calendar.google.com&ctz=America%2FIndiana%2FIndianapolis +--- diff --git a/_pages/openletter.html b/_pages/openletter.html new file mode 100644 index 000000000..166ca8754 --- /dev/null +++ b/_pages/openletter.html @@ -0,0 +1,6 @@ +--- +title: Open Letter +redirect_from: + - /openletter/ +redirect_to: https://docs.google.com/document/d/e/2PACX-1vSq6MYYuEizQ5jezCUoAKHXCTR4FbhcT96NJCCYEOPN_-wOs5PO16LSPotOohXRQMsnMs0il1-42Usp/pub +--- diff --git a/_pages/tutors.html b/_pages/tutors.html new file mode 100644 index 000000000..e6f3722c2 --- /dev/null +++ b/_pages/tutors.html @@ -0,0 +1,6 @@ +--- +title: CS Tutor List +redirect_from: + - /tutorlist/ +redirect_to: https://www.notion.so/usb/fc8013a0d21a4483982d126cad0c372f?v=af2d91e730de4c8d8982bd4e8d83bcc3 +--- \ No newline at end of file diff --git a/_pages/wiki.html b/_pages/wiki.html new file mode 100644 index 000000000..d0631de31 --- /dev/null +++ b/_pages/wiki.html @@ -0,0 +1,10 @@ +--- +title: Student Wiki +description: Locally sourced, organic wisdom. Shared by the student body, curated by USB. +--- + +
+
+ {%- include nav/sidebar.html -%} +
+
\ No newline at end of file diff --git a/_plugins/cachetag.rb b/_plugins/cachetag.rb new file mode 100644 index 000000000..024d01978 --- /dev/null +++ b/_plugins/cachetag.rb @@ -0,0 +1,25 @@ +module Jekyll + class CacheTag < Liquid::Tag + + def initialize(tag_name, text, tokens) + super + @text = text + end + + def render(context) + time = Time.new + "#{@text.strip}?cache=#{time.strftime("%-d%9N")}" + end + end + + module CacheFilter + def cachetag(input) + puts "Nil cachetag input! Did you put it in quotes?" if !input + time = Time.new + "#{input.to_s.strip}?cache=#{time.strftime("%-d%9N")}" + end + end +end + +Liquid::Template.register_tag('cachetag', Jekyll::CacheTag) +Liquid::Template.register_filter(Jekyll::CacheFilter) diff --git a/_plugins/cachify.rb b/_plugins/cachify.rb new file mode 100644 index 000000000..e69de29bb diff --git a/_plugins/hasasset.rb b/_plugins/hasasset.rb new file mode 100644 index 000000000..e69de29bb diff --git a/_posts/2020-03-04-become-uta.md b/_posts/2020-03-04-become-uta.md deleted file mode 100644 index c1002ae29..000000000 --- a/_posts/2020-03-04-become-uta.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: "How do I become an Undergraduate Teaching Assistant?" -description: "Get paid to help students during labs" -author: Noah Alderton -date: 2020-03-04 17:00:00 -0400 -categories: campus ---- - -The process of the hiring UTAs has been standardized in the Computer Science Department. Typically, applications for the following semester are opened about a month before classes end. More information can be found here, along with additional information: - -[https://www.cs.purdue.edu/hiring/uta.html](https://www.cs.purdue.edu/hiring/uta.html) \ No newline at end of file diff --git a/_posts/2022-03-08-youbelong.md b/_posts/2022-03-08-youbelong.md new file mode 100644 index 000000000..aafb6d523 --- /dev/null +++ b/_posts/2022-03-08-youbelong.md @@ -0,0 +1,29 @@ +--- +layout: post +title: "Do I Belong?" +description: "Self doubt: it plagues us all" +author: Vindhya Banda +date: 2022-03-08 09:00:00 -0400 +categories: belonging +--- +For as long as I can remember, I was sure I would pursue a career in a technical field. Growing up in a family full of software engineers, I was familiarized with technical terminology and computers very early on. While I never really pursued computer science seriously until high school, it was definitely a subject I was fond of throughout my schooling. + +I was so sure that this was what I wanted to do – that is, up until I stepped into the classroom of my first official CS class in high school. At first I thought it was just because attendance was low on the first day of classes, but by the time week 2 of 11th grade rolled around I realized that I was only one of 2 other girls pursuing CS at my high school. + +The lack of representation made me question whether I was really cut out for the classes I was taking. Even though I would consistently be among the highest scoring students in class, there was a thought at the back of my mind that made me wonder when I would run out of “luck”. Most A+’s felt like flukes and every failed code block would reinforce my fear of not being good enough. I guess that’s quite dramatic but unfortunately it’s not something I’m concocting for a blog post. Thankfully, this attitude really began to shift when I attended Purdue. + +Walking into CS180, the sheer number of women in the room greatly encouraged me. It made me feel capable and the gender gap in STEM suddenly seemed far less formidable. Even when taking difficult CS courses, I felt like my struggle was not just specific to my individual experience. The representation in CS, even if it is lesser than I would hope it to be, allowed me to approach difficult concepts without feeling the need to prove my worth and letting every minor mishap be a discouragement. For the most part, I don’t think the discomfort of being a minority in tech really resurfaced until I had my first internship offer letter in hand. + +Confused? So was I. Getting an internship was supposed to be a happy thing, right? After a busy application season and many trying interviews, I was happy to see that all my efforts paid off. I felt so encouraged and motivated…until I was called a diversity hire. I was shocked. I thought I was past the stage of feeling insecure, I’d assumed the imposter syndrome had gone away. But at that one comment, old fears rushed back and I suddenly felt undeserving of that offer letter. + +Following that experience, it took me a while to straighten my shoulders and face the world confidently again. I’ll spare you the details, but it involved a lot of pep-talking, Doja Cat, and solving LeetCode to convince myself that I belong. As a woman in today’s STEM corporate landscape, you may find yourself in situations where you’ll have to remind yourself, like I had to, that you are where you are because of your hard work, and not just luck. + +I’m grateful that over the years I’ve had the chance to be a part of incredible organizations, like Girls Who Code and The Girl Code, who are working very hard to bridge the gender gap in computer science. While I worked as an instructor/coordinator at these organizations, I noticed that women in tech tend to question themselves and their ability far more than their male counterparts. Hopefully, this mentality will change as trends in representation shift. However, I believe that it is essential for us to encourage ourselves and lift each other up along the way. + +I know that this fear of not-being enough or being out of place will surely crop up again, but it is up to us on how we want to react. The world is filled with inspiring individuals who belong to underrepresented communities in the fields they shine in. I look to them for inspiration and strive to emulate their resolve while I work towards carving out my own career path. This has greatly helped me and I encourage you to do the same. To all the students who may feel out of place at Purdue CS, to you I say: you belong. + +Boiler Up! + + + + diff --git a/_posts/2022-03-23-research.md b/_posts/2022-03-23-research.md new file mode 100644 index 000000000..ae10210a4 --- /dev/null +++ b/_posts/2022-03-23-research.md @@ -0,0 +1,65 @@ +--- +layout: post +title: "Getting started in Computer Science Research as an Undergraduate" +description: "Research in the CS department isn't the easiest to get involved in, but here we answer some common questions." +author: Simran Kadadi +date: 2022-03-23 09:00:00 -0400 +categories: Research +--- +Hi everyone, + +Research has been an extremely influential part of my undergraduate journey at Purdue. It was extremely intimidating to get involved. At first, I struggled to find meaning in my coursework during the pandemic, and I was interested in making an impact in the field of computer science. I initially approached a professor with an interest in research my freshman year as I was interested in pursuing computational biology research that would complement my computer science background. Upon asking the professor to recommend courses that would prepare me for research, he recommended that I take his class on computational genomics to further determine my interest. I continued to seek knowledge from professors and faculty to best prepare me to successfully partake in research, but there is so much to uncover, and I am still learning more every day. + + +Today, I had the opportunity to ask Ms. Ranjani Rao some questions about undergraduate research about what I wish I had known before I started. + +Interview with Ranjani L. Rao, Purdue Undergraduate Research and Career Development Specialist + +Simran: Why should computer science students consider undergraduate research? + +Ms. Rao: First, students gain intellectual satisfaction from solving hard problems, putting their work in the classroom, seeand seeing how all concepts work in the real world. Intellectual satisfaction is tremendous because you learn a lot more. Research experience is highly valued in industry and career strategy. It also helps improve the responsibility of a person. If you participate in conferences or present your work, have the ability to improve your communication skills. + +Simran: What is the best way to approach professors for research? + +Ms. Rao: When talking to CS professors, first analyze your own background and find out what aspects of cs you are interested in. Look at if you enjoyed CS 182, data structures, math classes, there are some areas of research like machine learning or computational sciences, or engineering. If you enjoyed CS 240, C programming, CS252, systems programming, then probably research in operating systems or systems security is better for you. First, analyze your background, then go around and study faculty bios and research professors on their websites. Read papers with a professor you want to work with. Play around with software that might be useful. Do your background work and then cold email professors or talk to people in their labs or others in research. Attend meet and greets and talks held by professors in the cs dept. The theory group has cs theory meetings every week. PurPL has a series of workshops where graduate students present their work. These are great avenues to learn about the research that different professors are conducting. + +Simran: Do you have to have taken a course with the professor you want to do research with? + +Ms. Rao: It would be helpful to have taken a course with a professor. For example, if you want to do research with a professor who is specializing in networks. The ideal case is if the professor taught CS 473. It is okay if you took CS 473 with one professor, but decided to approach another in the same area. As long as you have a class in that area, you are going to be productive at that lab. + +Simran: What time in your college career do you recommend that students reach out to professors? + +Ms. Rao: If this is a computer science professor, usually when you get past data structures and systems programming this is when you have courses and when you are ready to take upper-level courses. This is possible because you have some background classes. Then, prioritize the classes relevant to the professor you choose. + +Simran: How do you make sure you pick the right professor since there are many different professors working in the same area? + +Ms. Rao: There is no perfect answer. You have to do trial and error. One thing you can do to understand what area is to read papers by the professors, especially if they have done work previously with undergraduate students. Try to see what the undergraduate did. This will help you understand what the professor did. Systems building and deployment. With your background in cs, you can figure out a little bit more. + +Simran: Do students get financially compensated for undergraduate students or can students do research for course credit? + +Ms. Rao: There are different compensation In the early stages, when the professor doesn’t really know the student, As professor David Blyth told me, there are two phases with working with any cs professors, figuring out if you can work with each other, nothing is paid. If they figure out if you work, there are many ways to get compensated for the research that you perform. For computer science, you can get credit for doing research with a professor. You and the professor decide how many hours of work howwork, how much research, you can decide to have workhave to work down for a grade or pass/fail. Research for pay happens when you have a greater level of trust with the faculty. Some faculty have funding from companies or NSF research grants where they can help support you. This happens when the student works in the summer or has been working for the lab for a few semesters. + +Simran: Do students have to be in CS honors to be active participants in research? +Ms. Rao: CS honors is just a small part of the overall research done. When looking at the number of independent studies, 300 to 400 by students in cs. A number of students in cs honors were in the double-digits. No, you don’t have to just be in cs honors, but you do have to be a conscientious student + +Simran: What are REUs (Research Experiences for Undergraduates)? + +Ms. Rao: REUS are programs funded by NSF to support undergraduate research. Professors write up grand proposals and write undergrad extensions and the government gives them extra money to support undergraduate students. There are over approximately 115 opportunities just for computational sciences and engineering. This is the subarea that cs majors usually apply to over the country. It is a research boot camp. You work on a presentation and you present and the researcher mentors you and you get compensated which is nice. This opportunity is only open to US students and is extremely helpful for applying to graduate schools. https://www.nsf.gov/crssprgm/reu/ + +Simran: Could you please explain what is the SURF program and who should apply to the SURF program? + +Ms. Rao: SURF is a program at Purdue that is part of an opportunity to do research with an engineering professor. There is a symposium in summer where you get to work with a professor on a project and get to present at the end of the summer. + +Thank you for reading! + +If you have any questions for Ms. Rao, you can make an appointment with her. Her email is rrao@purdue.edu. Resume reviews are offered in Lawson commons on Mondays and Thursdays between 1:30-3:00 pm with Ranjani Rao. + + + +_________________________________________ + + + + + + diff --git a/_posts/2022-04-06-firstgen.md b/_posts/2022-04-06-firstgen.md new file mode 100644 index 000000000..d05ce8e58 --- /dev/null +++ b/_posts/2022-04-06-firstgen.md @@ -0,0 +1,52 @@ +--- +layout: post +title: "My Experience as a First-generation and Low-income Student at Purdue" +description: "The financial aid process isn't the easiest to navigate, but here are some tips for students with a similar background as me." +author: Arianna Smith +date: 2022-04-06 09:00:00 -0400 +categories: FirstGen, belonging +--- +Hi everyone! I’m Arianna, a senior in CS at Purdue. I’m also a first-generation and low-income student, and I wanted to write this post to discuss my experiences in college and CS from that perspective. For me, it was initially jarring and persistently alienating to hold those identities in college, so I’m hoping that this post will give students from similar backgrounds a bit of guidance and perspective in the same situation. I’m also hoping that this post will give other students insight into this kind of experience, since it’s often not discussed openly. I’ll be discussing these issues from my own perspective and based on my own experiences; keep in mind that other students may have very different experiences, even under very similar circumstances. + +I always knew that I wanted to go to college, although I knew it would be difficult; my parents supported me if I wanted to go, but they made it clear that I would have to find a way to pay for my tuition, housing and expenses myself. At Purdue, this can seem to be an impossible goal, especially without financial aid; tuition for in-state students is frozen at $9,992 a year; the cheapest dorm housing is around $5,000 a year; and the cheapest meal plan (in 2018) was $2,000 a year for 8 meals a week. In the CS department, there are additional fees as well, meaning that a student who is expected to finance their own education has to find a way to pay ~$17,000 a year to attend school here. + +For those who aren’t familiar with the financial aid process, it starts with an award calculated by the university after acceptance. If you don’t receive enough financial aid in your award package, then your next stop is loans or independent financial aid applications. Loans are terrifying - we all know the statistics about interest rates and timelines, and they scared me, so I personally decided to take these only as a last resort. Independent financial aid is difficult to attain, especially if you don’t come from a privileged background. It requires an unbelievable amount of time and effort; I spent the majority of my senior year of high school applying for financial aid. Because I was also working as much as possible, this meant that I had almost no time to complete schoolwork. You need letters of recommendation, which are difficult to attain if you haven’t had a lot of extracurricular or volunteer opportunities, as many students don’t have. I needed a lot of complicated financial information from my parents (despite the fact that they were not contributing financial support - the law is stupid), which I was only able to access because I had supportive parents with enough free time to help me. You need an extremely impressive resume, as many independent scholarships are ‘need-blind’, meaning that you’re often competing with students from more privileged backgrounds who have had a lot of educational and extracurricular opportunities that you haven’t had (this especially holds for big-ticket scholarships, because they are often seen as a prestigious resume boost). Finally, you have to be able to interview well, which requires the right clothes (expensive), a lot of time to prepare, and confidence. It also requires that you sell yourself to your interviewer, which is personally complicated for students from disadvantaged backgrounds - you have to craft a specific narrative which paints you as both disadvantaged/suffering and accomplished/successful, which requires talking and thinking about yourself in a way that does not feel great. + +By the time I started college, I was able to secure scholarships to cover most of my expenses. I continued applying for scholarships at college, and I usually found myself owing at least a few thousand each semester. I had been working and saving money all throughout high school, and I continued working in college - with my savings, I was able to pay my first year’s expenses. I got the cheapest meal plan, which was 8 meals a week; I ate one meal a day and 2 on Mondays. I lost a significant amount of weight during my first semester , which was directly due to limited access to food on campus. My sophomore year, I discovered the on-campus food pantry, and used that to supplement my meal plan, which worked well. Worries about money, food and my future in college were always in the back of my mind, and while they (thankfully) weren’t unmanageable for me, they did cause stress and tension, and detracted from the time I had to study. + +Those issues were all real, but fairly impersonal - I could think about practical issues like my finances, access to food, and work hours without emotional involvement. The personal struggles I had as a first-generation student were definitely more personally impactful. Within my first few weeks at Purdue, I started to realize that there seemed to be a particular background which a lot of CS/DS students came from. Whether this was reality or just my perception is hard to say (the department doesn’t release statistics about first-generation or low-income students, so it’s impossible to say whether we have a lower incidence of those types of students than other majors). A lot of my peers came from backgrounds where college education was very normalized, whereas I hadn’t had much exposure to college graduates or preparation for college/white collar careers in my community. I am extremely proud of my community - my most influential, hard-working mentors are from there, and I’ve always felt supported and welcomed at home. have constantly supported me and my siblings. Yet I increasingly found myself unwilling to discuss family or hometown with my peers. I developed two separate identities - one for home, where I felt more comfortable, and one for school, where I was a bit more guarded. This isn’t to say that I didn’t make friends - I did, and the friendships were real. But I could never feel sure of myself or my life at school, when there were so many things that I felt I couldn’t share. By my sophomore year, I had begun to feel totally separate from my classmates, and I also no longer felt comfortable at home; I was constantly divided between two identities, and didn’t feel like I really belonged anywhere. This lack of community was significant for me; I was angry almost all the time. I was mad at my classmates for being different from me, I was mad at my family for being different from my classmates, and I was mad at myself for feeling so conflicted. + +These are difficult issues to work through, as most identity struggles are. Ironically, the thing which helped me the most was to try to connect to others; this required me to check the assumptions I made about others, and question the anger I was feeling toward so many people in the community at Purdue. I found that most people shared some sort of struggle or experience, no matter how different they are on the surface; and trying to be as empathetic as possible helped me see that. There are certainly resources on campus for students who are going through a variety of experiences (some are listed below) and I recommend reaching out to them as soon as possible if you are feeling consistently conflicted, as it’s best to try to address those issues early on. As trite as I’m sure it sounds, everyone belongs in Purdue, and everyone belongs in CS/DS, and we all deserve to feel that belonging. + + +Resources + +Horizons Student Support Services: https://www.purdue.edu/horizons/ +Provides various services (tutoring, food pantry, study space, mentorship, community, etc) to first-generation and low-income students at Purdue. + +ACE Food Pantry: https://www.purdue.edu/vpsl/leadership/About/ACE_Campus_Pantry.html +Located in the Baptist Student Foundation basement across the street from Honors. Available to any student with a PUID. Offers fresh and shelf-stable food, different offerings each week. + +Purdue Financial Aid Office: https://www.purdue.edu/dfa/ +They were super useful for me personally - I emailed them a lot about my financial aid package and scholarships, and they always responded quickly and thoroughly. + +Financial Counseling: +https://www.purdue.edu/recwell/fitness-wellness/wellness/one-on-one-coaching/financial-counseling.php +This kind of counseling isn’t specifically for low-income or first-generation students, although it can be helpful for them; it’s a useful tool for anyone who isn’t quite sure how to structure their finances during or after college. + +Purdue Office of Diversity & Inclusion: https://www.purdue.edu/diversity-inclusion/ +I personally got a lot of benefit from the office of diversity and inclusion within my own college, but this office would apply more broadly to all students at Purdue. If you want, I recommend looking into similar resources at the college level as well. + +Center for Career Opportunities: https://www.cco.purdue.edu/?_ga=2.18252985.1084848711.1649645585-1950701448.1636566598 +The CCO was helpful in reviewing my resume and helping me prep for interviews, which I didn’t have much independent experience with. + +NISO Office: https://www.purdue.edu/niso/ +NISO helped connect me with scholarships and opportunities that I never would have otherwise known about. They are super friendly and inclusive, and they made me feel very welcome at Purdue. + +‘Free Food at Purdue’ GroupMe: Google the link! +This is an informal group chat where students send info about free food being offered on campus. As a freshman, I took advantage of this as often as possible, and I got quite a few catered meals from it! + +Other +College-level resources are prevalent and they’re usually much more relevant/useful to a student’s career goals. I am not familiar with every college, so I recommend doing some independent research to find some more resources at that level. Various cultural centers on campus were very inclusive and welcoming to me as well, and they are also great places to learn and find more resources. + + diff --git a/_posts/2022-04-06-freshmanyear.md b/_posts/2022-04-06-freshmanyear.md new file mode 100644 index 000000000..085feabfe --- /dev/null +++ b/_posts/2022-04-06-freshmanyear.md @@ -0,0 +1,31 @@ +--- +layout: post +title: "Navigating My Freshman Year" +description: "Navigating my Freshman Year comes with its own set of challenges, but with the help of clubs and friends, I was able to find a home at Purdue" +author: Sweta Saravanan +date: 2022-04-06 09:00:00 -0400 +categories: FreshmanYear +--- +As an out-of-state student attending Purdue, my freshmen year was very daunting because I knew no one, and I remember spending my first few weeks feeling lost. + +However, looking back now, I am grateful to have met all the people I call friends today! + +For anyone who finds themselves in the same shoes as me, my only advice to you is to put yourself out there and take advantage of the events on campus (especially especially especially during your first few weeks!) + +Apart from trying to make friends in my classes, attending club fairs, callouts, and floor events played a major role in meeting new people. I remember my first friend being a girl that lived on my floor all because I had asked her to grab lunch one day! + +I also met two of my closest friends at a South Asian Club Fair, simply because we all decided to grab food at Windsor after and make a trip to Walmart together since none of us had used the buses on campus yet! + +You might be seeing that a common theme for most of my friendships is food! So get out there and ask people to get food!!! + +Club fairs are also not only a great place to find clubs that interest you but also a great way to meet even more people! Joining Boilermake and USB allowed me to make more friends within my major and meet upperclassmen as well! Not only was I able to meet new people but I also received a ton of insightful advice from class recommendations to internship advice! + +Apart from ‘major-related’ clubs, I also recommend you try to join clubs where you can meet new people from different majors. For example, I joined Alpha Kappa Psi (AKPSI), a professional business fraternity on campus, which lead to me making some amazing and genuine friends. AKPSI also inspired me to pursue a minor in business economics which I would have never done if it weren't for the advice and guidance from my brothers! + +There are a lot of cool and amazing clubs on campus which I even wished I joined, such as: the Purdue Concert Committee (PCC), Purdue EDM Club (PEDMC), and so much more!!! + +There are definitely more ways to get involved on campus whether that is through research, joining a sports team (intermural or club), or by simply attending fun campus events! There is definitely a place for you on campus and the only way to find it is by putting yourself out there and trying new things! + + + + diff --git a/_posts/2022-04-15-freshmanyear.md b/_posts/2022-04-15-freshmanyear.md new file mode 100644 index 000000000..156bebee6 --- /dev/null +++ b/_posts/2022-04-15-freshmanyear.md @@ -0,0 +1,25 @@ +--- +layout: post +title: "One thing I learned from my freshman year" +description: "Freshman year taught me to how to find balance between school and my social life" +author: Jillian Urgello +date: 2022-04-15 09:00:00 -0400 +categories: FreshmanYear +--- +If there’s one thing I learned from my freshman year at Purdue, it is that keeping a balance between academics and a social life is no easy task. When you’re leaning so far heavily to one side, it can be hard to find ways to balance the scale out again. + +This is how I felt at the end of my first semester at Purdue. I didn’t make much effort to join or be actively involved in any clubs and while I definitely wanted to, I was spending so much time studying I thought it was impossible for me to fit more things into my schedule. I ended up getting stuck in this endless cycle of classes and then studying and then classes again. + +To break the cycle, I tried to make small changes in my daily life. At the start of second semester, I pushed myself to make time to attend club callouts or meetings. Building these things into my schedule at the beginning of the semester before classes ramped up was really helpful for me breaking out of the cycle and moving towards a more balanced college life. Personally, the hardest part in finding that balance was motivating myself to take that first step. What motivated me was the realization that college was going by a lot faster than I expected and that there were so many opportunities that I could only experience in college. + +During second semester, I became more involved in Purdue’s Piano Club, Filipino Association and USB. Joining these clubs gave me an outlet to studying which helped lessen the amount of burn out I felt. Moreover, it was a way for me to make new friends and find a community at Purdue. This semester, I worked alongside other PFA members to put on the association’s annual cultural show. Rehearsing and preparing for the show was time consuming which really forced me to manage my time better. Having things to do other than just studying helped me learn how to study more efficiently and take full advantage of the time I had. Although it was a lot of work to juggle everything, I had a stronger sense of accomplishment and motivation. + +As the end of the second semester approaches, I can’t say that I have found that perfect balance yet. But, I have improved. I’ve learned that finding a good balance isn’t something that can be accomplished in a semester or even two semesters. Balance is something that is attained through incremental and consistent change. Moving forward, I know there will be times where the scale might have to tip more to one side, but at least now I know how to even it out again. + + + + + + + + diff --git a/_posts/2022-04-16-CS180.md b/_posts/2022-04-16-CS180.md new file mode 100644 index 000000000..ead80cf56 --- /dev/null +++ b/_posts/2022-04-16-CS180.md @@ -0,0 +1,28 @@ +--- +layout: post +title: "Keys for Success in CS180" +description: "CS180 is a Purdue CS rite of passage, but with these tips, you can get through!" +author: Christopher Lehman +date: 2022-04-16 09:00:00 -0400 +categories: FreshmanYear, CS180 +--- +Walking into CS180 for the first time I was met with a combination of exhilaration and nervousness. Never before had I taken a class with so many other people and I couldn’t wrap my head around how it would work. How do they give assignments and grade them for everyone? How does the professor answer questions if someone is confused? Do my classmates know the same level of programming? It took some time and effort, but I did get acquainted with the environment and found my groove with lectures, labs, assignments, and tests. Even as a senior looking back, CS180 ended up being one of my favorite classes at Purdue and I’d like to share some tips that helped me along the way. + +Find a Study Group - Whether it’s fellow students in your lab, or other CS majors on your dorm floor, do your best to meet and get to know people in a similar situation as you. You’ll be amazed at the good times that will come: laughing about silly NullPointerExceptions or catching the midnight midterm grind reviewing the intricacies of polymorphism. Plus, it’s great to have some fun experiences to share when you need a break from studying. I especially enjoyed playing basketball at the CoRec and board games like Werewolf. + +Ask Questions - There will be an online forum like Piazza or Campuswire with a plethora of questions about the current assignments and lecture topics that are very helpful! I encourage you to browse, add to, or – if you’re feeling confident – answer another student’s question! It’s also great to follow the questions students are asking in lecture, often on an app like Hotseat. The TA’s watch and answer questions so you can get clarifications without breaking the flow of the ongoing lecture. + +Use the Debugger - The debugger is a tool built into most programming applications, including IntelliJ which you will use for this class. Admittedly, it looks menacing when you first learn it. There’s too many buttons and it feels like you need an instruction manual to use it right. Give it some time, however, and you’ll see how powerful it can be. When trying to track the state of your program, print statements help sometimes but the debugger’s ability to show all variable values and see how executing each line of code changes was extremely valuable to me as I resolved the peskiest of bugs. + +Start Assignments Early - It’s fine if you don’t finish early, but it goes a long way to start looking at the handout for the new homework or project when it first comes out. I would often reach a mental block on assignments in which I faced an issue and nothing I did seems to make progress toward a resolution. Nine times out of ten, taking a break and looking at it with fresh eyes helped me find a fix instantly, but I could only do this if the deadline was a few days away. + +Utilize the Resources Available - There is no other class that has as many resources available as CS180, because…it’s tough! If your code has even one bug, you probably won’t be passing the test cases with full credit. Not to worry, the resources – Office Hours, SI Sessions, USB Help Room, Lab Sessions – are a lifesaver. They can be intimidating at first, but if you prepare a question and come ready to explain to the TA/tutor the issue and what you have tried to fix it, they can guide you to a better understanding so you can solve it at last. + +Don’t Get Caught Up on the Details - CS180 doesn’t just teach you the Java programming language, it teaches you how to learn. In reality, no skilled programmer knows all the small details off hand, but rather how to properly research and read documentation to look up the correct syntax when needed. So don’t sweat it! When learning how to code, it can be frustrating trying to keep track of the intricacies like when to use length vs length() or how to format a class constructor. You might find it more useful to view the class as a tool, teaching you to use tools like StackOverflow and built-in IDE resources to figure out the correct code, and slowly but surely the process will become natural. + +Most importantly, enjoy the ride! Best of luck! + + + + + diff --git a/_posts/2022-04-16-degreeplus.md b/_posts/2022-04-16-degreeplus.md new file mode 100644 index 000000000..920ae2fa4 --- /dev/null +++ b/_posts/2022-04-16-degreeplus.md @@ -0,0 +1,24 @@ +--- +layout: post +title: "Interested in Degree+?" +description: "Taking languages classes unlocked a different perspective" +author: Emily Hao +date: 2022-04-16 09:00:00 -0400 +categories: Degree+ +--- +One of the most useful assignments I did for CS 19100 was creating a plan of study for my next four years at Purdue. While looking into the various course requirements for the different tracks, the College of Science, and the University Core Curriculum, I found that I had a lot more space in my schedule to take elective courses than I had expected. In large part due to the credit I earned in high school, but also a surprising amount of double counting, I had very few requirements left to fulfill for the College of Science core curriculum in particular. I would need to add credits to my schedule, with a dilemma of where those credits would come from. + +Conveniently for me, I had heard of Degree+ both through 191 and my German professor. Initially, I did not give the program much thought, but after doing more research on the Degree+ program, I decided eventually to talk to my advisor and pursue a German major in addition to Computer Science. + +The Degree+ program is designed to allow students to pursue an additional major in the College of Liberal Arts with the Liberal Arts core waived. For me, this meant I would only need to take eight additional courses, and all specific to the German major. Of course, this may differ from person to person depending on the major they choose to pursue and the classes they have or have not already taken or received credit for. + +While my decision to add a Degree+ major (rather than simply adding a minor, or taking more elective courses of my choosing) was primarily influenced by the amount of flexibility I had with my schedule, there were other factors involved. Perhaps the most important was that I enjoyed German, and could see myself continuing to enjoy it beyond a few language courses. If I were any less interested in German, I know that I would have chosen to do something else with the space I had in my schedule. More broadly, I did not want to box myself into exclusively taking technical STEM-related courses for the rest of my time at Purdue. I believe it is important to experience some variety in the education you receive, because many of the skills gained in different environments are transferable elsewhere. Furthermore, the difference in perspective can be valuable in affecting your approach or understanding of one or another subject; no field is truly independent of other fields. Finally, proficiency in a foreign language has practical value beyond college as well—a fact many are certainly familiar with. + +After considering these factors and making my decision, officially adding German to my major was itself extremely simple. My current advisor submitted a curriculum change request (CODO), the request was reviewed by the College of Liberal Arts, and once approved on their end, I approved it myself through MyPurdue. + +I wanted to add a German major because I found it interesting and useful, and doing so was (by design) an easy process that didn’t add unmanageable amounts to my workload. Degree+ isn’t for everyone, and the commitment involved certainly isn’t zero, but any student outside of the College of Liberal Arts can easily choose to do the same, whether they want to add a major in philosophy, political science, or even theater. + +For those interested, more information can be found here: https://www.cla.purdue.edu/undergradci/degreeplus/index.html. + + + diff --git a/_posts/2022-04-18-csexercise.md b/_posts/2022-04-18-csexercise.md new file mode 100644 index 000000000..294ab1a68 --- /dev/null +++ b/_posts/2022-04-18-csexercise.md @@ -0,0 +1,28 @@ +--- +layout: post +title: "Balancing CS and Exercise" +description: "Health and Fitness @ Purdue" +author: Weiyi Tan +date: 2022-04-18 09:00:00 -0400 +categories: exercise +--- + +Growing up as an athlete in my home country, I was exercising almost daily since part of my day was already reserved for our practice sessions. I knew that every day, from 5 to 8 pm, I would be in the pool training my synchronized swimming techniques. However, when I came to Purdue without any athletic responsibilities, it was hard to regain the same discipline and motivation to exercise as I once had. I would usually plan to go to the gym earlier in the day, but then put it off and lay in bed instead. Then, I found out about GroupX, a fitness program offered by Purdue RecWel1, and it is now a constant part of my life at Purdue. + +GroupX contains different types of classes for different fitness levels. It ranges from fun classes, such as Zumba and African Dance, to intense ones, such as HIIT and Cycle. The best thing about it, at least for me, is that you get to work out with other people! There is something about seeing other people panting and struggling that motivates you to continue exercising. The instructors would often shout words of encouragement too, inspiring you to push through the sweat and tears. + +Another reason why I love GroupX is that there are so many classes every weekday. They even hold BodyPump and Cycle classes, the most popular ones, twice a day! So, despite my busy schedule, I could still have time to attend my favorite GroupX classes. Additionally, I like that they have a no-show policy as it forces me to exercise when I’m lazy. Regardless of how I am feeling before the GroupX class, I always leave the CoRec happier and more energetic. It also provides a short, needed break from my coding projects, allowing me to return with a fresh mind. + +If you are still hesitant about GroupX, it should be worth noting that GroupX is free (as of Spring 2022) to all students! So, it won’t hurt to try some of the classes, especially if you are new to exercise and don’t know where to start. Some of my recommendations for beginners are Barre, BodyPump, Total Body Strength, and Zumba. The first three are strength and toning workouts that focus on all muscle groups, while Zumba is a fun and easy-to-follow dance-fitness class. Then, when you feel stronger and are looking for more intense workouts, I would suggest trying Cycle, GRIT, HIIT, and Step. I would recommend starting with GRIT before trying HIIT as they are very similar, with the exception that GRIT is 15 minutes shorter. + +One piece of advice about registering for GroupX classes is to register early. All GroupX classes can be registered up to 72 hours in advance, so some of the popular classes could be fully booked before you know it. Though if you are unsure about your schedule, you could still check for class spots about an hour before the class since most people cancel last minute. + +At the end of the day, I hope GroupX positively benefits your Purdue experience just like it did mine. If you are afraid of attending a class alone, feel free to hit me up at wytan@purdue.edu and we could attend one together! + +Here are some helpful links to get started with GroupX! +Steps for reserving a class, cancelling your reservation, and class descriptions: https://www.purdue.edu/recwell/fitness-wellness/fitness/group-x/index.php +GroupX Schedule: https://www.purdue.edu/recwell/fitness-wellness/fitness/group-x/schedules.php + + + + diff --git a/_posts/2022-05-24-technicalprojects.md b/_posts/2022-05-24-technicalprojects.md new file mode 100644 index 000000000..096ab9bd0 --- /dev/null +++ b/_posts/2022-05-24-technicalprojects.md @@ -0,0 +1,52 @@ +--- +layout: post +title: "Purdue Technical Projects" +description: "Struggling to start personal projects, we can help." +author: Sarah Pushparaj +date: 2022-05-24 09:00:00 -0400 +categories: TechnicalProjects +--- +Hey there! +If you’re a CS or DS major, you know the importance of personal projects, whether it’s to +amplify your resume/LinkedIn or to get a better understanding of a certain class topic. +But what about starting a project just because you want to, because you are passionate about +your field and want to make new contributions. Maybe you don’t like the way something is done, +so you believe you can change it for the better. Or maybe you thought, I wish something like this +existed and decided that you can make it happen? + +Picture this: you start that project, but you encounter obstacle after obstacle. You don’t +have enough time to figure it out on your own, and you don’t have sufficient experience to +practically apply concepts you’ve just learned. Or maybe, classes, work, and life gets in the way. +What should you do? + +If you don’t already know, the Purdue Undergraduate Student Board exists to serve the +Purdue CS/DS student community by acting as a liaison to the CS department. + +There’s always room for new ideas, for improvement, and that’s why we want to help! +We’re working on a brand-new initiative, Purdue Technical Projects, so USB can actively +sponsor your projects! Here’s the basic idea of how it’ll work: + +This initiative will be run throughout the semester. USB will set up a website that will +feature existing student-created Purdue-related projects and an area where students can input +their project ideas. There will also be a submission box for already completed projects, and +every project will be vetted by our initiative team before it is accepted. In the first month of the +semester, students can enter their project ideas and the support they seek, in terms of group +size and experience. Throughout the next couple of months, groups can be finalized and they +can start implementing their projects. At the end of the semester, we will host a panel in which +groups can showcase their projects, with the goal of acknowledgment and widespread use +throughout the Purdue community! + +We don’t want this to be another homework assignment or project for school, so USB’s +role will be less restrictive. We’ll contact the groups, verify that progress is being made, and act +as a point of contact. We’ll set up a discord server in which groups can communicate with each +other as well as contact the initiative members for any questions/concerns/ideas. Even though +it’s semester-based, if a group hasn’t finished their project, or feels that it’s not ready for the +showcase, no worries! They can always present next semester. +Project potentiality is exciting, especially Purdue-related projects. We all know and love +Boilerexams (boilerexams.com), single-handedly saving our grades! There are so many things to keep track of as a +student at Purdue, luckily the multitude of Purdue apps (created by students!) makes our lives +easier. + + + + diff --git a/_posts/2022-05-27-gradschool.md b/_posts/2022-05-27-gradschool.md new file mode 100644 index 000000000..9584be323 --- /dev/null +++ b/_posts/2022-05-27-gradschool.md @@ -0,0 +1,56 @@ +--- +layout: post +title: "Considering Graduate School at Purdue?" +description: "If you are considering graduate school at Purdue, here are some incentives to apply." +author: Pinaki Mohanty +date: 2022-05-27 09:00:00 -0400 +categories: belonging +--- +Considering Grad School at Purdue CS? If so, this blog post is just for you. + +A little bit about me(or why should you listen to me...). My name is Pinaki. I am a second-semester +Master’s student in the CS+STAT Joint Masters at Purdue. I graduated from Purdue in May 2021 with a +Bachelor in Computer Science with specializations in Machine Intelligence, Database and Information +Systems, and Theory. I also minored in Math and Statistics. +During my undergraduate years at Purdue, I have been a part of Association of Multicultural Computer +Scientists(AMCS), Reach Out for Computer Science(ROCS), Global Science Partners(GSP), and of +course Undergraduate Student Board for Computer Science(USB). I have been a part of USB, actively +and passively, for more than three years. I have contributed to initiatives like TA Training and Virtual +Office Hours. Advocating on behalf of students is something I enjoy doing and that is why I am here to +help! +A key concern amongst undergrads, often echoed via student forums, here at Purdue is the lack of +knowledge about grad school. I am here to advocate why you should consider Purdue CS for an MS +degree, especially if you are finishing/finished your undergrad at Purdue. +What prompted me to go for an MS? +I wanted to learn about topics whose discussion was beyond the scope of the classroom; I wanted to +augment my knowledge. Also, I enjoyed school in general and wanted to explore research. +I started applying for master's programs sometime around September 2020. I had all my decisions in by +February-March 2021. Despite some really competitive offers, I decided to pursue my MS at Purdue +owing to the following reasons. + +1. Cost of Living for some locations was 2-3x more than that of West Lafayette +2. Teaching Assistantship: This was a big one because often MS programs do not offer +assistantships. At Purdue, my tuition was covered, and I got a stipend once in two weeks. Taking +a wide variety of courses at Purdue equips you with the knowledge of ‘how to run the course’. +This also ensures constituency and quality. Keep in mind, being a GTA comes with a lot of +responsibilities; you are in charge of the quality of the fabric of the curriculum. Also, my medical +insurance was covered. I was essentially staff now. +3. Familiarity with the department was another one. Purdue has been my home for 4 years. Saying +goodbye can be hard :’) +4. Influx of New Faculty (especially in AI, ML) made me stay at Purdue with the prospect of +research collaboration +5. Purdue’s CS MS Program offers MS Degrees in many flavors: General/Vanilla, CSE +(Computational Sciences and Engineering), CLS (Computational Life Sciences), and CS+STAT. + +This factor made me strongly consider Purdue as this kind of flexibility was not available +everywhere. +Other than that, there is the 5 Year BS+MS combined degree program, which can help you save a year. +This does not apply to me as I took 4 sweet years to complete my BS and then separately applied for an +MS. +If you are at the junction of deciding on grad school, I hope these pointers would make Purdue look like +an attractive option. +I also serve as the Undergraduate Committee Representative at the Graduate Student Board for Computer +Science (GSB). If you have any questions, feel free to reach out. Boiler Up! + + + diff --git a/_sass/generate.scss b/_sass/generate.scss new file mode 100644 index 000000000..7c6e80413 --- /dev/null +++ b/_sass/generate.scss @@ -0,0 +1,381 @@ +/* + Written as a substitute for Tailwind since GH pages is lame. + Would be immediately deprecated by Tailwind with little changes to current css. +*/ + +/* Source: https://gist.github.com/mattfelten/5c6ad6edb70c6ab10f5c377c21eda2f2 + Modified by Zach Bryant +*/ +@mixin generate-subclass($map, $attribute, $prefix: '-', $base: 'base', $remove: null, $important: false, $pseudo: false) { + @each $key, $value in $map { + @if $remove { + $key: str-replace($key, $remove, ''); + } + $class: '.#{$key}'; + @if & { // not top level class + $class: '&#{if($key != $base, #{$prefix}#{$key}, '')}'; + } + #{$class} { + @include generate-pseudo-helper($pseudo) { + @include generate-helper($value, $attribute, $prefix, $base, $remove, $important); + } + } + } +} + +// Helper for generating screen-size variants of each sub-class +@mixin generate-helper($value, $attribute, $prefix, $base, $remove, $important) { + @if type-of($value) == 'map' { + @include generate-subclass($value, $attribute, $prefix, $base, $remove, $important); + } + @else if type-of($attribute) == 'list' { + // A group of attributes to set to the same value + @include screen-variant() { + @each $attr in $attribute { + @include generate-important-helper($value, $attr, $important) + } + } + } + @else { + @include screen-variant() { + @include generate-important-helper($value, $attribute, $important) + } + } +} + +@mixin generate-pseudo-helper($pseudo) { + @if $pseudo { + @each $variant in $pseudo-classes { + @include pseudo-variant($variant) { + @content; + } + } + } + @else { + @content; + } +} + +// Helper generates important styles +@mixin generate-important-helper($value, $attribute, $important) { + #{$attribute}: $value#{if($important, ' !important', '')}; +} + +// Create a map of spacing values for a range +@function range-space-map($start, $end) { + $map: (); + @for $index from $start through $end { + $map: map-merge($map, (abs($index): spacing-group($index))); + } + @return $map; +} + +$spacings: range-space-map(0, $spacing-max-group); +$spacings: map-merge($spacings, (auto: auto)); + +$spacings-negative: range-space-map(-$spacing-max-group, -1); + +$pseudo-classes: ( + 'hover', + 'focus', +); + +$colors: ( + transparent: transparent, + none: unset, + focus-color:$focus-color, + hint: $text-color-hint, + dark: $text-color, + light: $text-color-light, + primary: $primary-color, + accent: $accent-color, + blue: $accent-blue, + red: $accent-red, + purple: $accent-purple, + green: $accent-green, + orange: $accent-orange, + grey: ( + base: $accent-grey, + light: $accent-grey-light, + ), +) !default; +@each $color, $value in $colors { + @if type-of($value) != 'map' { + $value: (base: $value); + } + $base: map-get($value, "base"); + @if type-of($base) == "color" { + @if not map-has-key($value, "light") { + $value: map-merge($value, (light: tint($base, $percentage-lighten))) + } + @if not map-has-key($value, "dark") { + $value: map-merge($value, (dark: shade($base, $percentage-darken))) + } + } + + $colors: map-merge($colors, ($color: $value)); +} + +@include generate-subclass($colors, 'color', $pseudo: false); + +$displays: ( + block: block, + grid: grid, + none: none, + flex: flex, + contents: contents, + inherit: inherit, + inline: ( + base: inline, + flex: inline-flex, + block: inline-block, + grid: inline-grid, + ), +); +@include generate-subclass($displays, 'display', $important: true); + +$flex-directions: (); +@each $direction in ("row", "column") { + $map: (base: #{$direction}, reverse: #{$direction}-reverse); + $flex-directions: map-merge($flex-directions, ($direction: $map)); +} +@include generate-subclass($flex-directions, 'flex-direction'); + +$flex-wraps: (); +@each $direction in ("row", "column") { + $wraps: (wrap: wrap, nowrap: nowrap); + $map: (base: $wraps, reverse: $wraps); + $flex-wraps: map-merge($flex-wraps, ($direction: $map)); +} +@include generate-subclass($flex-wraps, ('flex-wrap', '-webkit-flex-wrap'), $prefix: '--', $important: true); + +.overflow { + $overflows: ( + visible: visible, + scroll: scroll, + hidden: hidden, + ); + @include generate-subclass($overflows, 'overflow'); + &-x { + @include generate-subclass($overflows, 'overflow-x'); + } + &-y { + @include generate-subclass($overflows, 'overflow-y'); + } +} + +.bg { + @include generate-subclass($colors, 'background-color'); +} + +.fill { + @include generate-subclass($colors, 'fill'); +} + +.justify { + $map: ( + start: flex-start, + center: center, + end: flex-end, + around: space-around, + between:space-between + ); + @include generate-subclass($map, 'justify-content') +} + +.align- { + &content { + $map: ( + start: flex-start, + center: center, + end: flex-end, + around: space-around, + between: space-between, + baseline: baseline, + stretch: stretch + ); + @include generate-subclass($map, 'align-content'); + } + &items { + $map: ( + start: flex-start, + center: center, + end: flex-end, + baseline: baseline + ); + @include generate-subclass($map, 'align-items'); + } + &self { + $map: ( + start: flex-start, + center: center, + end: flex-end, + around: space-around, + between: space-between, + baseline: baseline, + stretch: stretch + ); + @include generate-subclass($map, 'align-self'); + } +} + +.text { + $map: ( + left: left, + right: right, + center: center, + justify: justify + ); + @include generate-subclass($map, 'text-align'); + + $map: ( + nowrap: nowrap, + pre: pre, + pre-line: pre-line, + pre-wrap: pre-wrap, + ); + @include generate-subclass($map, 'white-space'); +} + +$font-weights: ( + normal: 400, + medium: 500, + semibold: 600, + bold: 700 +) !default; +$font-styles: ( + normal: normal, + italic: italic +) !default; +.font { + @include generate-subclass($font-sizes, 'font-size', $prefix: '-'); + @include generate-subclass($font-weights, 'font-weight'); + @include generate-subclass($font-styles, 'font-style', $prefix: '-'); +} + + +$roundings: ( + none: 0, + less: $border-radius-slight, + base: $border-radius, + more: $border-radius-more, + circle: 100% +); +.rounded { + @include generate-subclass($roundings, ('border-radius', '-webkit-border-radius'), $prefix: '--'); +} + +$borders: ( + none: 0px, + base: $border-width, + thin: $border-width / 2, + thick: $border-width * 2, +); +.border { + @include generate-subclass($borders, 'border-width', $prefix: '-'); + @include generate-subclass($colors, 'border-color'); + & { + @extend .border; + border-style: solid; + } +} + + +/* Percentage sizing class generation */ +$percentages: ( + half: 50%, + full: 100%, + auto: auto, +); +@each $denominator in $dimension-sizing-groups { + @for $numerator from 1 to $denominator { + $size: percentage($numerator / $denominator); + $key: "#{$numerator}\\/#{$denominator}"; + $percentages: map-merge($percentages, ($key: $size)); + } +} + +$spacing-types: (margin, padding); +$spacing-values: ($spacings, $percentages); +$spacing-directions: (top: "-top", bottom: "-bottom", left: "-left", right: "-right", x: ("-left", "-right"), y: ("-top", "-bottom"), a: ("-left", "-right", "-top", "-bottom", "")); +@each $type in $spacing-types { + $t: str-slice($type, 1, 1); + @each $direction, $attrs in $spacing-directions { + $d: str-slice($direction, 1, 1); + $prefix: $t + $d; + @if type-of($attrs) == 'list' { + $list: []; + @each $a in $attrs { + $list: append($list, $type + $a); + } + $attrs: $list; + } @else { + $attrs: $type + $attrs; + } + .#{$prefix} { + @each $values in $spacing-values { + @include generate-subclass($values, $attrs); + } + } + @if $type == "margin" { + .-#{$prefix} { + @include generate-subclass($spacings-negative, $attrs); + } + } + } +} + + +// Width/Height percentage classes +@each $property in ("height", "width") { + .#{str-slice($property, 1, 1)} { + @include generate-subclass($percentages, $property); + @include generate-subclass($spacings, ($property)); + } + .#{str-slice($property, 1, 1)}-max { + @include generate-subclass($percentages, $property); + @include generate-subclass($spacings, ('max-#{$property}')); + } + .#{str-slice($property, 1, 1)}-min { + @include generate-subclass($percentages, $property); + @include generate-subclass($spacings, ('min-#{$property}')); + } +} + + +/* Flex Shrink/Grow class generation */ +$max-grow-shrink-factor: 5; +$grow-shrink-factors: (0:0); +@for $factor from 0 through $max-grow-shrink-factor { + $grow-shrink-factors: map-merge($grow-shrink-factors, ($factor: $factor)); +} +@each $property in ("grow", "shrink") { + .#{$property} { + @include generate-subclass($grow-shrink-factors, 'flex-#{$property}', $important: true); + } +} + + +/* Icon Sizing */ +$max-icon-multiple: 21; +.icon { + $map: ( + 0: 1.111rem + ); + @for $factor from 1 through $max-icon-multiple { + $ratio: $factor * 0.75rem; + $map: map-merge($map, ($factor: $ratio)); + } + + @include generate-subclass($map, ('width', 'max-width', 'max-height')); + &-square { + @include generate-subclass($map, ('width', 'height')); + } +} + + +/* Classes to space away from edges */ +@each $position in (top, bottom, left, right) { + $map: ($position: $spacings); + @include generate-subclass($map, $position); +} diff --git a/_sass/minima.scss b/_sass/minima.scss deleted file mode 100644 index cb0865b1a..000000000 --- a/_sass/minima.scss +++ /dev/null @@ -1,51 +0,0 @@ -@charset "utf-8"; - -// Define defaults for each variable. - -$base-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; -$base-font-size: 16px !default; -$base-font-weight: 400 !default; -$small-font-size: $base-font-size * 0.875 !default; -$base-line-height: 1.5 !default; - -$spacing-unit: 30px !default; - -$text-color: #111 !default; -$background-color: #fdfdfd !default; -$brand-color: #2a7ae2 !default; - -$grey-color: #828282 !default; -$grey-color-light: lighten($grey-color, 40%) !default; -$grey-color-dark: darken($grey-color, 25%) !default; - -$table-text-align: left !default; - -// Width of the content area -$content-width: 800px !default; - -$on-palm: 600px !default; -$on-laptop: 800px !default; - -// Use media queries like this: -// @include media-query($on-palm) { -// .wrapper { -// padding-right: $spacing-unit / 2; -// padding-left: $spacing-unit / 2; -// } -// } -@mixin media-query($device) { - @media screen and (max-width: $device) { - @content; - } -} - -@mixin relative-font-size($ratio) { - font-size: $base-font-size * $ratio; -} - -// Import partials. -@import - "minima/base", - "minima/layout", - "minima/syntax-highlighting" -; diff --git a/_sass/minima/_base.scss b/_sass/minima/_base.scss deleted file mode 100644 index f1aef9771..000000000 --- a/_sass/minima/_base.scss +++ /dev/null @@ -1,299 +0,0 @@ -/** - * Reset some basic elements - */ -body, h1, h2, h3, h4, h5, h6, -p, blockquote, pre, hr, -dl, dd, ol, ul, figure { - margin: 0; - padding: 0; -} - - - -/** - * Basic styling - */ -body { - font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; - color: $text-color; - background-color: $background-color; - -webkit-text-size-adjust: 100%; - -webkit-font-feature-settings: "kern" 1; - -moz-font-feature-settings: "kern" 1; - -o-font-feature-settings: "kern" 1; - font-feature-settings: "kern" 1; - font-kerning: normal; - display: flex; - min-height: 100vh; - flex-direction: column; -} - - - -/** - * Set `margin-bottom` to maintain vertical rhythm - */ -h1, h2, h3, h4, h5, h6, -p, blockquote, pre, -ul, ol, dl, figure, -%vertical-rhythm { - margin-bottom: $spacing-unit / 2; -} - - - -/** - * `main` element - */ -main { - display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */ -} - - - -/** - * Images - */ -img { - max-width: 100%; - vertical-align: middle; -} - - - -/** - * Figures - */ -figure > img { - display: block; -} - -figcaption { - font-size: $small-font-size; -} - - - -/** - * Lists - */ -ul, ol { - margin-left: $spacing-unit; -} - -li { - > ul, - > ol { - margin-bottom: 0; - } -} - - - -/** - * Headings - */ -h1, h2, h3, h4, h5, h6 { - font-weight: $base-font-weight; -} - - - -/** - * Links - */ -a { - color: $brand-color; - text-decoration: none; - - &:visited { - color: darken($brand-color, 15%); - } - - &:hover { - color: $text-color; - text-decoration: underline; - } - - .social-media-list &:hover { - text-decoration: none; - - .username { - text-decoration: underline; - } - } -} - - -/** - * Blockquotes - */ -blockquote { - color: $grey-color; - border-left: 4px solid $grey-color-light; - padding-left: $spacing-unit / 2; - @include relative-font-size(1.125); - letter-spacing: -1px; - font-style: italic; - - > :last-child { - margin-bottom: 0; - } -} - - - -/** - * Code formatting - */ -pre, -code { - @include relative-font-size(0.9375); - border: 1px solid $grey-color-light; - border-radius: 3px; - background-color: #eef; -} - -code { - padding: 1px 5px; -} - -pre { - padding: 8px 12px; - overflow-x: auto; - - > code { - border: 0; - padding-right: 0; - padding-left: 0; - } -} - - - -/** - * Title - */ -.title { - background-color: #333333; - padding-top: 7vh; - text-align: center; - height: 20vh; - color: white; - width: 100%; - padding-bottom: 2vh; -} - -.title .post-title { - font-weight: 700; - font-family: $base-font-family; - font-size: 40px; - margin-bottom: 3vh; -} - -.title .post-subtitle { - font-weight: 500; - font-family: $base-font-family; - font-size: 20px; -} - -/** - * Wrapper - */ -.wrapper { - max-width: -webkit-calc(#{$content-width}); - max-width: calc(#{$content-width}); - margin-right: auto; - margin-left: auto; - padding-right: $spacing-unit; - padding-left: $spacing-unit; - margin-top: $spacing-unit; - - @extend %clearfix; - - @include media-query($on-laptop) { - max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit})); - max-width: calc(#{$content-width} - (#{$spacing-unit})); - padding-right: $spacing-unit / 2; - padding-left: $spacing-unit / 2; - } -} - -.header-wrapper { - max-width: inherit; - margin-right: 3vh; - margin-left: 3vh; - padding-right: $spacing-unit; - padding-left: $spacing-unit; - @extend %clearfix; - - @include media-query($on-laptop) { - max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit})); - max-width: calc(#{$content-width} - (#{$spacing-unit})); - padding-right: $spacing-unit / 2; - padding-left: $spacing-unit / 2; - } -} - - - -/** - * Clearfix - */ -%clearfix:after { - content: ""; - display: table; - clear: both; -} - - - -/** - * Icons - */ - -.svg-icon { - width: 20px; - height: 20px; - display: inline-block; - fill: #{$grey-color}; - padding-right: 10px; - padding-top: 3px; - vertical-align: text-top; -} - -.social-media-list { - li + li { - padding-top: 5px; - } -} - - - -/** - * Tables - */ -table { - margin-bottom: $spacing-unit; - width: 100%; - text-align: $table-text-align; - color: lighten($text-color, 18%); - border-collapse: collapse; - border: 1px solid $grey-color-light; - tr { - &:nth-child(even) { - background-color: lighten($grey-color-light, 6%); - } - } - th, td { - padding: ($spacing-unit / 3) ($spacing-unit / 2); - } - th { - background-color: lighten($grey-color-light, 3%); - border: 1px solid darken($grey-color-light, 4%); - border-bottom-color: darken($grey-color-light, 12%); - } - td { - border: 1px solid $grey-color-light; - } -} diff --git a/_sass/minima/_layout.scss b/_sass/minima/_layout.scss deleted file mode 100644 index 1ba498dd0..000000000 --- a/_sass/minima/_layout.scss +++ /dev/null @@ -1,268 +0,0 @@ -/** - * Site header - */ -.site-header { - min-height: $spacing-unit * 1.865; - background-color: #FFCA44; - - // Positioning context for the mobile navigation icon - position: relative; - grid-area: head; -} - -.site-title { - @include relative-font-size(1.625); - font-weight: 300; - line-height: $base-line-height * $base-font-size * 2.25; - letter-spacing: -1px; - margin-bottom: 0; - float: left; - - &, - &:visited { - color: $grey-color-dark; - } -} - -.site-nav { - z-index: 1; - float: right; - line-height: $base-line-height * $base-font-size * 2.25; - - .nav-trigger { - display: none; - } - - .menu-icon { - display: none; - } - - .page-link { - color: $text-color; - line-height: $base-line-height; - - // Gaps between nav items, but not on the last one - &:not(:last-child) { - margin-right: 20px; - } - } - - .footer-page-link { - color: $background-color; - line-height: $base-line-height; - - // Gaps between nav items, but not on the last one - &:not(:last-child) { - margin-right: 20px; - } - } - - @include media-query($on-palm) { - position: absolute; - top: 9px; - right: $spacing-unit / 2; - background-color: $background-color; - border: 1px solid $grey-color-light; - border-radius: 5px; - text-align: right; - - label[for="nav-trigger"] { - display: block; - float: right; - width: 36px; - height: 36px; - z-index: 2; - cursor: pointer; - } - - .menu-icon { - display: block; - float: right; - width: 36px; - height: 26px; - line-height: 0; - padding-top: 10px; - text-align: center; - - > svg { - fill: $grey-color-dark; - } - } - - input ~ .trigger { - clear: both; - display: none; - } - - input:checked ~ .trigger { - display: block; - padding-bottom: 5px; - } - - .page-link { - display: block; - padding: 5px 10px; - - &:not(:last-child) { - margin-right: 0; - } - margin-left: 20px; - } - } -} - - - -/** - * Site footer - */ -.site-footer { - border-top: 1px solid $grey-color-light; - background-color: #333333; - color: white; - grid-area: footer; -} - -.footer-heading { - @include relative-font-size(1.125); - margin-bottom: $spacing-unit / 2; -} - -.contact-list, -.social-media-list { - list-style: none; - margin-left: 0; -} - -.footer-col-wrapper { - @include relative-font-size(0.9375); - color: $grey-color; - margin-left: -$spacing-unit / 2; - @extend %clearfix; -} - -.footer-col { - float: left; - margin-bottom: $spacing-unit / 2; - padding-left: $spacing-unit / 2; -} - -.footer-col-1 { - width: -webkit-calc(35% - (#{$spacing-unit} / 2)); - width: calc(35% - (#{$spacing-unit} / 2)); -} - -.footer-col-2 { - width: -webkit-calc(20% - (#{$spacing-unit} / 2)); - width: calc(20% - (#{$spacing-unit} / 2)); -} - -.footer-col-3 { - width: -webkit-calc(45% - (#{$spacing-unit} / 2)); - width: calc(45% - (#{$spacing-unit} / 2)); -} - -@include media-query($on-laptop) { - .footer-col-1, - .footer-col-2 { - width: -webkit-calc(50% - (#{$spacing-unit} / 2)); - width: calc(50% - (#{$spacing-unit} / 2)); - } - - .footer-col-3 { - width: -webkit-calc(100% - (#{$spacing-unit} / 2)); - width: calc(100% - (#{$spacing-unit} / 2)); - } -} - -@include media-query($on-palm) { - .footer-col { - float: none; - width: -webkit-calc(100% - (#{$spacing-unit} / 2)); - width: calc(100% - (#{$spacing-unit} / 2)); - } -} - - - -/** - * Page content - */ -.page-content { - //padding: $spacing-unit 0; - flex: 1; -} - -.page-heading { - @include relative-font-size(2); -} - -.post-list-heading { - @include relative-font-size(1.75); -} - -.post-list { - margin-left: 0; - list-style: none; - - > li { - margin-bottom: $spacing-unit; - } -} - -.post-meta { - font-size: $small-font-size; - color: $grey-color; -} - -.post-link { - display: block; - @include relative-font-size(1.5); -} - - - -/** - * Posts - */ -.post-header { - margin-bottom: $spacing-unit; -} - -.post-title { - @include relative-font-size(2.625); - letter-spacing: -1px; - line-height: 1; - - @include media-query($on-laptop) { - @include relative-font-size(2.25); - } -} - -.post-content { - margin-bottom: $spacing-unit; - - h2 { - @include relative-font-size(2); - - @include media-query($on-laptop) { - @include relative-font-size(1.75); - } - } - - h3 { - @include relative-font-size(1.625); - - @include media-query($on-laptop) { - @include relative-font-size(1.375); - } - } - - h4 { - @include relative-font-size(1.25); - - @include media-query($on-laptop) { - @include relative-font-size(1.125); - } - } -} diff --git a/_sass/minima/_syntax-highlighting.scss b/_sass/minima/_syntax-highlighting.scss deleted file mode 100644 index bccdb8995..000000000 --- a/_sass/minima/_syntax-highlighting.scss +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Syntax highlighting styles - */ -.highlight { - background: #fff; - @extend %vertical-rhythm; - - .highlighter-rouge & { - background: #eef; - } - - .c { color: #998; font-style: italic } // Comment - .err { color: #a61717; background-color: #e3d2d2 } // Error - .k { font-weight: bold } // Keyword - .o { font-weight: bold } // Operator - .cm { color: #998; font-style: italic } // Comment.Multiline - .cp { color: #999; font-weight: bold } // Comment.Preproc - .c1 { color: #998; font-style: italic } // Comment.Single - .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special - .gd { color: #000; background-color: #fdd } // Generic.Deleted - .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific - .ge { font-style: italic } // Generic.Emph - .gr { color: #a00 } // Generic.Error - .gh { color: #999 } // Generic.Heading - .gi { color: #000; background-color: #dfd } // Generic.Inserted - .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific - .go { color: #888 } // Generic.Output - .gp { color: #555 } // Generic.Prompt - .gs { font-weight: bold } // Generic.Strong - .gu { color: #aaa } // Generic.Subheading - .gt { color: #a00 } // Generic.Traceback - .kc { font-weight: bold } // Keyword.Constant - .kd { font-weight: bold } // Keyword.Declaration - .kp { font-weight: bold } // Keyword.Pseudo - .kr { font-weight: bold } // Keyword.Reserved - .kt { color: #458; font-weight: bold } // Keyword.Type - .m { color: #099 } // Literal.Number - .s { color: #d14 } // Literal.String - .na { color: #008080 } // Name.Attribute - .nb { color: #0086B3 } // Name.Builtin - .nc { color: #458; font-weight: bold } // Name.Class - .no { color: #008080 } // Name.Constant - .ni { color: #800080 } // Name.Entity - .ne { color: #900; font-weight: bold } // Name.Exception - .nf { color: #900; font-weight: bold } // Name.Function - .nn { color: #555 } // Name.Namespace - .nt { color: #000080 } // Name.Tag - .nv { color: #008080 } // Name.Variable - .ow { font-weight: bold } // Operator.Word - .w { color: #bbb } // Text.Whitespace - .mf { color: #099 } // Literal.Number.Float - .mh { color: #099 } // Literal.Number.Hex - .mi { color: #099 } // Literal.Number.Integer - .mo { color: #099 } // Literal.Number.Oct - .sb { color: #d14 } // Literal.String.Backtick - .sc { color: #d14 } // Literal.String.Char - .sd { color: #d14 } // Literal.String.Doc - .s2 { color: #d14 } // Literal.String.Double - .se { color: #d14 } // Literal.String.Escape - .sh { color: #d14 } // Literal.String.Heredoc - .si { color: #d14 } // Literal.String.Interpol - .sx { color: #d14 } // Literal.String.Other - .sr { color: #009926 } // Literal.String.Regex - .s1 { color: #d14 } // Literal.String.Single - .ss { color: #990073 } // Literal.String.Symbol - .bp { color: #999 } // Name.Builtin.Pseudo - .vc { color: #008080 } // Name.Variable.Class - .vg { color: #008080 } // Name.Variable.Global - .vi { color: #008080 } // Name.Variable.Instance - .il { color: #099 } // Literal.Number.Integer.Long -} diff --git a/_sass/mixins.scss b/_sass/mixins.scss new file mode 100644 index 000000000..ab06724cc --- /dev/null +++ b/_sass/mixins.scss @@ -0,0 +1,319 @@ +@mixin google-font($family, $variants) { + @import url('https://fonts.googleapis.com/css2?family=#{$family}:wght@#{$variants}&display=swap'); +} + +/* Credit: https://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/ */ +@function strip-unit($num) { + @return $num / ($num * 0 + 1); +} + +@mixin rem-fallback($property, $values...) { + $max: length($values); + $pxValues: ''; + $remValues: ''; + + @for $i from 1 through $max { + $value: strip-unit(nth($values, $i)); + $pxValues: #{$pxValues + $value*16}px; + + @if $i < $max { + $pxValues: #{$pxValues + " "}; + } + } + + @for $i from 1 through $max { + $value: strip-unit(nth($values, $i)); + $remValues: #{$remValues + $value}rem; + + @if $i < $max { + $remValues: #{$remValues + " "}; + } + } + + #{$property}: $pxValues; + #{$property}: $remValues; +} + +/* Credit: https://css-tricks.com/snippets/sass/power-function/ + Modified by Zach Bryant +*/ +@function pow($number, $exponent) { + $value: 1; + + @if $exponent>0 { + @for $i from 1 through $exponent { + $value: $value * $number; + } + } + + @else if $exponent < 0 { + @for $i from $exponent through -1 { + $value: $value * $number; + } + + $value: 1 / $value; + } + + @return $value; +} + +/// Slightly lighten a color +@function tint($color, $percentage) { + @return mix(white, $color, $percentage); +} + +/// Slightly darken a color +@function shade($color, $percentage) { + @return mix(black, $color, $percentage); +} + +/* Font Mixins */ +@mixin font-size($arg) { + font-size: map-get($font-sizes, $arg); +} +@mixin font-family($arg) { + font-family: map-get($font-families, $arg); +} +@mixin font-weight($arg) { + font-weight: map-get($font-weights, $arg); +} +@mixin font-base { + color: $text-color; +} + +@mixin font-body { + @include font-base; + @include font-family("body"); +} + +@mixin font-header { + @include font-base; + @include font-family("header"); +} + +@mixin font-normal { + @include font-weight("base"); +} + +@mixin font-medium { + @include font-weight("medium"); +} + +@mixin font-semibold { + @include font-weight("semibold"); +} + +@mixin font-bold { + @include font-weight("bold"); +} + +@mixin font-button { + @include font-bold; + @include font-header; + @include font-size("button"); +} + +@mixin rounded($radius) { + border-radius: $radius; + -webkit-border-radius: $radius; +} + +@mixin border($color, $width) { + border: $width solid $color; +} + +@mixin shadow($type: 'drop', $size: $shadow-default, $color: $shadow-color-default) { + @if $type == 'drop' or $type == 'drop-shadow' { + -webkit-transform: translateZ(0); + -webkit-perspective: 1000; + -webkit-backface-visibility: hidden; + -webkit-filter: drop-shadow(#{$size} #{$color}); + filter: drop-shadow(#{$size} #{$color}); + transition: filter $animation-delay ease-in-out; + } + @else { + #{$type}: #{$size} #{$color}; + transition: #{$type} $animation-delay ease-in-out; + } +} + +@mixin shadow-box { + @include shadow('box-shadow'); +} + +@mixin shadow-text { + @include shadow('text-shadow'); +} + +@mixin shadow-drop { + @include shadow('drop-shadow'); +} + +@mixin shadow-none { + box-shadow: none !important; + text-shadow: none !important; + filter: none !important; +} + +@mixin justify($arg) { + justify-content: $arg; +} + +@mixin clickable { + cursor: pointer; + @include shadow-drop; + @extend .shadow-drop--center--soft\:hover; +} + +@mixin flex-even { + display: flex; + display: -webkit-flex; + flex-grow: 1; + flex-shrink: 1; + flex-basis: auto; +} + + +/* Sizing mixins */ +@mixin media-query($above: null, $below: null) { + @if $above and $below { + @media screen and (min-width: $above) and (max-width: $below) { + @content; + } + } + @else { + @if $above { + @media screen and (min-width: $above) { + @content; + } + } + @if $below { + @media screen and (max-width: $below) { + @content; + } + } + } +} + + +/* Spacing Mixins */ +@function spacing-group($index) { + //$num: pow($spacing-base, $index - 2); + @return #{$index * $spacing-multiple}; +} + +// Paddings +@mixin p-bottom($size) { + padding-bottom: $size; +} + +@mixin p-top($size) { + padding-top: $size; +} + +@mixin py($size) { + @include p-top($size); + @include p-bottom($size); +} + +@mixin p-left($size) { + padding-left: $size; +} + +@mixin p-right($size) { + padding-right: $size; +} + +@mixin px($size) { + @include p-left($size); + @include p-right($size); +} + +@mixin pa($size) { + @include px($size); + @include py($size); + padding: $size; +} + +// Margins +@mixin m-bottom($size) { + margin-bottom: $size; +} + +@mixin m-top($size) { + margin-top: $size; +} + +@mixin my($size) { + @include m-top($size); + @include m-bottom($size); +} + +@mixin m-left($size) { + margin-left: $size; +} + +@mixin m-right($size) { + margin-right: $size; +} + +@mixin mx($size) { + @include m-left($size); + @include m-right($size); +} + +@mixin ma($size) { + @include mx($size); + @include my($size); + margin: $size; +} + +@mixin screen-variant($prefix:"\\@", $variant-only: false) { + + @each $name, $vals in $screens { + #{if(&, '&', '.')}#{$prefix}#{$name} { + @include screen-variant-helper($vals) { + @content; + } + } + } + @if not $variant-only { + @content; + } +} + +@mixin screen-variant-helper($vals) { + $min: map-get($vals, "min"); + $max: map-get($vals, "max"); + + @if $min { + &-above { @include media-query($above: $min) { @content; } } + } + @if $max { + &-below { @include media-query($below: $max) { @content; } } + } + + @if $min and $max { + @include media-query($below: $max, $above: $min) { @content; } + } +} + +@mixin screen-variant-force($attribute, $value) { + @if type-of($attribute) == 'list' { + @each $attr in $attribute { + #{$attr}: #{$value}; + } + } + @else { + #{$attribute}: #{$value}; + } +} + +@mixin pseudo-variant($pseudo) { + &\:#{$pseudo} { + &:#{$pseudo} { + @content; + } + } + @content; +} diff --git a/_sass/pages/_about.scss b/_sass/pages/_about.scss index 46ab9ba4b..cb007c1e9 100644 --- a/_sass/pages/_about.scss +++ b/_sass/pages/_about.scss @@ -1,228 +1,52 @@ -.about-title { - font-size: 40px; - padding-top: 10vh; - text-align: center; - background-color: $usb-gray; - height: 20vh; - color: white; - font-weight: 700; -} - -.aboutus h1 { - font-weight: bolder; -} - - -.banner { - background-color: $usb-gray; - width: 100%; - padding-bottom: 5vh; - justify-content: center; - //height: 70vh; - height:500px; -} - -.home { - flex: 1; -} - -.row { - display: flex; - } - -.column { - flex: 50%; -} - -.banner-grid { - display: grid; - grid-template-columns: 2fr 1fr; - justify-items: right; - padding-top: 11vh; - align-content: flex-start; -} - -.banner-text { - margin-left: 3vh; - color:white; - margin-right: 25%; - max-width: 70%; - grid-row: 1; - grid-column: 2 / 3; - text-align: left; -} - -.banner-text h5 { - font-size: medium; -} - -.banner-image { - margin-right: 5vh; - margin-left: 5vh; - max-width: 100%; - padding-top: 40px; - grid-row: 1; - grid-column: 1 / 2; +/* CSS for /aboutus */ -} - -.banner button{ - background-color: $usb-yellow; - border: none; - border-radius: 4px; - font-weight: bold; - font-size: 1em; - padding: 10px; -} - -#triangle { - position: absolute; - left: 45vw; - width: 0; - height: 0; - border-bottom: 470px solid $usb-yellow; - border-right: 150px solid transparent; - z-index: 1; -} - -#rectangle { - position: absolute; - background-color: $usb-yellow; - height: 470px; - width: 45vw; - z-index: 2; - - h2 { - font-weight: bold; - padding-top: 1vh; - margin-right: 40px; - text-align: center; +/*! purgecss start ignore */ +.bg { + &--angled { + @include media-query($above: $screen-xlarge-min) { + background: linear-gradient(to top right, $bg-angle-color 69%, transparent 0%) no-repeat top, + linear-gradient(0deg, $bg-angle-color, $bg-angle-color) no-repeat bottom; + background-size: 100% $bg-angle, 100% calc(100% - calc(#{$bg-angle} - 2px)); + } } - - p { - font-size: 20px; + &--angled-mobile { + @include media-query($below: $screen-large) { + background: linear-gradient(to bottom right, $bg-angle-color 50%, transparent 0%) no-repeat bottom, + linear-gradient(30deg, $bg-angle-color, $bg-angle-color) no-repeat top; + background-size: 100% $bg-angle-mobile, 100% calc(100% - calc(#{$bg-angle-mobile} - 2px)); + @include p-bottom(spacing-group(12)); + @include m-bottom(spacing-group(8)); + } } } -#rectangle-text { - position: absolute; - max-width: 500px; - right:0; - padding-left: 20px; - padding-top: 100px; -} - -#mission-container { - width:60vw; - height: 250px; - min-width: 600px; -} - -#objectives { - padding-top: 3vh; - width: 35vw; - display: flex; - flex-direction: column; -} - -#objectives h2 { - font-weight: bold; - flex-grow: 1; -} - -#objectiveParts { - display: flex; - flex-direction: column; -} - .objective { - display: flex; - flex-direction: row; - max-width: 500px; - min-width: 200px; - padding-right: 20px; -} - -.objective-text { - display: flex; - flex-direction: column; - padding-left: 15px; - - h3 { - margin-top: 5px; - margin-bottom: 5px; - font-weight: bold; + @include media-query($below: $screen-small) { + max-width: 100%; } - p { - margin-bottom: 5vh; + @include media-query($above: $screen-medium-min) { + max-width: 45%; } } -@media (max-width: 915px) { - .banner-grid { - display: block; - padding-top: 5vh; +.section- { + $mission-width: 45%; + $objectives-width: 45%; + &mission { + width: $mission-width; + max-width: $mission-width; } - - .banner-text { - color:white; - padding-top: 2vh; - margin-top: 2vh; - width: auto; - max-width: none; - position: relative; - display: block; - margin-right: 5%; + &objectives { + width: $objectives-width; + max-width: $objectives-width; } - - .banner-image { - width: auto; - max-width: none; - position: relative; - display: block; - margin-left: 2vh; - margin-right: 2vh; - padding-top: 3vh; - } - - #triangle { - display: none; - } - #rectangle { - width: auto; - height: auto; - position: relative; - display: block; - z-index: 0; - } - #rectangle-text { - width: auto; - max-width: none; - position: relative; - display: block; - padding-top: 10px; - padding-right: 10px; - padding-bottom: 10px; - - } - #rectangle h1 { - text-align: left; - margin: auto; - padding-left: 0px; - } - #rectangle p { - padding-left: 0px; - } - #mission-container { - display: none; - } - .objective { - max-width: none; - } - #objectives { - width: 100%; - padding-left: 10px; - padding-right: 10px; + &objectives, &mission { + @include media-query($below: $screen-large) { + width: 100%; + max-width: 100%; + } } + } +/*! purgecss end ignore */ diff --git a/_sass/pages/_blog.scss b/_sass/pages/_blog.scss new file mode 100644 index 000000000..8c4f1dc85 --- /dev/null +++ b/_sass/pages/_blog.scss @@ -0,0 +1,91 @@ +article { + p img { + &:not(.emoji) { + margin: 0 auto; + margin-bottom: spacing-group(4); + @extend .block, .rounded; + } + &.emoji { + @extend .-mt-2; + } + } + + p { + @extend .justify-around, .align-items-center; + } + + section:nth-of-type(2) p, li { + @extend .font--height-high; + } + + code { + @extend .text-left; + } + + h1, h2, h3, h4, h5, h6, .heading { + @extend .mb-2, .mt-8, .text-left; + } +} + +label[for="rate-good"], label[for="rate-bad"] { + @extend .grey; +} + +#rate-bad { + & + label[for="rate-bad"] { + &:hover { + @extend .red; + } + } + + &:checked + label[for="rate-bad"] { + @extend .red; + } +} + +#rate-good { + & + label[for="rate-good"] { + &:hover { + @extend .green-dark; + } + } + + &:checked + label[for="rate-good"] { + @extend .green-dark; + } +} + +.lightcase-img { + @extend .clickable; +} + +#lightcase-info #lightcase-caption { + @extend .light; +} + +#lightcase-overlay { + background: #000; +} + +.lightcase-icon-close { + &:before{ + content: '×'; + } + @extend .no-decoration, .flat; + color: $accent-grey !important; + &:hover { + color: $text-color-light !important; + } +} + +.wiki-shim { + width: 100%; + max-width: 35rem; + min-width: 16rem; +} + +#post { + @include media-query($above: $screen-medium-min) { + min-width: 60%; + } +} diff --git a/_sass/pages/_contact.scss b/_sass/pages/_contact.scss index e0b3d6810..e4699c708 100644 --- a/_sass/pages/_contact.scss +++ b/_sass/pages/_contact.scss @@ -3,28 +3,7 @@ fieldset { padding: 0; } -#contactForm { - display: flex; - flex-direction: column; - - input { - font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; - margin-bottom: 10px; - } - - textarea { - font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; - margin-bottom: 10px; - } -} - -#submitButton { - background-color: $usb-yellow; - border: none; - border-radius: 4px; - font-weight: bold; - font-size: 1em; - padding: 10px; - width: 100%; +label[for="acknowledge"] { + max-width: 30rem; } diff --git a/_sass/pages/_initiatives.scss b/_sass/pages/_initiatives.scss index 38889d243..e69de29bb 100644 --- a/_sass/pages/_initiatives.scss +++ b/_sass/pages/_initiatives.scss @@ -1,39 +0,0 @@ -.card { - /* Add shadows to create the "card" effect */ - box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); - transition: 0.3s; - width: 300px; - height: 350px; - margin: 10px auto; - } - -/* On mouse-over, add a deeper shadow */ -.card:hover { - box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2); -} - -/* Add some padding inside the card container */ -.card-container { - padding: 10px; - height: 20%; -} - -.initiatives-container { - display: flex; - align-content: center; - flex-wrap: wrap; - text-align: center; - justify-content: center; -} - -.initiative-title { - font-weight: bold; - margin-bottom: 0px; -} - -.initiative-button { - color: $usb-blue; - margin: auto; - width: 50%; - font-size: 1.2em; -} \ No newline at end of file diff --git a/_sass/pages/_members.scss b/_sass/pages/_members.scss index c4ff2bd53..629b52732 100644 --- a/_sass/pages/_members.scss +++ b/_sass/pages/_members.scss @@ -1,90 +1,49 @@ -.members { - padding-top: 2vh; - display: flex; - justify-content: center; - flex-direction: column; - margin-right: auto; - margin-left: auto; - padding-right: $spacing-unit; - padding-left: $spacing-unit; - max-width: 1000px; - text-align: center; - margin-top: 3vh; - margin-bottom: 3vh; -} - .members-flex { - display: flex; - align-content: center; - flex-wrap: wrap; - justify-content: space-between; + max-width: 1000px; } -.members-flex img { - width: 150px; - border-radius: 50%; +.member img { + object-fit: cover; + object-position: center; } -.hvrbox, -.hvrbox * { - box-sizing: border-box; -} -.hvrbox { - position: relative; - display: inline-block; - overflow: hidden; - max-width: 100%; - height: auto; - margin-bottom: 10px; -} -.hvrbox img { - max-width: 100%; -} -.hvrbox .hvrbox-layer_bottom { - display: block; -} -.hvrbox .hvrbox-layer_top { +.overlay { + &-container { + position: relative; + display: inline-block; + height: auto; + &:hover { + @extend .shadow-drop--center--soft; + } + } opacity: 0; - border-radius: 50%; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.6); - color: #fff; - padding: 15px; - -moz-transition: all 0.4s ease-in-out 0s; - -webkit-transition: all 0.4s ease-in-out 0s; - -ms-transition: all 0.4s ease-in-out 0s; - transition: all 0.4s ease-in-out 0s; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: $profile-overlay; + + &.active, &:focus-within { + opacity: 1; + } } -.hvrbox:hover .hvrbox-layer_top, -.hvrbox.active .hvrbox-layer_top { - opacity: 1; + +.menu-check { + display: none; } -.hvrbox .hvrbox-text { - text-align: center; - font-size: 18px; - display: inline-block; - position: absolute; - top: 50%; - left: 50%; - -moz-transform: translate(-50%, -50%); - -webkit-transform: translate(-50%, -50%); - -ms-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); + +.menu-check, .menu-item{ + @extend .animate; + overflow-y: hidden; + //transform: scaleY(0); + max-height: 0; } -.hvrbox .hvrbox-text_mobile { - font-size: 15px; - border-top: 1px solid rgb(179, 179, 179); /* for old browsers */ - border-top: 1px solid rgba(179, 179, 179, 0.7); - margin-top: 5px; - padding-top: 2px; - display: none; + +.menu-check:checked { + ~ .menu-item { + @extend .animate; + //transform: scaleY(1); + max-height: 1000rem; + } } -.hvrbox.active .hvrbox-text_mobile { - display: block; -} \ No newline at end of file diff --git a/_sass/pages/_post.scss b/_sass/pages/_post.scss index d70041a04..4cb8d7b57 100644 --- a/_sass/pages/_post.scss +++ b/_sass/pages/_post.scss @@ -1,64 +1,91 @@ -.side-by-side { - display: grid; - grid-template-columns: 1fr 3fr; - grid-template-rows: auto 1fr auto; - grid-template-areas: "head head head head" - "side main main main" - "footer footer footer footer"; - height: 100%; +article { + p img { + &:not(.emoji) { + margin: 0 auto; + margin-bottom: spacing-group(4); + @extend .block, .rounded; + } + &.emoji { + @extend .-mt-2; + } + } + + p { + @extend .justify-around, .align-items-center; + } + + section:nth-of-type(2) p, li { + @extend .font--height-high; + } + + code { + @extend .text-left; + } + + h1, h2, h3, h4, h5, h6, .heading { + @extend .mb-2, .mt-8, .text-left; + } } -.side-by-side aside { - grid-area: side; - padding: 10px; - padding-left: 15px; - background-color: rgb(250, 250, 250); - border-right-color: rgba(0, 0, 0, 0.07); - border-right-style: solid; - border-right-width: 1px; +label[for="rate-good"], label[for="rate-bad"] { + @extend .grey; } -.side-by-side .post { - grid-area: main; - padding: 10px; - max-width: 800px; +#rate-bad { + & + label[for="rate-bad"] { + &:hover { + @extend .red; + } + } + + &:checked + label[for="rate-bad"] { + @extend .red; + } } -.post-list h4 { - margin-bottom: 0px; +#rate-good { + & + label[for="rate-good"] { + &:hover { + @extend .green-dark; + } + } + + &:checked + label[for="rate-good"] { + @extend .green-dark; + } } -.post-list a { - color: black; - font-weight: 500; +.lightcase-img { + @extend .clickable; } -.post-list li { - margin-bottom: 10px; - padding-right: 5px; +#lightcase-info #lightcase-caption { + @extend .light; } -.post-list p { - font-size: 14px; +#lightcase-overlay { + background: #000; } -@media (max-width: 915px) { - .side-by-side { - display: block; +.lightcase-icon-close { + &:before{ + content: '×'; } - .side-by-side aside { - display: none; + @extend .no-decoration, .flat; + color: $accent-grey !important; + &:hover { + color: $text-color-light !important; } } -#active { - background-color: rgba(138,201,254,0.3); - border-radius: 10px; - padding-left: 10px; - margin-left: -10px; - +.wiki-shim { + width: 100%; + max-width: 35rem; + min-width: 16rem; } -.post-header { - margin-bottom: 10px; +#post { + @include media-query($above: $screen-medium-min) { + min-width: 60%; + } } \ No newline at end of file diff --git a/_sass/pages/_resources.scss b/_sass/pages/_resources.scss deleted file mode 100644 index 89396e51c..000000000 --- a/_sass/pages/_resources.scss +++ /dev/null @@ -1,3 +0,0 @@ -.post-list h3 { - margin-bottom: 0px; -} \ No newline at end of file diff --git a/_sass/pages/_wiki.scss b/_sass/pages/_wiki.scss new file mode 100644 index 000000000..43e9ae7df --- /dev/null +++ b/_sass/pages/_wiki.scss @@ -0,0 +1,29 @@ +/* CSS for /wiki */ +#sidebar { + .post-title, .post-description { + text-overflow: ellipsis; + display: block; + -webkit-line-clamp: 2; + } + max-height: 75vh; + min-height: 300px; +} + +#wiki-list { + //max-height: 35vh; + @include media-query($above: $screen-large-min) { + max-height: 66vh; + } + + @include media-query($above: $screen-medium-min, $below: $screen-medium) { + max-height: 44vh; + } + + @include media-query($below: $screen-small) { + max-height: 55vh; + } +} + +#wiki-items, #search-results { + min-height: 200px; +} diff --git a/_sass/style.scss b/_sass/style.scss deleted file mode 100644 index c5ca9f990..000000000 --- a/_sass/style.scss +++ /dev/null @@ -1,14 +0,0 @@ - -// Colors -$usb-yellow: #FFCA44; -$usb-gray: #333333; -$usb-blue: #8AC9FE; - -@import - "pages/about", - "pages/initiatives", - "pages/post", - "pages/resources", - "pages/members", - "pages/contact" -; diff --git a/_sass/theme.scss b/_sass/theme.scss new file mode 100644 index 000000000..0ba77be55 --- /dev/null +++ b/_sass/theme.scss @@ -0,0 +1,117 @@ +/* CSS customization for base theme */ +@charset "utf-8"; + +/** +Define defaults for each variable. Be sure to include !default on the end of each line. +*/ + + +/* Fonts */ +@import "mixins"; +@include google-font("Raleway", "400;500;600;700"); +@include google-font("Montserrat", "400;500;600;700"); +$font-family-backup: sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +$font-families: ( + body: ("Raleway", $font-family-backup), + header: ("Montserrat", $font-family-backup) +) !default; +$font-sizes: ( + h1: 1rem * 56 / 18, + h2: 1rem * 48 / 18, + h3: 1rem * 36 / 18, + h4: 1rem * 24 / 18, + button: 1rem * 24 / 18, + listitem: 1rem * 24 / 18, + body: 1rem, + caption: 1rem * 14 / 18, +) !default; +$line-height-base: 1.2 !default; +$line-height-high: 2 !default; + + +/* Colors */ +$percentage-lighten: 50% !default; +$percentage-darken: 10% !default; +$primary-color: #FFCA44 !default; + +$accent-blue: #8AC9FE !default; +$accent-red: #FE646F !default; +$accent-purple: #BC78C2 !default; +$accent-green: #67EA9B !default; +$accent-orange: #FEA465 !default; +$accent-grey: #6B6A6A !default; +$accent-grey-light: #E5E5E5 !default; +$profile-overlay: rgba(0, 0, 0, 0.35); + +$text-color: #333 !default; +$text-color-hint: $accent-grey !default; +$text-color-light: #FFF !default; +$background-light: $text-color-light !default; +$background-dark: $text-color-light !default; +$background-color: $background-light !default; +$focus-color: tint($primary-color, $percentage-lighten) !default; +$accent-color: $accent-blue !default; + +/* Spacing & Alignment */ +$dimension-sizing-groups: 2, 3, 4, 5, 6, 10, 100 !default; +$table-text-align: left !default; +$spacing-max-group: 32 !default; +$spacing-base: 1.35914091423 !default; +$spacing-multiple: 0.25rem !default; +$spacing-unit: 1.9rem !default; +$margin-bottom-default: spacing-group(4) !default; +$padding-button-x: spacing-group(4) !default; +$padding-button-y: spacing-group(4) !default; + + +// Width of the content area +$content-width: 800px !default; +$text-width: 53rem !default; +$screens: ( + 'xs': ('min': '0px', 'max': '639px'), + 'sm': ('min': '640px', 'max': '767px'), + 'md': ('min': '768px', 'max': '1023px'), + 'lg': ('min': '1024px', 'max': '1279px'), + 'xl': ('min': '1280px', 'max': '10000000000px' /* such hack */), +) !default; +// For convenience in css +$screen-xsmall: map-get(map-get($screens, "sm"), "max"); +$screen-small: map-get(map-get($screens, "sm"), "max"); +$screen-medium: map-get(map-get($screens, "md"), "max"); +$screen-large: map-get(map-get($screens, "lg"), "max"); +$screen-xlarge: map-get(map-get($screens, "xl"), "max"); +$screen-xsmall-min: map-get(map-get($screens, "sm"), "min"); +$screen-small-min: map-get(map-get($screens, "sm"), "min"); +$screen-medium-min: map-get(map-get($screens, "md"), "min"); +$screen-large-min: map-get(map-get($screens, "lg"), "min"); +$screen-xlarge-min: map-get(map-get($screens, "xl"), "min"); + +/* Effects */ +$border-width: 4px !default; +$border-radius: 10px !default; +$border-radius-slight: $border-radius / pow(2, 1) !default; +$border-radius-more: $border-radius * pow(2, 2) !default; + +$shadow-color-default: rgba(0, 0, 0, 0.25) !default; +$shadow-color-dark: rgba(0, 0, 0, 0.95) !default; +$shadow-color-soft: rgba(0, 0, 0, 0.15) !default; +$shadow-default: 4px 4px 4px !default; +$shadow-dark: 4px 4px 4px !default; +$shadow-nooffset: 0px 0px 4px !default; +$shadow-nooffset-soft: 0px 0px 12px !default; + +$animation-delay: 200ms !default; + +$bg-angle-mobile: 2rem !default; +$bg-angle: 400% !default; +$bg-angle-color: $primary-color !default; + +$scrollbar-background: white !default; +$scrollbar-foreground: $accent-grey !default; + + +// Import partials. DO NOT REORDER +@import "generate"; +@import "utils"; +@import "theme/base"; +@import "theme/layout"; diff --git a/_sass/theme/_base.scss b/_sass/theme/_base.scss new file mode 100644 index 000000000..e8fa6075c --- /dev/null +++ b/_sass/theme/_base.scss @@ -0,0 +1,466 @@ +/* CSS for base common theme */ + +/*! purgecss start ignore */ +/** + * Reset some basic elements + */ +html { + font-size: 100%; + scroll-behavior: smooth; +} + +body, h1, h2, h3, h4, h5, h6, p, +blockquote, pre, hr, dl, dd, ol, ul, figure { + @extend .ma-0, .pa-0; +} + +html, body { + @extend .h-full; + min-height: 100%; +} + +main { + overflow-anchor: none; +} + + +/** + * Basic styling + */ +body { + @include font-body; + background-color: $background-color; + -webkit-text-size-adjust: 100%; + -webkit-font-feature-settings: "kern"1; + -moz-font-feature-settings: "kern"1; + -o-font-feature-settings: "kern"1; + font-feature-settings: "kern"1; + display: flex; + min-height: 100vh; + @extend .column; +} + +[display="none"] { + margin: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + margin-top: 0 !important; + margin-bottom: 0 !important; + max-height: 0 !important; + max-width: 0 !important; +} + + +/** + * Set `margin-bottom` to maintain vertical rhythm + */ +h1, h2, h3, h4, h5, h6, p, blockquote, +pre, ul, ol, dl, figure, +%vertical-rhythm { + margin-bottom: $margin-bottom-default; +} + + +/** + * Images + */ +img { + max-width: 100%; + vertical-align: middle; +} + + + +/** + * Figures + */ +figure > img { + display: block; +} + +figcaption { + @extend .font-caption; +} + + + +/** + * Lists + */ +ul, ol { + @extend .ml-2; + text-indent: -1.5em; + padding-left: 1em; +} + +li { + > ul, > ol { + @extend .mb-0; + } +} + + +/** + * Fonts: headings, body elements, weights + */ +h1, h2, h3, .header, button, .button { + @include font-header; + @extend .font--height-normal; +} + +h1, h3, h4, button, .button, input[type="submit"] { + @extend .font-bold; +} + +a, a * { + @extend .font-semibold; +} + +body, h2, p, blockquote, pre, li, ul, +ol, dl, data, input, .medium { + @extend .font-medium; + line-height: 1.3; +} + +h4, h5, h6, body, p, a, blockquote, pre, textarea, +code, span, li, ul, ol, dl, data, input, +caption, .caption, .body { + @include font-body; +} + +h1 { + @extend .font-h1; +} + +h2 { + @extend .font-h2; +} + +h3 { + @extend .font-h3; +} + +h4 { + @extend .font-h4; +} + +h5 { + @extend .font-body; +} + +h6 { + @extend .font-caption; +} + +button, .button, input[type="submit"] { + @extend .font-button; +} + +li, ul, ol { + @extend .font-listitem; +} + +ul, ol, .list { + list-style-position: inside; +} + +body, p, a, blockquote, pre, textarea, small, b, em, i, q, +code, span, li, ul, ol, dl, data, input, .body { + @extend .font-body; +} + +body, p, a, blockquote, pre, textarea, small, b, em, i, q, +code, span, li, ul, ol, dl, data, input, .body { + letter-spacing: 0.01rem; +} + +h2, h1 { + letter-spacing: 0.04rem; +} + +h3 { + letter-spacing: 0.02rem; +} + +caption, .caption, small, small *, #lightcase-info #lightcase-caption { + @extend .font-caption; + &:not(b):not(strong) { + @extend .font-medium; + } +} + +b, strong { + @extend .font-bold; +} + +%input-focus { + &:focus, &:focus-within { + outline: none; /* IMPORTANT Massive accessibility issue! Keep border! */ + @extend .border-focus-color; + } +} + +form textarea, form input:not([type="submit"]), .input { + border-style: solid; + @extend .pa-3, .rounded--less, .border-thin, .border-grey-light, %input-focus; +} + +.input { + padding: 0; + + i { + @extend .icon-0, .my-5, .ml-5, .mr-3, .grey; + } +} + +.input > input { + outline: none; + @extend %input-focus; +} + + +svg path { + fill: currentcolor; +} + +::placeholder { + opacity: 1; /* Firefox */ + @extend .hint; +} + +form { + label { + @extend .caption, .uppercase, .font-semibold; + color: $text-color-hint !important; + + &.required span { + @extend .font-h4, .red; + vertical-align: middle; + } + } +} + +textarea { + resize: vertical; +} + +input[type="checkbox"] { + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + @extend .clickable, .animate-fast, .rounded, .icon-1; + + &:checked { + @extend .bg-accent; + border-color: $accent-color !important; + } + + &:focus { + border-color: $accent-grey !important; + } +} + + +/** + * Links + */ +a:not(.button) { + @extend .blue-dark, .hover--underline; + text-decoration: none; + + &:visited { + @extend .purple-dark; + } + + .social-media-list &:hover { + text-decoration: none; + + .username { + text-decoration: underline; + } + } +} + + +/** + * Blockquotes TODO + */ +blockquote { + @extend .rounded--less, .animate-fast; + border-left: $border-width solid $accent-grey-light; + padding-left: spacing-group(1); + letter-spacing: -1px; + + > :last-child { + @extend .mb-0; + } + + &:hover { + @extend .border-accent; + } +} + +blockquote, blockquote p { + @extend .grey-dark, .font-italic; +} + + + +/** + * Tables TODO this has not been styled - no use case yet + */ +table { + @extend .mb-3, .w-full; + text-align: $table-text-align; + border-collapse: collapse; + display: block; + overflow-x: auto; + + tr { + &:nth-child(even) { + background-color: lighten($accent-grey-light, 6%); + } + } + + th, + td { + padding: ($spacing-unit / 3) ($spacing-unit / 2); + } + + th { + background-color: lighten($accent-grey-light, 3%); + border: 1px solid darken($accent-grey-light, 4%); + border-bottom-color: darken($accent-grey-light, 12%); + } + + td { + border: 1px solid $accent-grey-light; + } +} + + +/* Buttons */ +button, .button, input[type="submit"] { + @extend .bg-primary, .border-none, .clickable, .shadow-drop, .rounded, .no-decoration, .animate, %button-focus; + @include px($padding-button-x); + @include py($padding-button-y); + + &--outline, &.--outline { + &, &-light { + @extend .light, .bg-none, .border, .border-light, %button-focus--outline; + } + + &-dark { + @extend .bg-none, .border, .dark, .border-dark, %button-focus--outline-dark; + } + } +} + +%button-focus { + &--outline { + &:focus { + outline: none; /* IMPORTANT Massive accessibility issue! Keep border! */ + @extend .dark, .border-light, .bg-light; + } + &-dark { + &:focus { + outline: none; /* IMPORTANT Massive accessibility issue! Keep border! */ + @extend .light, .bg-dark, .border-dark; + } + } + } + &:focus { + outline: none; /* IMPORTANT Massive accessibility issue! Keep border! */ + @extend .bg-dark, .primary, .border, .border-primary; + } +} + +%focus { + &:focus { + outline: none; /* IMPORTANT Massive accessibility issue! Keep border! */ + @extend .focus-color, .border-thin, .border-focus-color; + @extend .shadow-text; + } +} + +a img { + @extend %focus; +} + +input[disabled], button[disabled] { + background-color: $accent-grey-light !important; + color: $accent-grey !important; + border: none !important; +} + +input { + & + label { + .expand { + display: initial; + } + .collapse { + display: none; + } + } + + &:checked + label{ + .expand { + display: none; + } + .collapse { + display: initial; + } + + &.menu-button-rotate, .menu-button-rotate { + transform: rotate(360deg); + &270 { + transform: rotate(270deg); + } + &180 { + transform: rotate(180deg); + } + &90 { + transform: rotate(90deg); + } + } + } +} + + + +.anchorjs-link { + transition: all .25s linear; +} +*:hover > .anchorjs-link { + margin-left: -1.125em !important; +} + + +/** + * Syntax highlighting styles + */ +.hljs { + @extend .bg-dark; + /*user-select: all; + -ms-user-select: all; + -moz-user-select: all; + -webkit-user-select: all;*/ +} + +pre { + @extend .rounded; + + > code, > .hljs { + @extend .rounded; + @include pa(spacing-group(4)); + } +} + +*:not(pre) { + > code.hljs, > code, > .hljs { + @include pa(spacing-group(4/3)); + @extend .rounded, .inline; + } + } +/* purgecss end ignore */ diff --git a/_sass/theme/_layout.scss b/_sass/theme/_layout.scss new file mode 100644 index 000000000..c1e32cddd --- /dev/null +++ b/_sass/theme/_layout.scss @@ -0,0 +1,211 @@ +/* CSS for general site layout */ + +/*! purgecss start ignore */ +::selection { + @extend .bg-primary-light, .dark; +} + +/* Scrollbar Styles */ +* { + scrollbar-width: thin; + /* "auto" or "thin" */ + scrollbar-color: $scrollbar-foreground $scrollbar-background; + /* scroll thumb & track */ +} + +::-webkit-scrollbar { + width: 0.5rem; +} + +::-webkit-scrollbar-track, +::-webkit-scrollbar-track-piece { + background-color: $scrollbar-background; +} + +::-webkit-scrollbar-thumb { + background-color: $scrollbar-foreground; +} + +*::-webkit-scrollbar-track, +*::-webkit-scrollbar-thumb { + @extend .rounded--more; +} + +::-webkit-resizer { + background: linear-gradient(-45deg, $accent-grey-light, $accent-grey-light 45%, white 45%, white); +} + +footer { + margin-top: auto; +} + +.page-link { + @extend .no-decoration, .animate-fast; + + & * { + @include font-semibold; + @include my(0); + @extend .hover--bold; + } +} + + +.divider, hr { + &, &--horizontal { + @extend .w-full, .bg-primary, .h-px; + } + + &--vertical { + @extend .h-full, .bg-primary, .w-px; + } +} + +.sticky { + @include screen-variant() { + position: -webkit-sticky; + position: sticky; + } +} + +.fab { + margin-left: auto; + order: 2; + z-index: 9999; + width: auto; + height: auto; + text-align:left; +} + + +/* Credit: https://codepen.io/lbebber/pen/pvwZJp */ +// Sorry this is so ugly! Very WIP, animations aren't really working +$menu-items: 4; +$open-distance: 80px; +$open-distance-mobile: 18vh; + +%ball{ + @extend .bg-accent, .light, .text-center, .animate; + user-select: none; + $height: 55px; + width: $height; + height: $height; + margin-left: -20px; + position: absolute; + line-height: $height; + transform: translate3d(0,0,0); +} +.menu-check, .nav-item{ + display: none; +} +.nav-item{ + @extend %ball, .rounded--more, .shadow-drop; + width: auto; + right: 10px; +} +.hamburger{ + @extend .block, .bg-dark, .icon-square-1, .px-3, .rounded--more; + height: $border-width; + transition: transform 200ms; + + $hamburger-spacing: spacing-group(2); + &-top { + transform: translate3d(0, -$border-width * 1.5, 0); + } + &-middle { + transform: translate3d(0, 0, 0); + } + &-bottom { + transform: translate3d(0, $border-width * 1.5, 0); + } +} + +// Menu is open +.menu-check:checked+.menu-check-button { + .hamburger-top{ + transform: translate3d(0 ,$border-width, 0) rotate(45deg); + } + .hamburger-middle{ + transform: translate3d(0, 0, 0) scale(0.1, 1); + } + .hamburger-bottom{ + transform: translate3d(0, -$border-width, 0) rotate(-45deg); + } +} + +.menu{ + margin-left: -3.125rem; +} + + +.nav-item{ + @extend .shadow--center--soft\:hover, .text-right; + @for $i from 1 through $menu-items{ + &:nth-child(#{$i + 2}){ + transition-duration: 180ms; + } + } +} + +.menu-check-button{ + @extend %ball, .clickable, .rounded--circle; + z-index:2; + transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.275); + transition-duration: 400ms; + transform: scale(1.1,1.1) translate3d(0,0,0); +} +.menu-check-button:hover{ + transform: scale(1.2,1.2) translate3d(0,0,0); + @extend .shadow--center--soft; +} +.menu-check:checked+.menu-check-button{ + transition-timing-function: linear; + transition-duration: 200ms; + transform: scale(0.9,0.9) translate3d(0,0,0); +} + +.menu-check:checked~.nav-item{ + display: initial; + transition-timing-function: cubic-bezier(0.165, 0.840, 0.440, 1.000); + @for $i from 1 through $menu-items{ + &:nth-child(#{$i+2}){ + transition-duration: 90ms+(100ms*$i); + @media screen and (max-width: $screen-medium) { + @media (min-aspect-ratio: 501/500) { + transform: translate3d(0,-$open-distance-mobile * $i,0); + } + @media (max-aspect-ratio: 500/500) { + transform: translate3d(0,-$open-distance * $i,0); + } + } + + } + } +} + + +.section { + &-title { + @extend .py-10, .mb-0, .text-center; + } +} + +.anchorjs-link { + color: $text-color; + &:hover { + color: $accent-red; + } +} + +input:-webkit-autofill, +input:-webkit-autofill:hover, +input:-webkit-autofill:focus, +input:-webkit-autofill:active { + -webkit-box-shadow: 0 0 0 30px $background-color inset !important; + box-shadow: 0 0 0 30px $background-color inset !important; +} + +#lightcase-overlay { + opacity: 0.8 !important; +} + +/*! purgecss end ignore */ diff --git a/_sass/utils.scss b/_sass/utils.scss new file mode 100644 index 000000000..713b98637 --- /dev/null +++ b/_sass/utils.scss @@ -0,0 +1,284 @@ +.font { + &--height { + &-normal { + line-height: $line-height-base; + } + &-high { + line-height: $line-height-high; + } + } +} + + +.flex { + display: flex; + display: -webkit-flex; + @extend .row, .border-box; + + &--wrap { + &-reverse { + flex-wrap: wrap-reverse !important; + } + + flex-wrap: wrap !important; + @extend .flex; + } + + &--nowrap { + @extend .flex; + flex-wrap: nowrap !important; + } +} + +.flex { + &-container { + @extend .border-box; + } + + &-even { + @include flex-even; + } + + &-break { + @extend .block, .w-full; + height: 1px; + } +} + +// why the absolute fuck does this break footer & fab placement in production? +.column, .column--wrap, .column\@md-below { + @include flex-even; +} + +.row, .row--wrap, .row--nowrap { + @extend .w-full; + @include flex-even; +} + +.row, .row--wrap { + flex-wrap: wrap; +} + +.border-box, .border-box * { + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} + +.margin-list > * { + &:not(:last-child) { + @extend .mr-4; + } + + &:not(:first-child) { + @extend .ml-4; + } +} + +.margin-list--wrap > * { + @extend .mx-4; +} + +.no{ + &-underline { + text-decoration: none !important; + } + &-list-style { + list-style: none !important; + } + &-decoration { + @extend .no-underline, .no-list-style; + } +} + +.hover { + &--underline:hover { + text-decoration: underline; + } + &--bold:hover { + @extend .font-bold; + } +} + +.animate { + &, & > * { + -moz-transition: all $animation-delay ease-in-out $animation-delay / 3 !important; + -webkit-transition: all $animation-delay ease-in-out $animation-delay / 3 !important; + -ms-transition: all $animation-delay ease-in-out $animation-delay / 3 !important; + transition: all $animation-delay ease-in-out $animation-delay / 3 !important; + } + + + &-off, &-off > * { + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + + &-fast, &-fast > * { + $fast-delay: $animation-delay / 2; + -moz-transition: all $fast-delay ease-in-out $fast-delay / 3 !important; + -webkit-transition: all $fast-delay ease-in-out $fast-delay / 3 !important; + -ms-transition: all $fast-delay ease-in-out $fast-delay / 3 !important; + transition: all $fast-delay ease-in-out $fast-delay / 3 !important; + } +} + +.fade-in-out { + opacity: 0; + @extend .animate; + + &:hover { + opacity: 1; + } +} + +.uppercase { + text-transform: uppercase; +} + +.img-cover { + object-fit: cover; +} + +.clickable { + @include clickable; +} + +.not-clickable { + cursor: default; + @extend .flat; +} + +.clickable, a, button, .button { + &:focus { + //outline: $border-width double initial; + @extend .shadow; + } + &:focus:not(:focus-visible) { + //outline: none; + } + &:active { + @extend .flat; + } +} + +.textwidth { + @include screen-variant() { + max-width: $text-width; + } + + &--force { + @include screen-variant() { + width: $text-width; + } + + } + +} + +.flat { + @include shadow-none; +} + +.shadow { + &, &-drop { + @include shadow-drop; + &--center { + @include shadow('drop', $shadow-nooffset); + &--soft { + @include generate-pseudo-helper(true) { + @include shadow('drop', $shadow-nooffset-soft, $shadow-color-soft); + } + } + } + } + + &-box { + @include shadow-box; + &--center { + @include shadow('box-shadow', $shadow-nooffset); + &--soft { + @include shadow('box-shadow', $shadow-nooffset-soft, $shadow-color-soft); + } + } + } + + &-text { + @include shadow-text; + &-dark { + @include shadow('text-shadow', $shadow-default, $shadow-color-dark); + } + &--center { + @include shadow('text-shadow', $shadow-nooffset); + &--soft { + @include shadow('text-shadow', $shadow-nooffset-soft, $shadow-color-soft); + } + } + } +} + +.active, #active, .highlight { + @extend .bg-focus-color; + &--hover { + &:hover { + @extend .bg-focus-color-light; + } + } +} + +.highlight { + @extend .rounded; +} + +.card { + @extend .bg-light, .rounded, .overflow-hidden; + box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); + transition: 0.3s; + + &:hover { + box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2); + } + + &--initiative { + @extend .card; + @include media-query($above: $screen-small-min) { + min-width: 20rem; + } + @include media-query($below: $screen-xsmall) { + min-width: 80%; + } + width: 40%; + max-width: 35rem; + } + + picture { + @include media-query($below: $screen-xsmall) { + width: 100%; + } + } +} + +.w-px { + width: 1px; +} + +.h-px { + height: 1px; +} + +.h-max-72 { + @include screen-variant() { + max-height: spacing-group(72); + } +} + +.absolute { + position: absolute; +} + +.safari-flexbasis-fix { + flex-basis: 50px !important; + padding: 10px; +} \ No newline at end of file diff --git a/_wiki/become-uta.md b/_wiki/become-uta.md new file mode 100644 index 000000000..4a6008b87 --- /dev/null +++ b/_wiki/become-uta.md @@ -0,0 +1,10 @@ +--- +title: "How do I become an Undergrad­uate Teaching Assistant?" +description: "Get paid to help students during labs" +author: + - Noah Alderton +date: 2020-03-04 17:00:00 -0400 +categories: campus +--- + +The process of the hiring UTAs has been standardized in the Computer Science Department to simplify application evaluation. Typically, applications for the following semester are opened about a month before classes end. More information can be found on the [Department of Computer Science website](https://www.cs.purdue.edu/hiring/uta.html). \ No newline at end of file diff --git a/_wiki/connect-pal3.0-linux.md b/_wiki/connect-pal3.0-linux.md new file mode 100644 index 000000000..de024a775 --- /dev/null +++ b/_wiki/connect-pal3.0-linux.md @@ -0,0 +1,40 @@ +--- +title: "Connecting to PAL3.0 on Linux" +description: "Access campus-only resources from anywhere!" +author: Chris Xiao +date: 2020-11-21 14:00:00 -0400 +categories: [campus,technical] +--- + +### Introduction + +PAL3.0 is Purdue's wireless network. It uses WPA2 Enterprise authentication, which means additional configurations may be needed to connect to it on Linux. + +This tutorial will show you how to connect to PAL3.0 on desktop Linux. Note: Screenshots below show the GNOME 3 desktop environment. The process should be very similar to other environments. + +#### Step 1 + +Open Wi-Fi settings, and select `PAL3.0` in the list of available wireless networks. + +![Wi-Fi Settings](/assets/images/wiki/connect-pal3.0-linux/step1.png) + +#### Step 2 + +Change the following settings: + +- Set "Authentication" to `Protected EAP (PEAP)` +- Select `No CA certificate is required` + +After changing these settings, your options page should look like this: + +![PAL3.0 Settings](/assets/images/wiki/connect-pal3.0-linux/step2.png) + +#### Step 3 + +Enter your Purdue username (without "@purdue.edu") and password (regular password, NOT BoilerKey), then click "Connect." + +![PAL3.0 Completed settings](/assets/images/wiki/connect-pal3.0-linux/step3.png) + +#### Step 4 + +You should be connected to PAL3.0 in a few seconds! Check the Wi-Fi symbol on the top bar/panel to see if you're connected. diff --git a/_posts/2020-05-26-connect-vpn.md b/_wiki/connect-vpn.md similarity index 71% rename from _posts/2020-05-26-connect-vpn.md rename to _wiki/connect-vpn.md index 098cc45cf..7d56e688a 100644 --- a/_posts/2020-05-26-connect-vpn.md +++ b/_wiki/connect-vpn.md @@ -1,5 +1,4 @@ --- -layout: post title: "Connecting to Purdue's VPN" description: "Access campus-only resources from anywhere!" author: Cindy Ding @@ -7,46 +6,45 @@ date: 2020-05-26 02:00:00 -0400 categories: technical --- -## Introduction +### Introduction A Virtual Private Networking (VPN) is a method that allows users to securely access an organization's internal network resources. By using Purdue's VPN service, you can access resources that are only available on campus anywhere, e.g. printing to any campus printer, remotely accessing Purdue's servers/UNIX machines (like `mc19.cs.purdue.edu`) through remote desktop, etc. This tutorial will show you how to connect to Purdue's VPN using Cisco AnyConnect. -## Step 1 +#### Step 1 To download Cisco AnyConnect, go to the **[Purdue Community Hub](https://communityhub.purdue.edu/storefront/overview)**. After login in, you would want to go to "Antivirus and Security Software". -![Community_Hub_Home_Page](https://user-images.githubusercontent.com/25762130/82869820-e50cf400-9efc-11ea-8b2b-cc91d91d03bd.png) +![Community Hub Homepage](/assets/images/wiki/connect-vpn/step1.png) -## Step 2 +#### Step 2 Select Cisco AnyConnect for Personally Owned Computers and select the appropriate settings for your computer. After adding the software to your cart, download Cisco AnyConnect. -![Downloading_Cisco_AnyConnect](https://user-images.githubusercontent.com/25762130/82869848-ef2ef280-9efc-11ea-80fc-725f30737bc4.png) +![Downloading Cisco AnyConnect](/assets/images/wiki/connect-vpn/step2.png) -## Step 3 +#### Step 3 Once you finished installing Cisco AnyConnect, open it up. You will see that Cisco AnyConnect is ready to connect to the VPN server: `webvpn.purdue.edu`. There are a couple options you can choose. Due to COVID-19, more people are utilizing Purdue's VPN services. Purdue has created another VPN server: `webvpn2.purdue.edu/` for people to connect to. Whichever VPN server you choose to connect to will work. -![AnyConnect](https://user-images.githubusercontent.com/25762130/82869903-0c63c100-9efd-11ea-9409-3ca6c919f54f.png) +![AnyConnect](/assets/images/wiki/connect-vpn/step3.png) -## Step 4 +#### Step 4 After you click "Connect", a prompt for login in will pop up. Your username is your Purdue username and the password is your BoilerKey password (pin,push). -## Step 5 +#### Step 5 You should be able to connect to Purdue's VPN server! A pop-up will notify you that you are connected. Another way to tell is to check is on the task/menu bar. From the picture below, the lock symbol signifies that you are connected. -![Menu](https://user-images.githubusercontent.com/25762130/82869927-14bbfc00-9efd-11ea-9be9-66545f585a55.png) +![Menu](/assets/images/wiki/connect-vpn/step5.png) -## Step 6 +#### Step 6 After using Purdue's VPN, you want to disconnect. On Windows, right click on the Cisco AnyConnect icon, and click "Disconnect". On Mac, to disconnect, click on the Cisco AnyConnect icon from the menu bar and select "Disconnect". -![Windows-Disconnect](https://user-images.githubusercontent.com/25762130/82869947-1daccd80-9efd-11ea-8622-a5b9fa81669f.png) - -![Mac-Disconnect](https://user-images.githubusercontent.com/25762130/82869967-269d9f00-9efd-11ea-97b5-94ee51663039.png) \ No newline at end of file +![Windows Disconnect](/assets/images/wiki/connect-vpn/step6_windows.png) +![Mac Disconnect](/assets/images/wiki/connect-vpn/step6_mac.png) \ No newline at end of file diff --git a/_wiki/cs-calendars.md b/_wiki/cs-calendars.md new file mode 100644 index 000000000..d23bce723 --- /dev/null +++ b/_wiki/cs-calendars.md @@ -0,0 +1,35 @@ +--- +title: "Subscribing to the Purdue CS Calendar" +description: "Get notified of CS Department events on your calendar" +author: + - Tyler Hoffman +date: 2020-06-28 +categories: [calendar, events] +redirect_from: + - /cal/ + - /calendar/ +--- + +Below are links you can use to sync the Purdue Computer Science calendars using your preferred calendar app. The CS department switched to Google Calendar *just for you!* :tada: + +**Note:** We recommend subsribing to the Google Calendar link. Downloadable calendars do not update automatically. + +**Departmental events**, such as Town Hall or career workshops: +- [Google Calendar Embed](https://www.google.com/calendar/embed?src=256h9v68bnbnponkp0upmfq07s%40group.calendar.google.com&ctz=America/New_York) +- [Webcal](webcal://google.com/calendar/ical/256h9v68bnbnponkp0upmfq07s%40group.calendar.google.com/public/basic.ics) +- [iCalendar (.ics)](https://www.google.com/calendar/ical/256h9v68bnbnponkp0upmfq07s%40group.calendar.google.com/public/basic.ics) + +**Corporate events**, such as recruiting days: +- [Google Calendar Embed](https://www.google.com/calendar/embed?src=7sehoe8o6e82k0ni0qee9ofojk@group.calendar.google.com&ctz=America/New_York) +- [Webcal](webcal://google.com/calendar/ical/7sehoe8o6e82k0ni0qee9ofojk@group.calendar.google.com/public/basic.ics) +- [iCalendar (.ics)](https://www.google.com/calendar/ical/7sehoe8o6e82k0ni0qee9ofojk@group.calendar.google.com/public/basic.ics) + +**CS seminars & colloquiums**: +- [Google Calendar Embed](https://www.google.com/calendar/embed?src=t3gdpe5uft0cbfsq9bipl7ofq0%40group.calendar.google.com&ctz=America/New_York) +- [Webcal](webcal://google.com/calendar/ical/t3gdpe5uft0cbfsq9bipl7ofq0%40group.calendar.google.com/public/basic.ics) +- [iCalendar (.ics)](https://www.google.com/calendar/ical/256h9v68bnbnponkp0upmfq07s%40group.calendar.google.com/public/basic.ics) + +**Student organization events**: +- [Google Calendar Embed](https://www.google.com/calendar/embed?src=scb3djhueh9j0dlhaa9i153l3g@group.calendar.google.com&ctz=America/New_York) +- [Webcal](https://www.google.com/calendar/ical/256h9v68bnbnponkp0upmfq07s%40group.calendar.google.com/public/basic.ics) +- [iCalendar (.ics)](https://www.google.com/calendar/ical/256h9v68bnbnponkp0upmfq07s%40group.calendar.google.com/public/basic.ics) diff --git a/_wiki/cs-course-reflections.md b/_wiki/cs-course-reflections.md new file mode 100644 index 000000000..499a19b72 --- /dev/null +++ b/_wiki/cs-course-reflections.md @@ -0,0 +1,41 @@ +--- +title: "CS Course Reflections" +description: "Past students' feedback on CS courses at Purdue" +author: Caleb Ahn +date: 2022-06-01 12:00:00 -0400 +categories: campus +--- + + + + + + + +
+ +
+ +Here's the [link to the document](https://docs.google.com/document/d/e/2PACX-1vQd-7-nJSGSPMiallH4Wqk7iQiGnUnFTkeEQudXUayfjGfI54mDe3Ofa75kKcg1yLXGnT_1RmeqdnS3/pub) + +Want to contribute to our wiki? Fill out this [form](sharelinkhere.com) diff --git a/_posts/2020-04-01-file-transfer.md b/_wiki/file-transfer.md similarity index 67% rename from _posts/2020-04-01-file-transfer.md rename to _wiki/file-transfer.md index 65e0c01ef..1703567bf 100644 --- a/_posts/2020-04-01-file-transfer.md +++ b/_wiki/file-transfer.md @@ -1,26 +1,26 @@ --- -layout: post title: "Transferring Files via SCP and FileZilla" description: "Copy files to and from Purdue's servers" -author: Noah Alderton +author: + - Noah Alderton date: 2020-04-01 17:00:00 -0400 categories: technical --- -## Introduction +### Introduction Sometimes there comes a need where you need to transfer a files between your personal computer and one of Purdue's servers (like data.cs.purdue.edu). The tutorial will show you how to transfer files between your computer and a remote server (and vice versa) using SCP via command line and FileZilla. These methods will work on Windows, Mac, and Linux. -## Solution 1: Command Line +### Solution 1: Command Line -### Step 1 +#### Step 1 On Windows open “Windows PowerShell.” On Mac or Linux, open your respective Terminal. -![https://piazza.com/redirect/s3?bucket=uploads&prefix=attach%2Fk4xoekpg2qs2af%2Fj6jr6ij1sv162q%2Fk8gfyjjwujp5%2Fimage1.png](https://piazza.com/redirect/s3?bucket=uploads&prefix=attach%2Fk4xoekpg2qs2af%2Fj6jr6ij1sv162q%2Fk8gfyjjwujp5%2Fimage1.png) +![Windows Powershell](/assets/images/wiki/file-transfer/image1.png) -### Step 2 +#### Step 2 In order to transfer your files, we are going to use SCP. SCP works the same regardless of operating system. The SCP program takes the following parameters: @@ -38,9 +38,9 @@ For example, if I wanted to transfer my hw2.c file to my current directory on my scp nalderto@data.cs.purdue.edu:~/cs240/hw2/hw2.c . ``` -![https://piazza.com/redirect/s3?bucket=uploads&prefix=attach%2Fk4xoekpg2qs2af%2Fj6jr6ij1sv162q%2Fk8gfz3k1fmvd%2Fimage2.png](https://piazza.com/redirect/s3?bucket=uploads&prefix=attach%2Fk4xoekpg2qs2af%2Fj6jr6ij1sv162q%2Fk8gfz3k1fmvd%2Fimage2.png) +![Windows Powershell](/assets/images/wiki/file-transfer/image2.png) -### Step 3 +#### Step 3 If everything ran properly, you should be able to access your homework on your personal machine. Keep in mind that this is a ***copy*** of your homework, so any changes you make on your personal machine will not be reflected on data and vice versa. If we want to transfer a file from our personal machine to data, we would need to run SCP again, flipping the source and destination directories. @@ -50,24 +50,29 @@ For example, if I wanted to transfer my hw2.c file from my personal machine to d scp hw2.c nalderto@data.cs.purdue.edu:~/cs240/hw2/ ``` -## Solution 2: FileZilla +### Solution 2: FileZilla -### Step 1 +#### Step 1 If you are not comfortable with the command line, there are several graphical user interface programs that are available which provide the same functionality. In this tutorial we are covering FileZilla, as it is compatible with Windows, Mac, and Linux. -You can download FileZilla here:[https://filezilla-project.org/download.php?show_all=1](https://filezilla-project.org/download.php?show_all=1) +You can download FileZilla [here](https://filezilla-project.org/download.php?show_all=1). -### Step 2 +#### Step 2 -Once you have finished installing FileZilla, open it up. On the top, there should be 4 input boxes. Put in the following information:Host: `sftp://data.cs.purdue.edu`Username: Purdue UsernamePassword: Purdue Career Account Password (same password used to SSH into data)Port: 22 +Once you have finished installing FileZilla, open it up. On the top, there should be 4 input boxes. Put in the following information: -### Step 3 +- Host: `sftp://data.cs.purdue.edu` +- Username: Purdue Username +- Password: Purdue Career Account Password (same password used to SSH into data) +- Port: 22 + +#### Step 3 Once the appropriate information is entered, click “Quickconnect”. A dialog might appear about trusting the connect. Go ahead and trust the connection. -### Step 4 +#### Step 4 You should now be connected to data! Your data filesystem is on the right part of the screen, while your personal computer’s files are on the left. You can drag and drop the files between the machines as you wish! -![https://piazza.com/redirect/s3?bucket=uploads&prefix=attach%2Fk4xoekpg2qs2af%2Fj6jr6ij1sv162q%2Fk8gfzjg5s2wl%2Fimage3.png](https://piazza.com/redirect/s3?bucket=uploads&prefix=attach%2Fk4xoekpg2qs2af%2Fj6jr6ij1sv162q%2Fk8gfzjg5s2wl%2Fimage3.png) \ No newline at end of file +![Filezilla example](/assets/images/wiki/file-transfer/image3.png) \ No newline at end of file diff --git a/_wiki/fun-courses.md b/_wiki/fun-courses.md new file mode 100644 index 000000000..bda08e4c0 --- /dev/null +++ b/_wiki/fun-courses.md @@ -0,0 +1,72 @@ +--- +title: "Fun/Interesting Classes at Purdue" +description: "Take a break from your required classes!" +author: Lauren Lum +date: 2020-11-03 09:00:00 -0400 +categories: curriculum +--- + +### I have space in my schedule; what should I do? +First and foremost- take classes that interest you! Purdue offers a broad spectrum of classes that exist outside of the requirements for your degree. In order to look for all available classes, go to mypurdue.purdue.edu and click on the **Registration** tab. In the **Register for Classes** category, click on **Look up Classes**. In this search tool, choose the term you are looking for and start looking through classes that might interest you. + +Need suggestions? Below is a compiled list of fun/interesting classes categorized by topic. Note that course numbers might have changed since this article was written. + +#### Art/Design + +##### AD 242: Ceramics I +Introductory ceramics class. Note there is an extra fee for this class. + +##### HORT 270: Floral Design & Inter Plt Mgmt +Class on flower arrangement and designs with flowers. Note there is an extra fee for this class. + +##### MUS 250: Music Appreciation +No musical background needed- learn more about the fundamentals of music and listen to important musical compositions. + +##### AD 255: Art Appreciation +No artistic background needed- learn more about the fundamentals of art and view art in galleries and in your community. + +#### Sports/Activity + +##### PES 115: Bowling (Indv Dual Mvmt Frm I) +Bowling class where you can bowl in the Purdue Memorial Union! Note there is an extra fee for this class. + +#### Behavioral Science + +##### SOC 100: Intro Sociology +Course covering introductory topics in sociology. + +#### Earth and Planetary Sciences + +##### EAPS 106: Geosciences in the Cinema +This class explores geology and natural disasters in respect to science fiction movies. This class is known to have some of the most interesting/entertaining lectures! + +##### EAPS 104: Oceanography +Introductory course on ocean life, ocean ecosystems, and natural processes in the ocean. + +##### EAPS 100: Planet Earth +Introductory course on Earth’s natural processes. + +#### Outreach + +##### CS 39000SL: MAGIC (Service Learning Outreach) +One credit course where students start programs and initiatives at local high schools in order to introduce girls to computer science. Learn more [here](https://www.cs.purdue.edu/outreach/magic.html)! + +##### EPICS +EPICS is a service-learning design program in which teams of students partner with local and global community organizations to address human, community, and environmental needs. To view the different options for EPICS courses, look for courses that start with EPCS. Learn more [here](https://engineering.purdue.edu/EPICS)! + +#### History + +##### HIST 371: Society & Rock & Roll +Examines post-WWII America and its relation to music, specifically rock and roll. + +#### Honors Courses +There is a misconception that you need to be in the Honors College to take HONR courses. All you need is to have a minimum of a 3.0 GPA in order to enroll in HONR courses, check with your primary advisor about how to sign up for HONR courses. There are some (i.e. HONR 19901 and HONR 19902 that are restricted to first-year honors students). + +##### HONR 29900: Visiting Scholars Seminar +One credit course where students attend events (currently virtual due to COVID-19) with visiting scholars and engage with their work. Every semester, the Honors College hosts a range of visitors from across disciplines. + +##### HONR 29900: Honors College Study Away Programs +Study Away programs are a great way to learn about different communities, cultures, and socio-economic and technical issues in a variety of settings. They are offered during October break, spring break, Maymesters, and over the summer. Study Away programs are a great way to gain some experience abroad in a busy schedule. Some Study Away programs may also be a great way to fulfill your Great Issues requirement, check with your primary advisor about which ones. Learn more [here](https://honors.purdue.edu/current-students/study-away/index.php)! + +### Grade Options +Want to take a course you’re interested in but don’t want it to count towards your GPA? Students also have the opportunity to change the grade mode for some classes to Pass/No Pass. In this grade mode, your final grade will be either P (Pass) or NP (No Pass). This grade will not impact your GPA. Note that if you change a grade mode for a certain class, this class will not count toward your degree requirements even if you get a P. The amount of credits of a P/NP class, however, counts towards your overall credit rank- for example, if you’re taking five classes that are each three credits and one class has the P/NP grade mode, you are still a 15 credit student. To fully understand if you can change a course to P/NP and how it will impact your progression in your degree, discuss this option more with your advisor. diff --git a/_wiki/gh-pages.md b/_wiki/gh-pages.md new file mode 100644 index 000000000..acf00bff0 --- /dev/null +++ b/_wiki/gh-pages.md @@ -0,0 +1,49 @@ +--- +title: "Github Pages Guide" +description: "Create a personal website hosted and deployed by Github!" +author: CS193 Team +date: 2021-02-28 09:00:00 -0400 +categories: technical +--- + +### What is Github Pages? + +Github Pages allows you to easily host and publish a webpage through Github. To start, all you need is a Github account! + +### How Can I Set Up my GH Page? + +Set up a basic webpage by completing the following steps! + +1. Create a new repository + +![Create new repository](/assets/images/wiki/gh-pages/ghp1.png) + +2. Push your first file to the repository’s main branch. You can use our **[template file](https://raw.githubusercontent.com/Purdue-CSUSB/purdueusb.com/master/assets/downloads/wiki/gh-pages/index.md)** by saving as a markdown file (using the file extension .md) + +![Add index.md to repository](/assets/images/wiki/gh-pages/ghp2.png) + +3. Click on the settings tab in your repository menu + +![Click Settings](/assets/images/wiki/gh-pages/ghp3.png) + +4. Scroll down to the section called GitHub Pages + +![Github Pages tab in Settings](/assets/images/wiki/gh-pages/ghp4.png) + +5. Change the Source setting to the option called main branch and click save + +![Change Source](/assets/images/wiki/gh-pages/ghp5.png) + +6. At this point, you can visit https://.github.io// to view the website you just activated. + +![Your website is ready!](/assets/images/wiki/gh-pages/ghp6.png) + +Congrats! Your webpage has been deployed successfully! + +### Editing my Page + +Any edits to your repository should automatically reflect onto your deployed Github Page, although your changes may not load immediately. If you do not see any changes, hit CTRL + SHIFT + R (or ⌘ + SHIFT + R on macs). + +If you want to continue to edit your page using Markdown (which is what index.md is using), check out [this markdown guide](https://learnxinyminutes.com/docs/markdown/) + +Want some inspiration on what to do with your new website and lots of cool free stuff? Take advantage of Github’s Student Developer Pack! To do this, navigate to [the Github Student website](https://education.github.com/pack/) and follow the steps there to request access. diff --git a/_wiki/git-and-intellij.md b/_wiki/git-and-intellij.md new file mode 100644 index 000000000..2099dd1ac --- /dev/null +++ b/_wiki/git-and-intellij.md @@ -0,0 +1,75 @@ +--- +title: "Cloning a Github Repository with Intellij" +description: "Learn how to use IntelliJ to clone a git repository and track your changes" +author: CS193 Team +date: 2021-03-26 12:00:00 -0400 +categories: technical +--- + +In this tutorial, we will be cloning a Github Repository into our local machine using IntelliJ and practicing committing and pushing our changes. To recap: + +Our *Github Repository* is the code hosted on Github. Our *local machine* is the computer/device you are going to be editing the code on.The changes made on your local machine will not be sent to our github repository until they are *committed and pushed*. + +## Step 1: Clone this repository + +Our first step is to clone a Github Repository onto our local machine + +### How to clone remote repo to local repo and manage it with IntelliJ + +1. Close any projects you currently have open + +`File` -> `Close Project` + +You should now see the main IntelliJ screen (It looks like the picture below). + +2. Checkout a project from Version Control. This is done from the welcome screen in Intellij! +![](/assets/images/wiki/git-intellij/git-intellij-welcome.png) + +Click `Check out from Version Control` -> `Git` -> `Log in to GitHub...` + +The **URL** is asking for the HTTPS clone link. You can access this link if you go to the repository you’re trying to open with Intellij, click on the green ‘Code’ button on the top right, and then copying the HTTPS link. + +![](/assets/images/wiki/git-intellij/git-intellij-cloneLink.png) + +The **Directory** is where this project will be stored on YOUR computer. Specify where in your computer you’d like the project to be saved. + +3. Click 'Clone' +![](/assets/images/wiki/git-intellij/git-intellij-welcomescreen.png) + +4. Enter your GitHub credentials if asked for. (Note: The order of steps 3 and 4 might be flipped) + +![](/assets/images/wiki/git-intellij/git-intellij-login.png) + +5. Confirm checkout from version control. Click 'yes' + +![](/assets/images/wiki/git-intellij/git-intellij-versionControl.png) + +6. IntelliJ will now ask you if you want to customize setup or rely on the default. You can just click 'Yes' or 'Confirm' on the screens that follow + +7. You’ve successfully cloned your git repository onto your computer (and opened it in Intellij)! + +You should see the files from your git repository on your Intellij window now. Remember, we have just *cloned* your git repository- all changes you make to these Intellij files will STAY on your local machine unless you push them to the central repository in Github. In other words, if you change a file from your new cloned repository on IntelliJ and save that file, you will NOT see your changes if you check your Github repository online. To learn how to commit and push your changes, move on to the next step! + + +## Step 2: Push your changes to GitHub! + +After you make new changes, you must **commit and push** them so your Github repository will be updated. You can find Intellij's Git options on the top right of the window. Depending on which IntelliJ version you have, the icons could appear differently. + +![](/assets/images/wiki/git-intellij/git-intellij-gitButtons.PNG) + +1. Commit and push your changes. **Note: Depending on version, the pull and commit may look like blue and green arrows instead.** + +![](/assets/images/wiki/git-intellij/git-intellij-commitButton.png) +![](/assets/images/wiki/git-intellij/git-intellij-commitMsg.png) + +**Only selecting 'Commit' will NOT push you changes to your Github repository!** + +2. Confirm you'd like to push changes + +![](/assets/images/wiki/git-intellij/git-intellij-pushDialog.png) + +![](/assets/images/wiki/git-intellij/git-intellij-pullButton.png) + + + + diff --git a/_wiki/git-intro.md b/_wiki/git-intro.md new file mode 100644 index 000000000..961cc6009 --- /dev/null +++ b/_wiki/git-intro.md @@ -0,0 +1,62 @@ +--- +title: "Git Guide" +description: "Get good with the git guide" +author: CS193 Team +date: 2021-03-26 12:00:00 -0400 +categories: technical +--- + +## What’s a VCS? + +VCS stands for Version Control System. You can think about it like Google Docs, but for code. Unlike Google Docs, though, it tracks **every** change you make! VCS’s are used to help manage multiple developers working on the same project, among their many other benefits. There are many VCS’s available for you to use, but in this article we’ll be focusing on Git. + +## Why use a VCS? + +There are many reasons to use a VCS, and here are just a few: +1. With a VCS, you can avoid losing work because of a crash or deleting a file that you didn’t mean to; you can **revert** your code back to when it was working +2. Many CS classes at Purdue require knowledge of a VCS (and of these classes, most use Git) +3. It’s the most common way to collaborate with code +4. Most companies will expect you to be able to use a VCS +5. And even if you just learn Git, the skills you learn will be transferable to other VCS’s you might have to use + +## Git + +To start using git, you must first create a repository. A repository is a folder with git functionality (it has version control now). You have to initialize git so that it’ll start keeping track of everything for you. Git keeps track of things in a hidden “.git” folder within the repository folder. Git’s like a program that goes in your folder and starts tracking everything you do. + +![](/assets/images/wiki/git-guide/git_init.PNG) + +This repository on your local computer will be used to track and push changes to a **central repo**. If you are familiar with Github, this is the central repository hosted on Github. This central repository is the place where all collaborators can push their changes to and share with others. Think of it like a folder in Google Drive, but for holding code, not documents. + + +![On the left is our local repository stored on our computer; on the right is the central repo on Github](/assets/images/wiki/git-guide/git_local_vs_remote.PNG) + +So how do you push the changes you made in your local repository (that lives on your own computer) to the central repository (that your collaborators can use and see)? The basic git workflow is the following: + +* Change all the files you want +* **ADD** your changes +* **COMMIT** the files you added +* **PUSH** your commit + + +To clarify these terms: + +* **Adding a file** means that you want git to pay attention to that file. You’re adding that file to a list to be committed- during your next commit, the files you added will be included. Once you commit, all files are un-added and you must re-add them to include them in the next commit. +* **Committing** means that you want git to save your changes to the files you previously added. A commit represents all the changes to the added files- this means it includes edits, additions, and deletions of files. Once something’s committed, you can always go back to that commit at any time in the future. +* **Pushing** is when you push all commits that haven’t already been pushed to your central repository. Pushing is what actually updates your central repository, letting your collaborators view your changes. + + +## Helpful Git Commands + +![](/assets/images/wiki/git-guide/git_init.PNG) + +![](/assets/images/wiki/git-guide/git_add.PNG) + +![](/assets/images/wiki/git-guide/git_commit.PNG) + +![](/assets/images/wiki/git-guide/git_status.PNG) + +![](/assets/images/wiki/git-guide/git_diff.PNG) + +![](/assets/images/wiki/git-guide/git_log.PNG) + +![](/assets/images/wiki/git-guide/git_revert.PNG) \ No newline at end of file diff --git a/_wiki/help-room.md b/_wiki/help-room.md new file mode 100644 index 000000000..63139fbcd --- /dev/null +++ b/_wiki/help-room.md @@ -0,0 +1,43 @@ +--- +title: Help Room Information +description: Extra help for CS 193, CS 180, CS 182, CS 240 +author: Arya Sharma +date: 2021-01-31 +categories: [tutor] +redirect_from: + - /helproom/ +--- + +### USB Help Room has started up for the spring semester! + +Below are the times tutors are available to help: + +| | Monday | Tuesday | Wednesday | Thursday | +| ---- | ---- | ---- | ---- | ---- | +| 6:00pm - 8:00pm (In-Person) | {::nomarkdown}
  • Arianna Smith
  • Rashmi Dahiya
  • Sarah Thomas
{:/} | {::nomarkdown}
  • Chun Wang
{:/} | {::nomarkdown}
  • Abhay Singh Thakur
{:/} | {::nomarkdown}
  • Sarah Thomas
{:/} | +| 8:00pm - 10:00pm (Virtual) | {::nomarkdown}
  • Abhay Singh Thakur
  • Satabdiya Roy
{:/} | {::nomarkdown}
  • Mohana Chandiran Dhukkaram
{:/} | {::nomarkdown}
  • Abhay Singh Thakur
  • Chun Wang
  • Sarah Thomas
{:/} | {::nomarkdown}
  • Satabdiya Roy
  • Arianna Smith
{:/} | + +## In-Person Tutoring + +In-Person Tutoring will take place in LWSN B160. All students are required to follow Protect Purdue guidelines. + +## Virtual Tutoring + +While we wait to get BoilerQ set up, we will post the tutor's individual zoom links below. Please join during their desginated tutoring times. + +- [Abhay Singh Thakur] [1] +- [Satabdiya Roy] [2] +- [Chun Wang] [3] +- [Arianna Smith] [4] +- [Mohana Chandiran Dhukkaram] [5] +- [Sarah Thomas] [6] + + + +[1]: https://purdue-edu.zoom.us/j/4319336987 +[2]: https://purdue-edu.zoom.us/j/4461449971 +[3]: https://purdue-edu.zoom.us/j/2155527451 +[4]: https://purdue-edu.zoom.us/j/8950644250?pwd=THcvYVVJaldCV1ViaENvc0lvRmpnZz09 +[5]: https://purdue-edu.zoom.us/j/9564241816?pwd=aGJxQlFNMWZVRHpMZjZ1K0lhUjJPZz09 +[6]: https://purdue-edu.zoom.us/j/96403158840?pwd=dkw5eXI5WW45Um42NTE5azBIbnVYQT09 + diff --git a/_wiki/joining-usb.md b/_wiki/joining-usb.md new file mode 100644 index 000000000..a4f0a9ab9 --- /dev/null +++ b/_wiki/joining-usb.md @@ -0,0 +1,43 @@ +--- +title: "How to Join USB" +description: "Want to lead cool initiatives like this student wiki?" +author: Lauren Lum +date: 2020-08-24 09:00:00 -0400 +categories: clubs +--- + +#### What is USB? + +Established in 1999, The Computer Science Undergraduate Student Board is dedicated to improving the student experience within Computer and Data Sciences at Purdue- whether by managing CS193, hosting forums for student advocacy, or maintaining a database of undergrad-tailored resources, USB is continually creating initiatives that will uphold our values. Check out our **[initiatives](https://purdueusb.com/initiatives)** page to see what we’re up to now! + +#### What do USB members do? + +That will be completely up to you! USB prides itself in being driven by student-led initiatives- if a board member has an idea and a plan, they are encouraged to take lead. Initiatives can be small or large, and members are given flexibility to be able to move from project to project if it’s in their best interest. + +#### What are the responsibilities of USB members? + +All USB members are expected to be working on at least one initiative- this can mean being the member of an initiative team or being the lead of an initiative with heightened responsibility. Along with work on your initiatives, USB has a mandatory hour-long weekly meeting where initiative leads can report their progress and members can discuss any new ideas or suggestions. + +#### How to Join +USB opens applications early December and keeps them open until the beginning of Spring semester. If you follow us on social media (such as our **[Facebook](https://www.facebook.com/purdueusb)** or **[Instagram](https://instagram.com/purdueusb)**), you’ll be the first to know when it releases! + +#### What’s the application process? + +Our interview can be split up into 2 main parts. + +-Our general application is released early December and stays open until the beginning of Spring semester. It is made up of personal and behavioral questions about yourself. We’re not looking for the longest response (although details, if important, can definitely add to your application)- we want to see what you’re passionate about. If possible, give us a specific situation that or personal experience relates to the question. + +-Final interview offers will be sent out within the next two weeks. After scheduling your interview, we will invite you to either an in-person or virtual interview. You will be able to sit with two interviewers and answer some more personal and behavioral questions. Again, we want to know about you- sharing personal, specific experiences will allow us to get to know you better! During the second half of your interview you will be given a ‘situation’ question where you’re encouraged to share an idea or initiative you have for the CS department and how you would lead it. + +Traditionally, we have had a third optional event with all candidates that made it to the final round of interviews- in the past, we have invited candidates to bowl with us and have dinner. The purpose of this optional meeting is to be able to meet all candidates in a relaxed setting and to get to know you more personally. Since this event is optional, we do not use it as a definitive way to consider candidates, but it (if anything) gives an excuse to have some fun and free food! + + +#### What are we looking for? + +USB cares about diversity. The computer science department heavily lacks diversity and we believe that the best way for a student organization to address this is to amplify and elevate the voice of minority groups in tech. We want our board to be representative of the diverse community we are trying to build. + +USB is also looking for passion and great ideas for the CS department. Initiatives are completely maintained and created by USB members, so we want to find individuals who truly care about the work they will do with us. We love to talk with candidates who have genuine interest or a specific experience that is driving their idea- maybe a love for teaching that has given them an idea for a mentorship initiative, or an experience in class that made them realize there was an easier way to hold PSOs. + +#### I believe in what USB is doing but do not want to become a member. Can I still make changes within the CS department? + +You definitely can! While USB provides existing relationships with faculty and a network of supportive members who can help start your initiative, it is by no means the only way to do so. If you have an idea for the CS department, take initiative and contact your professors, faculty members, and your peers. Conduct some research and form a plan- change can absolutely come from an individual. And USB is more than willing to help- if you feel stuck, don't hesitate to come to our scheduled **[office hours](https://purdueusb.com/officehours)** or send us an email about your idea and we will share any helpful resources we have! \ No newline at end of file diff --git a/_wiki/latex-guide.md b/_wiki/latex-guide.md new file mode 100644 index 000000000..aef20a7a3 --- /dev/null +++ b/_wiki/latex-guide.md @@ -0,0 +1,36 @@ +--- +title: "LaTeX Guide" +description: "Learn important LaTeX commands" +author: CS193 Team +date: 2021-03-26 12:00:00 -0400 +categories: technical +--- + +## Preamble + +* `\documentclass{article}` specifies the type of document that is going to be created. The area between the `\documentclass{...}` and the `\begin{document}` is know as the *preamble*. In this case, it is article, which is used of scientific journals, presentations, short reports, etc. Other document types are shown in the table below: + +Document Class | Purpose +------------ | ------------- +article | Articles in scientific journals, presentations, short reports, program documentation, invitations, ... +report | Longer reports containing several chapters, small books, thesis, ... +book | Real books. +slides | Slides with big sans serif letters. +letter | Writing letters + +* The *top matter* includes the title, author, and date. These fields are used to store information about the document. This is useful for allowing LaTeX to automatically generate a title header for your document. + +* `\begin{document}` and `\end{document}` is where all the document contents are located. The information you type into your document will be stored between these two tags. + +## Title +* `\maketitle` creates a title for document with the project title, author name, and date. + +## Sections +There are several types of section headers to choose from. Replace the "..." with your desired section title. + +* `\section{...}` +* `\subsection{...}` +* `\subsubsection{...}` +* `\paragraph{...}` +* `\subparagraph{...}` +Section Types diff --git a/_wiki/latex-start.md b/_wiki/latex-start.md new file mode 100644 index 000000000..4145dc6db --- /dev/null +++ b/_wiki/latex-start.md @@ -0,0 +1,35 @@ +--- +title: "Getting Started with LaTeX" +description: "Learn how to get started with LaTeX and Overleaf" +author: CS193 Team +date: 2021-03-26 12:00:00 -0400 +categories: technical +--- + +## What is LaTeX? +LaTeX (pronounced "Lay Tech" or "Lah Tech") is a way of creating documents, just like Microsoft Word or Google Docs. The difference is that document content *and formatting* are written in plain text, as opposed to showing you the formatting of the document as you type it. LaTeX is widely used in academia. Chances are that your math exams are written in LaTeX. This is due to LaTeX being great for mathematical expressions. While it might be intimidating at first, once you become familiar with it, you can create fully customized professional documents even quicker than Word or Docs. + +## Why am I learning this? +Learning CS and DS is not just learning how to code. There is a decent amount of theory and mathematics. You will take courses like CS 182 and CS 381 that are will require you to turn in mathematical write-ups, like proofs. Lots of statistics professors want you to type your homework, as well. LaTeX is useful in these cases. Also, technical research papers you might write in the future will likely be written in LaTeX. + +## What is Overleaf? +You can think of Overleaf as the equivalent of Google Docs for LaTeX. It allows for documents to be created online and edited by multiple collaborators. + +## Step 1: Create an Overleaf account +Purdue provides you with a free Professional Overleaf account ($30/month value). This gives you benefits like full document history, syncing with Dropbox/Github, and unlimited collaborators per project. + +**Be sure to use your Purdue email to receive Professional account benefits** + +[Click here to create an Overleaf Account](https://www.overleaf.com/edu/purdue) + +## Step 2: Creating your first document + +1. Verify your account via email +2. Click the Project button on the top right corner +3. Click the "Create First Project" button, and select "Blank Project." + +## Step 3: Your first compile! +As you might have noticed, LaTeX has a lot in common with programming languages. Like Java or C, LaTeX needs to be compiled before you can see changes in your document. **Change the author from your Purdue username to your full name, and click the big green "Recompile" button.** This should update the document that is shown to the right. Clicking the arrow on the "Recompile" button gives you the option to automatically recompile between changes. You can enable this, if you so choose. + +## Step 4: Edit! +Congrats, you’ve created your first document on Overleaf! Now all you have to do is start writing. LaTeX is very powerful, so much that our wiki can only cover a very small percentage of what it has to offer- if you want to get a good starting point, though, head over to our LaTeX guide [here]({{ site.url }}/wiki/latex-guide). \ No newline at end of file diff --git a/_posts/2020-05-09-lawson-fob.md b/_wiki/lawson-fob.md similarity index 54% rename from _posts/2020-05-09-lawson-fob.md rename to _wiki/lawson-fob.md index edeec22f8..fd2f7626c 100644 --- a/_posts/2020-05-09-lawson-fob.md +++ b/_wiki/lawson-fob.md @@ -1,27 +1,26 @@ --- -layout: post title: "Getting a Lawson Key Fob" description: "Access Lawson after hours" author: Jay Hankins date: 2020-05-09 12:00:00 -0400 categories: campus --- - +{% assign workstudy = "cs-workstudy@science.purdue.edu" %} As a CS student, you can get a keyfob from the Lawson mailroom which will give you after-hours/weekend access to the Lawson building, as well as the student activities center in HAAS G072. -## Getting a New Keyfob -To get a keyfob, simply email cs-workstudy@science.purdue.edu . Here's a template that might be helpful: -> **Subject:** Lawson Keyfob +#### Getting a New Keyfob +To get a keyfob, simply email [{{workstudy}}](mailto:{{workstudy}}). Here's a template that might be helpful: +> **Subject:** Lawson Keyfob +> > To whom it may concern, - +> > I am a computer science student enrolled in [CS courses here]. I would like a keyfob to access the Lawson building after-hours. - +> > Thank you, [Your name] -## Renewing an Existing Keyfob -Keyfob access expires every semester. If you don't renew your keyfob, you won't be able to get into the building or offices without renewing. +#### Renewing an Existing Keyfob -To renew your keyfob, simply email **cs-workstudy@science.purdue.edu** again and request that your fob be renewed. In the email, tell them new CS courses you are enrolled in. \ No newline at end of file +Keyfob access expires every semester. If you don't renew your keyfob, you won't be able to get into the building or offices without renewing. To renew your keyfob, simply email [{{workstudy}}](mailto:{{workstudy}}) again and request that your fob be renewed. In the email, tell them new CS courses you are enrolled in. \ No newline at end of file diff --git a/_wiki/make-article.md b/_wiki/make-article.md new file mode 100644 index 000000000..47682ce11 --- /dev/null +++ b/_wiki/make-article.md @@ -0,0 +1,94 @@ +--- +title: "Contribute to the Wiki" +description: "Add or edit an article on the Student Wiki" +author: Noah Alderton +date: 2020-10-28 12:00:00 -0400 +categories: campus +--- + +### Introduction + +The Student Wiki is designed to be a source of information that is useful for the Purdue CS/DS community. We encourage anyone to create a new article for the Wiki or edit a preexisting article. We only ask that new articles are tangentially useful to the CS/DS community. We are using GitHub as the means of managing edits to the Student Wiki. Therefore, to contribute to the Student Wiki, you must have a GitHub account + +### Create a New Article + +#### Step 1 +First, you need to fork the purdueusb.com website repository. This can be done by going to the [GitHub repository page](https://github.com/Purdue-CSUSB/purdueusb.com), and click the "Fork" button on the top right. + +![Fork Repo](https://user-images.githubusercontent.com/25762130/97838214-b8c88100-1cad-11eb-9cd1-8a96f732c233.png) + +#### Step 2 +Once you are in your fork of the Purdue USB website repository, navigate to the `_wiki` directory. + +![Wiki Directory](https://user-images.githubusercontent.com/25762130/97836232-d4318d00-1ca9-11eb-89a4-8c87a6095061.png) + +#### Step 3 +Next, click "Add file" on the top right, then click "Create new file". + +![Add File](https://user-images.githubusercontent.com/25762130/97835991-58374500-1ca9-11eb-933f-106850614489.png) + +#### Step 4 +From here you are going to create a Markdown file for your article. If you are not familiar with Markdown, please read through [this guide](https://guides.github.com/features/mastering-markdown/). + +The name of your Markdown file's name should be no more that 3 words long, with dashes (-) separating the words. The file should always end in the `.md` file extension. The filename will be the URL slug, so `lawson-fob.md` becomes `/wiki/lawson-fob`. + +To maintain format consistency, please **do not use `h1 (#)` or `h2 (##)` headings**. + +You can also use emojis seen on this [cheat sheet](https://www.webfx.com/tools/emoji-cheat-sheet/)! :bangbang: + +The beginning of your Markdown file should begin with "front matter." This is metadata that is used by Jekyll to better organize your article. This is an example of front matter. + +```yaml +--- +title: "Contribute to the Wiki" +description: "Add or edit an article on the Student Wiki" +author: Noah Alderton +date: 2020-10-28 12:00:00 -0400 +categories: campus +--- +``` + +- title: Title of the article +- description: Describe what the article is about. Keep this down to one sentence. +- author: List of author names exactly as they appear in membership data files. +- date: Date of most recent edit +- categories: Category this fits the article, like `technical` or `campus`. Multiple categories can be included, as long as they are comma separated and between square brackets. + +**A note about images**: Please only use images hosted by USB - not from an outside source. In addition, use descriptive and readable captions for wiki images, as they will be displayed to the user and read aloud via screen readers. Add images to a directory in `/assets/images/wiki/`. From there, will be able to reference local images in your article like so: + +```md +![Community Hub Homepage](/assets/images/wiki/connect-vpn/step1.png) +``` + +#### Step 5 +Once you are finished typing up your article, add a commit message, and click the green "Commit new file" button on the bottom. + +![Create New File](https://user-images.githubusercontent.com/25762130/97836472-66d22c00-1caa-11eb-93cb-74a3ed974801.png) + +#### Step 6 +Now, you need to go to the "Pull requests" tab, and click the green "New pull request" button. Here, you are going to create a new pull request that merges your fork of the website into the Purdue-CSUSB/purdueusb.com repo. + +![Pull Request](https://user-images.githubusercontent.com/25762130/97836631-b7e22000-1caa-11eb-9cb8-960353b99d13.png) + +### Edit Existing Article + +#### Step 1 +Navigate to the `_wiki` directory and open the Markdown file that you wish to edit. + +![Wiki Directory](https://user-images.githubusercontent.com/25762130/97836232-d4318d00-1ca9-11eb-89a4-8c87a6095061.png) + +#### Step 2 +Click the edit button on the top right. This will make a fork of the website repository. From here you can the desired changes to the wiki article. If you are not familiar with Markdown, please read through [this guide]. Also, please **do not use `h1 (#)` or `h2 (##)` headings** in an effort to maintain format consistency across the articles. + +![Edit Document](https://user-images.githubusercontent.com/25762130/97836830-1e673e00-1cab-11eb-8e27-4191b310cfb9.png) + +#### Step 3 +Once you are finished making those edits, add a commit message, and click the green "Commit changes" button on the bottom. + +![Commit Changes](https://user-images.githubusercontent.com/25762130/97837103-9897c280-1cab-11eb-8465-88c4a3a43452.png) + +#### Step 4 +Now, you need to go to the "Pull requests" tab, and click the green "New pull request" button. Here, you are going to create a new pull request that merges your fork of the website into the Purdue-CSUSB/purdueusb.com repo. + +![Pull Request](https://user-images.githubusercontent.com/25762130/97836631-b7e22000-1caa-11eb-9cb8-960353b99d13.png) + diff --git a/_posts/2020-03-04-rent-equipment.md b/_wiki/rent-equipment.md similarity index 68% rename from _posts/2020-03-04-rent-equipment.md rename to _wiki/rent-equipment.md index 22c4dd193..006350d6f 100644 --- a/_posts/2020-03-04-rent-equipment.md +++ b/_wiki/rent-equipment.md @@ -1,5 +1,4 @@ --- -layout: post title: "How can I rent equipment?" description: "Borrow equipment to tinker with for free" author: Noah Alderton @@ -7,9 +6,7 @@ date: 2020-03-04 17:00:00 -0400 categories: campus --- -There are a few different opportunities to rent equipment for both classwork and personal use. The Department of Computer Science allows CS/DS students to rent various equipment at this link: - -[https://www.cs.purdue.edu/resources/facilities/lwsndevices.html](https://www.cs.purdue.edu/resources/facilities/lwsndevices.html) +There are a few different opportunities to rent equipment for both classwork and personal use. The Department of Computer Science allows CS/DS students to [rent various equipment online](https://www.cs.purdue.edu/resources/facilities/lwsndevices.html). The following devices are available to rent for 1 week at a time: @@ -26,4 +23,4 @@ The following devices are available to rent for 1 week at a time: Additionally, Purdue Libraries has cameras, camcorders, tripods, and hard drives available to rent for 3 days. -[https://www.lib.purdue.edu/services/equipment](https://www.lib.purdue.edu/services/equipment) \ No newline at end of file +To learn more, see the [Purdue Libraries Equipment](https://calendar.lib.purdue.edu/reserve/equipment/equipment) page. diff --git a/_wiki/searching-our-wiki.md b/_wiki/searching-our-wiki.md new file mode 100644 index 000000000..b39d21bab --- /dev/null +++ b/_wiki/searching-our-wiki.md @@ -0,0 +1,35 @@ +--- +title: "Optimize your search on our wiki" +description: "Save yourself some time!" +author: Zach Bryant +date: 2020-06-29 00:00:00 -0400 +categories: meta +--- + +Our wiki is built with tools make your searches more powerful and precise. You can use any combination of the operators explained below: + +### Wildcards +Wildcards let you match any text and are represented by asterisks (\*). For example, `C* S*` matches words starting with *C* or *S*. Together they match phrases like *Computer Science* or *Canadian Studies*, among other things. + +### Fields +Fields relate to meta-information about our articles, such as the date or author. You can use them to search only titles, for example, instead of searching the entire wiki. Search for this article with `title:optimize`. + +Available fields: `title`, `description`, `content`, `author`, `category`, and `date`. + +### Boosts +You can use boosts to prioritize certain search terms over others. For example, `foo^10 bar` tells the website you're 10x more interested in the search term *foo* than *bar*. Articles containing *foo* would then be higher in the search results. + +### Fuzzy Matches +Fuzzy matching allows for some grace if you misspell a term or are off by a few letters. For example, `foo~1` matches anything 1 letter away from *foo*, like *boo* or *food*. It will not match words like *boot* because it has a difference of two letters. + +### Term Presence +Term presence allows you to explicitly include or exclude phrases in your search query with the symbols `+` and `-`, respectively. For example, `+foo -bar baz` matches only content with *foo* and without *bar*, that also may contain *baz*. + +By default, a result comes back if any word separated by a space matches some content. This is a limitation of the code our website uses. Searching for `+author:Purdue Pete` is seen as two separate terms, `+author:Purdue` and `Pete`. + +Nothing's perfect. + +### Bringing It All Together +You can make your search as simple or as complex as you'd like. As an example, if I wanted to search for meta-articles I've authored in June, containing the mis-spelled phrase *crakatoa*, I could type `category:meta +author:Zach +Bryant +date:June -crakatoa~1`. Except at this time, my *only* article contains the phrase *krakatoa*. + +Thank you for coming to my TED talk. diff --git a/_posts/2020-05-10-ssh-shortcut.md b/_wiki/ssh-shortcut.md similarity index 94% rename from _posts/2020-05-10-ssh-shortcut.md rename to _wiki/ssh-shortcut.md index 2ebfa2841..98efed412 100644 --- a/_posts/2020-05-10-ssh-shortcut.md +++ b/_wiki/ssh-shortcut.md @@ -1,5 +1,4 @@ --- -layout: post title: "SSH Shortcut for Purdue Servers" description: "Tired of typing data.cs.purdue.edu?" author: Jay Hankins @@ -11,10 +10,10 @@ It can be tedious to type `ssh @.cs.purdue.edu` over and over Here's a little shell function which shortens this command to just with an optional argument of the machine you wish to connect to. -## Installation +### Installation Copy and paste the following code into your shell rc file. This may be `~/.bashrc` or `~/.zshrc`. -```shell +```bash () { ssh @${1:-}.cs.purdue.edu } @@ -22,17 +21,17 @@ Copy and paste the following code into your shell rc file. This may be `~/.bashr Make sure to replace any information in between the `<` and `>` symbols. For example, my function looks like this: -```shell +```bash hankinsj () { ssh hankinsj@${1:-data}.cs.purdue.edu } ``` My username is `hankinsj` and my default machine is `data` in this example. -## Usage +### Usage `$ ` You can include an optional argument which specifies the machine to connect to. Otherwise, it will connect to your chosen default machine. -## Example +### Example `$ hankinsj mc04` This will connect me automatically to `mc04.cs.purdue.edu`. \ No newline at end of file diff --git a/_wiki/summer-plans.md b/_wiki/summer-plans.md new file mode 100644 index 000000000..ada108aa7 --- /dev/null +++ b/_wiki/summer-plans.md @@ -0,0 +1,64 @@ +--- +title: "It's Spring Semester – What do I do with my summer?" +description: "Looking last minute for a summer opportunity?" +author: Sarah Thomas/USB +date: 2022-04-27 09:00:00 -0400 +categories: [research,internship] +--- + +## It's spring semester, and I am still searching for sort of technical experience for the summer. What should I do? + +Important note – a "productive" summer doesn't have to involve an internship or technical work! But for someone who's still searching for a summer resume-building activity in the Spring semester, there are opportunities (many of which are offered by Purdue) that still available. + +### Finding a Summer Internship + +#### The myCCO (Center for Career Opportunities) Website [(link)](https://www.cco.purdue.edu/Home/myCCO) +The CCO doesn't always have CS/DS specific resources and opportunities, but it is the best place to find centralized job listings. + +Tips for optimal job search using the myCCO job search tool: +- Filter job results by "Posted In Last 24 Hours". Most companies post job listings and collect applicants within a span of few days, so finding newly posted listings gives you a better chance of hearing a response. +- Search jobs by "Desired Majors" rather than "Job Function" – some roles may sound non-technical at first. + +#### Spring Career Fairs & Company Days +Every spring semester, Purdue has a "Just In Time" career fair. These companies are looking to fill positions right away, and many are looking for CS/DS students. The CCO also hosts career fairs in the spring. + +Attend as many spring company days as possible. Company days have lower attendance in spring semesters than in fall semesters –– attending them is a great opportunity to get more 1-on-1 time with recruiters or company representatives. Look out for notifications about company days in the Opportunity Update that is sent out to CS/DS majors! + +### Research Opportunities +Many students are interested in research, but are unsure about how to get started. The summer is a great time to explore research. + +#### 390 Research Courses +Some 390s are course numbers for research work. Once you have contacted a professor or lab and been invited to do research work, you can arrange to enroll in a 390 course during the summer term. More on finding labs with open positions below. + + +##### CS 390s +If you are enrolled in a CS or DS course, chances are your professor either is involved in research, or knows another professor who is doing research. Talking with your professors about their research work and asking if they have openings for you to get involved is a great way to get your foot in the door. + +If talking with professors in person sounds daunting, the CS Department Website has a compiled list of research areas and descriptions, the labs and professors doing research in each area, and contact information. Reach out using the contact information from these listings. [Link here](https://www.cs.purdue.edu/research/). + + +##### Other Department 390s +You don't have to limit your research search to the CS department. Many other departments are looking for CS/DS students, and even if they have not specifically posted an opening for a CS student, it is likely that they could benefit from taking on someone with technical skills. + +The Pyschology Department, for example, has research opportunities listed on [this website](https://www.purdue.edu/hhs/psy/undergraduate/beyond_the_classroom/research.html). + + +#### EPICS, VIP, and other structured programs +There are structured Purdue programs where you can do technical projects and research as well. + +##### EPICS +EPICS is a service-learning design program for Engineering Students that is also open to Computer Science and Data Science majors. There are several teams that work in various fields – each team works with a partner in the community and develops a product to address the partner's needs. To see a list of EPICS teams and their current work, [visit the EPICS website here](https://engineering.purdue.edu/EPICS/teams ). + +You can enroll in EPICS as a course during the summer term. For more information on how to join, visit the [EPICS Registration Information page](https://engineering.purdue.edu/EPICS/purdue/epics-purdue/join-epics). + + +##### VIP (Vertically Integrated Projects) +VIP is a program that provides opportunities to do research and design projects related to active research areas of Purdue faculty members. Many of the teams' work/research is focused on Data Science and Computer Science. + +You can enroll in VIP as a summer term course For more information on the current teams and information on enrolling in the VIP program, visit the [VIP website](https://engineering.purdue.edu/VIP). + + +##### REUS (Research Experience for Undergraduates) in Computer and Information Science and Engineering +REUs are summer research programs for undergraduates studying science, engineering, or mathematics. The programs are sponsored by the National Science Foundation, and are hosted in various universities. + +See the full list of programs on the [NSF website](https://www.nsf.gov/crssprgm/reu/list_result.jsp?unitid=5049). diff --git a/_wiki/terminal-cheatsheet.md b/_wiki/terminal-cheatsheet.md new file mode 100644 index 000000000..ad465eb28 --- /dev/null +++ b/_wiki/terminal-cheatsheet.md @@ -0,0 +1,239 @@ +--- +title: "Terminal cheatsheet" +description: "Learn some important UNIX commands" +author: CS193 Team +date: 2021-03-14 12:00:00 -0400 +categories: technical +--- + +# Basic UNIX Terminal Guide + +## pwd (Print Working Directory) + +#### Description + +Prints path of current directory. (Think: what is the address of the folder I’m viewing?) + +#### Example + +`pwd` + + +## ls (List) + +#### Description + +Prints contents of current directory. (What stuff is in the current folder?) + +#### Tags + +- `-a` = all files (include hidden files) + +- `-l` = detailed list + +#### Arguments + +Path to the folder you want to see the contents of (Leave blank to see current folder contents) + +#### Example + +`ls -al` + +## cd (Change Directory) + +#### Description + +Move to the specified path. (I want to go somewhere, and I need to tell the terminal where. + +#### Arguments + +Exact path of the folder you want to move to, or just a subdirectory + +#### Syntax + +`cd Directory` + +#### Example + +`cd ~/Documents` + + +## rm (Remove) + +#### Description + +Permanently deletes a file or folder (No trash/recycling bin!) + +#### Tags + +- `-r` - Delete a folder and its contents + +- `-f` - Stop confirmation prompt for write-protected files + +#### Arguments + +Path to the folder/file you want to delete + +#### Syntax + +`rm [TAGS] Path` + +#### Example + +`rm -rf ~/Documents/Junk` + +## mv (Move) + +#### Description + +Move an existing file somewhere else. It can also be used to rename files. + +#### Arguments + +1. The file you want to move + +2. The destination + +#### Example + +`mv ~/Documents/source/file.txt ~/Documents/destination/file.txt` + +`mv ~/old_name.txt ~/new_name.txt` + +## cp (Copy) + +#### Description + +Copy files or folders to a new location + +#### Syntax + +`cp Source Destination` + +`cp File-1 File-2 File-3 ... Destination` + +#### Example + +`cp ~/Documents/source/file.txt ~/Documents/destination/file.txt` + +`cp ~/Desktop/Name.java ~/Desktop/Age.java ~/CS180/Homework_1` + +## clear + +#### Description + +Clear the Terminal Screen + +#### Example + +`$ clear` + + +## top + +#### Description + +See what programs are currently running + +#### Example + +`top` + +## killall + +#### Description + +Kill all programs with the specified program_name + +#### Syntax + +`killall Program_Name` + +#### Example + +`killall firefox` + +## touch + +#### Description + +Creates a new file in the location specified in the argument + +#### Arguments + +The files that are to be created + +#### Syntax + +`touch File-1 File-2 File-3 ...` + +#### Example + +`touch ~/Documents/file1.txt ~/CS193/HW2/file2.txt` + +## Other Contents + +### Files and Folders with Spaces + +If a path includes files or folders with spaces, either use quotations marks (" ") or a backslash (\\) before the space. For example: + +`~/"My Files"/test.txt` + +or + +`~/My\ Files/test.text` + + + +### Shortcuts + +- `~` - Home Directory + +- `.` - Current Directory + +- `..` - Parent Directory + +### Aliases + +1. Aliases are set in `~/.bashrc` + +2. Add a line to `~/.bashrc` that looks like: `alias =“”` + +3. Save file, tell bash to reload: `$ source ~/.bashrc` + +### Wildcards + +#### Description + +Used to include a group of files with smiliar characteristics. + +They can be used with nearly any UNIX command. + +#### Example + +* `cp ~/Desktop/*.java ~/Documents/Project` + + * This command will copy all `.java` files found in the Desktop directory into the `Documents/Project` folder. + +* `mv ~/Desktop/file* ~/Documents` + + * This command will copy all files that begin with "file" in the name into the `Documents` directory. + +### Vim and Nano Customization + +From Lecture 2, you should have learned about how Vim enables commands by typing colon ":" followed by your command. However, there are some commands you don't want to have to type every time. For example, it's pretty normal to want line numbers whenever you open a file. But having to type `:set number` every time you run Vim kinda sucks. How can we avoid this? + +Your `~/.vimrc` (Vim Run Control) file controls what commands will run every time Vim is invoked. You can customize it to your heart's content. + +You can disable this at any time within a file by typing `:set nonumber` within Vim, or by deleting it from your `~/.vimrc` and then re-opening Vim again. + +As you can imagine, there are thousands of commands you can leverage in your `~/.vimrc` file. For a great resource on customization, read [this article](https://dougblack.io/words/a-good-vimrc.html). + +A favorite quote from that article that you should definitely adhere to is: + +>"Don't put any lines in your vimrc that you don't understand." + +For those who are using nano, here is an article about [nano customization](https://www.nano-editor.org/dist/v2.1/nanorc.5.html). Similar to Vim, you add your commands in your `~/.nanorc` file. + + + diff --git a/_wiki/terminal.md b/_wiki/terminal.md new file mode 100644 index 000000000..8f1cd38a6 --- /dev/null +++ b/_wiki/terminal.md @@ -0,0 +1,42 @@ +--- +title: "Using Terminal" +description: "Learn how to efficiently use terminal" +author: CS193 Team +date: 2021-03-14 12:00:00 -0400 +categories: technical +--- + +### What is Terminal? + +When you use the terminal, you talk more directly with your computer. Think of it as a more powerful (but less friendly) finder/file explorer. + +### Why Use Terminal? + +There are many benefits of using Terminal! Here are some important points: +- Accessibility to programmers - with terminal, you can do important things like compile source code, access other computers, and launch programs without having to open up any other programs +- Versatility + Customizability - Say you want to move all files that start with ‘cool’ and end with ‘.gif’ into a folder called ‘cool gifs’. With terminal, this is one command! +- Purdue CS and terminal - Most courses will have projects/tests/homeworks that assume terminal knowledge + +### How Do I Open a Terminal Window? +There are lots of options for Windows and Mac computers to open a terminal window! For Windows, you can open the Command Prompt program to open a terminal window and the equivalent program on Mac is Terminal. Alternatively, there are many other programs you can download such as Git Bash, which gives you a Bash terminal with extra Git functionalities. + +### Now What? +For many, the interface of a terminal window can be confusing at first. To utilize terminal, you must type in UNIX commands. Remember that when you’re moving around in terminal, you are essentially ‘clicking’ folders and files like you would in File Explorer/Finder. The way you’ll be interacting with terminal is by giving it commands. Here’s the basic structure of Linux commands: + +![Linux command structure](/assets/images/wiki/terminal/cmd_structure.png) + +It’ll be helpful to get comfortable with moving around with terminal before learning more difficult actions. Here’s some important commands to help you get comfortable with navigating with terminal: + +![pwd](/assets/images/wiki/terminal/cmd_pwd.png) + +![ls](/assets/images/wiki/terminal/cmd_ls.png) + +![cd](/assets/images/wiki/terminal/cmd_cd.png) + +![Moving faster](/assets/images/wiki/terminal/moving_faster.png) + +### More Commands +As mentioned before, one of the important benefits of using terminal is that it gives you a lot of flexibility and options- that means there are way too many available commands to talk about in this article! To get started, check out our terminal guide that’ll give you some of the important UNIX commands. You can find another helpful guide [here](http://mally.stanford.edu/~sr/computing/basic-unix.html) or check out our terminal cheatsheet [here]({{ site.url }}/wiki/terminal-cheatsheet) + +If you want more information about a command, use the command **man ** to get more information about any given command. For example, **man ls** gives you info about the ls command. + diff --git a/_wiki/usb-constitution.md b/_wiki/usb-constitution.md new file mode 100644 index 000000000..30175478e --- /dev/null +++ b/_wiki/usb-constitution.md @@ -0,0 +1,37 @@ +--- +title: "USB's Current Constitution" +description: "USB's Constitution" +author: Cindy Ding +date: 2022-05-25 12:00:00 -0400 +categories: campus +--- + + + + + + + +
+ +
diff --git a/about.html b/about.html deleted file mode 100644 index 054b24b72..000000000 --- a/about.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: About Us -permalink: /about/ ---- - - - - -{%- include head.html -%} - - - - {%- include header.html -%} -

About Us

- -
- - {%- include aboutus.html -%} - -
- - {%- include members.html -%} -
- - {%- include footer.html -%} - - - - \ No newline at end of file diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png deleted file mode 100644 index bc6ba30af..000000000 Binary files a/android-chrome-192x192.png and /dev/null differ diff --git a/android-chrome-512x512.png b/android-chrome-512x512.png deleted file mode 100644 index 45e8e4385..000000000 Binary files a/android-chrome-512x512.png and /dev/null differ diff --git a/apple-touch-icon.png b/apple-touch-icon.png deleted file mode 100644 index 971d9fc45..000000000 Binary files a/apple-touch-icon.png and /dev/null differ diff --git a/assets/downloads/wiki/gh-pages/index.md b/assets/downloads/wiki/gh-pages/index.md new file mode 100644 index 000000000..d6ba0e59a --- /dev/null +++ b/assets/downloads/wiki/gh-pages/index.md @@ -0,0 +1,41 @@ +--- +title: "index" +--- + +## Welcome to GitHub Pages + +You can use the [editor on GitHub](https://github.com/kalutes/CS193_Fall18_Lab1/edit/master/index.md) to maintain and preview the content for your website in Markdown files. + +Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files. + +### Markdown + +Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for + +```markdown +Syntax highlighted code block + +# Header 1 +## Header 2 +### Header 3 + +- Bulleted +- List + +1. Numbered +2. List + +**Bold** and _Italic_ and `Code` text + +[Link](url) and ![Image](src) +``` + +For more details see [GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/). + +### Jekyll Themes + +Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/kalutes/CS193_Fall18_Lab1/settings). The name of this theme is saved in the Jekyll `_config.yml` configuration file. + +### Support or Contact + +Having trouble with Pages? Check out our [documentation](https://help.github.com/categories/github-pages-basics/) or [contact support](https://github.com/contact) and we’ll help you sort it out. diff --git a/assets/images/blog-temp/png/group.png b/assets/images/blog-temp/png/group.png new file mode 100644 index 000000000..cda39ab5c Binary files /dev/null and b/assets/images/blog-temp/png/group.png differ diff --git a/assets/images/blog-temp/png/image b/assets/images/blog-temp/png/image new file mode 100644 index 000000000..6e9f0da13 --- /dev/null +++ b/assets/images/blog-temp/png/image @@ -0,0 +1 @@ +h diff --git a/assets/images/blog-temp/webp/Blog_Initiative.webp b/assets/images/blog-temp/webp/Blog_Initiative.webp new file mode 100644 index 000000000..64adfab8a Binary files /dev/null and b/assets/images/blog-temp/webp/Blog_Initiative.webp differ diff --git a/assets/images/blog-temp/webp/image b/assets/images/blog-temp/webp/image new file mode 100644 index 000000000..6e9f0da13 --- /dev/null +++ b/assets/images/blog-temp/webp/image @@ -0,0 +1 @@ +h diff --git a/assets/images/deserted.svg b/assets/images/deserted.svg new file mode 100644 index 000000000..19db06b4c --- /dev/null +++ b/assets/images/deserted.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/deserted.webp b/assets/images/deserted.webp new file mode 100644 index 000000000..7abdf71c1 Binary files /dev/null and b/assets/images/deserted.webp differ diff --git a/assets/images/figma.svg b/assets/images/figma.svg new file mode 100644 index 000000000..f1a2faa12 --- /dev/null +++ b/assets/images/figma.svg @@ -0,0 +1 @@ +Figma.logoCreated using Figma \ No newline at end of file diff --git a/assets/images/group.png b/assets/images/group.png index d22c6bfb8..cda39ab5c 100644 Binary files a/assets/images/group.png and b/assets/images/group.png differ diff --git a/assets/images/group.webp b/assets/images/group.webp new file mode 100644 index 000000000..64adfab8a Binary files /dev/null and b/assets/images/group.webp differ diff --git a/assets/images/initiatives/CS193_Logo.png b/assets/images/initiatives/CS193_Logo.png deleted file mode 100644 index b88d12ec5..000000000 Binary files a/assets/images/initiatives/CS193_Logo.png and /dev/null differ diff --git a/assets/images/initiatives/Ei-sc-github.svg b/assets/images/initiatives/Ei-sc-github.svg new file mode 100644 index 000000000..e9164b015 --- /dev/null +++ b/assets/images/initiatives/Ei-sc-github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/images/initiatives/Help_Room_Logo.png b/assets/images/initiatives/Help_Room_Logo.png deleted file mode 100644 index fe6f0f3e6..000000000 Binary files a/assets/images/initiatives/Help_Room_Logo.png and /dev/null differ diff --git a/assets/images/initiatives/Mentorship.png b/assets/images/initiatives/Mentorship.png deleted file mode 100644 index 6fa3f8b8e..000000000 Binary files a/assets/images/initiatives/Mentorship.png and /dev/null differ diff --git a/assets/images/initiatives/Office_Hours_Logo.png b/assets/images/initiatives/Office_Hours_Logo.png deleted file mode 100644 index 9a90ef691..000000000 Binary files a/assets/images/initiatives/Office_Hours_Logo.png and /dev/null differ diff --git a/assets/images/initiatives/Virtual_Office_Hours_Logo.png b/assets/images/initiatives/Virtual_Office_Hours_Logo.png deleted file mode 100644 index a812da16e..000000000 Binary files a/assets/images/initiatives/Virtual_Office_Hours_Logo.png and /dev/null differ diff --git a/assets/images/initiatives/png/Blog_Initiative.PNG b/assets/images/initiatives/png/Blog_Initiative.PNG new file mode 100644 index 000000000..025457709 Binary files /dev/null and b/assets/images/initiatives/png/Blog_Initiative.PNG differ diff --git a/assets/images/initiatives/CS191_Panel_Logo.png b/assets/images/initiatives/png/CS191_Panel_Logo.png similarity index 100% rename from assets/images/initiatives/CS191_Panel_Logo.png rename to assets/images/initiatives/png/CS191_Panel_Logo.png diff --git a/assets/images/initiatives/png/CS193_Logo.png b/assets/images/initiatives/png/CS193_Logo.png new file mode 100644 index 000000000..2fa37bb75 Binary files /dev/null and b/assets/images/initiatives/png/CS193_Logo.png differ diff --git a/assets/images/initiatives/png/Help_Room_Logo.png b/assets/images/initiatives/png/Help_Room_Logo.png new file mode 100644 index 000000000..2f84e6ae8 Binary files /dev/null and b/assets/images/initiatives/png/Help_Room_Logo.png differ diff --git a/assets/images/initiatives/png/International-Initiative.png b/assets/images/initiatives/png/International-Initiative.png new file mode 100644 index 000000000..f2fb2e78a Binary files /dev/null and b/assets/images/initiatives/png/International-Initiative.png differ diff --git a/assets/images/initiatives/png/Mentorship.png b/assets/images/initiatives/png/Mentorship.png new file mode 100644 index 000000000..5d1d03b14 Binary files /dev/null and b/assets/images/initiatives/png/Mentorship.png differ diff --git a/assets/images/initiatives/png/Office_Hours_Logo.png b/assets/images/initiatives/png/Office_Hours_Logo.png new file mode 100644 index 000000000..d922dd209 Binary files /dev/null and b/assets/images/initiatives/png/Office_Hours_Logo.png differ diff --git a/assets/images/initiatives/Student_Forum_Logo.png b/assets/images/initiatives/png/Student_Forum_Logo.png similarity index 100% rename from assets/images/initiatives/Student_Forum_Logo.png rename to assets/images/initiatives/png/Student_Forum_Logo.png diff --git a/assets/images/initiatives/Tutor_List.png b/assets/images/initiatives/png/Tutor_List.png similarity index 98% rename from assets/images/initiatives/Tutor_List.png rename to assets/images/initiatives/png/Tutor_List.png index c3d204857..e6b1a7d14 100644 Binary files a/assets/images/initiatives/Tutor_List.png and b/assets/images/initiatives/png/Tutor_List.png differ diff --git a/assets/images/initiatives/png/Virtual_Office_Hours_Logo.png b/assets/images/initiatives/png/Virtual_Office_Hours_Logo.png new file mode 100644 index 000000000..f3c58412c Binary files /dev/null and b/assets/images/initiatives/png/Virtual_Office_Hours_Logo.png differ diff --git a/assets/images/initiatives/png/letter_image.png b/assets/images/initiatives/png/letter_image.png new file mode 100644 index 000000000..5bd09f289 Binary files /dev/null and b/assets/images/initiatives/png/letter_image.png differ diff --git a/assets/images/initiatives/webp/Blog_Initiative.webp b/assets/images/initiatives/webp/Blog_Initiative.webp new file mode 100644 index 000000000..6025c1c1c Binary files /dev/null and b/assets/images/initiatives/webp/Blog_Initiative.webp differ diff --git a/assets/images/initiatives/webp/CS191_Panel_Logo.webp b/assets/images/initiatives/webp/CS191_Panel_Logo.webp new file mode 100644 index 000000000..e28187cc9 Binary files /dev/null and b/assets/images/initiatives/webp/CS191_Panel_Logo.webp differ diff --git a/assets/images/initiatives/webp/CS193_Logo.webp b/assets/images/initiatives/webp/CS193_Logo.webp new file mode 100644 index 000000000..4cd87aaa6 Binary files /dev/null and b/assets/images/initiatives/webp/CS193_Logo.webp differ diff --git a/assets/images/initiatives/webp/Help_Room_Logo.webp b/assets/images/initiatives/webp/Help_Room_Logo.webp new file mode 100644 index 000000000..89869ce04 Binary files /dev/null and b/assets/images/initiatives/webp/Help_Room_Logo.webp differ diff --git a/assets/images/initiatives/webp/International-Initiative.webp b/assets/images/initiatives/webp/International-Initiative.webp new file mode 100644 index 000000000..36e1b91ae Binary files /dev/null and b/assets/images/initiatives/webp/International-Initiative.webp differ diff --git a/assets/images/initiatives/webp/Mentorship.webp b/assets/images/initiatives/webp/Mentorship.webp new file mode 100644 index 000000000..39c21a4a9 Binary files /dev/null and b/assets/images/initiatives/webp/Mentorship.webp differ diff --git a/assets/images/initiatives/webp/Office_Hours_Logo.webp b/assets/images/initiatives/webp/Office_Hours_Logo.webp new file mode 100644 index 000000000..34ad7c3bd Binary files /dev/null and b/assets/images/initiatives/webp/Office_Hours_Logo.webp differ diff --git a/assets/images/initiatives/webp/Student_Forum_Logo.webp b/assets/images/initiatives/webp/Student_Forum_Logo.webp new file mode 100644 index 000000000..e273032ce Binary files /dev/null and b/assets/images/initiatives/webp/Student_Forum_Logo.webp differ diff --git a/assets/images/initiatives/webp/Tutor_List.webp b/assets/images/initiatives/webp/Tutor_List.webp new file mode 100644 index 000000000..df6cd9b5b Binary files /dev/null and b/assets/images/initiatives/webp/Tutor_List.webp differ diff --git a/assets/images/initiatives/webp/Virtual_Office_Hours_Logo.webp b/assets/images/initiatives/webp/Virtual_Office_Hours_Logo.webp new file mode 100644 index 000000000..f43455c64 Binary files /dev/null and b/assets/images/initiatives/webp/Virtual_Office_Hours_Logo.webp differ diff --git a/assets/images/initiatives/webp/letter_image.webp b/assets/images/initiatives/webp/letter_image.webp new file mode 100644 index 000000000..6e5435de2 Binary files /dev/null and b/assets/images/initiatives/webp/letter_image.webp differ diff --git a/assets/images/jekyll.svg b/assets/images/jekyll.svg new file mode 100644 index 000000000..0e2509fab --- /dev/null +++ b/assets/images/jekyll.svg @@ -0,0 +1,165 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/logos/android-chrome-192x192.webp b/assets/images/logos/android-chrome-192x192.webp new file mode 100644 index 000000000..612d5d82f Binary files /dev/null and b/assets/images/logos/android-chrome-192x192.webp differ diff --git a/assets/images/logos/android-chrome-512x512.webp b/assets/images/logos/android-chrome-512x512.webp new file mode 100644 index 000000000..70205a0f0 Binary files /dev/null and b/assets/images/logos/android-chrome-512x512.webp differ diff --git a/assets/images/logos/apple-touch-icon.png b/assets/images/logos/apple-touch-icon.png new file mode 100644 index 000000000..ba35e322d Binary files /dev/null and b/assets/images/logos/apple-touch-icon.png differ diff --git a/assets/images/logos/dark_logo.svg b/assets/images/logos/dark_logo.svg deleted file mode 100644 index 0d28da229..000000000 --- a/assets/images/logos/dark_logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/images/logos/favicon-16x16.png b/assets/images/logos/favicon-16x16.png new file mode 100644 index 000000000..a053e5cbf Binary files /dev/null and b/assets/images/logos/favicon-16x16.png differ diff --git a/assets/images/logos/favicon-32x32.png b/assets/images/logos/favicon-32x32.png new file mode 100644 index 000000000..6c35ab9e5 Binary files /dev/null and b/assets/images/logos/favicon-32x32.png differ diff --git a/favicon.ico b/assets/images/logos/favicon.ico similarity index 100% rename from favicon.ico rename to assets/images/logos/favicon.ico diff --git a/assets/images/logos/light_logo.svg b/assets/images/logos/light_logo.svg deleted file mode 100644 index 1d82796f3..000000000 --- a/assets/images/logos/light_logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/images/logos/socialmedia/facebook.svg b/assets/images/logos/socialmedia/facebook.svg new file mode 100644 index 000000000..327049b4d --- /dev/null +++ b/assets/images/logos/socialmedia/facebook.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/logos/socialmedia/github.svg b/assets/images/logos/socialmedia/github.svg new file mode 100644 index 000000000..55f3a1d29 --- /dev/null +++ b/assets/images/logos/socialmedia/github.svg @@ -0,0 +1,80 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/assets/images/logos/socialmedia/instagram.svg b/assets/images/logos/socialmedia/instagram.svg new file mode 100644 index 000000000..220945bbd --- /dev/null +++ b/assets/images/logos/socialmedia/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/images/logos/socialmedia/reddit.svg b/assets/images/logos/socialmedia/reddit.svg new file mode 100644 index 000000000..edd3c2b88 --- /dev/null +++ b/assets/images/logos/socialmedia/reddit.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/logos/socialmedia/twitter.svg b/assets/images/logos/socialmedia/twitter.svg new file mode 100644 index 000000000..a3c205ea9 --- /dev/null +++ b/assets/images/logos/socialmedia/twitter.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/logos/square/dark_mono_nobg.svg b/assets/images/logos/square/dark_mono_nobg.svg new file mode 100644 index 000000000..7e614f6ab --- /dev/null +++ b/assets/images/logos/square/dark_mono_nobg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/logos/square/dark_mono_rounded.svg b/assets/images/logos/square/dark_mono_rounded.svg new file mode 100644 index 000000000..d0c0c11c4 --- /dev/null +++ b/assets/images/logos/square/dark_mono_rounded.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/logos/square/dark_mono_rounded_small.webp b/assets/images/logos/square/dark_mono_rounded_small.webp new file mode 100644 index 000000000..438fa4a56 Binary files /dev/null and b/assets/images/logos/square/dark_mono_rounded_small.webp differ diff --git a/assets/images/logos/square/dark_nobg.svg b/assets/images/logos/square/dark_nobg.svg new file mode 100644 index 000000000..024b38a93 --- /dev/null +++ b/assets/images/logos/square/dark_nobg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/logos/square/dark_rounded.svg b/assets/images/logos/square/dark_rounded.svg new file mode 100644 index 000000000..a61ba9419 --- /dev/null +++ b/assets/images/logos/square/dark_rounded.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/logos/square/light_mono_nobg.svg b/assets/images/logos/square/light_mono_nobg.svg new file mode 100644 index 000000000..2c788caf0 --- /dev/null +++ b/assets/images/logos/square/light_mono_nobg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/logos/square/light_mono_rounded.svg b/assets/images/logos/square/light_mono_rounded.svg new file mode 100644 index 000000000..afcf905a2 --- /dev/null +++ b/assets/images/logos/square/light_mono_rounded.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/logos/square/light_nobg.svg b/assets/images/logos/square/light_nobg.svg new file mode 100644 index 000000000..b7b1136b2 --- /dev/null +++ b/assets/images/logos/square/light_nobg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/logos/square/light_rounded.svg b/assets/images/logos/square/light_rounded.svg new file mode 100644 index 000000000..9ba1cd98c --- /dev/null +++ b/assets/images/logos/square/light_rounded.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/logos/wordmark/dark.svg b/assets/images/logos/wordmark/dark.svg new file mode 100644 index 000000000..08f4da7fe --- /dev/null +++ b/assets/images/logos/wordmark/dark.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/logos/wordmark/dark_mono.svg b/assets/images/logos/wordmark/dark_mono.svg new file mode 100644 index 000000000..5ca729801 --- /dev/null +++ b/assets/images/logos/wordmark/dark_mono.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/images/logos/wordmark/dark_mono_nobg.svg b/assets/images/logos/wordmark/dark_mono_nobg.svg new file mode 100644 index 000000000..e7b80d78c --- /dev/null +++ b/assets/images/logos/wordmark/dark_mono_nobg.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/logos/wordmark/dark_mono_nobg_small.webp b/assets/images/logos/wordmark/dark_mono_nobg_small.webp new file mode 100644 index 000000000..47d4ebbde Binary files /dev/null and b/assets/images/logos/wordmark/dark_mono_nobg_small.webp differ diff --git a/assets/images/logos/wordmark/dark_nobg.svg b/assets/images/logos/wordmark/dark_nobg.svg new file mode 100644 index 000000000..2a2e3f275 --- /dev/null +++ b/assets/images/logos/wordmark/dark_nobg.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/assets/images/logos/wordmark/light.svg b/assets/images/logos/wordmark/light.svg new file mode 100644 index 000000000..2b5e7deb8 --- /dev/null +++ b/assets/images/logos/wordmark/light.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/images/logos/wordmark/light_mono.svg b/assets/images/logos/wordmark/light_mono.svg new file mode 100644 index 000000000..df116a6f8 --- /dev/null +++ b/assets/images/logos/wordmark/light_mono.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/images/logos/wordmark/light_mono_nobg.svg b/assets/images/logos/wordmark/light_mono_nobg.svg new file mode 100644 index 000000000..bef61f13c --- /dev/null +++ b/assets/images/logos/wordmark/light_mono_nobg.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/logos/wordmark/light_nobg.svg b/assets/images/logos/wordmark/light_nobg.svg new file mode 100644 index 000000000..9d96e875f --- /dev/null +++ b/assets/images/logos/wordmark/light_nobg.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/images/megaphone.svg b/assets/images/megaphone.svg new file mode 100644 index 000000000..fe9199daf --- /dev/null +++ b/assets/images/megaphone.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/images/members/Albert.jpg b/assets/images/members/Albert.jpg deleted file mode 100644 index de8b1fa2b..000000000 Binary files a/assets/images/members/Albert.jpg and /dev/null differ diff --git a/assets/images/members/Arianna.jpg b/assets/images/members/Arianna.jpg deleted file mode 100644 index 3ff635aea..000000000 Binary files a/assets/images/members/Arianna.jpg and /dev/null differ diff --git a/assets/images/members/Arya.jpg b/assets/images/members/Arya.jpg deleted file mode 100644 index 883915d99..000000000 Binary files a/assets/images/members/Arya.jpg and /dev/null differ diff --git a/assets/images/members/CJ.jpg b/assets/images/members/CJ.jpg deleted file mode 100644 index f7bf32f2b..000000000 Binary files a/assets/images/members/CJ.jpg and /dev/null differ diff --git a/assets/images/members/Caleb.jpg b/assets/images/members/Caleb.jpg deleted file mode 100644 index 4ccd386db..000000000 Binary files a/assets/images/members/Caleb.jpg and /dev/null differ diff --git a/assets/images/members/Christopher.jpg b/assets/images/members/Christopher.jpg deleted file mode 100644 index b06de7fb1..000000000 Binary files a/assets/images/members/Christopher.jpg and /dev/null differ diff --git a/assets/images/members/Cindy.jpg b/assets/images/members/Cindy.jpg deleted file mode 100644 index 58fe1ce8d..000000000 Binary files a/assets/images/members/Cindy.jpg and /dev/null differ diff --git a/assets/images/members/Lauren.jpg b/assets/images/members/Lauren.jpg deleted file mode 100644 index ec79c8af1..000000000 Binary files a/assets/images/members/Lauren.jpg and /dev/null differ diff --git a/assets/images/members/Neerali.jpg b/assets/images/members/Neerali.jpg deleted file mode 100644 index 9ec97303a..000000000 Binary files a/assets/images/members/Neerali.jpg and /dev/null differ diff --git a/assets/images/members/Noah.jpg b/assets/images/members/Noah.jpg deleted file mode 100644 index eaa9ce3c9..000000000 Binary files a/assets/images/members/Noah.jpg and /dev/null differ diff --git a/assets/images/members/None.jpg b/assets/images/members/None.jpg deleted file mode 100644 index 800e5b60b..000000000 Binary files a/assets/images/members/None.jpg and /dev/null differ diff --git a/assets/images/members/Pallav.jpg b/assets/images/members/Pallav.jpg deleted file mode 100644 index 1bb485730..000000000 Binary files a/assets/images/members/Pallav.jpg and /dev/null differ diff --git a/assets/images/members/Pinaki.jpg b/assets/images/members/Pinaki.jpg deleted file mode 100644 index 25833079a..000000000 Binary files a/assets/images/members/Pinaki.jpg and /dev/null differ diff --git a/assets/images/members/Riley.jpg b/assets/images/members/Riley.jpg deleted file mode 100644 index 37838d414..000000000 Binary files a/assets/images/members/Riley.jpg and /dev/null differ diff --git a/assets/images/members/Sagar.jpg b/assets/images/members/Sagar.jpg deleted file mode 100644 index fd29b6612..000000000 Binary files a/assets/images/members/Sagar.jpg and /dev/null differ diff --git a/assets/images/members/Sarah.jpg b/assets/images/members/Sarah.jpg deleted file mode 100644 index 09734ffdd..000000000 Binary files a/assets/images/members/Sarah.jpg and /dev/null differ diff --git a/assets/images/members/Sean.jpg b/assets/images/members/Sean.jpg deleted file mode 100644 index 60cf75edf..000000000 Binary files a/assets/images/members/Sean.jpg and /dev/null differ diff --git a/assets/images/members/Sera.jpg b/assets/images/members/Sera.jpg deleted file mode 100644 index 12a3ea9b3..000000000 Binary files a/assets/images/members/Sera.jpg and /dev/null differ diff --git a/assets/images/members/Simran.jpg b/assets/images/members/Simran.jpg deleted file mode 100644 index dadded818..000000000 Binary files a/assets/images/members/Simran.jpg and /dev/null differ diff --git a/assets/images/members/Sweta.jpg b/assets/images/members/Sweta.jpg deleted file mode 100644 index 5d905abe7..000000000 Binary files a/assets/images/members/Sweta.jpg and /dev/null differ diff --git a/assets/images/members/png/Albert-Zhong.png b/assets/images/members/png/Albert-Zhong.png new file mode 100644 index 000000000..2e8cb6218 Binary files /dev/null and b/assets/images/members/png/Albert-Zhong.png differ diff --git a/assets/images/members/png/Anisha-Bhat.png b/assets/images/members/png/Anisha-Bhat.png new file mode 100644 index 000000000..d0bc8d13c Binary files /dev/null and b/assets/images/members/png/Anisha-Bhat.png differ diff --git a/assets/images/members/png/Anushka-Sharma.png b/assets/images/members/png/Anushka-Sharma.png new file mode 100644 index 000000000..deafb2cfa Binary files /dev/null and b/assets/images/members/png/Anushka-Sharma.png differ diff --git a/assets/images/members/png/Arianna-Smith.png b/assets/images/members/png/Arianna-Smith.png new file mode 100644 index 000000000..0b16a4d0c Binary files /dev/null and b/assets/images/members/png/Arianna-Smith.png differ diff --git a/assets/images/members/png/Arya-Sharma.png b/assets/images/members/png/Arya-Sharma.png new file mode 100644 index 000000000..76915031c Binary files /dev/null and b/assets/images/members/png/Arya-Sharma.png differ diff --git a/assets/images/members/png/Blisha-Molin-Mohan-Das.png b/assets/images/members/png/Blisha-Molin-Mohan-Das.png new file mode 100644 index 000000000..c678063d1 Binary files /dev/null and b/assets/images/members/png/Blisha-Molin-Mohan-Das.png differ diff --git a/assets/images/members/png/Brayden-Brackett.png b/assets/images/members/png/Brayden-Brackett.png new file mode 100644 index 000000000..290038757 Binary files /dev/null and b/assets/images/members/png/Brayden-Brackett.png differ diff --git a/assets/images/members/png/CJ-Enright.png b/assets/images/members/png/CJ-Enright.png new file mode 100644 index 000000000..6471d1fa0 Binary files /dev/null and b/assets/images/members/png/CJ-Enright.png differ diff --git a/assets/images/members/png/Caleb-Ahn.png b/assets/images/members/png/Caleb-Ahn.png new file mode 100644 index 000000000..bd1235e92 Binary files /dev/null and b/assets/images/members/png/Caleb-Ahn.png differ diff --git a/assets/images/members/png/Christopher-Lehman.png b/assets/images/members/png/Christopher-Lehman.png new file mode 100644 index 000000000..267706227 Binary files /dev/null and b/assets/images/members/png/Christopher-Lehman.png differ diff --git a/assets/images/members/png/Cindy-Ding.png b/assets/images/members/png/Cindy-Ding.png new file mode 100644 index 000000000..86b9b912c Binary files /dev/null and b/assets/images/members/png/Cindy-Ding.png differ diff --git a/assets/images/members/png/Eddie-Kim.png b/assets/images/members/png/Eddie-Kim.png new file mode 100644 index 000000000..dd0b6787d Binary files /dev/null and b/assets/images/members/png/Eddie-Kim.png differ diff --git a/assets/images/members/png/Elijah-Colwill.png b/assets/images/members/png/Elijah-Colwill.png new file mode 100644 index 000000000..b4674ebac Binary files /dev/null and b/assets/images/members/png/Elijah-Colwill.png differ diff --git a/assets/images/members/png/Emily-Hao.png b/assets/images/members/png/Emily-Hao.png new file mode 100644 index 000000000..272e2525a Binary files /dev/null and b/assets/images/members/png/Emily-Hao.png differ diff --git a/assets/images/members/png/Gowri-Harish.png b/assets/images/members/png/Gowri-Harish.png new file mode 100644 index 000000000..52c0ba600 Binary files /dev/null and b/assets/images/members/png/Gowri-Harish.png differ diff --git a/assets/images/members/png/Grace-Keeton.png b/assets/images/members/png/Grace-Keeton.png new file mode 100644 index 000000000..b9eb54403 Binary files /dev/null and b/assets/images/members/png/Grace-Keeton.png differ diff --git a/assets/images/members/png/Ishika-Kamchetty.png b/assets/images/members/png/Ishika-Kamchetty.png new file mode 100644 index 000000000..2f6cfff4b Binary files /dev/null and b/assets/images/members/png/Ishika-Kamchetty.png differ diff --git a/assets/images/members/png/Jillian-Urgello.png b/assets/images/members/png/Jillian-Urgello.png new file mode 100644 index 000000000..d8a41a583 Binary files /dev/null and b/assets/images/members/png/Jillian-Urgello.png differ diff --git a/assets/images/members/png/Lauren-Lum.png b/assets/images/members/png/Lauren-Lum.png new file mode 100644 index 000000000..870f89974 Binary files /dev/null and b/assets/images/members/png/Lauren-Lum.png differ diff --git a/assets/images/members/png/Mason-Adams.png b/assets/images/members/png/Mason-Adams.png new file mode 100644 index 000000000..a0a4579e0 Binary files /dev/null and b/assets/images/members/png/Mason-Adams.png differ diff --git a/assets/images/members/png/Megan-Walsh.png b/assets/images/members/png/Megan-Walsh.png new file mode 100644 index 000000000..8ad1e024a Binary files /dev/null and b/assets/images/members/png/Megan-Walsh.png differ diff --git a/assets/images/members/png/Neerali-Shah.png b/assets/images/members/png/Neerali-Shah.png new file mode 100644 index 000000000..658ab0ce7 Binary files /dev/null and b/assets/images/members/png/Neerali-Shah.png differ diff --git a/assets/images/members/png/Noah-Alderton.png b/assets/images/members/png/Noah-Alderton.png new file mode 100644 index 000000000..870294866 Binary files /dev/null and b/assets/images/members/png/Noah-Alderton.png differ diff --git a/assets/images/members/png/None.png b/assets/images/members/png/None.png new file mode 100644 index 000000000..339212b7d Binary files /dev/null and b/assets/images/members/png/None.png differ diff --git a/assets/images/members/png/Pallav-Agarwal.png b/assets/images/members/png/Pallav-Agarwal.png new file mode 100644 index 000000000..ee45b6463 Binary files /dev/null and b/assets/images/members/png/Pallav-Agarwal.png differ diff --git a/assets/images/members/png/Pinaki-Mohanty.png b/assets/images/members/png/Pinaki-Mohanty.png new file mode 100644 index 000000000..3c8b004c3 Binary files /dev/null and b/assets/images/members/png/Pinaki-Mohanty.png differ diff --git a/assets/images/members/png/Pooja-Mathi.png b/assets/images/members/png/Pooja-Mathi.png new file mode 100644 index 000000000..6ee5b343e Binary files /dev/null and b/assets/images/members/png/Pooja-Mathi.png differ diff --git a/assets/images/members/png/Riley-McKeever.png b/assets/images/members/png/Riley-McKeever.png new file mode 100644 index 000000000..badaf82a3 Binary files /dev/null and b/assets/images/members/png/Riley-McKeever.png differ diff --git a/assets/images/members/png/Riya-Verma.png b/assets/images/members/png/Riya-Verma.png new file mode 100644 index 000000000..998d59c8c Binary files /dev/null and b/assets/images/members/png/Riya-Verma.png differ diff --git a/assets/images/members/png/Rohan-Purandare.png b/assets/images/members/png/Rohan-Purandare.png new file mode 100644 index 000000000..4cbbaefcf Binary files /dev/null and b/assets/images/members/png/Rohan-Purandare.png differ diff --git a/assets/images/members/png/Sagar-Nattuvetty.png b/assets/images/members/png/Sagar-Nattuvetty.png new file mode 100644 index 000000000..1ee3b8464 Binary files /dev/null and b/assets/images/members/png/Sagar-Nattuvetty.png differ diff --git a/assets/images/members/png/Sarah-Pushparaj.png b/assets/images/members/png/Sarah-Pushparaj.png new file mode 100644 index 000000000..1eb20f4ee Binary files /dev/null and b/assets/images/members/png/Sarah-Pushparaj.png differ diff --git a/assets/images/members/png/Sarah-Thomas.png b/assets/images/members/png/Sarah-Thomas.png new file mode 100644 index 000000000..23bd50c92 Binary files /dev/null and b/assets/images/members/png/Sarah-Thomas.png differ diff --git a/assets/images/members/png/Sean-Flannery.png b/assets/images/members/png/Sean-Flannery.png new file mode 100644 index 000000000..11d6f6539 Binary files /dev/null and b/assets/images/members/png/Sean-Flannery.png differ diff --git "a/assets/images/members/png/Sera-Sava\305\237.png" "b/assets/images/members/png/Sera-Sava\305\237.png" new file mode 100644 index 000000000..300930be5 Binary files /dev/null and "b/assets/images/members/png/Sera-Sava\305\237.png" differ diff --git a/assets/images/members/png/Shashank-Kumar.png b/assets/images/members/png/Shashank-Kumar.png new file mode 100644 index 000000000..4a6314545 Binary files /dev/null and b/assets/images/members/png/Shashank-Kumar.png differ diff --git a/assets/images/members/png/Simran-Kadadi.png b/assets/images/members/png/Simran-Kadadi.png new file mode 100644 index 000000000..5cf4298be Binary files /dev/null and b/assets/images/members/png/Simran-Kadadi.png differ diff --git a/assets/images/members/png/Sweta-Saravanan.png b/assets/images/members/png/Sweta-Saravanan.png new file mode 100644 index 000000000..d15a8d234 Binary files /dev/null and b/assets/images/members/png/Sweta-Saravanan.png differ diff --git a/assets/images/members/png/Theo-Park.png b/assets/images/members/png/Theo-Park.png new file mode 100644 index 000000000..3b335d5f0 Binary files /dev/null and b/assets/images/members/png/Theo-Park.png differ diff --git a/assets/images/members/png/Tiffany-Kuang.png b/assets/images/members/png/Tiffany-Kuang.png new file mode 100644 index 000000000..f694d28a3 Binary files /dev/null and b/assets/images/members/png/Tiffany-Kuang.png differ diff --git a/assets/images/members/png/Vindhya-Banda.png b/assets/images/members/png/Vindhya-Banda.png new file mode 100644 index 000000000..3360936f1 Binary files /dev/null and b/assets/images/members/png/Vindhya-Banda.png differ diff --git a/assets/images/members/png/Wei-Yi-Tan.png b/assets/images/members/png/Wei-Yi-Tan.png new file mode 100644 index 000000000..75959ca32 Binary files /dev/null and b/assets/images/members/png/Wei-Yi-Tan.png differ diff --git a/assets/images/members/png/Zach-Bryant.png b/assets/images/members/png/Zach-Bryant.png new file mode 100644 index 000000000..e3cd247d0 Binary files /dev/null and b/assets/images/members/png/Zach-Bryant.png differ diff --git a/assets/images/members/webp/Albert-Zhong.webp b/assets/images/members/webp/Albert-Zhong.webp new file mode 100644 index 000000000..a9715dc49 Binary files /dev/null and b/assets/images/members/webp/Albert-Zhong.webp differ diff --git a/assets/images/members/webp/Anisha-Bhat.webp b/assets/images/members/webp/Anisha-Bhat.webp new file mode 100644 index 000000000..4a80aa2f6 Binary files /dev/null and b/assets/images/members/webp/Anisha-Bhat.webp differ diff --git a/assets/images/members/webp/Anushka-Sharma.webp b/assets/images/members/webp/Anushka-Sharma.webp new file mode 100644 index 000000000..50d8f8090 Binary files /dev/null and b/assets/images/members/webp/Anushka-Sharma.webp differ diff --git a/assets/images/members/webp/Arianna-Smith.webp b/assets/images/members/webp/Arianna-Smith.webp new file mode 100644 index 000000000..8e67692cf Binary files /dev/null and b/assets/images/members/webp/Arianna-Smith.webp differ diff --git a/assets/images/members/webp/Arya-Sharma.webp b/assets/images/members/webp/Arya-Sharma.webp new file mode 100644 index 000000000..d1bc2a179 Binary files /dev/null and b/assets/images/members/webp/Arya-Sharma.webp differ diff --git a/assets/images/members/webp/Blisha-Molin-Mohan-Das.webp b/assets/images/members/webp/Blisha-Molin-Mohan-Das.webp new file mode 100644 index 000000000..553ffe42d Binary files /dev/null and b/assets/images/members/webp/Blisha-Molin-Mohan-Das.webp differ diff --git a/assets/images/members/webp/Brayden-Brackett.webp b/assets/images/members/webp/Brayden-Brackett.webp new file mode 100644 index 000000000..f66c0917a Binary files /dev/null and b/assets/images/members/webp/Brayden-Brackett.webp differ diff --git a/assets/images/members/webp/CJ-Enright.webp b/assets/images/members/webp/CJ-Enright.webp new file mode 100644 index 000000000..76248369c Binary files /dev/null and b/assets/images/members/webp/CJ-Enright.webp differ diff --git a/assets/images/members/webp/Caleb-Ahn.webp b/assets/images/members/webp/Caleb-Ahn.webp new file mode 100644 index 000000000..34de63e69 Binary files /dev/null and b/assets/images/members/webp/Caleb-Ahn.webp differ diff --git a/assets/images/members/webp/Christopher-Lehman.webp b/assets/images/members/webp/Christopher-Lehman.webp new file mode 100644 index 000000000..61c832648 Binary files /dev/null and b/assets/images/members/webp/Christopher-Lehman.webp differ diff --git a/assets/images/members/webp/Cindy-Ding.webp b/assets/images/members/webp/Cindy-Ding.webp new file mode 100644 index 000000000..c1d83fc23 Binary files /dev/null and b/assets/images/members/webp/Cindy-Ding.webp differ diff --git a/assets/images/members/webp/Eddie-Kim.webp b/assets/images/members/webp/Eddie-Kim.webp new file mode 100644 index 000000000..45d12da20 Binary files /dev/null and b/assets/images/members/webp/Eddie-Kim.webp differ diff --git a/assets/images/members/webp/Elijah-Colwill.webp b/assets/images/members/webp/Elijah-Colwill.webp new file mode 100644 index 000000000..5da5497c9 Binary files /dev/null and b/assets/images/members/webp/Elijah-Colwill.webp differ diff --git a/assets/images/members/webp/Emily-Hao.webp b/assets/images/members/webp/Emily-Hao.webp new file mode 100644 index 000000000..073f1d950 Binary files /dev/null and b/assets/images/members/webp/Emily-Hao.webp differ diff --git a/assets/images/members/webp/Gowri-Harish.webp b/assets/images/members/webp/Gowri-Harish.webp new file mode 100644 index 000000000..9a7ed88e6 Binary files /dev/null and b/assets/images/members/webp/Gowri-Harish.webp differ diff --git a/assets/images/members/webp/Grace-Keeton.webp b/assets/images/members/webp/Grace-Keeton.webp new file mode 100644 index 000000000..08103015e Binary files /dev/null and b/assets/images/members/webp/Grace-Keeton.webp differ diff --git a/assets/images/members/webp/Ishika-Kamchetty.webp b/assets/images/members/webp/Ishika-Kamchetty.webp new file mode 100644 index 000000000..1bd119b3e Binary files /dev/null and b/assets/images/members/webp/Ishika-Kamchetty.webp differ diff --git a/assets/images/members/webp/Jillian-Urgello.webp b/assets/images/members/webp/Jillian-Urgello.webp new file mode 100644 index 000000000..7fa0de707 Binary files /dev/null and b/assets/images/members/webp/Jillian-Urgello.webp differ diff --git a/assets/images/members/webp/Lauren-Lum.webp b/assets/images/members/webp/Lauren-Lum.webp new file mode 100644 index 000000000..57417f758 Binary files /dev/null and b/assets/images/members/webp/Lauren-Lum.webp differ diff --git a/assets/images/members/webp/Mason-Adams.webp b/assets/images/members/webp/Mason-Adams.webp new file mode 100644 index 000000000..4585d4eae Binary files /dev/null and b/assets/images/members/webp/Mason-Adams.webp differ diff --git a/assets/images/members/webp/Megan-Walsh.webp b/assets/images/members/webp/Megan-Walsh.webp new file mode 100644 index 000000000..5d874676d Binary files /dev/null and b/assets/images/members/webp/Megan-Walsh.webp differ diff --git a/assets/images/members/webp/Neerali-Shah.webp b/assets/images/members/webp/Neerali-Shah.webp new file mode 100644 index 000000000..553a9a844 Binary files /dev/null and b/assets/images/members/webp/Neerali-Shah.webp differ diff --git a/assets/images/members/webp/Noah-Alderton.webp b/assets/images/members/webp/Noah-Alderton.webp new file mode 100644 index 000000000..a7a2e9dbe Binary files /dev/null and b/assets/images/members/webp/Noah-Alderton.webp differ diff --git a/assets/images/members/webp/None.webp b/assets/images/members/webp/None.webp new file mode 100644 index 000000000..cb036ec5f Binary files /dev/null and b/assets/images/members/webp/None.webp differ diff --git a/assets/images/members/webp/Pallav-Agarwal.webp b/assets/images/members/webp/Pallav-Agarwal.webp new file mode 100644 index 000000000..fb617702e Binary files /dev/null and b/assets/images/members/webp/Pallav-Agarwal.webp differ diff --git a/assets/images/members/webp/Pinaki-Mohanty.webp b/assets/images/members/webp/Pinaki-Mohanty.webp new file mode 100644 index 000000000..f01282ee6 Binary files /dev/null and b/assets/images/members/webp/Pinaki-Mohanty.webp differ diff --git a/assets/images/members/webp/Pooja-Mathi.webp b/assets/images/members/webp/Pooja-Mathi.webp new file mode 100644 index 000000000..f68f70f72 Binary files /dev/null and b/assets/images/members/webp/Pooja-Mathi.webp differ diff --git a/assets/images/members/webp/Riley-McKeever.webp b/assets/images/members/webp/Riley-McKeever.webp new file mode 100644 index 000000000..224f56638 Binary files /dev/null and b/assets/images/members/webp/Riley-McKeever.webp differ diff --git a/assets/images/members/webp/Riya-Verma.webp b/assets/images/members/webp/Riya-Verma.webp new file mode 100644 index 000000000..80cfbc5e1 Binary files /dev/null and b/assets/images/members/webp/Riya-Verma.webp differ diff --git a/assets/images/members/webp/Rohan-Purandare.webp b/assets/images/members/webp/Rohan-Purandare.webp new file mode 100644 index 000000000..2979e8380 Binary files /dev/null and b/assets/images/members/webp/Rohan-Purandare.webp differ diff --git a/assets/images/members/webp/Sagar-Nattuvetty.webp b/assets/images/members/webp/Sagar-Nattuvetty.webp new file mode 100644 index 000000000..60e2bfa66 Binary files /dev/null and b/assets/images/members/webp/Sagar-Nattuvetty.webp differ diff --git a/assets/images/members/webp/Sarah-Pushparaj.webp b/assets/images/members/webp/Sarah-Pushparaj.webp new file mode 100644 index 000000000..8c7585424 Binary files /dev/null and b/assets/images/members/webp/Sarah-Pushparaj.webp differ diff --git a/assets/images/members/webp/Sarah-Thomas.webp b/assets/images/members/webp/Sarah-Thomas.webp new file mode 100644 index 000000000..a105cfbff Binary files /dev/null and b/assets/images/members/webp/Sarah-Thomas.webp differ diff --git a/assets/images/members/webp/Sean-Flannery.webp b/assets/images/members/webp/Sean-Flannery.webp new file mode 100644 index 000000000..1af643ff9 Binary files /dev/null and b/assets/images/members/webp/Sean-Flannery.webp differ diff --git "a/assets/images/members/webp/Sera-Sava\305\237.webp" "b/assets/images/members/webp/Sera-Sava\305\237.webp" new file mode 100644 index 000000000..4cce63d32 Binary files /dev/null and "b/assets/images/members/webp/Sera-Sava\305\237.webp" differ diff --git a/assets/images/members/webp/Shashank-Kumar.webp b/assets/images/members/webp/Shashank-Kumar.webp new file mode 100644 index 000000000..e3bf0d800 Binary files /dev/null and b/assets/images/members/webp/Shashank-Kumar.webp differ diff --git a/assets/images/members/webp/Simran-Kadadi.webp b/assets/images/members/webp/Simran-Kadadi.webp new file mode 100644 index 000000000..9c0b1497b Binary files /dev/null and b/assets/images/members/webp/Simran-Kadadi.webp differ diff --git a/assets/images/members/webp/Sweta-Saravanan.webp b/assets/images/members/webp/Sweta-Saravanan.webp new file mode 100644 index 000000000..6abad4b57 Binary files /dev/null and b/assets/images/members/webp/Sweta-Saravanan.webp differ diff --git a/assets/images/members/webp/Theo-Park.webp b/assets/images/members/webp/Theo-Park.webp new file mode 100644 index 000000000..6193264bd Binary files /dev/null and b/assets/images/members/webp/Theo-Park.webp differ diff --git a/assets/images/members/webp/Tiffany-Kuang.webp b/assets/images/members/webp/Tiffany-Kuang.webp new file mode 100644 index 000000000..3053a0125 Binary files /dev/null and b/assets/images/members/webp/Tiffany-Kuang.webp differ diff --git a/assets/images/members/webp/Vindhya-Banda.webp b/assets/images/members/webp/Vindhya-Banda.webp new file mode 100644 index 000000000..d2f2f91fd Binary files /dev/null and b/assets/images/members/webp/Vindhya-Banda.webp differ diff --git a/assets/images/members/webp/Wei-Yi-Tan.webp b/assets/images/members/webp/Wei-Yi-Tan.webp new file mode 100644 index 000000000..c13b8409c Binary files /dev/null and b/assets/images/members/webp/Wei-Yi-Tan.webp differ diff --git a/assets/images/members/webp/Zach-Bryant.webp b/assets/images/members/webp/Zach-Bryant.webp new file mode 100644 index 000000000..3b91f5357 Binary files /dev/null and b/assets/images/members/webp/Zach-Bryant.webp differ diff --git a/assets/images/octojekyll.png b/assets/images/octojekyll.png new file mode 100644 index 000000000..7c6d96d7e Binary files /dev/null and b/assets/images/octojekyll.png differ diff --git a/assets/images/usb_group_2022.png b/assets/images/usb_group_2022.png new file mode 100644 index 000000000..ec545718f Binary files /dev/null and b/assets/images/usb_group_2022.png differ diff --git a/assets/images/usb_group_2022.webp b/assets/images/usb_group_2022.webp new file mode 100644 index 000000000..cef52fa3c Binary files /dev/null and b/assets/images/usb_group_2022.webp differ diff --git a/assets/images/wiki/connect-pal3.0-linux/step1.png b/assets/images/wiki/connect-pal3.0-linux/step1.png new file mode 100644 index 000000000..be1ec51d4 Binary files /dev/null and b/assets/images/wiki/connect-pal3.0-linux/step1.png differ diff --git a/assets/images/wiki/connect-pal3.0-linux/step2.png b/assets/images/wiki/connect-pal3.0-linux/step2.png new file mode 100644 index 000000000..e5dc4496d Binary files /dev/null and b/assets/images/wiki/connect-pal3.0-linux/step2.png differ diff --git a/assets/images/wiki/connect-pal3.0-linux/step3.png b/assets/images/wiki/connect-pal3.0-linux/step3.png new file mode 100644 index 000000000..12267f85f Binary files /dev/null and b/assets/images/wiki/connect-pal3.0-linux/step3.png differ diff --git a/assets/images/wiki/connect-vpn/step1.png b/assets/images/wiki/connect-vpn/step1.png new file mode 100644 index 000000000..d27e6e0aa Binary files /dev/null and b/assets/images/wiki/connect-vpn/step1.png differ diff --git a/assets/images/wiki/connect-vpn/step2.png b/assets/images/wiki/connect-vpn/step2.png new file mode 100644 index 000000000..c9cfa9fc7 Binary files /dev/null and b/assets/images/wiki/connect-vpn/step2.png differ diff --git a/assets/images/wiki/connect-vpn/step3.png b/assets/images/wiki/connect-vpn/step3.png new file mode 100644 index 000000000..e9a068171 Binary files /dev/null and b/assets/images/wiki/connect-vpn/step3.png differ diff --git a/assets/images/wiki/connect-vpn/step5.png b/assets/images/wiki/connect-vpn/step5.png new file mode 100644 index 000000000..625ba6ea4 Binary files /dev/null and b/assets/images/wiki/connect-vpn/step5.png differ diff --git a/assets/images/wiki/connect-vpn/step6_mac.png b/assets/images/wiki/connect-vpn/step6_mac.png new file mode 100644 index 000000000..043d43e15 Binary files /dev/null and b/assets/images/wiki/connect-vpn/step6_mac.png differ diff --git a/assets/images/wiki/connect-vpn/step6_windows.png b/assets/images/wiki/connect-vpn/step6_windows.png new file mode 100644 index 000000000..5be135209 Binary files /dev/null and b/assets/images/wiki/connect-vpn/step6_windows.png differ diff --git a/assets/images/wiki/file-transfer/image1.png b/assets/images/wiki/file-transfer/image1.png new file mode 100644 index 000000000..f715ab7e0 Binary files /dev/null and b/assets/images/wiki/file-transfer/image1.png differ diff --git a/assets/images/wiki/file-transfer/image2.png b/assets/images/wiki/file-transfer/image2.png new file mode 100644 index 000000000..f2ed9dd50 Binary files /dev/null and b/assets/images/wiki/file-transfer/image2.png differ diff --git a/assets/images/wiki/file-transfer/image3.png b/assets/images/wiki/file-transfer/image3.png new file mode 100644 index 000000000..d18315ea9 Binary files /dev/null and b/assets/images/wiki/file-transfer/image3.png differ diff --git a/assets/images/wiki/gh-pages/ghp1.png b/assets/images/wiki/gh-pages/ghp1.png new file mode 100644 index 000000000..dd4c53195 Binary files /dev/null and b/assets/images/wiki/gh-pages/ghp1.png differ diff --git a/assets/images/wiki/gh-pages/ghp2.png b/assets/images/wiki/gh-pages/ghp2.png new file mode 100644 index 000000000..ed47ccbe6 Binary files /dev/null and b/assets/images/wiki/gh-pages/ghp2.png differ diff --git a/assets/images/wiki/gh-pages/ghp3.png b/assets/images/wiki/gh-pages/ghp3.png new file mode 100644 index 000000000..865d42e4c Binary files /dev/null and b/assets/images/wiki/gh-pages/ghp3.png differ diff --git a/assets/images/wiki/gh-pages/ghp4.png b/assets/images/wiki/gh-pages/ghp4.png new file mode 100644 index 000000000..0dd8bd20b Binary files /dev/null and b/assets/images/wiki/gh-pages/ghp4.png differ diff --git a/assets/images/wiki/gh-pages/ghp5.png b/assets/images/wiki/gh-pages/ghp5.png new file mode 100644 index 000000000..442f1109b Binary files /dev/null and b/assets/images/wiki/gh-pages/ghp5.png differ diff --git a/assets/images/wiki/gh-pages/ghp6.png b/assets/images/wiki/gh-pages/ghp6.png new file mode 100644 index 000000000..7800ffc0e Binary files /dev/null and b/assets/images/wiki/gh-pages/ghp6.png differ diff --git a/assets/images/wiki/git-guide/git_add.PNG b/assets/images/wiki/git-guide/git_add.PNG new file mode 100644 index 000000000..e2ad00d7b Binary files /dev/null and b/assets/images/wiki/git-guide/git_add.PNG differ diff --git a/assets/images/wiki/git-guide/git_commit.PNG b/assets/images/wiki/git-guide/git_commit.PNG new file mode 100644 index 000000000..5c5983967 Binary files /dev/null and b/assets/images/wiki/git-guide/git_commit.PNG differ diff --git a/assets/images/wiki/git-guide/git_diff.PNG b/assets/images/wiki/git-guide/git_diff.PNG new file mode 100644 index 000000000..fc9bd1ff6 Binary files /dev/null and b/assets/images/wiki/git-guide/git_diff.PNG differ diff --git a/assets/images/wiki/git-guide/git_init.PNG b/assets/images/wiki/git-guide/git_init.PNG new file mode 100644 index 000000000..7f72e3dca Binary files /dev/null and b/assets/images/wiki/git-guide/git_init.PNG differ diff --git a/assets/images/wiki/git-guide/git_local_vs_remote.PNG b/assets/images/wiki/git-guide/git_local_vs_remote.PNG new file mode 100644 index 000000000..c9b641944 Binary files /dev/null and b/assets/images/wiki/git-guide/git_local_vs_remote.PNG differ diff --git a/assets/images/wiki/git-guide/git_log.PNG b/assets/images/wiki/git-guide/git_log.PNG new file mode 100644 index 000000000..7cf70976f Binary files /dev/null and b/assets/images/wiki/git-guide/git_log.PNG differ diff --git a/assets/images/wiki/git-guide/git_revert.PNG b/assets/images/wiki/git-guide/git_revert.PNG new file mode 100644 index 000000000..e464cc29f Binary files /dev/null and b/assets/images/wiki/git-guide/git_revert.PNG differ diff --git a/assets/images/wiki/git-guide/git_status.PNG b/assets/images/wiki/git-guide/git_status.PNG new file mode 100644 index 000000000..7aaf793e5 Binary files /dev/null and b/assets/images/wiki/git-guide/git_status.PNG differ diff --git a/assets/images/wiki/git-intellij/git-intellij-cloneLink.PNG b/assets/images/wiki/git-intellij/git-intellij-cloneLink.PNG new file mode 100644 index 000000000..1edfc541a Binary files /dev/null and b/assets/images/wiki/git-intellij/git-intellij-cloneLink.PNG differ diff --git a/assets/images/wiki/git-intellij/git-intellij-commitButton.png b/assets/images/wiki/git-intellij/git-intellij-commitButton.png new file mode 100644 index 000000000..a2ead7a72 Binary files /dev/null and b/assets/images/wiki/git-intellij/git-intellij-commitButton.png differ diff --git a/assets/images/wiki/git-intellij/git-intellij-commitMsg.png b/assets/images/wiki/git-intellij/git-intellij-commitMsg.png new file mode 100644 index 000000000..4e5ab8755 Binary files /dev/null and b/assets/images/wiki/git-intellij/git-intellij-commitMsg.png differ diff --git a/assets/images/wiki/git-intellij/git-intellij-gitButtons.PNG b/assets/images/wiki/git-intellij/git-intellij-gitButtons.PNG new file mode 100644 index 000000000..f82898a10 Binary files /dev/null and b/assets/images/wiki/git-intellij/git-intellij-gitButtons.PNG differ diff --git a/assets/images/wiki/git-intellij/git-intellij-login.png b/assets/images/wiki/git-intellij/git-intellij-login.png new file mode 100644 index 000000000..1986b357e Binary files /dev/null and b/assets/images/wiki/git-intellij/git-intellij-login.png differ diff --git a/assets/images/wiki/git-intellij/git-intellij-pullButton.png b/assets/images/wiki/git-intellij/git-intellij-pullButton.png new file mode 100644 index 000000000..8959a724e Binary files /dev/null and b/assets/images/wiki/git-intellij/git-intellij-pullButton.png differ diff --git a/assets/images/wiki/git-intellij/git-intellij-pushDialog.png b/assets/images/wiki/git-intellij/git-intellij-pushDialog.png new file mode 100644 index 000000000..0c40ee1ba Binary files /dev/null and b/assets/images/wiki/git-intellij/git-intellij-pushDialog.png differ diff --git a/assets/images/wiki/git-intellij/git-intellij-versionControl.png b/assets/images/wiki/git-intellij/git-intellij-versionControl.png new file mode 100644 index 000000000..09948ddd3 Binary files /dev/null and b/assets/images/wiki/git-intellij/git-intellij-versionControl.png differ diff --git a/assets/images/wiki/git-intellij/git-intellij-welcome.png b/assets/images/wiki/git-intellij/git-intellij-welcome.png new file mode 100644 index 000000000..e1aaa361c Binary files /dev/null and b/assets/images/wiki/git-intellij/git-intellij-welcome.png differ diff --git a/assets/images/wiki/git-intellij/git-intellij-welcomescreen.png b/assets/images/wiki/git-intellij/git-intellij-welcomescreen.png new file mode 100644 index 000000000..3117d04de Binary files /dev/null and b/assets/images/wiki/git-intellij/git-intellij-welcomescreen.png differ diff --git a/assets/images/wiki/terminal/cmd_cd.png b/assets/images/wiki/terminal/cmd_cd.png new file mode 100644 index 000000000..cf60b6d1f Binary files /dev/null and b/assets/images/wiki/terminal/cmd_cd.png differ diff --git a/assets/images/wiki/terminal/cmd_ls.png b/assets/images/wiki/terminal/cmd_ls.png new file mode 100644 index 000000000..a9b162418 Binary files /dev/null and b/assets/images/wiki/terminal/cmd_ls.png differ diff --git a/assets/images/wiki/terminal/cmd_pwd.png b/assets/images/wiki/terminal/cmd_pwd.png new file mode 100644 index 000000000..23b5a9e7c Binary files /dev/null and b/assets/images/wiki/terminal/cmd_pwd.png differ diff --git a/assets/images/wiki/terminal/cmd_structure.png b/assets/images/wiki/terminal/cmd_structure.png new file mode 100644 index 000000000..967aeb99e Binary files /dev/null and b/assets/images/wiki/terminal/cmd_structure.png differ diff --git a/assets/images/wiki/terminal/moving_faster.png b/assets/images/wiki/terminal/moving_faster.png new file mode 100644 index 000000000..cd9b0ff76 Binary files /dev/null and b/assets/images/wiki/terminal/moving_faster.png differ diff --git a/assets/main.scss b/assets/main.scss index 317e02812..be488267e 100644 --- a/assets/main.scss +++ b/assets/main.scss @@ -2,6 +2,13 @@ # Only the main Sass file needs front matter (the dashes are enough) --- -@import "minima"; +@import "theme"; -@import "style"; +@import "pages/about"; +@import "pages/initiatives"; +@import "pages/post"; +@import "pages/wiki"; +@import "pages/members"; +@import "pages/contact"; + +@import "/libs/highlight/styles/gruvbox-dark.css"; diff --git a/assets/scripts/accessibility_check.js b/assets/scripts/accessibility_check.js new file mode 100644 index 000000000..e69de29bb diff --git a/assets/scripts/events.js b/assets/scripts/events.js new file mode 100644 index 000000000..495b39d14 --- /dev/null +++ b/assets/scripts/events.js @@ -0,0 +1,25 @@ +const events = { + "DOMContentLoaded": [ + onMissingMemberPhoto, + highlightCode, + scrollToPost, + fixTitleCase, + setLinkTargetBlank, + ], + "load": [ + setupInitiativeGrid, + lightcaseifyArticle, + finalizeButtons, + closeFab, + ], + "scroll": [ + //closeFab, + //scrollTop, + ] +}; + +for (let [key, value] of Object.entries(events)) { + value.forEach(func => { + window.addEventListener(key, func); + }); +} \ No newline at end of file diff --git a/assets/scripts/ratings.js b/assets/scripts/ratings.js new file mode 100644 index 000000000..40c509e32 --- /dev/null +++ b/assets/scripts/ratings.js @@ -0,0 +1,36 @@ +function rate(good) { + let thumb_up = document.querySelector("#rate-good"); + let thumb_down = document.querySelector("#rate-bad"); + //uncheck is broken + /*if ((good && thumb_up.checked) || (!good && thumb_down.checked)) { + console.log("unchecking"); + console.log("thumbup: " + thumb_up.checked); + console.log("thumbdown: " + thumb_down.checked); + thumb_up.checked = false; + thumb_down.checked = false; + showThanks(false); + showFeedbackForm(false); + } else { + console.log("checking");*/ + thumb_up.checked = good; + thumb_down.checked = !good; + showThanks(good); + showFeedbackForm(!good); + //} +} + +function showFeedbackForm(show) { + let feedback = document.querySelector("#feedback-bad-container"); + if (show) { + feedback.classList.remove("none"); + } + else { + feedback.classList.add("none"); + } +} + +function showThanks(show) { + let thanks = document.querySelector("#feedback-thanks-container"); + if (show) thanks.classList.remove("none"); + else thanks.classList.add("none"); +} \ No newline at end of file diff --git a/assets/scripts/searchbar.js b/assets/scripts/searchbar.js new file mode 100644 index 000000000..7e0ed3ef0 --- /dev/null +++ b/assets/scripts/searchbar.js @@ -0,0 +1,184 @@ +function getSearchQuery() { + const urlParams = new URLSearchParams(window.location.search); + return urlParams.get('search') || urlParams.get('s'); +} + +function loadSearchIndex() { + return lunr(function () { + this.ref('index'); + this.field('title'); + this.field('description'); + this.field('content'); + this.field('author'); + this.field('category'); + this.field('date'); + + searchData.forEach(function (doc) { + doc['content'] = unescape(doc['content']); + this.add(doc) + }, this); + }); +} + +function sanitizeQuery(query) { + if (!query.match(/[\\^:~+-]/g)) { + query = `${query}*`; + } + return query; +} + +function onSearchChange(v) { + let query = (this.value || v).trim(); + window.history.pushState(null, null, `?s=${encodeURIComponent(query)}`); + let queryChanged = lastQuery === undefined || lastQuery != query; + if (queryChanged) + removeHighlight(); + if (query && query.length > 1 && queryChanged) { + lastQuery = query; + var results = searchIndex.search(query); + if (results.length == 0) + results = searchIndex.search(sanitizeQuery(query)); + showSearchResults(results); + } + if (query.length == 0 || !(!!query)) { + hideSearchResults(); + } +} + +function onSearchChangeDebounce() { + let value = this.value; + clearTimeout(lastQueryTimer); + lastQueryTimer = setTimeout(() => { + onSearchChange(value); + }, 120); +} + +function getSearchResultIndices(results) { + return results.map(r => parseInt(r['ref'])); +} + +function hideSearchResults() { + let wikiList = document.querySelector("#wiki-items"); + let resultsContainer = document.querySelector("#search-results"); + let noResults = document.querySelector("#no-search-results"); + wikiList.classList.remove("none"); + resultsContainer.classList.add("none"); + noResults.classList.add("none"); +} + +function removeHighlight() { + document.querySelectorAll('article .search-highlight, #search-results .search-highlight').forEach(e => { + e.classList = []; + let parent = e.parentNode; + e.replaceWith(e.innerText); + parent.normalize(); + }); +} + +function showSearchResults(results) { + let wikiList = document.querySelector("#wiki-items"); + let resultsContainer = document.querySelector("#search-results"); + let noResults = document.querySelector("#no-search-results"); + if (!results || results.length == 0) { + wikiList.classList.add("none"); + noResults.classList.remove("none"); + resultsContainer.classList.add("none"); + document.querySelector("#search-query-term").innerHTML = lastQuery + } else { + let indices = getSearchResultIndices(results); + let posts = searchData.filter(item => indices.includes(item['index'])); + let elems = createPostElements(posts); + resultsContainer.innerHTML = ''; + elems.forEach(e => resultsContainer.appendChild(e)); + wikiList.classList.add("none"); + noResults.classList.add("none"); + resultsContainer.classList.remove("none"); + highlightSearchResults(lastQuery); + } +} + +function createPostElements(posts) { + let wikiList = document.querySelector("#wiki-items"); + let clonable = wikiList.firstElementChild; + return posts.map(p => { + let clone = clonable.cloneNode(true); + let active = clone.querySelector("#active"); + if (active) { + active.id = ''; + } + clone.href = `${p.url}?s=${lastQuery}`; + let title = clone.querySelector(".post-title"); + let description = clone.querySelector(".post-description"); + title.innerHTML = p.title; + description.innerHTML = p.description; + return clone; + }) +} + +/* Source because I am lazy: + https://stackoverflow.com/questions/7380226/find-word-in-html/7380697#7380697 +*/ +function walkHTML(e, query) { + var expr = new RegExp(`([^a-zA-Z]?)(${escapeRegex(query)})`, "i"); + var partMatchExpr = new RegExp(`([^a-zA-Z]?)(${escapeRegex(query)})`, "i"); + e.childNodes.forEach(node => { + if (node.nodeType == Node.TEXT_NODE) { + if (node.nodeValue) { + var matches = node.nodeValue.match(expr); + if (matches) { + var parts = node.nodeValue.split(expr); + for (var n = 0; n < parts.length; n++) { + let part = parts[n]; + if (part.match(partMatchExpr)) { + var span = document.createElement("span") + span.classList.add("highlight", "font-bold", "pa-1", "search-highlight"); + span.style.fontSize = "inherit"; + span.appendChild(document.createTextNode(part)); + e.insertBefore(span, node); + } else { + e.insertBefore(document.createTextNode(parts[n]), node); + } + } + e.removeChild(node); + } + } + } + else { + walkHTML(node, query); + } + }) +} + +// Source: https://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript/3561711#3561711 +function escapeRegex(string) { + return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); +} + +function highlightSearchResults(query) { + document.querySelectorAll('#search-results, article > section:not(:last-child)').forEach(section => { + walkHTML(section, query); + }) +} + +var lastQuery = undefined; +var lastQueryTimer = undefined; +var searchIndex = loadSearchIndex(); + +function onLoadWithSearch() { + + let search = document.querySelector("#search"); + [ + 'input', + 'paste', + 'blur', + ].forEach(e => { + search.addEventListener(e, onSearchChangeDebounce); + }); + let startQuery = getSearchQuery(); + if (!!startQuery) { + search.value = startQuery; + search.dispatchEvent(new Event('input')); + } +} + +window.addEventListener("DOMContentLoaded", onLoadWithSearch); \ No newline at end of file diff --git a/assets/scripts/utils.js b/assets/scripts/utils.js new file mode 100644 index 000000000..b63570c9b --- /dev/null +++ b/assets/scripts/utils.js @@ -0,0 +1,176 @@ +function scrollTop() { window.scrollTo(0, 0); } + +function finalizeButtons() { + document.querySelectorAll("button[href]:not([href=''])").forEach(button => { + button.onclick = () => { + let url = button.getAttribute("href"); + let target = button.getAttribute("target") || '_blank'; + window.open(url, target); + } + }); +} + +function onMissingMemberPhoto() { + let default_image = '/assets/images/members/png/None.png'; + document.querySelectorAll(".member-color img").forEach(img => { + img.onerror = function() { + img.onerror = null; + img.src = default_image; + colorImage(img); + } + if (img.src == window.location.origin + default_image) { + colorImage(img); + } + }); +} + +function colorImage(img) { + let colors = ['none', 'red', 'blue', 'primary']; + var parent = img.parentNode; + if (!parent.className.includes("member-color")) + parent = parent.parentNode.parentNode; + parent.classList.add(`bg-${colors[colors.length * Math.random() | 0]}-light`); + img.style = "mix-blend-mode: multiply;" +} + +function closeFab() { + let fab = document.querySelector('#menu-open'); + if (fab.checked) { + fab.checked = false; + } +} + +function highlightCode() { + document.querySelectorAll("*:not(pre) > code").forEach(element => { + hljs.highlightBlock(element); + }); +} + +function lightcaseifyArticle() { + document.querySelectorAll("article#post section#content img:not(.no-lightcase):not(.emoji)").forEach(img => { + img.classList.add("lightcase-img"); + let link = document.createElement("a"); + link.setAttribute("href", img.src); + link.setAttribute("data-rel", "lightcase"); + let album = img.getAttribute("data-lightcase") || window.performance.now(); + link.setAttribute("data-lightcase", album); + + img.parentNode.replaceChild(link, img); + link.appendChild(img); + }); + + jQuery(document).ready(function($) { + $('a[data-rel^=lightcase]').lightcase(); + }); + + document.querySelectorAll('article#post section#content > p').forEach(p => { + let imgs = p.querySelectorAll("img"); + if (imgs.length > 1) { + p.classList.add("row", "justify-around"); + imgs.forEach(img => { + img.style.display = "inline"; + }); + } + }) +} + +function scrollToPost() { + let post = document.querySelector("#active"); + // janky hack to tell if we're on a screen worth scrolling + let verticalSeparator = document.querySelector("#postVerticalSeparator"); + if (post && verticalSeparator) { + let style = window.getComputedStyle(verticalSeparator); + if (style && style.display != 'none') { + post.scrollIntoView(true); + } else { + scrollTop(); + } + } +} + +function fixTitleCase() { + let titles = document.querySelectorAll(".post-title"); + titles.forEach(t => { + t.innerHTML = titleCase(t.innerHTML); + }); +} + +/* + * Source (not right for us as a local module): https://github.com/rvagg/titlecase/blob/master/to-title-case.js + * + * To Title Case 2.1 – http://individed.com/code/to-title-case/ + * Copyright © 2008–2013 David Gouch. Licensed under the MIT License. + * + * modifications by @rvagg Apr-2014 + */ +var smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i; +function titleCase (str) { + if (!str) return str + return str.replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g, function(match, index, title){ + if (index > 0 && index + match.length !== title.length && + match.search(smallWords) > -1 && title.charAt(index - 2) !== ':' && + (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') && + title.charAt(index - 1).search(/[^\s-]/) < 0) { + return match.toLowerCase(); + } + + if (match.substr(1).search(/[A-Z]|\../) > -1) { + return match; + } + + return match.charAt(0).toUpperCase() + match.substr(1); + }); +} + +function setLinkTargetBlank() { + document.querySelectorAll("a:not(.page-link)").forEach(a => { + if (!a.getAttribute("target")) { + a.setAttribute("target", "_blank"); + } + }) +} + +function setupGrid(options) { + let magicGrid = new MagicGrid(options); + magicGrid.listen(); +} + +function setupInitiativeGrid() { + let initiativeContainerID = "#initiative-container"; + if (document.querySelector(initiativeContainerID)) { + setupGrid({ + container: initiativeContainerID, + static: true, + //items: parseInt("{{site.data.initiatives | size}}"), // Required for dynamic content. Initial number of items in the container. + maxColumns: 3, // Optional. Maximum number of columns. Default: Infinite. + useMin: true, // Optional. Prioritize shorter columns when positioning items? Default: false. + animate: true, // Optional. Animate item positioning? Default: false. + center: true, //Optional. Center the grid items? Default: true. + }); + } +} + +function setupAnchors() { + anchors.options = { + visible: "always", + truncate: "20" + }; + anchors.add('#post h1, #post h2, #post h3, #post h4, #post h5') + .add('.anchored') + .remove('.no-anchor'); +} + +function ajax(method, url, data, success, error) { + var xhr = new XMLHttpRequest(); + xhr.open(method, url); + xhr.setRequestHeader("Accept", "application/json"); + xhr.onreadystatechange = function() { + if (xhr.readyState !== XMLHttpRequest.DONE) return; + if (xhr.status === 200) { + success(xhr.response, xhr.responseType); + } else { + error(xhr.status, xhr.response, xhr.responseType); + } + }; + xhr.send(data); +} \ No newline at end of file diff --git a/assets/searchData.js b/assets/searchData.js new file mode 100644 index 000000000..d5833e470 --- /dev/null +++ b/assets/searchData.js @@ -0,0 +1,14 @@ +--- +layout: null +--- +{% assign date_format = site.date_format | default: "%b %-d, %Y" %} +let searchData = [{% for post in site.wiki %}{ + "index": {{forloop.index}}, + "title": "{{ post.title }}", + "description": "{{post.description | strip_html | strip_newlines }}", + "url": "{{ site.baseurl }}{{ post.url }}", + "category": "{{ post.categories | join: ', '}}", + "date": "{{ post.date | date: date_format }}", + "content": "{{ post.content | strip_html | strip_newlines | escape_once }}", + "author": "{{ post.author }}", +}{% unless forloop.last %}, {% endunless %}{% endfor %}] \ No newline at end of file diff --git a/assets/social-icons.svg b/assets/social-icons.svg deleted file mode 100644 index bcb763961..000000000 --- a/assets/social-icons.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 000000000..07d237e5c --- /dev/null +++ b/build.sh @@ -0,0 +1,5 @@ +#! /bin/sh + +[ $1 = "-s" ] && curl -X POST -d {} https://api.netlify.com/build_hooks/5efc6382c85bbb7f4ad0d703 && echo Triggered staging build +[ $1 = "-p" ] && curl -X POST -d {} https://api.netlify.com/build_hooks/5efc60efffc7df67c4ab028a && echo Triggered production build + diff --git a/cal/index.html b/cal/index.html deleted file mode 100644 index 46fa120f9..000000000 --- a/cal/index.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - -
-

Subscribing to Purdue CS Calendar

- -
- -

The purpose of this page is to show you how to sync the Purdue Computer Science calendars with your mobile devices and computer. This year, the CS department switched to Google Calendar for this exact reason. They did it for YOU :)

- -

There are two calendars you can subscribe to:

- -

Computer Science Events

- - - -

Department of Computer Science

- - - -

Student Organization Events

- - - -

Corporate Events

- - - -

** Static file listing only the currently added events. If a new event is added, you must download the file again

- -
- -

Notes about Windows

- -
    -
  • Windows 8 / Windows RT / Windows Phone - -
      -
    • The Windows platform by itself does not support webcal URL’s or iCalendar files.
    • -
    • If Outlook is installed on the device, it should support webcal URL’s and iCalendar files.
    • -
    • The simplest approach is to sync the device with a Live.com. Google Sync with Windows Phone is being disabled December 31, 2013.
    • -
  • -
  • Windows 7 - -
      -
    • If you have Outlook installed and use Outlook, you can use the webcal link.
    • -
    • If you don’t have Outlook or you don’t use it, I currently do not know of a convenient way to sync with the computer.
    • -
  • -
- -
- -

Directions to sync a calendar:

- -

Windows Live / Windows 8 / Windows RT / Windows Phone

- -
    -
  1. Login to Live.com with the account that your device is synced with.
  2. -
  3. In the top left, click the arrow and select Calendar.
  4. -
  5. On the top bar, click Import.
  6. -
  7. On the left, click Subscribe.
  8. -
  9. Copy one of the iCalendar (.ics) links from above.
  10. -
  11. Paste the URL in Calendar URL.
  12. -
  13. Give the calendar a name.
  14. -
  15. Click Subscribe.
  16. -
- -

Windows with Outlook installed (no promises)

- -
    -
  1. Click a webcal link from above.
  2. -
  3. Follow the prompts to subscribe to the calendar.
  4. -
- -

Android / Google Calendar

- -
    -
  1. Using a desktop computer, Click the HTML Link on a calendar.
  2. -
  3. Click the “+ Google Calendar” button at the bottom right of the resulting webpage from step 1.
  4. -
  5. If not signed in, it will prompt you to sign into a Google account. Sign in to your Google account that is you want the calendars to sync with. -
    NOTE: If you have an Android device, pick the account that is synced with the device.
  6. -
  7. After sign in is complete, a window will pop up asking if you’d like to add the calendar to your account. Click Add.
  8. -
  9. The calendar is now added to your Google Account, and in turn will be synced to any Android devices that are synced with that account as well.
  10. -
- -

iOS

- -
    -
  1. Click a webcal link above.
  2. -
  3. Click “Subscribe”.
  4. -
  5. Click “Done”.
  6. -
- -

Mac OS X

- -
    -
  1. Click a webcal link above.
  2. -
  3. Click “Subscribe”.
  4. -
  5. Decide if you want it to save locally or on iCloud. iCloud will set this calendar up on your iOS device if both are set up with the same iCloud account.
  6. -
  7. Click OK.
  8. -
- -


- -
- -

Any issues should be sent to usb@cs.purdue.edu

- -

Tutorial by Purdue CS USB, but mostly by Tyler Hoffman ;)

-
- \ No newline at end of file diff --git a/clean.sh b/clean.sh new file mode 100755 index 000000000..41f9ec5d1 --- /dev/null +++ b/clean.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +echo "Cleaning cache and generated files..." +rm -rf ./_site ./.jekyll-cache diff --git a/contact.html b/contact.html deleted file mode 100644 index 32729b111..000000000 --- a/contact.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: Contact Us -description: USB was created by students, for students- what's on your mind? -permalink: /contact/ ---- - -
-

You can also send us an email at usb@cs.purdue.edu

-

- Note: If you have an important concern that should be reported in an official capacity, - please go to the - CS Concern Form. -

-
- -
-
-
- - - - - - - - - -
- - -
\ No newline at end of file diff --git a/favicon-16x16.png b/favicon-16x16.png deleted file mode 100644 index 9060d67c4..000000000 Binary files a/favicon-16x16.png and /dev/null differ diff --git a/favicon-32x32.png b/favicon-32x32.png deleted file mode 100644 index 4c8b0c313..000000000 Binary files a/favicon-32x32.png and /dev/null differ diff --git a/helproom.html b/helproom.html deleted file mode 100644 index cceee623d..000000000 --- a/helproom.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Help Room -description: Extra help for CS 193, CS 180, CS 182, CS 240 -permalink: /helproom/ ---- - - - - - -{%- include head.html -%} - - - {%- include header.html -%} -
-
-

{{ page.title | escape }}

-

{{ page.description | escape }}

-

All help room sessions are held in LWSN B160

-
- - - - - - - - - - - - - - - - - - - - - - - - -
CS193Monday - Thursday7pm-9pm
CS180Monday - Thursday7pm-9pm
CS182Monday7pm-9pm
CS240Monday - Thursday7pm-9pm
- - - -
- {%- include footer.html -%} - \ No newline at end of file diff --git a/index.html b/index.html index 3cea5651e..60b2d1cc0 100644 --- a/index.html +++ b/index.html @@ -1,60 +1,13 @@ --- - +layout: default +title: Purdue USB --- - - - -{%- include head.html -%} - - - - {%- include header.html -%} - -
- - {%- include aboutus.html -%} - -
- - {%- include members.html -%} -
- - {%- include footer.html -%} - - - - \ No newline at end of file +
+ {%- include components/banner.html -%} + {%- include components/aboutus.html -%} + {%- include components/member/members.html -%} +
+ {%- include components/initiative/initiatives.html -%} + +
diff --git a/initiatives.html b/initiatives.html deleted file mode 100644 index 07618a0dd..000000000 --- a/initiatives.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Initiatives -description: Check out what USB is currently working on! -permalink: /initiatives/ ---- - - - - -{%- include head.html -%} - - - - {%- include header.html -%} -
-
-

{{ page.title | escape }}

-

{{ page.description | escape }}

-
-
-
- {%- for initiative in site.data.initiatives -%} -
- -
-

{{ initiative.title | escape }}

-

{{ initiative.description }}

-
- {{ initiative.buttonText }} -
- - {%- endfor -%} -
-
-
- - {%- include footer.html -%} - - - - \ No newline at end of file diff --git a/libs/highlight/highlight.pack.js b/libs/highlight/highlight.pack.js new file mode 100644 index 000000000..681f68c4f --- /dev/null +++ b/libs/highlight/highlight.pack.js @@ -0,0 +1,6 @@ +/* + Highlight.js 10.1.1 (93fd0d73) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(n){Object.freeze(n);var t="function"==typeof n;return Object.getOwnPropertyNames(n).forEach((function(r){!Object.hasOwnProperty.call(n,r)||null===n[r]||"object"!=typeof n[r]&&"function"!=typeof n[r]||t&&("caller"===r||"callee"===r||"arguments"===r)||Object.isFrozen(n[r])||e(n[r])})),n}class n{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}ignoreMatch(){this.ignore=!0}}function t(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function r(e,...n){var t={};for(const n in e)t[n]=e[n];return n.forEach((function(e){for(const n in e)t[n]=e[n]})),t}function a(e){return e.nodeName.toLowerCase()}var i=Object.freeze({__proto__:null,escapeHTML:t,inherit:r,nodeStream:function(e){var n=[];return function e(t,r){for(var i=t.firstChild;i;i=i.nextSibling)3===i.nodeType?r+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:r,node:i}),r=e(i,r),a(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:r,node:i}));return r}(e,0),n},mergeStreams:function(e,n,r){var i=0,s="",o=[];function l(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function u(e){s+=""}function d(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var g=l();if(s+=t(r.substring(i,g[0].offset)),i=g[0].offset,g===e){o.reverse().forEach(u);do{d(g.splice(0,1)[0]),g=l()}while(g===e&&g.length&&g[0].offset===i);o.reverse().forEach(c)}else"start"===g[0].event?o.push(g[0].node):o.pop(),d(g.splice(0,1)[0])}return s+t(r.substr(i))}});const s="",o=e=>!!e.kind;class l{constructor(e,n){this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=t(e)}openNode(e){if(!o(e))return;let n=e.kind;e.sublanguage||(n=`${this.classPrefix}${n}`),this.span(n)}closeNode(e){o(e)&&(this.buffer+=s)}value(){return this.buffer}span(e){this.buffer+=``}}class c{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const n={kind:e,children:[]};this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n),n.children.forEach(n=>this._walk(e,n)),e.closeNode(n)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{c._collapse(e)}))}}class u extends c{constructor(e){super(),this.options=e}addKeyword(e,n){""!==e&&(this.openNode(n),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,n){const t=e.root;t.kind=n,t.sublanguage=!0,this.add(t)}toHTML(){return new l(this,this.options).value()}finalize(){return!0}}function d(e){return e?"string"==typeof e?e:e.source:null}const g="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",h={begin:"\\\\[\\s\\S]",relevance:0},f={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[h]},p={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[h]},b={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},m=function(e,n,t={}){var a=r({className:"comment",begin:e,end:n,contains:[]},t);return a.contains.push(b),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),a},v=m("//","$"),x=m("/\\*","\\*/"),E=m("#","$");var _=Object.freeze({__proto__:null,IDENT_RE:"[a-zA-Z]\\w*",UNDERSCORE_IDENT_RE:"[a-zA-Z_]\\w*",NUMBER_RE:"\\b\\d+(\\.\\d+)?",C_NUMBER_RE:g,BINARY_NUMBER_RE:"\\b(0b[01]+)",RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const n=/^#![ ]*\//;return e.binary&&(e.begin=function(...e){return e.map(e=>d(e)).join("")}(n,/.*\b/,e.binary,/\b.*/)),r({className:"meta",begin:n,end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)},BACKSLASH_ESCAPE:h,APOS_STRING_MODE:f,QUOTE_STRING_MODE:p,PHRASAL_WORDS_MODE:b,COMMENT:m,C_LINE_COMMENT_MODE:v,C_BLOCK_COMMENT_MODE:x,HASH_COMMENT_MODE:E,NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?",relevance:0},C_NUMBER_MODE:{className:"number",begin:g,relevance:0},BINARY_NUMBER_MODE:{className:"number",begin:"\\b(0b[01]+)",relevance:0},CSS_NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[h,{begin:/\[/,end:/\]/,relevance:0,contains:[h]}]}]},TITLE_MODE:{className:"title",begin:"[a-zA-Z]\\w*",relevance:0},UNDERSCORE_TITLE_MODE:{className:"title",begin:"[a-zA-Z_]\\w*",relevance:0},METHOD_GUARD:{begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}})}}),N="of and for in not or if then".split(" ");function w(e,n){return n?+n:function(e){return N.includes(e.toLowerCase())}(e)?0:1}const R=t,y=r,{nodeStream:k,mergeStreams:O}=i,M=Symbol("nomatch");return function(t){var a=[],i={},s={},o=[],l=!0,c=/(^(<[^>]+>|\t|)+|\n)/gm,g="Could not find the language '{}', did you forget to load/include a language module?";const h={disableAutodetect:!0,name:"Plain text",contains:[]};var f={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:u};function p(e){return f.noHighlightRe.test(e)}function b(e,n,t,r){var a={code:n,language:e};S("before:highlight",a);var i=a.result?a.result:m(a.language,a.code,t,r);return i.code=a.code,S("after:highlight",i),i}function m(e,t,a,s){var o=t;function c(e,n){var t=E.case_insensitive?n[0].toLowerCase():n[0];return Object.prototype.hasOwnProperty.call(e.keywords,t)&&e.keywords[t]}function u(){null!=y.subLanguage?function(){if(""!==A){var e=null;if("string"==typeof y.subLanguage){if(!i[y.subLanguage])return void O.addText(A);e=m(y.subLanguage,A,!0,k[y.subLanguage]),k[y.subLanguage]=e.top}else e=v(A,y.subLanguage.length?y.subLanguage:null);y.relevance>0&&(I+=e.relevance),O.addSublanguage(e.emitter,e.language)}}():function(){if(!y.keywords)return void O.addText(A);let e=0;y.keywordPatternRe.lastIndex=0;let n=y.keywordPatternRe.exec(A),t="";for(;n;){t+=A.substring(e,n.index);const r=c(y,n);if(r){const[e,a]=r;O.addText(t),t="",I+=a,O.addKeyword(n[0],e)}else t+=n[0];e=y.keywordPatternRe.lastIndex,n=y.keywordPatternRe.exec(A)}t+=A.substr(e),O.addText(t)}(),A=""}function h(e){return e.className&&O.openNode(e.className),y=Object.create(e,{parent:{value:y}})}function p(e){return 0===y.matcher.regexIndex?(A+=e[0],1):(L=!0,0)}var b={};function x(t,r){var i=r&&r[0];if(A+=t,null==i)return u(),0;if("begin"===b.type&&"end"===r.type&&b.index===r.index&&""===i){if(A+=o.slice(r.index,r.index+1),!l){const n=Error("0 width match regex");throw n.languageName=e,n.badRule=b.rule,n}return 1}if(b=r,"begin"===r.type)return function(e){var t=e[0],r=e.rule;const a=new n(r),i=[r.__beforeBegin,r["on:begin"]];for(const n of i)if(n&&(n(e,a),a.ignore))return p(t);return r&&r.endSameAsBegin&&(r.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),r.skip?A+=t:(r.excludeBegin&&(A+=t),u(),r.returnBegin||r.excludeBegin||(A=t)),h(r),r.returnBegin?0:t.length}(r);if("illegal"===r.type&&!a){const e=Error('Illegal lexeme "'+i+'" for mode "'+(y.className||"")+'"');throw e.mode=y,e}if("end"===r.type){var s=function(e){var t=e[0],r=o.substr(e.index),a=function e(t,r,a){let i=function(e,n){var t=e&&e.exec(n);return t&&0===t.index}(t.endRe,a);if(i){if(t["on:end"]){const e=new n(t);t["on:end"](r,e),e.ignore&&(i=!1)}if(i){for(;t.endsParent&&t.parent;)t=t.parent;return t}}if(t.endsWithParent)return e(t.parent,r,a)}(y,e,r);if(!a)return M;var i=y;i.skip?A+=t:(i.returnEnd||i.excludeEnd||(A+=t),u(),i.excludeEnd&&(A=t));do{y.className&&O.closeNode(),y.skip||y.subLanguage||(I+=y.relevance),y=y.parent}while(y!==a.parent);return a.starts&&(a.endSameAsBegin&&(a.starts.endRe=a.endRe),h(a.starts)),i.returnEnd?0:t.length}(r);if(s!==M)return s}if("illegal"===r.type&&""===i)return 1;if(B>1e5&&B>3*r.index)throw Error("potential infinite loop, way more iterations than matches");return A+=i,i.length}var E=T(e);if(!E)throw console.error(g.replace("{}",e)),Error('Unknown language: "'+e+'"');var _=function(e){function n(n,t){return RegExp(d(n),"m"+(e.case_insensitive?"i":"")+(t?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,n){n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]),this.matchAt+=function(e){return RegExp(e.toString()+"|").exec("").length-1}(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=n(function(e,n="|"){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i0&&(a+=n),a+="(";o.length>0;){var l=t.exec(o);if(null==l){a+=o;break}a+=o.substring(0,l.index),o=o.substring(l.index+l[0].length),"\\"===l[0][0]&&l[1]?a+="\\"+(+l[1]+s):(a+=l[0],"("===l[0]&&r++)}a+=")"}return a}(e),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const n=this.matcherRe.exec(e);if(!n)return null;const t=n.findIndex((e,n)=>n>0&&void 0!==e),r=this.matchIndexes[t];return n.splice(0,t),Object.assign(n,r)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const n=new t;return this.rules.slice(e).forEach(([e,t])=>n.addRule(e,t)),n.compile(),this.multiRegexes[e]=n,n}considerAll(){this.regexIndex=0}addRule(e,n){this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex;const t=n.exec(e);return t&&(this.regexIndex+=t.position+1,this.regexIndex===this.count&&(this.regexIndex=0)),t}}function i(e,n){const t=e.input[e.index-1],r=e.input[e.index+e[0].length];"."!==t&&"."!==r||n.ignoreMatch()}if(e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return function t(s,o){const l=s;if(s.compiled)return l;s.compiled=!0,s.__beforeBegin=null,s.keywords=s.keywords||s.beginKeywords;let c=null;if("object"==typeof s.keywords&&(c=s.keywords.$pattern,delete s.keywords.$pattern),s.keywords&&(s.keywords=function(e,n){var t={};return"string"==typeof e?r("keyword",e):Object.keys(e).forEach((function(n){r(n,e[n])})),t;function r(e,r){n&&(r=r.toLowerCase()),r.split(" ").forEach((function(n){var r=n.split("|");t[r[0]]=[e,w(r[0],r[1])]}))}}(s.keywords,e.case_insensitive)),s.lexemes&&c)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return l.keywordPatternRe=n(s.lexemes||c||/\w+/,!0),o&&(s.beginKeywords&&(s.begin="\\b("+s.beginKeywords.split(" ").join("|")+")(?=\\b|\\s)",s.__beforeBegin=i),s.begin||(s.begin=/\B|\b/),l.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(l.endRe=n(s.end)),l.terminator_end=d(s.end)||"",s.endsWithParent&&o.terminator_end&&(l.terminator_end+=(s.end?"|":"")+o.terminator_end)),s.illegal&&(l.illegalRe=n(s.illegal)),void 0===s.relevance&&(s.relevance=1),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((function(e){return function(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map((function(n){return r(e,{variants:null},n)}))),e.cached_variants?e.cached_variants:function e(n){return!!n&&(n.endsWithParent||e(n.starts))}(e)?r(e,{starts:e.starts?r(e.starts):null}):Object.isFrozen(e)?r(e):e}("self"===e?s:e)}))),s.contains.forEach((function(e){t(e,l)})),s.starts&&t(s.starts,o),l.matcher=function(e){const n=new a;return e.contains.forEach(e=>n.addRule(e.begin,{rule:e,type:"begin"})),e.terminator_end&&n.addRule(e.terminator_end,{type:"end"}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n}(l),l}(e)}(E),N="",y=s||_,k={},O=new f.__emitter(f);!function(){for(var e=[],n=y;n!==E;n=n.parent)n.className&&e.unshift(n.className);e.forEach(e=>O.openNode(e))}();var A="",I=0,S=0,B=0,L=!1;try{for(y.matcher.considerAll();;){B++,L?L=!1:(y.matcher.lastIndex=S,y.matcher.considerAll());const e=y.matcher.exec(o);if(!e)break;const n=x(o.substring(S,e.index),e);S=e.index+n}return x(o.substr(S)),O.closeAllNodes(),O.finalize(),N=O.toHTML(),{relevance:I,value:N,language:e,illegal:!1,emitter:O,top:y}}catch(n){if(n.message&&n.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:n.message,context:o.slice(S-100,S+100),mode:n.mode},sofar:N,relevance:0,value:R(o),emitter:O};if(l)return{illegal:!1,relevance:0,value:R(o),emitter:O,language:e,top:y,errorRaised:n};throw n}}function v(e,n){n=n||f.languages||Object.keys(i);var t=function(e){const n={relevance:0,emitter:new f.__emitter(f),value:R(e),illegal:!1,top:h};return n.emitter.addText(e),n}(e),r=t;return n.filter(T).filter(I).forEach((function(n){var a=m(n,e,!1);a.language=n,a.relevance>r.relevance&&(r=a),a.relevance>t.relevance&&(r=t,t=a)})),r.language&&(t.second_best=r),t}function x(e){return f.tabReplace||f.useBR?e.replace(c,e=>"\n"===e?f.useBR?"
":e:f.tabReplace?e.replace(/\t/g,f.tabReplace):e):e}function E(e){let n=null;const t=function(e){var n=e.className+" ";n+=e.parentNode?e.parentNode.className:"";const t=f.languageDetectRe.exec(n);if(t){var r=T(t[1]);return r||(console.warn(g.replace("{}",t[1])),console.warn("Falling back to no-highlight mode for this block.",e)),r?t[1]:"no-highlight"}return n.split(/\s+/).find(e=>p(e)||T(e))}(e);if(p(t))return;S("before:highlightBlock",{block:e,language:t}),f.useBR?(n=document.createElement("div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n"):n=e;const r=n.textContent,a=t?b(t,r,!0):v(r),i=k(n);if(i.length){const e=document.createElement("div");e.innerHTML=a.value,a.value=O(i,k(e),r)}a.value=x(a.value),S("after:highlightBlock",{block:e,result:a}),e.innerHTML=a.value,e.className=function(e,n,t){var r=n?s[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),e.includes(r)||a.push(r),a.join(" ").trim()}(e.className,t,a.language),e.result={language:a.language,re:a.relevance,relavance:a.relevance},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.relevance,relavance:a.second_best.relevance})}const N=()=>{if(!N.called){N.called=!0;var e=document.querySelectorAll("pre code");a.forEach.call(e,E)}};function T(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]}function A(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach(e=>{s[e]=n})}function I(e){var n=T(e);return n&&!n.disableAutodetect}function S(e,n){var t=e;o.forEach((function(e){e[t]&&e[t](n)}))}Object.assign(t,{highlight:b,highlightAuto:v,fixMarkup:x,highlightBlock:E,configure:function(e){f=y(f,e)},initHighlighting:N,initHighlightingOnLoad:function(){window.addEventListener("DOMContentLoaded",N,!1)},registerLanguage:function(e,n){var r=null;try{r=n(t)}catch(n){if(console.error("Language definition for '{}' could not be registered.".replace("{}",e)),!l)throw n;console.error(n),r=h}r.name||(r.name=e),i[e]=r,r.rawDefinition=n.bind(null,t),r.aliases&&A(r.aliases,{languageName:e})},listLanguages:function(){return Object.keys(i)},getLanguage:T,registerAliases:A,requireLanguage:function(e){var n=T(e);if(n)return n;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))},autoDetection:I,inherit:y,addPlugin:function(e){o.push(e)}}),t.debugMode=function(){l=!1},t.safeMode=function(){l=!0},t.versionString="10.1.1";for(const n in _)"object"==typeof _[n]&&e(_[n]);return Object.assign(t,_),t}({})}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);hljs.registerLanguage("less",function(){"use strict";return function(e){var n="([\\w-]+|@{[\\w-]+})",a=[],s=[],t=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},r=function(e,n,a){return{className:e,begin:n,relevance:a}},i={begin:"\\(",end:"\\)",contains:s,relevance:0};s.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t("'"),t('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},r("number","#[0-9A-Fa-f]+\\b"),i,r("variable","@@?[\\w-]+",10),r("variable","@{[\\w-]+}"),r("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var c=s.concat({begin:"{",end:"}",contains:a}),l={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(s)},o={begin:n+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:n,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:s}}]},g={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:s,relevance:0}},d={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:c}},b={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:n,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,r("keyword","all\\b"),r("variable","@{[\\w-]+}"),r("selector-tag",n+"%?",0),r("selector-id","#"+n),r("selector-class","\\."+n,0),r("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:c},{begin:"!important"}]};return a.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,g,d,o,b),{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:a}}}());hljs.registerLanguage("scala",function(){"use strict";return function(e){var n={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},a={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,n]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[n],relevance:10}]},s={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},t={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},i={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[s]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[s]},t]},l={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[t]};return{name:"Scala",keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},s,l,i,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}}());hljs.registerLanguage("java",function(){"use strict";function e(e){return e?"string"==typeof e?e:e.source:null}function n(e){return a("(",e,")?")}function a(...n){return n.map(n=>e(n)).join("")}function s(...n){return"("+n.map(n=>e(n)).join("|")+")"}return function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",i={className:"meta",begin:"@[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},r=e=>a("[",e,"]+([",e,"_]*[",e,"]+)?"),c={className:"number",variants:[{begin:`\\b(0[bB]${r("01")})[lL]?`},{begin:`\\b(0${r("0-7")})[dDfFlL]?`},{begin:a(/\b0[xX]/,s(a(r("a-fA-F0-9"),/\./,r("a-fA-F0-9")),a(r("a-fA-F0-9"),/\.?/),a(/\./,r("a-fA-F0-9"))),/([pP][+-]?(\d+))?/,/[fFdDlL]?/)},{begin:a(/\b/,s(a(/\d*\./,r("\\d")),r("\\d")),/[eE][+-]?[\d]+[dDfF]?/)},{begin:a(/\b/,r(/\d/),n(/\.?/),n(r(/\d/)),/[dDfFlL]?/)}],relevance:0};return{name:"Java",aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},c,i]}}}());hljs.registerLanguage("makefile",function(){"use strict";return function(e){var i={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%")+")",r={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},a={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},i={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},s={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(a,{className:"meta-string"}),{className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},o={className:"title",begin:t("[a-zA-Z_]\\w*::")+e.IDENT_RE,relevance:0},c=t("[a-zA-Z_]\\w*::")+e.IDENT_RE+"\\s*\\(",l={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary",literal:"true false nullptr NULL"},d=[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,a],_={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:l,contains:d.concat([{begin:/\(/,end:/\)/,keywords:l,contains:d.concat(["self"]),relevance:0}]),relevance:0},u={className:"function",begin:"("+n+"[\\*&\\s]+)+"+c,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:l,illegal:/[^\w\s\*&:<>]/,contains:[{begin:"decltype\\(auto\\)",keywords:l,relevance:0},{begin:c,returnBegin:!0,contains:[o],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r,{begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r]}]},r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s]};return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:l,disableAutodetect:!0,illegal:"",keywords:l,contains:["self",r]},{begin:e.IDENT_RE+"::",keywords:l},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin://,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:s,strings:a,keywords:l}}}}());hljs.registerLanguage("c",function(){"use strict";return function(e){var n=e.getLanguage("c-like").rawDefinition();return n.name="C",n.aliases=["c","h"],n}}());hljs.registerLanguage("php",function(){"use strict";return function(e){var r={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},t={className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{begin:/\?>/}]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},i={keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list new object or private protected public real return string switch throw trait try unset use var void while xor yield",literal:"false null true",built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Throwable Traversable WeakReference Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass"};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:i,contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler"}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},t,{className:"keyword",begin:/\$this\b/},r,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:i,contains:["self",r,e.C_BLOCK_COMMENT_MODE,a,n]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},a,n]}}}());hljs.registerLanguage("scss",function(){"use strict";return function(e){var t={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},i={className:"number",begin:"#[0-9A-Fa-f]+"};return e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"\\#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{className:"selector-tag",begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{className:"selector-pseudo",begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{className:"selector-pseudo",begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{className:"attribute",begin:"\\b(src|z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",illegal:"[^\\s]"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[t,i,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"meta",begin:"!important"}]},{begin:"@(page|font-face)",lexemes:"@[a-z-]+",keywords:"@page @font-face"},{begin:"@",end:"[{;]",returnBegin:!0,keywords:"and or not only",contains:[{begin:"@[a-z-]+",className:"keyword"},t,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,i,e.CSS_NUMBER_MODE]}]}}}());hljs.registerLanguage("coffeescript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);return function(r){var t={keyword:e.concat(["then","unless","until","loop","by","when","and","or","is","isnt","not"]).filter((e=>n=>!e.includes(n))(["var","const","let","function","static"])).join(" "),literal:n.concat(["yes","no","on","off"]).join(" "),built_in:a.concat(["npm","print"]).join(" ")},i="[A-Za-z$_][0-9A-Za-z$_]*",s={className:"subst",begin:/#\{/,end:/}/,keywords:t},o=[r.BINARY_NUMBER_MODE,r.inherit(r.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[r.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[r.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[r.BACKSLASH_ESCAPE,s]},{begin:/"/,end:/"/,contains:[r.BACKSLASH_ESCAPE,s]}]},{className:"regexp",variants:[{begin:"///",end:"///",contains:[s,r.HASH_COMMENT_MODE]},{begin:"//[gim]{0,3}(?=\\W)",relevance:0},{begin:/\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/}]},{begin:"@"+i},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{begin:"```",end:"```"},{begin:"`",end:"`"}]}];s.contains=o;var c=r.inherit(r.TITLE_MODE,{begin:i}),l={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{name:"CoffeeScript",aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,contains:o.concat([r.COMMENT("###","###"),r.HASH_COMMENT_MODE,{className:"function",begin:"^\\s*"+i+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[c,l]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[l]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[c]},c]},{begin:i+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}}());hljs.registerLanguage("lua",function(){"use strict";return function(e){var t={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},a=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[t],relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:a.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:a}].concat(a)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[t],relevance:5}])}}}());hljs.registerLanguage("xml",function(){"use strict";return function(e){var n={className:"symbol",begin:"&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;"},a={begin:"\\s",contains:[{className:"meta-keyword",begin:"#?[a-z_][a-z1-9_-]+",illegal:"\\n"}]},s=e.inherit(a,{begin:"\\(",end:"\\)"}),t=e.inherit(e.APOS_STRING_MODE,{className:"meta-string"}),i=e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"}),c={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:"",relevance:10,contains:[a,i,t,s,{begin:"\\[",end:"\\]",contains:[{className:"meta",begin:"",contains:[a,s,i,t]}]}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},n,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:")",end:">",keywords:{name:"style"},contains:[c],starts:{end:"",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:")",end:">",keywords:{name:"script"},contains:[c],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:"",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},c]}]}}}());hljs.registerLanguage("markdown",function(){"use strict";return function(n){const e={begin:"<",end:">",subLanguage:"xml",relevance:0},a={begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},i={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},s={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};i.contains.push(s),s.contains.push(i);var c=[e,a];return i.contains=i.contains.concat(c),s.contains=s.contains.concat(c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:c=c.concat(i,s)},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:c}]}]},e,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:c,end:"$"},{className:"code",variants:[{begin:"(`{3,})(.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})(.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}}());hljs.registerLanguage("cmake",function(){"use strict";return function(e){return{name:"CMake",aliases:["cmake.in"],case_insensitive:!0,keywords:{keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined"},contains:[{className:"variable",begin:"\\${",end:"}"},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}}());hljs.registerLanguage("kotlin",function(){"use strict";return function(e){var n={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},a={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},i={className:"subst",begin:"\\${",end:"}",contains:[e.C_NUMBER_MODE]},s={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},t={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[s,i]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,s,i]}]};i.contains.push(t);var r={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},l={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(t,{className:"meta-string"})]}]},c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),o={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},d=o;return d.variants[1].contains=[o],o.variants[1].contains=[d],{name:"Kotlin",aliases:["kt"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},a,r,l,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:n,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[o,e.C_LINE_COMMENT_MODE,c],relevance:0},e.C_LINE_COMMENT_MODE,c,r,l,t,e.C_NUMBER_MODE]},c]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},r,l]},t,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},{className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0}]}}}());hljs.registerLanguage("objectivec",function(){"use strict";return function(e){var n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n,keyword:"@interface @class @protocol @implementation"};return{name:"Objective-C",aliases:["mm","objc","obj-c"],keywords:{$pattern:n,keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+_.keyword.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:_,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}}());hljs.registerLanguage("python",function(){"use strict";return function(e){var n={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},a={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:n,illegal:/#/},s={begin:/\{\{/,relevance:0},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,s,i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},l={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},t={className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:["self",a,l,r,e.HASH_COMMENT_MODE]}]};return i.contains=[r,l,a],{name:"Python",aliases:["py","gyp","ipython"],keywords:n,illegal:/(<\/|->|\?)|=>/,contains:[a,l,{beginKeywords:"if",relevance:0},r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,t,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}}());hljs.registerLanguage("python-repl",function(){"use strict";return function(n){return{aliases:["pycon"],contains:[{className:"meta",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}}());hljs.registerLanguage("json",function(){"use strict";return function(n){var e={literal:"true false null"},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],t=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],a={end:",",endsWithParent:!0,excludeEnd:!0,contains:t,keywords:e},l={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(a,{begin:/:/})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(a)],illegal:"\\S"};return t.push(l,s),i.forEach((function(n){t.push(n)})),{name:"JSON",contains:t,keywords:e,illegal:"\\S"}}}());hljs.registerLanguage("css",function(){"use strict";return function(e){var n={begin:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}}]};return{name:"CSS",case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(page|font-face)",lexemes:"@[a-z-]+",keywords:"@page @font-face"},{begin:"@",end:"[{;]",illegal:/:/,returnBegin:!0,contains:[{className:"keyword",begin:/@\-?\w[\w]*(\-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:"and or not only",contains:[{begin:/[a-z-]+:/,className:"attribute"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,n]}]}}}());hljs.registerLanguage("coq",function(){"use strict";return function(e){return{name:"Coq",keywords:{keyword:"_|0 as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies Dependent Derive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with",built_in:"abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with"},contains:[e.QUOTE_STRING_MODE,e.COMMENT("\\(\\*","\\*\\)"),e.C_NUMBER_MODE,{className:"type",excludeBegin:!0,begin:"\\|\\s*",end:"\\w+"},{begin:/[-=]>/}]}}}());hljs.registerLanguage("x86asm",function(){"use strict";return function(s){return{name:"Intel x86 Assembly",case_insensitive:!0,keywords:{$pattern:"[.%]?"+s.IDENT_RE,keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[s.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},s.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}}}());hljs.registerLanguage("lisp",function(){"use strict";return function(e){var n="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",i="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",a={className:"literal",begin:"\\b(t{1}|nil)\\b"},s={className:"number",variants:[{begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),g=e.COMMENT(";","$",{relevance:0}),l={begin:"\\*",end:"\\*"},t={className:"symbol",begin:"[:&]"+n},r={begin:n,relevance:0},c={contains:[s,b,l,t,{begin:"\\(",end:"\\)",contains:["self",a,b,s,r]},r],variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{name:"quote"}},{begin:"'\\|[^]*?\\|"}]},d={variants:[{begin:"'"+n},{begin:"#'"+n+"(::"+n+")*"}]},o={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0,relevance:0};return o.contains=[{className:"name",variants:[{begin:n},{begin:"\\|[^]*?\\|"}]},u],u.contains=[c,d,o,a,s,b,g,l,t,{begin:"\\|[^]*?\\|"},r],{name:"Lisp",illegal:/\S/,contains:[s,e.SHEBANG(),a,b,g,c,d,o,r]}}}());hljs.registerLanguage("awk",function(){"use strict";return function(e){return{name:"Awk",keywords:{keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10"},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]}}}());hljs.registerLanguage("csharp",function(){"use strict";return function(e){var n={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},i=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},s={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},t=e.inherit(s,{illegal:/\n/}),l={className:"subst",begin:"{",end:"}",keywords:n},r=e.inherit(l,{illegal:/\n/}),c={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,r]},o={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},l]},g=e.inherit(o,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]});l.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],r.contains=[g,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var d={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},i]},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",b={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},d,a,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},i,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*(\\<.+\\>)?\\s*\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{begin:e.IDENT_RE+"\\s*(\\<.+\\>)?\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE,E],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,contains:[d,a,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}}());hljs.registerLanguage("mipsasm",function(){"use strict";return function(e){return{name:"MIPS Assembly",case_insensitive:!0,aliases:["mips"],keywords:{$pattern:"\\.?"+e.IDENT_RE,meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ",built_in:"$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt "},contains:[{className:"keyword",begin:"\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(.hb)?|jr(.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs.[sd]|add.[sd]|alnv.ps|bc1[ft]l?|c.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et]).[sd]|(ceil|floor|round|trunc).[lw].[sd]|cfc1|cvt.d.[lsw]|cvt.l.[dsw]|cvt.ps.s|cvt.s.[dlw]|cvt.s.p[lu]|cvt.w.[dls]|div.[ds]|ldx?c1|luxc1|lwx?c1|madd.[sd]|mfc1|mov[fntz]?.[ds]|msub.[sd]|mth?c1|mul.[ds]|neg.[ds]|nmadd.[ds]|nmsub.[ds]|p[lu][lu].ps|recip.fmt|r?sqrt.[ds]|sdx?c1|sub.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)",end:"\\s"},e.COMMENT("[;#](?!s*$)","$"),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"0x[0-9a-f]+"},{begin:"\\b-?\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^\\s*[0-9]+:"},{begin:"[0-9]+[bf]"}],relevance:0}],illegal:"/"}}}());hljs.registerLanguage("cpp",function(){"use strict";return function(e){var t=e.getLanguage("c-like").rawDefinition();return t.disableAutodetect=!1,t.name="C++",t.aliases=["cc","c++","h++","hpp","hh","hxx","cxx"],t}}());hljs.registerLanguage("nginx",function(){"use strict";return function(e){var n={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/}/},{begin:"[\\$\\@]"+e.UNDERSCORE_IDENT_RE}]},a={endsWithParent:!0,keywords:{$pattern:"[a-z/_]+",literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[n]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:"\\s\\^",end:"\\s|{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},n]};return{name:"Nginx config",aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE+"\\s+{",returnBegin:!0,end:"{",contains:[{className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|{",returnBegin:!0,contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:a}],relevance:0}],illegal:"[^\\s\\}]"}}}());hljs.registerLanguage("dos",function(){"use strict";return function(e){var t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del"},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{className:"number",begin:"\\b\\d+",relevance:0},t]}}}());hljs.registerLanguage("ruby",function(){"use strict";return function(e){var n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",a={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},s={className:"doctag",begin:"@[A-Za-z]+"},i={begin:"#<",end:">"},r=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^\\=begin","^\\=end",{contains:[s],relevance:10}),e.COMMENT("^__END__","\\n$")],c={className:"subst",begin:"#\\{",end:"}",keywords:a},t={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,c]})]}]},b={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:a},d=[t,i,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(r)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:n}),b].concat(r)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[t,{begin:n}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[i,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(r),relevance:0}].concat(r);c.contains=d,b.contains=d;var g=[{begin:/^\s*=>/,starts:{end:"$",contains:d}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:d}}];return{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:r.concat(g).concat(d)}}}());hljs.registerLanguage("yaml",function(){"use strict";return function(e){var n="true false yes no null",a="[\\w#;/?:@&=+$,.~*\\'()[\\]]+",s={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]},i=e.inherit(s,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={end:",",endsWithParent:!0,excludeEnd:!0,contains:[],keywords:n,relevance:0},t={begin:"{",end:"}",contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[",end:"\\]",contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type",begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"\\-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},{className:"number",begin:e.C_NUMBER_RE+"\\b"},t,g,s],c=[...b];return c.pop(),c.push(i),l.contains=c,{name:"YAML",case_insensitive:!0,aliases:["yml","YAML"],contains:b}}}());hljs.registerLanguage("rust",function(){"use strict";return function(e){var n="([ui](8|16|32|64|128|size)|f(32|64))?",t="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:t},illegal:""}]}}}());hljs.registerLanguage("bash",function(){"use strict";return function(e){const s={};Object.assign(s,{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{/,end:/\}/,contains:[{begin:/:-/,contains:[s]}]}]});const t={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,t]};t.contains.push(n);const a={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,s]},i=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b-?[a-z\._]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[i,e.SHEBANG(),c,a,e.HASH_COMMENT_MODE,n,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},s]}}}());hljs.registerLanguage("shell",function(){"use strict";return function(s){return{name:"Shell Session",aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}}());hljs.registerLanguage("perl",function(){"use strict";return function(e){var n={$pattern:/[\w.]+/,keyword:"getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmget sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when"},t={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:n},s={begin:"->{",end:"}"},r={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,t,r],a=[r,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),s,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return t.contains=a,s.contains=a,{name:"Perl",aliases:["pl","pm"],keywords:n,contains:a}}}());hljs.registerLanguage("http",function(){"use strict";return function(e){var n="HTTP/[0-9\\.]+";return{name:"HTTP",aliases:["https"],illegal:"\\S",contains:[{begin:"^"+n,end:"$",contains:[{className:"number",begin:"\\b\\d{3}\\b"}]},{begin:"^[A-Z]+ (.*?) "+n+"$",returnBegin:!0,end:"$",contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{begin:n},{className:"keyword",begin:"[A-Z]+"}]},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,illegal:"\\n|\\s|=",starts:{end:"$",relevance:0}},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}]}}}());hljs.registerLanguage("go",function(){"use strict";return function(e){var n={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{name:"Go",aliases:["golang"],keywords:n,illegal:"/},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:i,contains:["self",r,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:i,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)\\b"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,n]}]}}}());hljs.registerLanguage("sql",function(){"use strict";return function(e){var t=e.COMMENT("--","$");return{name:"SQL",case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,keywords:{$pattern:/[\w\.]+/,keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:"`",end:"`"},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}}}());hljs.registerLanguage("dockerfile",function(){"use strict";return function(e){return{name:"Dockerfile",aliases:["docker"],case_insensitive:!0,keywords:"from maintainer expose env arg user onbuild stopsignal",contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},n.inherit(n.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),n.inherit(n.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}}());hljs.registerLanguage("plaintext",function(){"use strict";return function(t){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}}());hljs.registerLanguage("javascript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function s(e){return r("(?=",e,")")}function r(...e){return e.map(e=>(function(e){return e?"string"==typeof e?e:e.source:null})(e)).join("")}return function(t){var i="[A-Za-z$_][0-9A-Za-z$_]*",c={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/},o={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:e.join(" "),literal:n.join(" "),built_in:a.join(" ")},l={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:t.C_NUMBER_RE+"n?"}],relevance:0},E={className:"subst",begin:"\\$\\{",end:"\\}",keywords:o,contains:[]},d={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,E],subLanguage:"xml"}},g={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,E],subLanguage:"css"}},u={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,E]};E.contains=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,d,g,u,l,t.REGEXP_MODE];var b=E.contains.concat([{begin:/\(/,end:/\)/,contains:["self"].concat(E.contains,[t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE])},t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]),_={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:b};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:o,contains:[t.SHEBANG({binary:"node",relevance:5}),{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,d,g,u,t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,l,{begin:r(/[{,\n]\s*/,s(r(/(((\/\/.*)|(\/\*(.|\n)*\*\/))\s*)*/,i+"\\s*:"))),relevance:0,contains:[{className:"attr",begin:i+s("\\s*:"),relevance:0}]},{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.REGEXP_MODE,{className:"function",begin:"(\\([^(]*(\\([^(]*(\\([^(]*\\))?\\))?\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:b}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:"<>",end:""},{begin:c.begin,end:c.end}],subLanguage:"xml",contains:[{begin:c.begin,end:c.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[t.inherit(t.TITLE_MODE,{begin:i}),_],illegal:/\[|%/},{begin:/\$[(.]/},t.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0},{begin:"(get|set)\\s+(?="+i+"\\()",end:/{/,keywords:"get set",contains:[t.inherit(t.TITLE_MODE,{begin:i}),{begin:/\(\)/},_]}],illegal:/#(?!!)/}}}());hljs.registerLanguage("powershell",function(){"use strict";return function(e){var n={$pattern:/-?[A-z\.\-]+\b/,keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"},s={begin:"`[\\s\\S]",relevance:0},i={className:"variable",variants:[{begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]},a={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[s,i,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},t={className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},r=e.inherit(e.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]}),c={className:"class",beginKeywords:"class enum",end:/\s*[{]/,excludeEnd:!0,relevance:0,contains:[e.TITLE_MODE]},l={className:"function",begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,className:"params",relevance:0,contains:[i]}]},o={begin:/using\s/,end:/$/,returnBegin:!0,contains:[a,t,{className:"keyword",begin:/(using|assembly|command|module|namespace|type)/}]},p={className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:"keyword",begin:"(".concat(n.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,relevance:0},e.inherit(e.TITLE_MODE,{endsParent:!0})]},g=[p,r,s,e.NUMBER_MODE,a,t,{className:"built_in",variants:[{begin:"(Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|New|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Complete|Confirm|Deny|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where)+(-)[\\w\\d]+"}]},i,{className:"literal",begin:/\$(null|true|false)\b/},{className:"selector-tag",begin:/\@\B/,relevance:0}],m={begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",g,{begin:"(string|char|byte|int|long|bool|decimal|single|double|DateTime|xml|array|hashtable|void)",className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,relevance:0})};return p.contains.unshift(m),{name:"PowerShell",aliases:["ps","ps1"],case_insensitive:!0,keywords:n,contains:g.concat(c,l,o,{variants:[{className:"operator",begin:"(-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor)\\b"},{className:"literal",begin:/(-)[\w\d]+/,relevance:0}]},m)}}}());hljs.registerLanguage("haskell",function(){"use strict";return function(e){var n={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},i={className:"meta",begin:"{-#",end:"#-}"},a={className:"meta",begin:"^#",end:"$"},s={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},l={begin:"\\(",end:"\\)",illegal:'"',contains:[i,a,{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{begin:"[_a-z][\\w']*"}),n]};return{name:"Haskell",aliases:["hs"],keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",contains:[{beginKeywords:"module",end:"where",keywords:"module where",contains:[l,n],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",keywords:"import qualified as hiding",contains:[l,n],illegal:"\\W\\.|;"},{className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",keywords:"class family instance where",contains:[s,l,n]},{className:"class",begin:"\\b(data|(new)?type)\\b",end:"$",keywords:"data family type newtype deriving",contains:[i,s,l,{begin:"{",end:"}",contains:l.contains},n]},{beginKeywords:"default",end:"$",contains:[s,l,n]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,n]},{begin:"\\bforeign\\b",end:"$",keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",contains:[s,e.QUOTE_STRING_MODE,n]},{className:"meta",begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"},i,a,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,s,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),n,{begin:"->|<-"}]}}}());hljs.registerLanguage("typescript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);return function(r){var t={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:e.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]).join(" "),literal:n.join(" "),built_in:a.concat(["any","void","number","boolean","string","object","never","enum"]).join(" ")},s={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:r.C_NUMBER_RE+"n?"}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:t,contains:[]},c={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[r.BACKSLASH_ESCAPE,o],subLanguage:"xml"}},l={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[r.BACKSLASH_ESCAPE,o],subLanguage:"css"}},E={className:"string",begin:"`",end:"`",contains:[r.BACKSLASH_ESCAPE,o]};o.contains=[r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,c,l,E,i,r.REGEXP_MODE];var d={begin:"\\(",end:/\)/,keywords:t,contains:["self",r.QUOTE_STRING_MODE,r.APOS_STRING_MODE,r.NUMBER_MODE]},u={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,s,d]};return{name:"TypeScript",aliases:["ts"],keywords:t,contains:[r.SHEBANG(),{className:"meta",begin:/^\s*['"]use strict['"]/},r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,c,l,E,r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,i,{begin:"("+r.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,r.REGEXP_MODE,{className:"function",begin:"(\\([^(]*(\\([^(]*(\\([^(]*\\))?\\))?\\)|"+r.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:r.UNDERSCORE_IDENT_RE},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:d.contains}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[\{;]/,excludeEnd:!0,keywords:t,contains:["self",r.inherit(r.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*"}),u],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/[\{;]/,excludeEnd:!0,contains:["self",u]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+r.IDENT_RE,relevance:0},s,d]}}}());hljs.registerLanguage("r",function(){"use strict";return function(e){var n="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{name:"R",contains:[e.HASH_COMMENT_MODE,{begin:n,keywords:{$pattern:n,keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{begin:"`",end:"`",relevance:0},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]}]}}}());hljs.registerLanguage("diff",function(){"use strict";return function(e){return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}}}());hljs.registerLanguage("latex",function(){"use strict";return function(e){var n={className:"tag",begin:/\\/,relevance:0,contains:[{className:"name",variants:[{begin:/[a-zA-Z\u0430-\u044f\u0410-\u042f]+[*]?/},{begin:/[^a-zA-Z\u0430-\u044f\u0410-\u042f0-9]/}],starts:{endsWithParent:!0,relevance:0,contains:[{className:"string",variants:[{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/}]},{begin:/\s*=\s*/,endsWithParent:!0,relevance:0,contains:[{className:"number",begin:/-?\d*\.?\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/}]}]}}]};return{name:"LaTeX",aliases:["tex"],contains:[n,{className:"formula",contains:[n],relevance:0,variants:[{begin:/\$\$/,end:/\$\$/},{begin:/\$/,end:/\$/}]},e.COMMENT("%","$",{relevance:0})]}}}());hljs.registerLanguage("arduino",function(){"use strict";return function(e){var t=e.requireLanguage("cpp").rawDefinition(),r=t.keywords;return r.keyword+=" boolean byte word String",r.literal+=" DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL DEFAULT OUTPUT INPUT HIGH LOW",r.built_in+=" setup loop KeyboardController MouseController SoftwareSerial EthernetServer EthernetClient LiquidCrystal RobotControl GSMVoiceCall EthernetUDP EsploraTFT HttpClient RobotMotor WiFiClient GSMScanner FileSystem Scheduler GSMServer YunClient YunServer IPAddress GSMClient GSMModem Keyboard Ethernet Console GSMBand Esplora Stepper Process WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage Client Server GSMPIN FileIO Bridge Serial EEPROM Stream Mouse Audio Servo File Task GPRS WiFi Wire TFT GSM SPI SD runShellCommandAsynchronously analogWriteResolution retrieveCallingNumber printFirmwareVersion analogReadResolution sendDigitalPortPair noListenOnLocalhost readJoystickButton setFirmwareVersion readJoystickSwitch scrollDisplayRight getVoiceCallStatus scrollDisplayLeft writeMicroseconds delayMicroseconds beginTransmission getSignalStrength runAsynchronously getAsynchronously listenOnLocalhost getCurrentCarrier readAccelerometer messageAvailable sendDigitalPorts lineFollowConfig countryNameWrite runShellCommand readStringUntil rewindDirectory readTemperature setClockDivider readLightSensor endTransmission analogReference detachInterrupt countryNameRead attachInterrupt encryptionType readBytesUntil robotNameWrite readMicrophone robotNameRead cityNameWrite userNameWrite readJoystickY readJoystickX mouseReleased openNextFile scanNetworks noInterrupts digitalWrite beginSpeaker mousePressed isActionDone mouseDragged displayLogos noAutoscroll addParameter remoteNumber getModifiers keyboardRead userNameRead waitContinue processInput parseCommand printVersion readNetworks writeMessage blinkVersion cityNameRead readMessage setDataMode parsePacket isListening setBitOrder beginPacket isDirectory motorsWrite drawCompass digitalRead clearScreen serialEvent rightToLeft setTextSize leftToRight requestFrom keyReleased compassRead analogWrite interrupts WiFiServer disconnect playMelody parseFloat autoscroll getPINUsed setPINUsed setTimeout sendAnalog readSlider analogRead beginWrite createChar motorsStop keyPressed tempoWrite readButton subnetMask debugPrint macAddress writeGreen randomSeed attachGPRS readString sendString remotePort releaseAll mouseMoved background getXChange getYChange answerCall getResult voiceCall endPacket constrain getSocket writeJSON getButton available connected findUntil readBytes exitValue readGreen writeBlue startLoop IPAddress isPressed sendSysex pauseMode gatewayIP setCursor getOemKey tuneWrite noDisplay loadImage switchPIN onRequest onReceive changePIN playFile noBuffer parseInt overflow checkPIN knobRead beginTFT bitClear updateIR bitWrite position writeRGB highByte writeRed setSpeed readBlue noStroke remoteIP transfer shutdown hangCall beginSMS endWrite attached maintain noCursor checkReg checkPUK shiftOut isValid shiftIn pulseIn connect println localIP pinMode getIMEI display noBlink process getBand running beginSD drawBMP lowByte setBand release bitRead prepare pointTo readRed setMode noFill remove listen stroke detach attach noTone exists buffer height bitSet circle config cursor random IRread setDNS endSMS getKey micros millis begin print write ready flush width isPIN blink clear press mkdir rmdir close point yield image BSSID click delay read text move peek beep rect line open seek fill size turn stop home find step tone sqrt RSSI SSID end bit tan cos sin pow map abs max min get run put",t.name="Arduino",t}}());hljs.registerLanguage("bnf",function(){"use strict";return function(n){return{name:"Backus–Naur Form",contains:[{className:"attribute",begin://},{begin:/::=/,end:/$/,contains:[{begin://},n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.APOS_STRING_MODE,n.QUOTE_STRING_MODE]}]}}}()); \ No newline at end of file diff --git a/libs/highlight/styles/a11y-dark.css b/libs/highlight/styles/a11y-dark.css new file mode 100644 index 000000000..b93b742a4 --- /dev/null +++ b/libs/highlight/styles/a11y-dark.css @@ -0,0 +1,99 @@ +/* a11y-dark theme */ +/* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */ +/* @author: ericwbailey */ + +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #d4d0ab; +} + +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #ffa07a; +} + +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f5ab35; +} + +/* Yellow */ +.hljs-attribute { + color: #ffd700; +} + +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #abe338; +} + +/* Blue */ +.hljs-title, +.hljs-section { + color: #00e0e0; +} + +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #dcc6e0; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2b2b2b; + color: #f8f8f2; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +@media screen and (-ms-high-contrast: active) { + .hljs-addition, + .hljs-attribute, + .hljs-built_in, + .hljs-builtin-name, + .hljs-bullet, + .hljs-comment, + .hljs-link, + .hljs-literal, + .hljs-meta, + .hljs-number, + .hljs-params, + .hljs-string, + .hljs-symbol, + .hljs-type, + .hljs-quote { + color: highlight; + } + + .hljs-keyword, + .hljs-selector-tag { + font-weight: bold; + } +} diff --git a/libs/highlight/styles/a11y-light.css b/libs/highlight/styles/a11y-light.css new file mode 100644 index 000000000..f1bf8f3f8 --- /dev/null +++ b/libs/highlight/styles/a11y-light.css @@ -0,0 +1,99 @@ +/* a11y-light theme */ +/* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */ +/* @author: ericwbailey */ + +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #696969; +} + +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #d91e18; +} + +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #aa5d00; +} + +/* Yellow */ +.hljs-attribute { + color: #aa5d00; +} + +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #008000; +} + +/* Blue */ +.hljs-title, +.hljs-section { + color: #007faa; +} + +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7928a1; +} + +.hljs { + display: block; + overflow-x: auto; + background: #fefefe; + color: #545454; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +@media screen and (-ms-high-contrast: active) { + .hljs-addition, + .hljs-attribute, + .hljs-built_in, + .hljs-builtin-name, + .hljs-bullet, + .hljs-comment, + .hljs-link, + .hljs-literal, + .hljs-meta, + .hljs-number, + .hljs-params, + .hljs-string, + .hljs-symbol, + .hljs-type, + .hljs-quote { + color: highlight; + } + + .hljs-keyword, + .hljs-selector-tag { + font-weight: bold; + } +} diff --git a/libs/highlight/styles/agate.css b/libs/highlight/styles/agate.css new file mode 100644 index 000000000..5d7a3e8c7 --- /dev/null +++ b/libs/highlight/styles/agate.css @@ -0,0 +1,108 @@ +/*! + * Agate by Taufik Nurrohman + * --------------------------------------------------------------- + * + * #ade5fc + * #a2fca2 + * #c6b4f0 + * #d36363 + * #fcc28c + * #fc9b9b + * #ffa + * #fff + * #333 + * #62c8f3 + * #888 + * + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #333; + color: white; +} + +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-code, +.hljs-emphasis { + font-style: italic; +} + +.hljs-tag { + color: #62c8f3; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-selector-class { + color: #ade5fc; +} + +.hljs-string, +.hljs-bullet { + color: #a2fca2; +} + +.hljs-type, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-quote, +.hljs-built_in, +.hljs-builtin-name { + color: #ffa; +} + +.hljs-number, +.hljs-symbol, +.hljs-bullet { + color: #d36363; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #fcc28c; +} + +.hljs-comment, +.hljs-deletion, +.hljs-code { + color: #888; +} + +.hljs-regexp, +.hljs-link { + color: #c6b4f0; +} + +.hljs-meta { + color: #fc9b9b; +} + +.hljs-deletion { + background-color: #fc9b9b; + color: #333; +} + +.hljs-addition { + background-color: #a2fca2; + color: #333; +} + +.hljs a { + color: inherit; +} + +.hljs a:focus, +.hljs a:hover { + color: inherit; + text-decoration: underline; +} diff --git a/libs/highlight/styles/an-old-hope.css b/libs/highlight/styles/an-old-hope.css new file mode 100644 index 000000000..a6d56f4b4 --- /dev/null +++ b/libs/highlight/styles/an-old-hope.css @@ -0,0 +1,89 @@ +/* + +An Old Hope – Star Wars Syntax (c) Gustavo Costa +Original theme - Ocean Dark Theme – by https://github.com/gavsiu +Based on Jesse Leite's Atom syntax theme 'An Old Hope' – https://github.com/JesseLeite/an-old-hope-syntax-atom + +*/ + +/* Death Star Comment */ +.hljs-comment, +.hljs-quote +{ + color: #B6B18B; +} + +/* Darth Vader */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion +{ + color: #EB3C54; +} + +/* Threepio */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link +{ + color: #E7CE56; +} + +/* Luke Skywalker */ +.hljs-attribute +{ + color: #EE7C2B; +} + +/* Obi Wan Kenobi */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition +{ + color: #4FB4D7; +} + +/* Yoda */ +.hljs-title, +.hljs-section +{ + color: #78BB65; +} + +/* Mace Windu */ +.hljs-keyword, +.hljs-selector-tag +{ + color: #B45EA4; +} + +/* Millenium Falcon */ +.hljs +{ + display: block; + overflow-x: auto; + background: #1C1D21; + color: #c0c5ce; + padding: 0.5em; +} + +.hljs-emphasis +{ + font-style: italic; +} + +.hljs-strong +{ + font-weight: bold; +} diff --git a/libs/highlight/styles/androidstudio.css b/libs/highlight/styles/androidstudio.css new file mode 100644 index 000000000..bc8e473b5 --- /dev/null +++ b/libs/highlight/styles/androidstudio.css @@ -0,0 +1,66 @@ +/* +Date: 24 Fev 2015 +Author: Pedro Oliveira +*/ + +.hljs { + color: #a9b7c6; + background: #282b2e; + display: block; + overflow-x: auto; + padding: 0.5em; +} + +.hljs-number, +.hljs-literal, +.hljs-symbol, +.hljs-bullet { + color: #6897BB; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-deletion { + color: #cc7832; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-link { + color: #629755; +} + +.hljs-comment, +.hljs-quote { + color: #808080; +} + +.hljs-meta { + color: #bbb529; +} + +.hljs-string, +.hljs-attribute, +.hljs-addition { + color: #6A8759; +} + +.hljs-section, +.hljs-title, +.hljs-type { + color: #ffc66d; +} + +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e8bf6a; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/arduino-light.css b/libs/highlight/styles/arduino-light.css new file mode 100644 index 000000000..e6039c36f --- /dev/null +++ b/libs/highlight/styles/arduino-light.css @@ -0,0 +1,87 @@ +/* + +Arduino® Light Theme - Stefania Mellai + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #FFFFFF; +} + +.hljs, +.hljs-subst { + color: #434f54; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name { + color: #00979D; +} + +.hljs-built_in, +.hljs-literal, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #D35400; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #00979D; +} + +.hljs-type, +.hljs-string, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #005C5F; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-comment { + color: rgba(149,165,166,.8); +} + +.hljs-meta-keyword { + color: #728E00; +} + +.hljs-meta { + color: #434f54; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-function { + color: #728E00; +} + +.hljs-number { + color: #8A7B52; +} diff --git a/libs/highlight/styles/arta.css b/libs/highlight/styles/arta.css new file mode 100644 index 000000000..75ef3a9e5 --- /dev/null +++ b/libs/highlight/styles/arta.css @@ -0,0 +1,73 @@ +/* +Date: 17.V.2011 +Author: pumbur +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #222; +} + +.hljs, +.hljs-subst { + color: #aaa; +} + +.hljs-section { + color: #fff; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #444; +} + +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-regexp { + color: #ffcc33; +} + +.hljs-number, +.hljs-addition { + color: #00cc66; +} + +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-template-variable, +.hljs-attribute, +.hljs-link { + color: #32aaee; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #6644aa; +} + +.hljs-title, +.hljs-variable, +.hljs-deletion, +.hljs-template-tag { + color: #bb1166; +} + +.hljs-section, +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/ascetic.css b/libs/highlight/styles/ascetic.css new file mode 100644 index 000000000..48397e889 --- /dev/null +++ b/libs/highlight/styles/ascetic.css @@ -0,0 +1,45 @@ +/* + +Original style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-symbol, +.hljs-bullet, +.hljs-section, +.hljs-addition, +.hljs-attribute, +.hljs-link { + color: #888; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #ccc; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-name, +.hljs-type, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/atelier-cave-dark.css b/libs/highlight/styles/atelier-cave-dark.css new file mode 100644 index 000000000..65428f3b1 --- /dev/null +++ b/libs/highlight/styles/atelier-cave-dark.css @@ -0,0 +1,83 @@ +/* Base16 Atelier Cave Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Cave Comment */ +.hljs-comment, +.hljs-quote { + color: #7e7887; +} + +/* Atelier-Cave Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-regexp, +.hljs-link, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #be4678; +} + +/* Atelier-Cave Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #aa573c; +} + +/* Atelier-Cave Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #2a9292; +} + +/* Atelier-Cave Blue */ +.hljs-title, +.hljs-section { + color: #576ddb; +} + +/* Atelier-Cave Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #955ae7; +} + +.hljs-deletion, +.hljs-addition { + color: #19171c; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #be4678; +} + +.hljs-addition { + background-color: #2a9292; +} + +.hljs { + display: block; + overflow-x: auto; + background: #19171c; + color: #8b8792; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-cave-light.css b/libs/highlight/styles/atelier-cave-light.css new file mode 100644 index 000000000..b419f9fd8 --- /dev/null +++ b/libs/highlight/styles/atelier-cave-light.css @@ -0,0 +1,85 @@ +/* Base16 Atelier Cave Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Cave Comment */ +.hljs-comment, +.hljs-quote { + color: #655f6d; +} + +/* Atelier-Cave Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #be4678; +} + +/* Atelier-Cave Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #aa573c; +} + +/* Atelier-Cave Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #2a9292; +} + +/* Atelier-Cave Blue */ +.hljs-title, +.hljs-section { + color: #576ddb; +} + +/* Atelier-Cave Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #955ae7; +} + +.hljs-deletion, +.hljs-addition { + color: #19171c; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #be4678; +} + +.hljs-addition { + background-color: #2a9292; +} + +.hljs { + display: block; + overflow-x: auto; + background: #efecf4; + color: #585260; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-dune-dark.css b/libs/highlight/styles/atelier-dune-dark.css new file mode 100644 index 000000000..1684f5225 --- /dev/null +++ b/libs/highlight/styles/atelier-dune-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Dune Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Dune Comment */ +.hljs-comment, +.hljs-quote { + color: #999580; +} + +/* Atelier-Dune Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d73737; +} + +/* Atelier-Dune Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b65611; +} + +/* Atelier-Dune Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #60ac39; +} + +/* Atelier-Dune Blue */ +.hljs-title, +.hljs-section { + color: #6684e1; +} + +/* Atelier-Dune Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b854d4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #20201d; + color: #a6a28c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-dune-light.css b/libs/highlight/styles/atelier-dune-light.css new file mode 100644 index 000000000..547719de8 --- /dev/null +++ b/libs/highlight/styles/atelier-dune-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Dune Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Dune Comment */ +.hljs-comment, +.hljs-quote { + color: #7d7a68; +} + +/* Atelier-Dune Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d73737; +} + +/* Atelier-Dune Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b65611; +} + +/* Atelier-Dune Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #60ac39; +} + +/* Atelier-Dune Blue */ +.hljs-title, +.hljs-section { + color: #6684e1; +} + +/* Atelier-Dune Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b854d4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #fefbec; + color: #6e6b5e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-estuary-dark.css b/libs/highlight/styles/atelier-estuary-dark.css new file mode 100644 index 000000000..a5e507187 --- /dev/null +++ b/libs/highlight/styles/atelier-estuary-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Estuary Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Estuary Comment */ +.hljs-comment, +.hljs-quote { + color: #878573; +} + +/* Atelier-Estuary Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ba6236; +} + +/* Atelier-Estuary Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ae7313; +} + +/* Atelier-Estuary Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7d9726; +} + +/* Atelier-Estuary Blue */ +.hljs-title, +.hljs-section { + color: #36a166; +} + +/* Atelier-Estuary Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #5f9182; +} + +.hljs-deletion, +.hljs-addition { + color: #22221b; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ba6236; +} + +.hljs-addition { + background-color: #7d9726; +} + +.hljs { + display: block; + overflow-x: auto; + background: #22221b; + color: #929181; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-estuary-light.css b/libs/highlight/styles/atelier-estuary-light.css new file mode 100644 index 000000000..1daee5d98 --- /dev/null +++ b/libs/highlight/styles/atelier-estuary-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Estuary Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Estuary Comment */ +.hljs-comment, +.hljs-quote { + color: #6c6b5a; +} + +/* Atelier-Estuary Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ba6236; +} + +/* Atelier-Estuary Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ae7313; +} + +/* Atelier-Estuary Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7d9726; +} + +/* Atelier-Estuary Blue */ +.hljs-title, +.hljs-section { + color: #36a166; +} + +/* Atelier-Estuary Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #5f9182; +} + +.hljs-deletion, +.hljs-addition { + color: #22221b; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ba6236; +} + +.hljs-addition { + background-color: #7d9726; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4f3ec; + color: #5f5e4e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-forest-dark.css b/libs/highlight/styles/atelier-forest-dark.css new file mode 100644 index 000000000..0ef4fae31 --- /dev/null +++ b/libs/highlight/styles/atelier-forest-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Forest Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Forest Comment */ +.hljs-comment, +.hljs-quote { + color: #9c9491; +} + +/* Atelier-Forest Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #f22c40; +} + +/* Atelier-Forest Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #df5320; +} + +/* Atelier-Forest Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7b9726; +} + +/* Atelier-Forest Blue */ +.hljs-title, +.hljs-section { + color: #407ee7; +} + +/* Atelier-Forest Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6666ea; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b1918; + color: #a8a19f; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-forest-light.css b/libs/highlight/styles/atelier-forest-light.css new file mode 100644 index 000000000..bbedde18a --- /dev/null +++ b/libs/highlight/styles/atelier-forest-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Forest Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Forest Comment */ +.hljs-comment, +.hljs-quote { + color: #766e6b; +} + +/* Atelier-Forest Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #f22c40; +} + +/* Atelier-Forest Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #df5320; +} + +/* Atelier-Forest Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7b9726; +} + +/* Atelier-Forest Blue */ +.hljs-title, +.hljs-section { + color: #407ee7; +} + +/* Atelier-Forest Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6666ea; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f1efee; + color: #68615e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-heath-dark.css b/libs/highlight/styles/atelier-heath-dark.css new file mode 100644 index 000000000..fe01ff721 --- /dev/null +++ b/libs/highlight/styles/atelier-heath-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Heath Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Heath Comment */ +.hljs-comment, +.hljs-quote { + color: #9e8f9e; +} + +/* Atelier-Heath Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca402b; +} + +/* Atelier-Heath Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #a65926; +} + +/* Atelier-Heath Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #918b3b; +} + +/* Atelier-Heath Blue */ +.hljs-title, +.hljs-section { + color: #516aec; +} + +/* Atelier-Heath Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7b59c0; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b181b; + color: #ab9bab; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-heath-light.css b/libs/highlight/styles/atelier-heath-light.css new file mode 100644 index 000000000..ee43786d1 --- /dev/null +++ b/libs/highlight/styles/atelier-heath-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Heath Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Heath Comment */ +.hljs-comment, +.hljs-quote { + color: #776977; +} + +/* Atelier-Heath Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca402b; +} + +/* Atelier-Heath Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #a65926; +} + +/* Atelier-Heath Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #918b3b; +} + +/* Atelier-Heath Blue */ +.hljs-title, +.hljs-section { + color: #516aec; +} + +/* Atelier-Heath Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7b59c0; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f7f3f7; + color: #695d69; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-lakeside-dark.css b/libs/highlight/styles/atelier-lakeside-dark.css new file mode 100644 index 000000000..a937d3bf5 --- /dev/null +++ b/libs/highlight/styles/atelier-lakeside-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Lakeside Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Lakeside Comment */ +.hljs-comment, +.hljs-quote { + color: #7195a8; +} + +/* Atelier-Lakeside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d22d72; +} + +/* Atelier-Lakeside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #935c25; +} + +/* Atelier-Lakeside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #568c3b; +} + +/* Atelier-Lakeside Blue */ +.hljs-title, +.hljs-section { + color: #257fad; +} + +/* Atelier-Lakeside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6b6bb8; +} + +.hljs { + display: block; + overflow-x: auto; + background: #161b1d; + color: #7ea2b4; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-lakeside-light.css b/libs/highlight/styles/atelier-lakeside-light.css new file mode 100644 index 000000000..6c7e8f9ef --- /dev/null +++ b/libs/highlight/styles/atelier-lakeside-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Lakeside Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Lakeside Comment */ +.hljs-comment, +.hljs-quote { + color: #5a7b8c; +} + +/* Atelier-Lakeside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d22d72; +} + +/* Atelier-Lakeside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #935c25; +} + +/* Atelier-Lakeside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #568c3b; +} + +/* Atelier-Lakeside Blue */ +.hljs-title, +.hljs-section { + color: #257fad; +} + +/* Atelier-Lakeside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6b6bb8; +} + +.hljs { + display: block; + overflow-x: auto; + background: #ebf8ff; + color: #516d7b; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-plateau-dark.css b/libs/highlight/styles/atelier-plateau-dark.css new file mode 100644 index 000000000..3bb052693 --- /dev/null +++ b/libs/highlight/styles/atelier-plateau-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Plateau Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Plateau Comment */ +.hljs-comment, +.hljs-quote { + color: #7e7777; +} + +/* Atelier-Plateau Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca4949; +} + +/* Atelier-Plateau Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b45a3c; +} + +/* Atelier-Plateau Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #4b8b8b; +} + +/* Atelier-Plateau Blue */ +.hljs-title, +.hljs-section { + color: #7272ca; +} + +/* Atelier-Plateau Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8464c4; +} + +.hljs-deletion, +.hljs-addition { + color: #1b1818; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ca4949; +} + +.hljs-addition { + background-color: #4b8b8b; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b1818; + color: #8a8585; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-plateau-light.css b/libs/highlight/styles/atelier-plateau-light.css new file mode 100644 index 000000000..5f0222bec --- /dev/null +++ b/libs/highlight/styles/atelier-plateau-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Plateau Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Plateau Comment */ +.hljs-comment, +.hljs-quote { + color: #655d5d; +} + +/* Atelier-Plateau Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca4949; +} + +/* Atelier-Plateau Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b45a3c; +} + +/* Atelier-Plateau Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #4b8b8b; +} + +/* Atelier-Plateau Blue */ +.hljs-title, +.hljs-section { + color: #7272ca; +} + +/* Atelier-Plateau Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8464c4; +} + +.hljs-deletion, +.hljs-addition { + color: #1b1818; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ca4949; +} + +.hljs-addition { + background-color: #4b8b8b; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4ecec; + color: #585050; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-savanna-dark.css b/libs/highlight/styles/atelier-savanna-dark.css new file mode 100644 index 000000000..38f831431 --- /dev/null +++ b/libs/highlight/styles/atelier-savanna-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Savanna Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Savanna Comment */ +.hljs-comment, +.hljs-quote { + color: #78877d; +} + +/* Atelier-Savanna Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #b16139; +} + +/* Atelier-Savanna Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #9f713c; +} + +/* Atelier-Savanna Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #489963; +} + +/* Atelier-Savanna Blue */ +.hljs-title, +.hljs-section { + color: #478c90; +} + +/* Atelier-Savanna Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #55859b; +} + +.hljs-deletion, +.hljs-addition { + color: #171c19; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #b16139; +} + +.hljs-addition { + background-color: #489963; +} + +.hljs { + display: block; + overflow-x: auto; + background: #171c19; + color: #87928a; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-savanna-light.css b/libs/highlight/styles/atelier-savanna-light.css new file mode 100644 index 000000000..1ccd7c685 --- /dev/null +++ b/libs/highlight/styles/atelier-savanna-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Savanna Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Savanna Comment */ +.hljs-comment, +.hljs-quote { + color: #5f6d64; +} + +/* Atelier-Savanna Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #b16139; +} + +/* Atelier-Savanna Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #9f713c; +} + +/* Atelier-Savanna Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #489963; +} + +/* Atelier-Savanna Blue */ +.hljs-title, +.hljs-section { + color: #478c90; +} + +/* Atelier-Savanna Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #55859b; +} + +.hljs-deletion, +.hljs-addition { + color: #171c19; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #b16139; +} + +.hljs-addition { + background-color: #489963; +} + +.hljs { + display: block; + overflow-x: auto; + background: #ecf4ee; + color: #526057; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-seaside-dark.css b/libs/highlight/styles/atelier-seaside-dark.css new file mode 100644 index 000000000..df29949c6 --- /dev/null +++ b/libs/highlight/styles/atelier-seaside-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Seaside Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Seaside Comment */ +.hljs-comment, +.hljs-quote { + color: #809980; +} + +/* Atelier-Seaside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e6193c; +} + +/* Atelier-Seaside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #87711d; +} + +/* Atelier-Seaside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #29a329; +} + +/* Atelier-Seaside Blue */ +.hljs-title, +.hljs-section { + color: #3d62f5; +} + +/* Atelier-Seaside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ad2bee; +} + +.hljs { + display: block; + overflow-x: auto; + background: #131513; + color: #8ca68c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-seaside-light.css b/libs/highlight/styles/atelier-seaside-light.css new file mode 100644 index 000000000..9d960f29f --- /dev/null +++ b/libs/highlight/styles/atelier-seaside-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Seaside Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Seaside Comment */ +.hljs-comment, +.hljs-quote { + color: #687d68; +} + +/* Atelier-Seaside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e6193c; +} + +/* Atelier-Seaside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #87711d; +} + +/* Atelier-Seaside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #29a329; +} + +/* Atelier-Seaside Blue */ +.hljs-title, +.hljs-section { + color: #3d62f5; +} + +/* Atelier-Seaside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ad2bee; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4fbf4; + color: #5e6e5e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-sulphurpool-dark.css b/libs/highlight/styles/atelier-sulphurpool-dark.css new file mode 100644 index 000000000..c2ab7938d --- /dev/null +++ b/libs/highlight/styles/atelier-sulphurpool-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Sulphurpool Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Sulphurpool Comment */ +.hljs-comment, +.hljs-quote { + color: #898ea4; +} + +/* Atelier-Sulphurpool Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #c94922; +} + +/* Atelier-Sulphurpool Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #c76b29; +} + +/* Atelier-Sulphurpool Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #ac9739; +} + +/* Atelier-Sulphurpool Blue */ +.hljs-title, +.hljs-section { + color: #3d8fd1; +} + +/* Atelier-Sulphurpool Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6679cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #202746; + color: #979db4; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atelier-sulphurpool-light.css b/libs/highlight/styles/atelier-sulphurpool-light.css new file mode 100644 index 000000000..96c47d086 --- /dev/null +++ b/libs/highlight/styles/atelier-sulphurpool-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Sulphurpool Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Sulphurpool Comment */ +.hljs-comment, +.hljs-quote { + color: #6b7394; +} + +/* Atelier-Sulphurpool Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #c94922; +} + +/* Atelier-Sulphurpool Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #c76b29; +} + +/* Atelier-Sulphurpool Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #ac9739; +} + +/* Atelier-Sulphurpool Blue */ +.hljs-title, +.hljs-section { + color: #3d8fd1; +} + +/* Atelier-Sulphurpool Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6679cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f5f7ff; + color: #5e6687; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/atom-one-dark-reasonable.css b/libs/highlight/styles/atom-one-dark-reasonable.css new file mode 100644 index 000000000..0a43fe26b --- /dev/null +++ b/libs/highlight/styles/atom-one-dark-reasonable.css @@ -0,0 +1,75 @@ +/* + +Atom One Dark With support for ReasonML by Gidi Morris, based off work by Daniel Gamage + +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #abb2bf; + background: #282c34; +} +.hljs-keyword, .hljs-operator { + color: #F92672; +} +.hljs-pattern-match { + color: #F92672; +} +.hljs-pattern-match .hljs-constructor { + color: #61aeee; +} +.hljs-function { + color: #61aeee; +} +.hljs-function .hljs-params { + color: #A6E22E; +} +.hljs-function .hljs-params .hljs-typing { + color: #FD971F; +} +.hljs-module-access .hljs-module { + color: #7e57c2; +} +.hljs-constructor { + color: #e2b93d; +} +.hljs-constructor .hljs-string { + color: #9CCC65; +} +.hljs-comment, .hljs-quote { + color: #b18eb1; + font-style: italic; +} +.hljs-doctag, .hljs-formula { + color: #c678dd; +} +.hljs-section, .hljs-name, .hljs-selector-tag, .hljs-deletion, .hljs-subst { + color: #e06c75; +} +.hljs-literal { + color: #56b6c2; +} +.hljs-string, .hljs-regexp, .hljs-addition, .hljs-attribute, .hljs-meta-string { + color: #98c379; +} +.hljs-built_in, .hljs-class .hljs-title { + color: #e6c07b; +} +.hljs-attr, .hljs-variable, .hljs-template-variable, .hljs-type, .hljs-selector-class, .hljs-selector-attr, .hljs-selector-pseudo, .hljs-number { + color: #d19a66; +} +.hljs-symbol, .hljs-bullet, .hljs-link, .hljs-meta, .hljs-selector-id, .hljs-title { + color: #61aeee; +} +.hljs-emphasis { + font-style: italic; +} +.hljs-strong { + font-weight: bold; +} +.hljs-link { + text-decoration: underline; +} diff --git a/libs/highlight/styles/atom-one-dark.css b/libs/highlight/styles/atom-one-dark.css new file mode 100644 index 000000000..1616aafe3 --- /dev/null +++ b/libs/highlight/styles/atom-one-dark.css @@ -0,0 +1,96 @@ +/* + +Atom One Dark by Daniel Gamage +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +base: #282c34 +mono-1: #abb2bf +mono-2: #818896 +mono-3: #5c6370 +hue-1: #56b6c2 +hue-2: #61aeee +hue-3: #c678dd +hue-4: #98c379 +hue-5: #e06c75 +hue-5-2: #be5046 +hue-6: #d19a66 +hue-6-2: #e6c07b + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #abb2bf; + background: #282c34; +} + +.hljs-comment, +.hljs-quote { + color: #5c6370; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #c678dd; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e06c75; +} + +.hljs-literal { + color: #56b6c2; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #98c379; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #e6c07b; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #d19a66; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #61aeee; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/libs/highlight/styles/atom-one-light.css b/libs/highlight/styles/atom-one-light.css new file mode 100644 index 000000000..d5bd1d2a9 --- /dev/null +++ b/libs/highlight/styles/atom-one-light.css @@ -0,0 +1,96 @@ +/* + +Atom One Light by Daniel Gamage +Original One Light Syntax theme from https://github.com/atom/one-light-syntax + +base: #fafafa +mono-1: #383a42 +mono-2: #686b77 +mono-3: #a0a1a7 +hue-1: #0184bb +hue-2: #4078f2 +hue-3: #a626a4 +hue-4: #50a14f +hue-5: #e45649 +hue-5-2: #c91243 +hue-6: #986801 +hue-6-2: #c18401 + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #383a42; + background: #fafafa; +} + +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #a626a4; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e45649; +} + +.hljs-literal { + color: #0184bb; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #50a14f; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #c18401; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #986801; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #4078f2; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/libs/highlight/styles/brown-paper.css b/libs/highlight/styles/brown-paper.css new file mode 100644 index 000000000..f0197b924 --- /dev/null +++ b/libs/highlight/styles/brown-paper.css @@ -0,0 +1,64 @@ +/* + +Brown Paper style from goldblog.com.ua (c) Zaripov Yura + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background:#b7a68e url(./brown-papersq.png); +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color:#005599; + font-weight:bold; +} + +.hljs, +.hljs-subst { + color: #363c69; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link, +.hljs-name { + color: #2c009f; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #802022; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/brown-papersq.png b/libs/highlight/styles/brown-papersq.png new file mode 100644 index 000000000..3813903db Binary files /dev/null and b/libs/highlight/styles/brown-papersq.png differ diff --git a/libs/highlight/styles/codepen-embed.css b/libs/highlight/styles/codepen-embed.css new file mode 100644 index 000000000..195c4a078 --- /dev/null +++ b/libs/highlight/styles/codepen-embed.css @@ -0,0 +1,60 @@ +/* + codepen.io Embed Theme + Author: Justin Perry + Original theme - https://github.com/chriskempson/tomorrow-theme +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #222; + color: #fff; +} + +.hljs-comment, +.hljs-quote { + color: #777; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-regexp, +.hljs-meta, +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-params, +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-deletion { + color: #ab875d; +} + +.hljs-section, +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-type, +.hljs-attribute { + color: #9b869b; +} + +.hljs-string, +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #8f9c6c; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/color-brewer.css b/libs/highlight/styles/color-brewer.css new file mode 100644 index 000000000..7934d986a --- /dev/null +++ b/libs/highlight/styles/color-brewer.css @@ -0,0 +1,71 @@ +/* + +Colorbrewer theme +Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock +Ported by Fabrício Tavares de Oliveira + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fff; +} + +.hljs, +.hljs-subst { + color: #000; +} + +.hljs-string, +.hljs-meta, +.hljs-symbol, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #756bb1; +} + +.hljs-comment, +.hljs-quote { + color: #636363; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-bullet, +.hljs-link { + color: #31a354; +} + +.hljs-deletion, +.hljs-variable { + color: #88f; +} + + + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-doctag, +.hljs-type, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-strong { + color: #3182bd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-attribute { + color: #e6550d; +} diff --git a/libs/highlight/styles/darcula.css b/libs/highlight/styles/darcula.css new file mode 100644 index 000000000..4c734f1cd --- /dev/null +++ b/libs/highlight/styles/darcula.css @@ -0,0 +1,74 @@ +/* + +Darcula color scheme from the JetBrains family of IDEs + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #2b2b2b; + color: #bababa; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-link, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #6896ba; +} + +.hljs-code, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-attribute, +.hljs-name, +.hljs-variable { + color: #cb7832; +} + +.hljs-params { + color: #b9b9b9; +} + +.hljs-string { + color: #6a8759; +} + +.hljs-subst, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-symbol, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #e0c46c; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #7f7f7f; +} diff --git a/libs/highlight/styles/dark.css b/libs/highlight/styles/dark.css new file mode 100644 index 000000000..b4724f5f5 --- /dev/null +++ b/libs/highlight/styles/dark.css @@ -0,0 +1,63 @@ +/* + +Dark style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #444; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: white; +} + +.hljs, +.hljs-subst { + color: #ddd; +} + +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #d88; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #777; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/default.css b/libs/highlight/styles/default.css new file mode 100644 index 000000000..f1bfade31 --- /dev/null +++ b/libs/highlight/styles/default.css @@ -0,0 +1,99 @@ +/* + +Original highlight.js style (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #F0F0F0; +} + + +/* Base color: saturation 0; */ + +.hljs, +.hljs-subst { + color: #444; +} + +.hljs-comment { + color: #888888; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; +} + + +/* User color: hue: 0 */ + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060; +} + + +/* Language color: hue: 90; */ + +.hljs-literal { + color: #78A960; +} + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300; +} + + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/docco.css b/libs/highlight/styles/docco.css new file mode 100644 index 000000000..db366be37 --- /dev/null +++ b/libs/highlight/styles/docco.css @@ -0,0 +1,97 @@ +/* +Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #000; + background: #f8f8ff; +} + +.hljs-comment, +.hljs-quote { + color: #408080; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-subst { + color: #954121; +} + +.hljs-number { + color: #40a070; +} + +.hljs-string, +.hljs-doctag { + color: #219161; +} + +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #19469d; +} + +.hljs-params { + color: #00f; +} + +.hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-variable, +.hljs-template-variable { + color: #008080; +} + +.hljs-regexp, +.hljs-link { + color: #b68; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/dracula.css b/libs/highlight/styles/dracula.css new file mode 100644 index 000000000..d591db680 --- /dev/null +++ b/libs/highlight/styles/dracula.css @@ -0,0 +1,76 @@ +/* + +Dracula Theme v1.2.0 + +https://github.com/zenorocha/dracula-theme + +Copyright 2015, All rights reserved + +Code licensed under the MIT license +http://zenorocha.mit-license.org + +@author Éverton Ribeiro +@author Zeno Rocha + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282a36; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: #8be9fd; +} + +.hljs-function .hljs-keyword { + color: #ff79c6; +} + +.hljs, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #f1fa8c; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #6272a4; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/far.css b/libs/highlight/styles/far.css new file mode 100644 index 000000000..2b3f87b56 --- /dev/null +++ b/libs/highlight/styles/far.css @@ -0,0 +1,71 @@ +/* + +FAR Style (c) MajestiC + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000080; +} + +.hljs, +.hljs-subst { + color: #0ff; +} + +.hljs-string, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #ff0; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-variable { + color: #fff; +} + +.hljs-comment, +.hljs-quote, +.hljs-doctag, +.hljs-deletion { + color: #888; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #0f0; +} + +.hljs-meta { + color: #008080; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/foundation.css b/libs/highlight/styles/foundation.css new file mode 100644 index 000000000..67c6e1015 --- /dev/null +++ b/libs/highlight/styles/foundation.css @@ -0,0 +1,89 @@ +/* +Description: Foundation 4 docs style for highlight.js +Author: Dan Allen +Website: http://foundation.zurb.com/docs/ +Version: 1.0 +Date: 2013-04-02 +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #eee; + color: black; +} + +.hljs-link, +.hljs-emphasis, +.hljs-attribute, +.hljs-addition { + color: #070; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong, +.hljs-string, +.hljs-deletion { + color: #d14; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-quote, +.hljs-comment { + color: #998; + font-style: italic; +} + +.hljs-section, +.hljs-title { + color: #900; +} + +.hljs-class .hljs-title, +.hljs-type { + color: #458; +} + +.hljs-variable, +.hljs-template-variable { + color: #336699; +} + +.hljs-bullet { + color: #997700; +} + +.hljs-meta { + color: #3344bb; +} + +.hljs-code, +.hljs-number, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag { + color: #099; +} + +.hljs-regexp { + background-color: #fff0ff; + color: #880088; +} + +.hljs-symbol { + color: #990073; +} + +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #007700; +} diff --git a/libs/highlight/styles/github-gist.css b/libs/highlight/styles/github-gist.css new file mode 100644 index 000000000..18240c888 --- /dev/null +++ b/libs/highlight/styles/github-gist.css @@ -0,0 +1,79 @@ +/** + * GitHub Gist Theme + * Author : Anthony Attard - https://github.com/AnthonyAttard + * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro + */ + +.hljs { + display: block; + background: white; + padding: 0.5em; + color: #333333; + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #d73a49; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-title, +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #6f42c1; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} + +.hljs-number { + color: #005cc5; +} + +.hljs-string { + color: #032f62; +} diff --git a/libs/highlight/styles/github.css b/libs/highlight/styles/github.css new file mode 100644 index 000000000..791932b87 --- /dev/null +++ b/libs/highlight/styles/github.css @@ -0,0 +1,99 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} + +.hljs-string, +.hljs-doctag { + color: #d14; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-regexp, +.hljs-link { + color: #009926; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/gml.css b/libs/highlight/styles/gml.css new file mode 100644 index 000000000..7fff0b877 --- /dev/null +++ b/libs/highlight/styles/gml.css @@ -0,0 +1,78 @@ +/* + +GML Theme - Meseta + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #222222; + color: #C0C0C0; +} + +.hljs-keyword { + color: #FFB871; + font-weight: bold; +} + +.hljs-built_in { + color: #FFB871; +} + +.hljs-literal { + color: #FF8080; +} + +.hljs-symbol { + color: #58E55A; +} + +.hljs-comment { + color: #5B995B; +} + +.hljs-string { + color: #FFFF00; +} + +.hljs-number { + color: #FF8080; +} + +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name, +.hljs-bullet, +.hljs-code, +.hljs-addition, +.hljs-regexp, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion, +.hljs-title, +.hljs-section, +.hljs-function, +.hljs-meta-keyword, +.hljs-meta, +.hljs-subst { + color: #C0C0C0; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/googlecode.css b/libs/highlight/styles/googlecode.css new file mode 100644 index 000000000..884ad6353 --- /dev/null +++ b/libs/highlight/styles/googlecode.css @@ -0,0 +1,89 @@ +/* + +Google Code style (c) Aahan Krish + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-comment, +.hljs-quote { + color: #800; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-title, +.hljs-name { + color: #008; +} + +.hljs-variable, +.hljs-template-variable { + color: #660; +} + +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-regexp { + color: #080; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-meta, +.hljs-number, +.hljs-link { + color: #066; +} + +.hljs-title, +.hljs-doctag, +.hljs-type, +.hljs-attr, +.hljs-built_in, +.hljs-builtin-name, +.hljs-params { + color: #606; +} + +.hljs-attribute, +.hljs-subst { + color: #000; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #9B703F +} + +.hljs-addition { + background-color: #baeeba; +} + +.hljs-deletion { + background-color: #ffc8bd; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/gradient-dark.css b/libs/highlight/styles/gradient-dark.css new file mode 100644 index 000000000..ca6d001b4 --- /dev/null +++ b/libs/highlight/styles/gradient-dark.css @@ -0,0 +1,122 @@ +/* + +Gradient Dark (c) Samia Ali + +*/ + +.hljs +{ +display: block; +overflow-x: auto; +padding: 0.5em; +background: rgb(80,31,122); +background: linear-gradient(166deg, rgba(80,31,122,1) 0%, rgba(40,32,179,1) 80%); +color:#e7e4eb; +} + +.hljs-subtr{ + color:#e7e4eb; +} + +.hljs-doctag, +.hljs-meta, +.hljs-comment, +.hljs-quote +{ + color:#af8dd9; +} + +.hljs-selector-tag, +.hljs-selector-id, +.hljs-template-tag, +.hljs-regexp, +.hljs-attr, +.hljs-tag +{ + color:#AEFBFF; +} + +.hljs-params, +.hljs-selector-class, +.hljs-bullet + +{ + color:#F19FFF; + +} + +.hljs-keyword, +.hljs-section, +.hljs-meta-keyword, +.hljs-symbol, +.hljs-type + +{ + + color:#17fc95; +} + +.hljs-addition, +.hljs-number, +.hljs-link +{ + color:#C5FE00; +} + + +.hljs-string +{ + color: #38c0ff; +} + + +.hljs-attribute, +.hljs-addition +{ + color:#E7FF9F; +} + +.hljs-variable, +.hljs-template-variable + +{ + color:#E447FF; +} + +.hljs-builtin-name, +.hljs-built_in, +.hljs-formula, +.hljs-name, +.hljs-title, +.hljs-class, +.hljs-function +{ + color: #FFC800; + +} + +.hljs-selector-pseudo, +.hljs-deletion, +.hljs-literal +{ + color:#FF9E44; + +} + +.hljs-emphasis, +.hljs-quote +{ + font-style:italic; +} + +.hljs-params, +.hljs-selector-class, +.hljs-strong, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-template-tag, +.hljs-section, +.hljs-keyword +{ + font-weight:bold; +} diff --git a/libs/highlight/styles/grayscale.css b/libs/highlight/styles/grayscale.css new file mode 100644 index 000000000..5376f3406 --- /dev/null +++ b/libs/highlight/styles/grayscale.css @@ -0,0 +1,101 @@ +/* + +grayscale style (c) MY Sun + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #fff; +} + +.hljs-comment, +.hljs-quote { + color: #777; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal { + color: #777; +} + +.hljs-string, +.hljs-doctag, +.hljs-formula { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #000; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-class .hljs-title, +.hljs-type, +.hljs-name { + color: #333; + font-weight: bold; +} + +.hljs-tag { + color: #333; +} + +.hljs-regexp { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #000; + text-decoration: underline; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + color: #fff; + background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat; +} + +.hljs-addition { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/gruvbox-dark.css b/libs/highlight/styles/gruvbox-dark.css new file mode 100644 index 000000000..f563811a8 --- /dev/null +++ b/libs/highlight/styles/gruvbox-dark.css @@ -0,0 +1,108 @@ +/* + +Gruvbox style (dark) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282828; +} + +.hljs, +.hljs-subst { + color: #ebdbb2; +} + +/* Gruvbox Red */ +.hljs-deletion, +.hljs-formula, +.hljs-keyword, +.hljs-link, +.hljs-selector-tag { + color: #fb4934; +} + +/* Gruvbox Blue */ +.hljs-built_in, +.hljs-emphasis, +.hljs-name, +.hljs-quote, +.hljs-strong, +.hljs-title, +.hljs-variable { + color: #83a598; +} + +/* Gruvbox Yellow */ +.hljs-attr, +.hljs-params, +.hljs-template-tag, +.hljs-type { + color: #fabd2f; +} + +/* Gruvbox Purple */ +.hljs-builtin-name, +.hljs-doctag, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +/* Gruvbox Orange */ +.hljs-code, +.hljs-meta, +.hljs-regexp, +.hljs-selector-id, +.hljs-template-variable { + color: #fe8019; +} + +/* Gruvbox Green */ +.hljs-addition, +.hljs-meta-string, +.hljs-section, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-string, +.hljs-symbol { + color: #b8bb26; +} + +/* Gruvbox Aqua */ +.hljs-attribute, +.hljs-bullet, +.hljs-class, +.hljs-function, +.hljs-function .hljs-keyword, +.hljs-meta-keyword, +.hljs-selector-pseudo, +.hljs-tag { + color: #8ec07c; +} + +/* Gruvbox Gray */ +.hljs-comment { + color: #928374; +} + +/* Gruvbox Purple */ +.hljs-link_label, +.hljs-literal, +.hljs-number { + color: #d3869b; +} + +.hljs-comment, +.hljs-emphasis { + font-style: italic; +} + +.hljs-section, +.hljs-strong, +.hljs-tag { + font-weight: bold; +} diff --git a/libs/highlight/styles/gruvbox-light.css b/libs/highlight/styles/gruvbox-light.css new file mode 100644 index 000000000..ff45468eb --- /dev/null +++ b/libs/highlight/styles/gruvbox-light.css @@ -0,0 +1,108 @@ +/* + +Gruvbox style (light) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fbf1c7; +} + +.hljs, +.hljs-subst { + color: #3c3836; +} + +/* Gruvbox Red */ +.hljs-deletion, +.hljs-formula, +.hljs-keyword, +.hljs-link, +.hljs-selector-tag { + color: #9d0006; +} + +/* Gruvbox Blue */ +.hljs-built_in, +.hljs-emphasis, +.hljs-name, +.hljs-quote, +.hljs-strong, +.hljs-title, +.hljs-variable { + color: #076678; +} + +/* Gruvbox Yellow */ +.hljs-attr, +.hljs-params, +.hljs-template-tag, +.hljs-type { + color: #b57614; +} + +/* Gruvbox Purple */ +.hljs-builtin-name, +.hljs-doctag, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +/* Gruvbox Orange */ +.hljs-code, +.hljs-meta, +.hljs-regexp, +.hljs-selector-id, +.hljs-template-variable { + color: #af3a03; +} + +/* Gruvbox Green */ +.hljs-addition, +.hljs-meta-string, +.hljs-section, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-string, +.hljs-symbol { + color: #79740e; +} + +/* Gruvbox Aqua */ +.hljs-attribute, +.hljs-bullet, +.hljs-class, +.hljs-function, +.hljs-function .hljs-keyword, +.hljs-meta-keyword, +.hljs-selector-pseudo, +.hljs-tag { + color: #427b58; +} + +/* Gruvbox Gray */ +.hljs-comment { + color: #928374; +} + +/* Gruvbox Purple */ +.hljs-link_label, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +.hljs-comment, +.hljs-emphasis { + font-style: italic; +} + +.hljs-section, +.hljs-strong, +.hljs-tag { + font-weight: bold; +} diff --git a/libs/highlight/styles/hopscotch.css b/libs/highlight/styles/hopscotch.css new file mode 100644 index 000000000..5934601a0 --- /dev/null +++ b/libs/highlight/styles/hopscotch.css @@ -0,0 +1,84 @@ +/* + * Hopscotch + * by Jan T. Sott + * https://github.com/idleberg/Hopscotch + * + * This work is licensed under the Creative Commons CC0 1.0 Universal License + */ + +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #989498; +} + +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-deletion { + color: #dd464c; +} + +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #fd8b19; +} + +/* Yellow */ +.hljs-class .hljs-title { + color: #fdcc59; +} + +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #8fc13e; +} + +/* Aqua */ +.hljs-meta { + color: #149b93; +} + +/* Blue */ +.hljs-function, +.hljs-section, +.hljs-title { + color: #1290bf; +} + +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c85e7c; +} + +.hljs { + display: block; + overflow-x: auto; + background: #322931; + color: #b9b5b8; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/hybrid.css b/libs/highlight/styles/hybrid.css new file mode 100644 index 000000000..29735a189 --- /dev/null +++ b/libs/highlight/styles/hybrid.css @@ -0,0 +1,102 @@ +/* + +vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) + +*/ + +/*background color*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #1d1f21; +} + +/*selection color*/ +.hljs::selection, +.hljs span::selection { + background: #373b41; +} + +.hljs::-moz-selection, +.hljs span::-moz-selection { + background: #373b41; +} + +/*foreground color*/ +.hljs { + color: #c5c8c6; +} + +/*color: fg_yellow*/ +.hljs-title, +.hljs-name { + color: #f0c674; +} + +/*color: fg_comment*/ +.hljs-comment, +.hljs-meta, +.hljs-meta .hljs-keyword { + color: #707880; +} + +/*color: fg_red*/ +.hljs-number, +.hljs-symbol, +.hljs-literal, +.hljs-deletion, +.hljs-link { + color: #cc6666 +} + +/*color: fg_green*/ +.hljs-string, +.hljs-doctag, +.hljs-addition, +.hljs-regexp, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #b5bd68; +} + +/*color: fg_purple*/ +.hljs-attribute, +.hljs-code, +.hljs-selector-id { + color: #b294bb; +} + +/*color: fg_blue*/ +.hljs-keyword, +.hljs-selector-tag, +.hljs-bullet, +.hljs-tag { + color: #81a2be; +} + +/*color: fg_aqua*/ +.hljs-subst, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8abeb7; +} + +/*color: fg_orange*/ +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-quote, +.hljs-section, +.hljs-selector-class { + color: #de935f; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/idea.css b/libs/highlight/styles/idea.css new file mode 100644 index 000000000..3bf1892bd --- /dev/null +++ b/libs/highlight/styles/idea.css @@ -0,0 +1,97 @@ +/* + +Intellij Idea-like styling (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #000; + background: #fff; +} + +.hljs-subst, +.hljs-title { + font-weight: normal; + color: #000; +} + +.hljs-comment, +.hljs-quote { + color: #808080; + font-style: italic; +} + +.hljs-meta { + color: #808000; +} + +.hljs-tag { + background: #efefef; +} + +.hljs-section, +.hljs-name, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag, +.hljs-type, +.hljs-selector-id, +.hljs-selector-class { + font-weight: bold; + color: #000080; +} + +.hljs-attribute, +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: bold; + color: #0000ff; +} + +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: normal; +} + +.hljs-string { + color: #008000; + font-weight: bold; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-formula { + color: #000; + background: #d0eded; + font-style: italic; +} + +.hljs-doctag { + text-decoration: underline; +} + +.hljs-variable, +.hljs-template-variable { + color: #660e7a; +} + +.hljs-addition { + background: #baeeba; +} + +.hljs-deletion { + background: #ffc8bd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/ir-black.css b/libs/highlight/styles/ir-black.css new file mode 100644 index 000000000..bd4c755ed --- /dev/null +++ b/libs/highlight/styles/ir-black.css @@ -0,0 +1,73 @@ +/* + IR_Black style (c) Vasily Mikhailitchenko +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000; + color: #f8f8f8; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7c7c7c; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag, +.hljs-name { + color: #96cbfe; +} + +.hljs-attribute, +.hljs-selector-id { + color: #ffffb6; +} + +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition { + color: #a8ff60; +} + +.hljs-subst { + color: #daefa3; +} + +.hljs-regexp, +.hljs-link { + color: #e9c062; +} + +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-doctag { + color: #ffffb6; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-literal { + color: #c6c5fe; +} + +.hljs-number, +.hljs-deletion { + color:#ff73fd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/isbl-editor-dark.css b/libs/highlight/styles/isbl-editor-dark.css new file mode 100644 index 000000000..2f1d95dd5 --- /dev/null +++ b/libs/highlight/styles/isbl-editor-dark.css @@ -0,0 +1,112 @@ +/* + +ISBL Editor style dark color scheme (c) Dmitriy Tarasov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #404040; + color: #f0f0f0; +} + +/* Base color: saturation 0; */ + +.hljs, +.hljs-subst { + color: #f0f0f0; +} + +.hljs-comment { + color: #b5b5b5; + font-style: italic; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + color: #f0f0f0; + font-weight: bold; +} + + +/* User color: hue: 0 */ + +.hljs-string { + color: #97bf0d; +} + +.hljs-type, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #f0f0f0; +} + +.hljs-title, +.hljs-section { + color: #df471e; +} + +.hljs-title>.hljs-built_in { + color: #81bce9; + font-weight: normal; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #e2c696; +} + +/* Language color: hue: 90; */ + +.hljs-built_in, +.hljs-literal { + color: #97bf0d; + font-weight: bold; +} + +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300; +} + +.hljs-class { + color: #ce9d4d; + font-weight: bold; +} + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/isbl-editor-light.css b/libs/highlight/styles/isbl-editor-light.css new file mode 100644 index 000000000..5dee9ca03 --- /dev/null +++ b/libs/highlight/styles/isbl-editor-light.css @@ -0,0 +1,111 @@ +/* + +ISBL Editor style light color schemec (c) Dmitriy Tarasov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +/* Base color: saturation 0; */ + +.hljs-subst { + color: black; +} + +.hljs-comment { + color: #555555; + font-style: italic; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + color: #000000; + font-weight: bold; +} + + +/* User color: hue: 0 */ + +.hljs-string { + color: #000080; +} + +.hljs-type, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #000000; +} + +.hljs-title, +.hljs-section { + color: #fb2c00; +} + +.hljs-title>.hljs-built_in { + color: #008080; + font-weight: normal; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #5e1700; +} + +/* Language color: hue: 90; */ + +.hljs-built_in, +.hljs-literal { + color: #000080; + font-weight: bold; +} + +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300; +} + +.hljs-class { + color: #6f1C00; + font-weight: bold; +} + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/kimbie.dark.css b/libs/highlight/styles/kimbie.dark.css new file mode 100644 index 000000000..d139cb5d0 --- /dev/null +++ b/libs/highlight/styles/kimbie.dark.css @@ -0,0 +1,74 @@ +/* + Name: Kimbie (dark) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ + +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #d6baad; +} + +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958; +} + +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32; +} + +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431; +} + +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a; +} + +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a; +} + +.hljs { + display: block; + overflow-x: auto; + background: #221a0f; + color: #d3af86; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/kimbie.light.css b/libs/highlight/styles/kimbie.light.css new file mode 100644 index 000000000..04ff6ed3a --- /dev/null +++ b/libs/highlight/styles/kimbie.light.css @@ -0,0 +1,74 @@ +/* + Name: Kimbie (light) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ + +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #a57a4c; +} + +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958; +} + +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32; +} + +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431; +} + +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a; +} + +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a; +} + +.hljs { + display: block; + overflow-x: auto; + background: #fbebd4; + color: #84613d; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/lightfair.css b/libs/highlight/styles/lightfair.css new file mode 100644 index 000000000..b5c45e87c --- /dev/null +++ b/libs/highlight/styles/lightfair.css @@ -0,0 +1,88 @@ +/* + +Lightfair style (c) Tristian Kelly + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + /* TODO: background? */ +} + +.hljs-name { + color:#01a3a3; +} + +.hljs-tag,.hljs-meta { + color:#778899; +} + +.hljs, +.hljs-subst { + color: #444 +} + +.hljs-comment { + color: #888888 +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold +} + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #4286f4 +} + +.hljs-title, +.hljs-section { + color: #4286f4; + font-weight: bold +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060 +} + +.hljs-literal { + color: #62bcbc +} + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #25c6c6 +} + +.hljs-meta-string { + color: #4d99bf +} + +.hljs-emphasis { + font-style: italic +} + +.hljs-strong { + font-weight: bold +} diff --git a/libs/highlight/styles/lioshi.css b/libs/highlight/styles/lioshi.css new file mode 100644 index 000000000..594ac2155 --- /dev/null +++ b/libs/highlight/styles/lioshi.css @@ -0,0 +1,88 @@ +/* lioshi Theme */ +/* Original theme - https://github.com/lioshi/vscode-lioshi-theme */ + +/* Comment */ +.hljs-comment { + color: #8d8d8d; +} + +/* quote */ +.hljs-quote { + color: #b3c7d8; +} + +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #cc6666; +} + +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-subst +.hljs-link { + color: #de935f; +} + +/* Yellow */ +.hljs-attribute { + color: #f0c674; +} + +/* Green */ +.hljs-string, +.hljs-bullet, +.hljs-params, +.hljs-addition { + color: #b5bd68; +} + +/* Blue */ +.hljs-title, +.hljs-meta, +.hljs-section { + color: #81a2be; +} + +/* Purple */ +.hljs-selector-tag, +.hljs-keyword, +.hljs-function, +.hljs-class { + color: #be94bb; +} + +/* Purple light */ +.hljs-symbol { + color: #dbc4d9; +} + +.hljs { + display: block; + overflow-x: auto; + background: #303030; + color: #c5c8c6; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + + + + diff --git a/libs/highlight/styles/magula.css b/libs/highlight/styles/magula.css new file mode 100644 index 000000000..b8003bf42 --- /dev/null +++ b/libs/highlight/styles/magula.css @@ -0,0 +1,70 @@ +/* +Description: Magula style for highligh.js +Author: Ruslan Keba +Website: http://rukeba.com/ +Version: 1.0 +Date: 2009-01-03 +Music: Aphex Twin / Xtal +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background-color: #f4f4f4; + color: black; +} + +.hljs-subst { + color: black; +} + +.hljs-string, +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #050; +} + +.hljs-comment, +.hljs-quote { + color: #777; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-type, +.hljs-link { + color: #800; +} + +.hljs-deletion, +.hljs-meta { + color: #00e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-tag, +.hljs-name { + font-weight: bold; + color: navy; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/mono-blue.css b/libs/highlight/styles/mono-blue.css new file mode 100644 index 000000000..24a35a3d8 --- /dev/null +++ b/libs/highlight/styles/mono-blue.css @@ -0,0 +1,56 @@ +/* + Five-color theme from a single blue hue. +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #eaeef3; + color: #00193a; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-comment { + color: #738191; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-addition, +.hljs-tag, +.hljs-quote, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #0048ab; +} + +.hljs-meta, +.hljs-subst, +.hljs-symbol, +.hljs-regexp, +.hljs-attribute, +.hljs-deletion, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-bullet { + color: #4c81c9; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/monokai-sublime.css b/libs/highlight/styles/monokai-sublime.css new file mode 100644 index 000000000..2864170da --- /dev/null +++ b/libs/highlight/styles/monokai-sublime.css @@ -0,0 +1,83 @@ +/* + +Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #23241f; +} + +.hljs, +.hljs-tag, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #ae81ff; +} + +.hljs-code, +.hljs-title, +.hljs-section, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-attr { + color: #f92672; +} + +.hljs-symbol, +.hljs-attribute { + color: #66d9ef; +} + +.hljs-params, +.hljs-class .hljs-title { + color: #f8f8f2; +} + +.hljs-string, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-variable { + color: #e6db74; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} diff --git a/libs/highlight/styles/monokai.css b/libs/highlight/styles/monokai.css new file mode 100644 index 000000000..af24834a9 --- /dev/null +++ b/libs/highlight/styles/monokai.css @@ -0,0 +1,71 @@ +/* +Monokai style - ported by Luigi Maselli - http://grigio.org +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #272822; + color: #ddd; +} + +.hljs-tag, +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-strong, +.hljs-name { + color: #f92672; +} + +.hljs-code { + color: #66d9ef; +} + +.hljs-class .hljs-title { + color: white; +} + +.hljs-attribute, +.hljs-symbol, +.hljs-regexp, +.hljs-link { + color: #bf79db; +} + +.hljs-string, +.hljs-bullet, +.hljs-subst, +.hljs-title, +.hljs-section, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #a6e22e; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-selector-id { + font-weight: bold; +} diff --git a/libs/highlight/styles/night-owl.css b/libs/highlight/styles/night-owl.css new file mode 100644 index 000000000..45f45cd29 --- /dev/null +++ b/libs/highlight/styles/night-owl.css @@ -0,0 +1,182 @@ +/* + +Night Owl for highlight.js (c) Carl Baxter + +An adaptation of Sarah Drasner's Night Owl VS Code Theme +https://github.com/sdras/night-owl-vscode-theme + +Copyright (c) 2018 Sarah Drasner + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #011627; + color: #d6deeb; +} + +/* General Purpose */ +.hljs-keyword { + color: #c792ea; + font-style: italic; +} +.hljs-built_in { + color: #addb67; + font-style: italic; +} +.hljs-type { + color: #82aaff; +} +.hljs-literal { + color: #ff5874; +} +.hljs-number { + color: #F78C6C; +} +.hljs-regexp { + color: #5ca7e4; +} +.hljs-string { + color: #ecc48d; +} +.hljs-subst { + color: #d3423e; +} +.hljs-symbol { + color: #82aaff; +} +.hljs-class { + color: #ffcb8b; +} +.hljs-function { + color: #82AAFF; +} +.hljs-title { + color: #DCDCAA; + font-style: italic; +} +.hljs-params { + color: #7fdbca; +} + +/* Meta */ +.hljs-comment { + color: #637777; + font-style: italic; +} +.hljs-doctag { + color: #7fdbca; +} +.hljs-meta { + color: #82aaff; +} +.hljs-meta-keyword { + color: #82aaff; +} +.hljs-meta-string { + color: #ecc48d; +} + +/* Tags, attributes, config */ +.hljs-section { + color: #82b1ff; +} +.hljs-tag, +.hljs-name, +.hljs-builtin-name { + color: #7fdbca; +} +.hljs-attr { + color: #7fdbca; +} +.hljs-attribute { + color: #80cbc4; +} +.hljs-variable { + color: #addb67; +} + +/* Markup */ +.hljs-bullet { + color: #d9f5dd; +} +.hljs-code { + color: #80CBC4; +} +.hljs-emphasis { + color: #c792ea; + font-style: italic; +} +.hljs-strong { + color: #addb67; + font-weight: bold; +} +.hljs-formula { + color: #c792ea; +} +.hljs-link { + color: #ff869a; +} +.hljs-quote { + color: #697098; + font-style: italic; +} + +/* CSS */ +.hljs-selector-tag { + color: #ff6363; +} + +.hljs-selector-id { + color: #fad430; +} + +.hljs-selector-class { + color: #addb67; + font-style: italic; +} + +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #c792ea; + font-style: italic; +} + +/* Templates */ +.hljs-template-tag { + color: #c792ea; +} +.hljs-template-variable { + color: #addb67; +} + +/* diff */ +.hljs-addition { + color: #addb67ff; + font-style: italic; +} + +.hljs-deletion { + color: #EF535090; + font-style: italic; +} diff --git a/libs/highlight/styles/nnfx-dark.css b/libs/highlight/styles/nnfx-dark.css new file mode 100644 index 000000000..0751ee5d9 --- /dev/null +++ b/libs/highlight/styles/nnfx-dark.css @@ -0,0 +1,106 @@ +/** + * nnfx dark - a theme inspired by Netscape Navigator/Firefox + * + * @version 1.0.0 + * @author (c) 2020 Jim Mason + * @license https://creativecommons.org/licenses/by-sa/4.0 CC BY-SA 4.0 + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #333; + color: #fff; +} + +.xml .hljs-meta { + font-weight: bold; + font-style: italic; + color: #69f; +} + +.hljs-comment, +.hljs-quote { + font-style: italic; + color: #9c6; +} + +.hljs-name, +.hljs-keyword { + color: #a7a; +} + +.hljs-name, +.hljs-attr { + font-weight: bold; +} + +.hljs-string { + font-weight: normal; +} + +.hljs-variable, +.hljs-template-variable { + color: #588; +} + +.hljs-code, +.hljs-string, +.hljs-meta-string, +.hljs-number, +.hljs-regexp, +.hljs-link { + color: #bce; +} + +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name { + color: #d40; +} + +.hljs-section, +.hljs-meta { + color: #a85; +} + +.hljs-class .hljs-title, +.hljs-type { + color: #96c; +} + +.hljs-function .hljs-title, +.hljs-attr, +.hljs-subst { + color: #fff; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-addition { + background-color: #797; +} + +.hljs-deletion { + background-color: #c99; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #964; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/nnfx.css b/libs/highlight/styles/nnfx.css new file mode 100644 index 000000000..e7beaa518 --- /dev/null +++ b/libs/highlight/styles/nnfx.css @@ -0,0 +1,106 @@ +/** + * nnfx - a theme inspired by Netscape Navigator/Firefox + * + * @version 1.0.0 + * @author (c) 2020 Jim Mason + * @license https://creativecommons.org/licenses/by-sa/4.0 CC BY-SA 4.0 + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fff; + color: #000; +} + +.xml .hljs-meta { + font-weight: bold; + font-style: italic; + color: #48b; +} + +.hljs-comment, +.hljs-quote { + font-style: italic; + color: #070; +} + +.hljs-name, +.hljs-keyword { + color: #808; +} + +.hljs-name, +.hljs-attr { + font-weight: bold; +} + +.hljs-string { + font-weight: normal; +} + +.hljs-variable, +.hljs-template-variable { + color: #477; +} + +.hljs-code, +.hljs-string, +.hljs-meta-string, +.hljs-number, +.hljs-regexp, +.hljs-link { + color: #00f; +} + +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name { + color: #f40; +} + +.hljs-section, +.hljs-meta { + color: #642; +} + +.hljs-class .hljs-title, +.hljs-type { + color: #639; +} + +.hljs-function .hljs-title, +.hljs-attr, +.hljs-subst { + color: #000; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-addition { + background-color: #beb; +} + +.hljs-deletion { + background-color: #fbb; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #964; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/nord.css b/libs/highlight/styles/nord.css new file mode 100644 index 000000000..424038443 --- /dev/null +++ b/libs/highlight/styles/nord.css @@ -0,0 +1,309 @@ +/* + * Copyright (c) 2017-present Arctic Ice Studio + * Copyright (c) 2017-present Sven Greb + * + * Project: Nord highlight.js + * Version: 0.1.0 + * Repository: https://github.com/arcticicestudio/nord-highlightjs + * License: MIT + * References: + * https://github.com/arcticicestudio/nord + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #2E3440; +} + +.hljs, +.hljs-subst { + color: #D8DEE9; +} + +.hljs-selector-tag { + color: #81A1C1; +} + +.hljs-selector-id { + color: #8FBCBB; + font-weight: bold; +} + +.hljs-selector-class { + color: #8FBCBB; +} + +.hljs-selector-attr { + color: #8FBCBB; +} + +.hljs-selector-pseudo { + color: #88C0D0; +} + +.hljs-addition { + background-color: rgba(163, 190, 140, 0.5); +} + +.hljs-deletion { + background-color: rgba(191, 97, 106, 0.5); +} + +.hljs-built_in, +.hljs-type { + color: #8FBCBB; +} + +.hljs-class { + color: #8FBCBB; +} + +.hljs-function { + color: #88C0D0; +} + +.hljs-function > .hljs-title { + color: #88C0D0; +} + +.hljs-keyword, +.hljs-literal, +.hljs-symbol { + color: #81A1C1; +} + +.hljs-number { + color: #B48EAD; +} + +.hljs-regexp { + color: #EBCB8B; +} + +.hljs-string { + color: #A3BE8C; +} + +.hljs-title { + color: #8FBCBB; +} + +.hljs-params { + color: #D8DEE9; +} + +.hljs-bullet { + color: #81A1C1; +} + +.hljs-code { + color: #8FBCBB; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-formula { + color: #8FBCBB; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link:hover { + text-decoration: underline; +} + +.hljs-quote { + color: #4C566A; +} + +.hljs-comment { + color: #4C566A; +} + +.hljs-doctag { + color: #8FBCBB; +} + +.hljs-meta, +.hljs-meta-keyword { + color: #5E81AC; +} + +.hljs-meta-string { + color: #A3BE8C; +} + +.hljs-attr { + color: #8FBCBB; +} + +.hljs-attribute { + color: #D8DEE9; +} + +.hljs-builtin-name { + color: #81A1C1; +} + +.hljs-name { + color: #81A1C1; +} + +.hljs-section { + color: #88C0D0; +} + +.hljs-tag { + color: #81A1C1; +} + +.hljs-variable { + color: #D8DEE9; +} + +.hljs-template-variable { + color: #D8DEE9; +} + +.hljs-template-tag { + color: #5E81AC; +} + +.abnf .hljs-attribute { + color: #88C0D0; +} + +.abnf .hljs-symbol { + color: #EBCB8B; +} + +.apache .hljs-attribute { + color: #88C0D0; +} + +.apache .hljs-section { + color: #81A1C1; +} + +.arduino .hljs-built_in { + color: #88C0D0; +} + +.aspectj .hljs-meta { + color: #D08770; +} + +.aspectj > .hljs-title { + color: #88C0D0; +} + +.bnf .hljs-attribute { + color: #8FBCBB; +} + +.clojure .hljs-name { + color: #88C0D0; +} + +.clojure .hljs-symbol { + color: #EBCB8B; +} + +.coq .hljs-built_in { + color: #88C0D0; +} + +.cpp .hljs-meta-string { + color: #8FBCBB; +} + +.css .hljs-built_in { + color: #88C0D0; +} + +.css .hljs-keyword { + color: #D08770; +} + +.diff .hljs-meta { + color: #8FBCBB; +} + +.ebnf .hljs-attribute { + color: #8FBCBB; +} + +.glsl .hljs-built_in { + color: #88C0D0; +} + +.groovy .hljs-meta:not(:first-child) { + color: #D08770; +} + +.haxe .hljs-meta { + color: #D08770; +} + +.java .hljs-meta { + color: #D08770; +} + +.ldif .hljs-attribute { + color: #8FBCBB; +} + +.lisp .hljs-name { + color: #88C0D0; +} + +.lua .hljs-built_in { + color: #88C0D0; +} + +.moonscript .hljs-built_in { + color: #88C0D0; +} + +.nginx .hljs-attribute { + color: #88C0D0; +} + +.nginx .hljs-section { + color: #5E81AC; +} + +.pf .hljs-built_in { + color: #88C0D0; +} + +.processing .hljs-built_in { + color: #88C0D0; +} + +.scss .hljs-keyword { + color: #81A1C1; +} + +.stylus .hljs-keyword { + color: #81A1C1; +} + +.swift .hljs-meta { + color: #D08770; +} + +.vim .hljs-built_in { + color: #88C0D0; + font-style: italic; +} + +.yaml .hljs-meta { + color: #D08770; +} diff --git a/libs/highlight/styles/obsidian.css b/libs/highlight/styles/obsidian.css new file mode 100644 index 000000000..356630fa2 --- /dev/null +++ b/libs/highlight/styles/obsidian.css @@ -0,0 +1,88 @@ +/** + * Obsidian style + * ported by Alexander Marenin (http://github.com/ioncreature) + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282b2e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-selector-id { + color: #93c763; +} + +.hljs-number { + color: #ffcd22; +} + +.hljs { + color: #e0e2e4; +} + +.hljs-attribute { + color: #668bb0; +} + +.hljs-code, +.hljs-class .hljs-title, +.hljs-section { + color: white; +} + +.hljs-regexp, +.hljs-link { + color: #d39745; +} + +.hljs-meta { + color: #557182; +} + +.hljs-tag, +.hljs-name, +.hljs-bullet, +.hljs-subst, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8cbbad; +} + +.hljs-string, +.hljs-symbol { + color: #ec7600; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion { + color: #818e96; +} + +.hljs-selector-class { + color: #A082BD +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/ocean.css b/libs/highlight/styles/ocean.css new file mode 100644 index 000000000..5901581b4 --- /dev/null +++ b/libs/highlight/styles/ocean.css @@ -0,0 +1,74 @@ +/* Ocean Dark Theme */ +/* https://github.com/gavsiu */ +/* Original theme - https://github.com/chriskempson/base16 */ + +/* Ocean Comment */ +.hljs-comment, +.hljs-quote { + color: #65737e; +} + +/* Ocean Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #bf616a; +} + +/* Ocean Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #d08770; +} + +/* Ocean Yellow */ +.hljs-attribute { + color: #ebcb8b; +} + +/* Ocean Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #a3be8c; +} + +/* Ocean Blue */ +.hljs-title, +.hljs-section { + color: #8fa1b3; +} + +/* Ocean Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b48ead; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2b303b; + color: #c0c5ce; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/paraiso-dark.css b/libs/highlight/styles/paraiso-dark.css new file mode 100644 index 000000000..e7292401c --- /dev/null +++ b/libs/highlight/styles/paraiso-dark.css @@ -0,0 +1,72 @@ +/* + Paraíso (dark) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ + +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #8d8687; +} + +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155; +} + +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15; +} + +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418; +} + +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685; +} + +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2f1e2e; + color: #a39e9b; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/paraiso-light.css b/libs/highlight/styles/paraiso-light.css new file mode 100644 index 000000000..944857cd8 --- /dev/null +++ b/libs/highlight/styles/paraiso-light.css @@ -0,0 +1,72 @@ +/* + Paraíso (light) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ + +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #776e71; +} + +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155; +} + +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15; +} + +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418; +} + +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685; +} + +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #e7e9db; + color: #4f424c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/pojoaque.css b/libs/highlight/styles/pojoaque.css new file mode 100644 index 000000000..2e07847b2 --- /dev/null +++ b/libs/highlight/styles/pojoaque.css @@ -0,0 +1,83 @@ +/* + +Pojoaque Style by Jason Tate +http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html +Based on Solarized Style from http://ethanschoonover.com/solarized + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #dccf8f; + background: url(./pojoaque.jpg) repeat scroll left top #181914; +} + +.hljs-comment, +.hljs-quote { + color: #586e75; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-addition { + color: #b64926; +} + +.hljs-number, +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #468966; +} + +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-name { + color: #ffb03b; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type, +.hljs-tag { + color: #b58900; +} + +.hljs-attribute { + color: #b89859; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-subst, +.hljs-meta { + color: #cb4b16; +} + +.hljs-deletion { + color: #dc322f; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #d3a60c; +} + +.hljs-formula { + background: #073642; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/pojoaque.jpg b/libs/highlight/styles/pojoaque.jpg new file mode 100644 index 000000000..9c07d4ab4 Binary files /dev/null and b/libs/highlight/styles/pojoaque.jpg differ diff --git a/libs/highlight/styles/purebasic.css b/libs/highlight/styles/purebasic.css new file mode 100644 index 000000000..20a5230bc --- /dev/null +++ b/libs/highlight/styles/purebasic.css @@ -0,0 +1,96 @@ +/* + +PureBASIC native IDE style ( version 1.0 - April 2016 ) + +by Tristano Ajmone + +Public Domain + +NOTE_1: PureBASIC code syntax highlighting only applies the following classes: + .hljs-comment + .hljs-function + .hljs-keywords + .hljs-string + .hljs-symbol + + Other classes are added here for the benefit of styling other languages with the look and feel of PureBASIC native IDE style. + If you need to customize a stylesheet for PureBASIC only, remove all non-relevant classes -- PureBASIC-related classes are followed by + a "--- used for PureBASIC ... ---" comment on same line. + +NOTE_2: Color names provided in comments were derived using "Name that Color" online tool: + http://chir.ag/projects/name-that-color +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #FFFFDF; /* Half and Half (approx.) */ +/* --- Uncomment to add PureBASIC native IDE styled font! + font-family: Consolas; +*/ +} + +.hljs, /* --- used for PureBASIC base color --- */ +.hljs-type, /* --- used for PureBASIC Procedures return type --- */ +.hljs-function, /* --- used for wrapping PureBASIC Procedures definitions --- */ +.hljs-name, +.hljs-number, +.hljs-attr, +.hljs-params, +.hljs-subst { + color: #000000; /* Black */ +} + +.hljs-comment, /* --- used for PureBASIC Comments --- */ +.hljs-regexp, +.hljs-section, +.hljs-selector-pseudo, +.hljs-addition { + color: #00AAAA; /* Persian Green (approx.) */ +} + +.hljs-title, /* --- used for PureBASIC Procedures Names --- */ +.hljs-tag, +.hljs-variable, +.hljs-code { + color: #006666; /* Blue Stone (approx.) */ +} + +.hljs-keyword, /* --- used for PureBASIC Keywords --- */ +.hljs-class, +.hljs-meta-keyword, +.hljs-selector-class, +.hljs-built_in, +.hljs-builtin-name { + color: #006666; /* Blue Stone (approx.) */ + font-weight: bold; +} + +.hljs-string, /* --- used for PureBASIC Strings --- */ +.hljs-selector-attr { + color: #0080FF; /* Azure Radiance (approx.) */ +} + +.hljs-symbol, /* --- used for PureBASIC Constants --- */ +.hljs-link, +.hljs-deletion, +.hljs-attribute { + color: #924B72; /* Cannon Pink (approx.) */ +} + +.hljs-meta, +.hljs-literal, +.hljs-selector-id { + color: #924B72; /* Cannon Pink (approx.) */ + font-weight: bold; +} + +.hljs-strong, +.hljs-name { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/qtcreator_dark.css b/libs/highlight/styles/qtcreator_dark.css new file mode 100644 index 000000000..7aa56a365 --- /dev/null +++ b/libs/highlight/styles/qtcreator_dark.css @@ -0,0 +1,83 @@ +/* + +Qt Creator dark color scheme + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000000; +} + +.hljs, +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #aaaaaa; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #ff55ff; +} + +.hljs-code +.hljs-selector-class { + color: #aaaaff; +} + +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #ffff55; +} + +.hljs-attribute { + color: #ff5555; +} + +.hljs-variable, +.hljs-params, +.hljs-class .hljs-title { + color: #8888ff; +} + +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #ff55ff; +} + +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #55ffff; +} diff --git a/libs/highlight/styles/qtcreator_light.css b/libs/highlight/styles/qtcreator_light.css new file mode 100644 index 000000000..1efa2c660 --- /dev/null +++ b/libs/highlight/styles/qtcreator_light.css @@ -0,0 +1,83 @@ +/* + +Qt Creator light color scheme + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #ffffff; +} + +.hljs, +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #000000; +} + +.hljs-strong, +.hljs-emphasis { + color: #000000; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #000080; +} + +.hljs-code +.hljs-selector-class { + color: #800080; +} + +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #808000; +} + +.hljs-attribute { + color: #800000; +} + +.hljs-variable, +.hljs-params, +.hljs-class .hljs-title { + color: #0055AF; +} + +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #008000; +} + +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #008000; +} diff --git a/libs/highlight/styles/railscasts.css b/libs/highlight/styles/railscasts.css new file mode 100644 index 000000000..008cdc5bf --- /dev/null +++ b/libs/highlight/styles/railscasts.css @@ -0,0 +1,106 @@ +/* + +Railscasts-like style (c) Visoft, Inc. (Damien White) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #232323; + color: #e6e1dc; +} + +.hljs-comment, +.hljs-quote { + color: #bc9458; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag { + color: #c26230; +} + +.hljs-string, +.hljs-number, +.hljs-regexp, +.hljs-variable, +.hljs-template-variable { + color: #a5c261; +} + +.hljs-subst { + color: #519f50; +} + +.hljs-tag, +.hljs-name { + color: #e8bf6a; +} + +.hljs-type { + color: #da4939; +} + + +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name, +.hljs-attr, +.hljs-link { + color: #6d9cbe; +} + +.hljs-params { + color: #d0d0ff; +} + +.hljs-attribute { + color: #cda869; +} + +.hljs-meta { + color: #9b859d; +} + +.hljs-title, +.hljs-section { + color: #ffc66d; +} + +.hljs-addition { + background-color: #144212; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #600; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.hljs-selector-class { + color: #9b703f; +} + +.hljs-selector-id { + color: #8b98ab; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/libs/highlight/styles/rainbow.css b/libs/highlight/styles/rainbow.css new file mode 100644 index 000000000..905eb8ef1 --- /dev/null +++ b/libs/highlight/styles/rainbow.css @@ -0,0 +1,85 @@ +/* + +Style with support for rainbow parens + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #474949; + color: #d1d9e1; +} + + +.hljs-comment, +.hljs-quote { + color: #969896; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-type, +.hljs-addition { + color: #cc99cc; +} + +.hljs-number, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #f99157; +} + +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #8abeb7; +} + +.hljs-title, +.hljs-name, +.hljs-section, +.hljs-built_in { + color: #b5bd68; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-class .hljs-title { + color: #ffcc66; +} + +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-link { + color: #f99157; +} + +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #eee8d5; +} + +.hljs-attr, +.hljs-attribute { + color: #81a2be; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/routeros.css b/libs/highlight/styles/routeros.css new file mode 100644 index 000000000..ebe23990d --- /dev/null +++ b/libs/highlight/styles/routeros.css @@ -0,0 +1,108 @@ +/* + + highlight.js style for Microtik RouterOS script + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #F0F0F0; +} + +/* Base color: saturation 0; */ + +.hljs, +.hljs-subst { + color: #444; +} + +.hljs-comment { + color: #888888; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; +} + +.hljs-attribute { + color: #0E9A00; +} + +.hljs-function { + color: #99069A; +} + +.hljs-builtin-name { + color: #99069A; +} + +/* User color: hue: 0 */ + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060; +} + + +/* Language color: hue: 90; */ + +.hljs-literal { + color: #78A960; +} + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #0C9A9A; +} + + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/school-book.css b/libs/highlight/styles/school-book.css new file mode 100644 index 000000000..94838513f --- /dev/null +++ b/libs/highlight/styles/school-book.css @@ -0,0 +1,69 @@ +/* + +School Book style from goldblog.com.ua (c) Zaripov Yura + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 15px 0.5em 0.5em 30px; + font-size: 11px; + line-height:16px; + background:#f6f6ae url(./school-book.png); + border-top: solid 2px #d2e8b9; + border-bottom: solid 1px #d2e8b9; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color:#005599; + font-weight:bold; +} + +.hljs, +.hljs-subst { + color: #3e5915; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-built_in, +.hljs-builtin-name, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link { + color: #2c009f; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #e60415; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/school-book.png b/libs/highlight/styles/school-book.png new file mode 100644 index 000000000..956e9790a Binary files /dev/null and b/libs/highlight/styles/school-book.png differ diff --git a/libs/highlight/styles/shades-of-purple.css b/libs/highlight/styles/shades-of-purple.css new file mode 100644 index 000000000..9759cdd2b --- /dev/null +++ b/libs/highlight/styles/shades-of-purple.css @@ -0,0 +1,96 @@ +/** + * Shades of Purple Theme — for Highlightjs. + * + * @author (c) Ahmad Awais + * @link GitHub Repo → https://github.com/ahmadawais/Shades-of-Purple-HighlightJS + * @version 1.5.0 + */ + +.hljs { + display: block; + overflow-x: auto; + /* Custom font is optional */ + /* font-family: 'Operator Mono', 'Fira Code', 'Menlo', 'Monaco', 'Courier New', 'monospace'; */ + padding: 0.5em; + background: #2d2b57; + font-weight: normal; +} + +.hljs-title { + color: #fad000; + font-weight: normal; +} + +.hljs-name { + color: #a1feff; +} + +.hljs-tag { + color: #ffffff; +} + +.hljs-attr { + color: #f8d000; + font-style: italic; +} + +.hljs-built_in, +.hljs-selector-tag, +.hljs-section { + color: #fb9e00; +} + +.hljs-keyword { + color: #fb9e00; +} + +.hljs, +.hljs-subst { + color: #e3dfff; +} + +.hljs-string, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-code, +.hljs-regexp, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-template-tag, +.hljs-quote, +.hljs-deletion { + color: #4cd213; +} + +.hljs-meta, +.hljs-meta-string { + color: #fb9e00; +} + +.hljs-comment { + color: #ac65ff; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-name, +.hljs-strong { + font-weight: normal; +} + +.hljs-literal, +.hljs-number { + color: #fa658d; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/solarized-dark.css b/libs/highlight/styles/solarized-dark.css new file mode 100644 index 000000000..b4c0da1f7 --- /dev/null +++ b/libs/highlight/styles/solarized-dark.css @@ -0,0 +1,84 @@ +/* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #002b36; + color: #839496; +} + +.hljs-comment, +.hljs-quote { + color: #586e75; +} + +/* Solarized Green */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #859900; +} + +/* Solarized Cyan */ +.hljs-number, +.hljs-string, +.hljs-meta .hljs-meta-string, +.hljs-literal, +.hljs-doctag, +.hljs-regexp { + color: #2aa198; +} + +/* Solarized Blue */ +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #268bd2; +} + +/* Solarized Yellow */ +.hljs-attribute, +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type { + color: #b58900; +} + +/* Solarized Orange */ +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link { + color: #cb4b16; +} + +/* Solarized Red */ +.hljs-built_in, +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #073642; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/solarized-light.css b/libs/highlight/styles/solarized-light.css new file mode 100644 index 000000000..fdcfcc72c --- /dev/null +++ b/libs/highlight/styles/solarized-light.css @@ -0,0 +1,84 @@ +/* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fdf6e3; + color: #657b83; +} + +.hljs-comment, +.hljs-quote { + color: #93a1a1; +} + +/* Solarized Green */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #859900; +} + +/* Solarized Cyan */ +.hljs-number, +.hljs-string, +.hljs-meta .hljs-meta-string, +.hljs-literal, +.hljs-doctag, +.hljs-regexp { + color: #2aa198; +} + +/* Solarized Blue */ +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #268bd2; +} + +/* Solarized Yellow */ +.hljs-attribute, +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type { + color: #b58900; +} + +/* Solarized Orange */ +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link { + color: #cb4b16; +} + +/* Solarized Red */ +.hljs-built_in, +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #eee8d5; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/srcery.css b/libs/highlight/styles/srcery.css new file mode 100644 index 000000000..9c68ff12e --- /dev/null +++ b/libs/highlight/styles/srcery.css @@ -0,0 +1,78 @@ +/* +Description: Srcery dark color scheme for highlight.js +Author: Chen Bin +Website: https://srcery-colors.github.io/ +Date: 2020-04-06 +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #1C1B19; + color: #FCE8C3; +} + +.hljs-strong, +.hljs-emphasis { + color: #918175; +} + +.hljs-bullet, +.hljs-quote, +.hljs-link, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #FF5C8F; +} + +.hljs-code, +.hljs-selector-class { + color: #68A8E4 +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-attribute, +.hljs-variable { + color: #EF2F27; +} + +.hljs-name, +.hljs-title { + color: #FBB829; +} + +.hljs-type, +.hljs-params { + color: #0AAEB3; +} + +.hljs-string { + color: #98BC37; +} + +.hljs-subst, +.hljs-built_in, +.hljs-builtin-name, +.hljs-symbol, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #C07ABE; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #918175; +} diff --git a/libs/highlight/styles/sunburst.css b/libs/highlight/styles/sunburst.css new file mode 100644 index 000000000..f56dd5e9b --- /dev/null +++ b/libs/highlight/styles/sunburst.css @@ -0,0 +1,102 @@ +/* + +Sunburst-like style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000; + color: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #aeaeae; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #e28964; +} + +.hljs-string { + color: #65b042; +} + +.hljs-subst { + color: #daefa3; +} + +.hljs-regexp, +.hljs-link { + color: #e9c062; +} + +.hljs-title, +.hljs-section, +.hljs-tag, +.hljs-name { + color: #89bdff; +} + +.hljs-class .hljs-title, +.hljs-doctag { + text-decoration: underline; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-number { + color: #3387cc; +} + +.hljs-params, +.hljs-variable, +.hljs-template-variable { + color: #3e87e3; +} + +.hljs-attribute { + color: #cda869; +} + +.hljs-meta { + color: #8996a8; +} + +.hljs-formula { + background-color: #0e2231; + color: #f8f8f8; + font-style: italic; +} + +.hljs-addition { + background-color: #253b22; + color: #f8f8f8; +} + +.hljs-deletion { + background-color: #420e09; + color: #f8f8f8; +} + +.hljs-selector-class { + color: #9b703f; +} + +.hljs-selector-id { + color: #8b98ab; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/tomorrow-night-blue.css b/libs/highlight/styles/tomorrow-night-blue.css new file mode 100644 index 000000000..78e59cc8c --- /dev/null +++ b/libs/highlight/styles/tomorrow-night-blue.css @@ -0,0 +1,75 @@ +/* Tomorrow Night Blue Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #7285b7; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #ff9da4; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #ffc58f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffeead; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #d1f1a9; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #bbdaff; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ebbbff; +} + +.hljs { + display: block; + overflow-x: auto; + background: #002451; + color: white; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/tomorrow-night-bright.css b/libs/highlight/styles/tomorrow-night-bright.css new file mode 100644 index 000000000..e05af8ae2 --- /dev/null +++ b/libs/highlight/styles/tomorrow-night-bright.css @@ -0,0 +1,74 @@ +/* Tomorrow Night Bright Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #d54e53; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #e78c45; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #e7c547; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b9ca4a; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #7aa6da; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c397d8; +} + +.hljs { + display: block; + overflow-x: auto; + background: black; + color: #eaeaea; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/tomorrow-night-eighties.css b/libs/highlight/styles/tomorrow-night-eighties.css new file mode 100644 index 000000000..08fd51c74 --- /dev/null +++ b/libs/highlight/styles/tomorrow-night-eighties.css @@ -0,0 +1,74 @@ +/* Tomorrow Night Eighties Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #999999; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #f2777a; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f99157; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffcc66; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #99cc99; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #6699cc; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #cc99cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2d2d2d; + color: #cccccc; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/tomorrow-night.css b/libs/highlight/styles/tomorrow-night.css new file mode 100644 index 000000000..ddd270a4e --- /dev/null +++ b/libs/highlight/styles/tomorrow-night.css @@ -0,0 +1,75 @@ +/* Tomorrow Night Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #cc6666; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #de935f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #f0c674; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b5bd68; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #81a2be; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b294bb; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1d1f21; + color: #c5c8c6; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/tomorrow.css b/libs/highlight/styles/tomorrow.css new file mode 100644 index 000000000..026a62fe3 --- /dev/null +++ b/libs/highlight/styles/tomorrow.css @@ -0,0 +1,72 @@ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #8e908c; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #c82829; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f5871f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #eab700; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #718c00; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #4271ae; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8959a8; +} + +.hljs { + display: block; + overflow-x: auto; + background: white; + color: #4d4d4c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/vs.css b/libs/highlight/styles/vs.css new file mode 100644 index 000000000..c5d07d311 --- /dev/null +++ b/libs/highlight/styles/vs.css @@ -0,0 +1,68 @@ +/* + +Visual Studio-like style based on original C# coloring by Jason Diamond + +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-comment, +.hljs-quote, +.hljs-variable { + color: #008000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-built_in, +.hljs-name, +.hljs-tag { + color: #00f; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-literal, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-addition { + color: #a31515; +} + +.hljs-deletion, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-meta { + color: #2b91af; +} + +.hljs-doctag { + color: #808080; +} + +.hljs-attr { + color: #f00; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #00b0e8; +} + + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/highlight/styles/vs2015.css b/libs/highlight/styles/vs2015.css new file mode 100644 index 000000000..d1d9be3ca --- /dev/null +++ b/libs/highlight/styles/vs2015.css @@ -0,0 +1,115 @@ +/* + * Visual Studio 2015 dark style + * Author: Nicolas LLOBERA + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #1E1E1E; + color: #DCDCDC; +} + +.hljs-keyword, +.hljs-literal, +.hljs-symbol, +.hljs-name { + color: #569CD6; +} +.hljs-link { + color: #569CD6; + text-decoration: underline; +} + +.hljs-built_in, +.hljs-type { + color: #4EC9B0; +} + +.hljs-number, +.hljs-class { + color: #B8D7A3; +} + +.hljs-string, +.hljs-meta-string { + color: #D69D85; +} + +.hljs-regexp, +.hljs-template-tag { + color: #9A5334; +} + +.hljs-subst, +.hljs-function, +.hljs-title, +.hljs-params, +.hljs-formula { + color: #DCDCDC; +} + +.hljs-comment, +.hljs-quote { + color: #57A64A; + font-style: italic; +} + +.hljs-doctag { + color: #608B4E; +} + +.hljs-meta, +.hljs-meta-keyword, +.hljs-tag { + color: #9B9B9B; +} + +.hljs-variable, +.hljs-template-variable { + color: #BD63C5; +} + +.hljs-attr, +.hljs-attribute, +.hljs-builtin-name { + color: #9CDCFE; +} + +.hljs-section { + color: gold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +/*.hljs-code { + font-family:'Monospace'; +}*/ + +.hljs-bullet, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #D7BA7D; +} + +.hljs-addition { + background-color: #144212; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #600; + display: inline-block; + width: 100%; +} diff --git a/libs/highlight/styles/xcode.css b/libs/highlight/styles/xcode.css new file mode 100644 index 000000000..b3056655c --- /dev/null +++ b/libs/highlight/styles/xcode.css @@ -0,0 +1,104 @@ +/* + +XCode style (c) Angel Garcia + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fff; + color: black; +} + +/* Gray DOCTYPE selectors like WebKit */ +.xml .hljs-meta { + color: #c0c0c0; +} + +.hljs-comment, +.hljs-quote { + color: #007400; +} + +.hljs-tag, +.hljs-attribute, +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-name { + color: #aa0d91; +} + +.hljs-variable, +.hljs-template-variable { + color: #3F6E74; +} + +.hljs-code, +.hljs-string, +.hljs-meta-string { + color: #c41a16; +} + +.hljs-regexp, +.hljs-link { + color: #0E0EFF; +} + +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-number { + color: #1c00cf; +} + +.hljs-section, +.hljs-meta { + color: #643820; +} + + +.hljs-class .hljs-title, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-params { + color: #5c2699; +} + +.hljs-attr { + color: #836C28; +} + +.hljs-subst { + color: #000; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-addition { + background-color: #baeeba; +} + +.hljs-deletion { + background-color: #ffc8bd; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #9b703f; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/libs/highlight/styles/xt256.css b/libs/highlight/styles/xt256.css new file mode 100644 index 000000000..3e35ad2d5 --- /dev/null +++ b/libs/highlight/styles/xt256.css @@ -0,0 +1,92 @@ + +/* + xt256.css + + Contact: initbar [at] protonmail [dot] ch + : github.com/initbar +*/ + +.hljs { + display: block; + overflow-x: auto; + color: #eaeaea; + background: #000; + padding: 0.5em; +} + +.hljs-subst { + color: #eaeaea; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-builtin-name, +.hljs-type { + color: #eaeaea; +} + +.hljs-params { + color: #da0000; +} + +.hljs-literal, +.hljs-number, +.hljs-name { + color: #ff0000; + font-weight: bolder; +} + +.hljs-comment { + color: #969896; +} + +.hljs-selector-id, +.hljs-quote { + color: #00ffff; +} + +.hljs-template-variable, +.hljs-variable, +.hljs-title { + color: #00ffff; + font-weight: bold; +} + +.hljs-selector-class, +.hljs-keyword, +.hljs-symbol { + color: #fff000; +} + +.hljs-string, +.hljs-bullet { + color: #00ff00; +} + +.hljs-tag, +.hljs-section { + color: #000fff; +} + +.hljs-selector-tag { + color: #000fff; + font-weight: bold; +} + +.hljs-attribute, +.hljs-built_in, +.hljs-regexp, +.hljs-link { + color: #ff00ff; +} + +.hljs-meta { + color: #fff; + font-weight: bolder; +} diff --git a/libs/highlight/styles/zenburn.css b/libs/highlight/styles/zenburn.css new file mode 100644 index 000000000..07be50201 --- /dev/null +++ b/libs/highlight/styles/zenburn.css @@ -0,0 +1,80 @@ +/* + +Zenburn style from voldmar.ru (c) Vladimir Epifanov +based on dark.css by Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #3f3f3f; + color: #dcdcdc; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag { + color: #e3ceab; +} + +.hljs-template-tag { + color: #dcdcdc; +} + +.hljs-number { + color: #8cd0d3; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-attribute { + color: #efdcbc; +} + +.hljs-literal { + color: #efefaf; +} + +.hljs-subst { + color: #8f8f8f; +} + +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #efef8f; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #dca3a3; +} + +.hljs-deletion, +.hljs-string, +.hljs-built_in, +.hljs-builtin-name { + color: #cc9393; +} + +.hljs-addition, +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7f9f7f; +} + + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/libs/lightcase/.gitignore b/libs/lightcase/.gitignore new file mode 100644 index 000000000..5df1b9b43 --- /dev/null +++ b/libs/lightcase/.gitignore @@ -0,0 +1 @@ +.sass-cache diff --git a/libs/lightcase/README.md b/libs/lightcase/README.md new file mode 100644 index 000000000..a407dc797 --- /dev/null +++ b/libs/lightcase/README.md @@ -0,0 +1,8 @@ +lightcase.js +====== + +The smart and flexible Lightbox Plugin. + +Lightcase is a flexible and extendable web application to present various media formats on your website and is based on the jQuery Framework. +All information, documentation and developer guidelines are available on the [official lightcase plugin website]( +http://cornel.bopp-art.com/lightcase/). diff --git a/libs/lightcase/bower.json b/libs/lightcase/bower.json new file mode 100644 index 000000000..b4385d502 --- /dev/null +++ b/libs/lightcase/bower.json @@ -0,0 +1,39 @@ +{ + "name": "lightcase", + "description": "The smart and flexible Lightbox Plugin.", + "keywords": [ + "jquery-plugin", + "lightbox", + "modal", + "window", + "popup" + ], + "version": "2.4.0", + "dependencies": { + "jquery": ">=1.5.0" + }, + "authors": [ + "Cornel Boppart (http://cornel.bopp-art.com)" + ], + "license": "GPL-2.0+", + "main": "src/js/lightcase.js", + "homepage": "http://cornel.bopp-art.com/lightcase/", + "repository": { + "type": "git", + "url": "https://github.com/cbopp-art/lightcase.git" + }, + "bugs": { + "url": "https://github.com/cbopp-art/lightcase/issues", + "email": "cornel@bopp-art.com" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/libs/lightcase/changelog.txt b/libs/lightcase/changelog.txt new file mode 100644 index 000000000..d6724c011 --- /dev/null +++ b/libs/lightcase/changelog.txt @@ -0,0 +1,182 @@ +2017/04/09 - v2.4.0 +Feature: Improve external video resize handling using a new setting 'fixedRatio' +Feature: Add compiled css file without breakpoint +Bugfix: Fix couple of browser issues with several content types +Feature: Issue #69 - Autodetect the right video format supported by the browser +Feature: Issue #96 - Allow more possibilities to define transitions +Bugfix: Issue #122 - Improve dimension handling using forceWidth and forceHeight +Bugfix: Fix fade in issue with inner content +Feature: Issue #114 - Possibility to initialize lightcase collections with different tag attribute values + +2016/12/20 - v2.3.6 +Hotfix: Fix scroll position after scrolling lightcase content on mobile + +2016/12/20 - v2.3.5 +Bugfix: Issue #98 - Fix bug with internal matchMedia function call +Bugfix: Issue #97 - Closing Lightcase on mobile forces site to top of page +Feature: Support for jQuery version 3.x.x +Feature: Issue #84 - Add the option to override all the configurations from within the HTML +Bugfix: Issue #50 - Iframe is not scrolling on all iDevices +Feature: Issue #48 - Added new option slideshowAutostart + +2015/12/29 - v2.3.4 +Bugfix: Issue #47 - Fixed wrong break statement which crashed in transition + +2015/12/25 - v2.3.3 +Bugfix: Fixed forceWidth and forceHeight option +Feature: Issue #46 - Font path configurable with scss settings +Bugfix: Issue #45 - All labels as lightcase settings +Bugfix: Issue #43 - Images not loaded when desktop browser view is zoomed out + +2015/11/21 - v2.3.2 +Bugfix: Issue #38 - Fixed main path in package.json +WIP: open() no longer a public method +Bugfix: Issue #37 - Added border-box to contentInner +Bugfix: Issue #32 - Access origin link object and perform with data + +2015/11/17 - v2.3.1 +Bugfix: Fixed navigation bug on last item in a sequence + +2015/11/15 - v2.3.0 +Added: bower manifest file +Feature: Viewport and density support +Cleanup: Set lightcase into private scope +Cleanup: Implemented strict mode +Feature: SASS implementation + +2015/10/28 - v2.2.0 +Feature: Prefixed name for all attributes for more uniqueness +Feature: Possibility to use categories with collections +Feature: lightcase.origin represents the called link object +Bugfix: Issue #32 - Make object this accessible within hook functions + +2015/09/29 - v2.1.2 +Bugfix: Issue #26 - Captions on mobile devices +Bugfix: Issue #25 - navigateEndless when useKeys is true +Cleanup: Remove BOM from package.json + +2015/07/12 - v2.1.1 +Feature: Added bower configuration file +Bugfix: Issue #22 - DisableShrink property doesn't work, case of image type affects type of overlay +Bugfix: Disabled text decoration for icon links +Bugfix: Optimized nav icon position +Bugfix: Issue #19 - Cleanup removes all key bindings on the page +Bugfix: Issue #17 - While closing in midst of loading next image + +2015/04/25 - v2.1.0 +Feature: Added new option 'attr' used for initializing collections +Feature: Added new hook calls 'onClose' and 'onCleanup' +Bugfix: Issue #14 - Jump to top issue on mobile +Bugfix: Issue #12 - $case is not defined + +2015/03/21 - v2.0.3 +Bugfix: Decreased vulnerability in side effects for text colors +Feature: Added new option 'href' overriding attribute +Feature: Updated lightcase font with a new loading icon + +2015/02/23 - v2.0.2 +Bugfix: Fixed icon wobble for webkit +Bugfix: Defined line-height on each icon to prevent from style inheritance +Feature: Improved use of format json with type ajax + +2015/02/11 - v2.0.1 +Added: Minified source of lightcase.js +Bugfix: Fixed loading animation wobble in mozilla firefox +Bugfix: Optimized loading spin icon + +2015/02/09 - v2.0.0 +Feature: Implemeted breakpoint related styles +Feature: Major style improvements +Feature: Switched from sprites to icon font +Bugfix: Fixed performance issues +Feature: Add title and caption to options + +2014/12/22 - v1.6.0 +Feature: Improved hook implementation +Update: jQuery touch events from v1.3.1 to v1.4.5 + +2014/11/02 - v1.5.4 +Feature: Slight style improvments (font size) +Feature: Returned the object within init +Cleanup: Outdent inline comments +Cleanup: Space before braces for anonymous function +Cleanup: Changed comma position + +2014/10/11 - v1.5.3 +Added: package.json file +Fixed: Incorrect css property + +2014/04/28 - v1.5.2 +Fixed: CSS3 transition timing issue in Firefox + +2014/04/21 - v1.5.1 +Feature: Changed default speed value +Feature: Improved and transition 'elastic' look and feel + +2014/03/08 - v1.5.0 +Feature: New hook function on initialization +Feature: Advanced usage of type ajax +Feature: Implemented WAI-ARIA standard for dialog boxes +Bugfix: Code quality improvements + +2013/09/10 - v1.4.4 +Fixed: Cross effects when using multiple class names with option 'classPrefix' +Removed: Replaced option 'id' and 'tempIdPrefix' with 'idPrefix' + +2013/09/01 - v1.4.3 +Bugfix: Fixed the 'elastic' inTransition in Google Chrome 29.0.1547.62 m + +2013/06/30 - v1.4.2 +Added: Option 'type' for forcing data type + +2013/06/19 - v1.4.1 +Removed: noConflict call + +2013/06/02 - v1.4.0 +Feature: New effects like 'scrollTop', 'scrollHorizontal' and more +Feature: Option 'swipe' +Feature: Additional options 'transitionIn' and 'transitionOut' +Feature: Option 'cssTransitions' for enabing/disabling transitions with css +Feature: Option 'typeMapping' +Added: Design adjustments +Added: All effects as CSS3 transitions with javascript fallbacks + +2013/05/12 - v1.3.2 +Removed: The modified jQuery.browser object +Removed: Flash object tag and classid for a simpler browser handling +Bugfix: Fixed the ignored mobileMatchExpression property + +2013/05/11 - v1.3.1 +Bugfix: Fixed too soon appearing play/pause button if opened in fullscreen mode + +2013/05/11 - v1.3.0 +Feature: Fullscreen mode for mobile devices +Added: jQuery mobile touch events +Added: Class name prefixes for all lightcase objects +Bugfix: Improved dimension calculation for inline, ajax and flash objects + +2013/04/28 - v1.2.0 +Feature: Live resize +Feature: Navigation improvements +Bugfix: Scrollbar was behind the next link and therefore not clickable +Bugfix: Prevent from error if no swipe events are defined + +2013/03/14 - v1.1.5 +Bugfix: Issue #1 - Support jQuery 1.9.1 + +2013/02/01 - v1.1.4 +Added: HTML5 valid data-rel + +2012/09/30 - v1.1.3 +Added: New player icons +Bugfix: Stopped slideshow if swiped + +2012/07/11 - v1.1.2 +Bugfix: Error message if url is invalid +Bugfix: Prevent duplicated id's +Added: Option 'disableShrink' +Added: Lightcase cache +Feature: Possibility to force width and height for default content + +2012/05/13 - v1.0.1 +Initial release diff --git a/libs/lightcase/license.txt b/libs/lightcase/license.txt new file mode 100644 index 000000000..70c7b75cc --- /dev/null +++ b/libs/lightcase/license.txt @@ -0,0 +1,8 @@ +Copyright © 2013, Cornel Boppart +All rights reserved. + +The Lightcase Plugin is Open source and free to use, licensed under the GPL license . +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. \ No newline at end of file diff --git a/libs/lightcase/package.json b/libs/lightcase/package.json new file mode 100644 index 000000000..1a42fdb5f --- /dev/null +++ b/libs/lightcase/package.json @@ -0,0 +1,30 @@ +{ + "name": "lightcase", + "description": "The smart and flexible Lightbox Plugin.", + "keywords": [ + "jquery-plugin", + "lightbox", + "modal", + "window", + "popup" + ], + "version": "2.4.0", + "dependencies": { + "jquery": ">=1.5.0" + }, + "author": "Cornel Boppart (https://github.com/cbopp-art)", + "license": "GPL-2.0+", + "main": "src/js/lightcase.js", + "homepage": "http://cornel.bopp-art.com/lightcase/", + "repository": { + "type": "git", + "url": "https://github.com/cbopp-art/lightcase.git" + }, + "bugs": { + "url": "https://github.com/cbopp-art/lightcase/issues", + "email": "cornel@bopp-art.com" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + } +} diff --git a/libs/lightcase/src/css/lightcase-no-breakpoint.css b/libs/lightcase/src/css/lightcase-no-breakpoint.css new file mode 100644 index 000000000..33dd53bf7 --- /dev/null +++ b/libs/lightcase/src/css/lightcase-no-breakpoint.css @@ -0,0 +1,557 @@ +/** + * Lightcase - jQuery Plugin + * The smart and flexible Lightbox Plugin. + * + * @author Cornel Boppart + * @copyright Author + * + * @version 2.4.0 (09/04/2017) + */ +/** + * Lightcase settings + * + * Note: Override default settings for your project without touching this source code by simply + * defining those variables within a SASS map called '$lightcase-custom'. + * + * // Example usage + * $lightcase-custom: ( + * 'breakpoint': 768px + * ); + */ +@font-face { + font-family: 'lightcase'; + src: url("../fonts/lightcase.eot?55356177"); + src: url("../fonts/lightcase.eot?55356177#iefix") format("embedded-opentype"), url("../fonts/lightcase.woff?55356177") format("woff"), url("../fonts/lightcase.ttf?55356177") format("truetype"), url("../fonts/lightcase.svg?55356177#lightcase") format("svg"); + font-weight: normal; + font-style: normal; +} +/* line 12, ../scss/components/fonts/_font-lightcase.scss */ +[class*='lightcase-icon-']:before { + font-family: 'lightcase', sans-serif; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + text-align: center; + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +/* Codes */ +/* line 35, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-play:before { + content: '\e800'; +} + +/* line 36, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-pause:before { + content: '\e801'; +} + +/* line 37, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-close:before { + content: '\e802'; +} + +/* line 38, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-prev:before { + content: '\e803'; +} + +/* line 39, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-next:before { + content: '\e804'; +} + +/* line 40, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-spin:before { + content: '\e805'; +} + +/** + * Mixin providing icon defaults to be used on top of font-lightcase. + * + * Example usage: + * @include icon(#e9e9e9) + */ +/** + * Mixin providing icon defaults including a hover status to be used + * on top of font-lightcase. + * + * Example usage: + * @include icon-hover(#e9e9e9, #fff) + */ +/** + * Provides natural content overflow behavior and scrolling support + * even so for touch devices. + * + * Example usage: + * @include overflow() + */ +/** + * Neutralizes/resets dimensions including width, height, position as well as margins, + * paddings and styles. Used to enforce a neutral and unstyled look and behavoir! + * + * Example usage: + * @include clear(true) + * + * @param boolean $important + */ +@-webkit-keyframes lightcase-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-moz-keyframes lightcase-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-o-keyframes lightcase-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-ms-keyframes lightcase-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes lightcase-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } +} +/* line 1, ../scss/components/modules/_case.scss */ +#lightcase-case { + display: none; + position: fixed; + z-index: 2002; + top: 50%; + left: 50%; + font-family: arial, sans-serif; + font-size: 13px; + line-height: 1.5; + text-align: left; + text-shadow: 0 0 10px rgba(0, 0, 0, 0.5); +} +@media screen and (max-width: -1) { + /* line 16, ../scss/components/modules/_case.scss */ + html[data-lc-type=inline] #lightcase-case, html[data-lc-type=ajax] #lightcase-case { + position: fixed !important; + top: 0 !important; + left: 0 !important; + right: 0 !important; + bottom: 0 !important; + margin: 0 !important; + padding: 55px 0 70px 0; + width: 100% !important; + height: 100% !important; + overflow: auto !important; + } +} + +@media screen and (min-width: 0) { + /* line 4, ../scss/components/modules/_content.scss */ + html:not([data-lc-type=error]) #lightcase-content { + position: relative; + z-index: 1; + text-shadow: none; + background-color: #fff; + -webkit-box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + -o-box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + -webkit-backface-visibility: hidden; + } +} +@media screen and (min-width: 0) { + /* line 23, ../scss/components/modules/_content.scss */ + html[data-lc-type=image] #lightcase-content, html[data-lc-type=video] #lightcase-content { + background-color: #333; + } +} +/* line 31, ../scss/components/modules/_content.scss */ +html[data-lc-type=inline] #lightcase-content, html[data-lc-type=ajax] #lightcase-content, html[data-lc-type=error] #lightcase-content { + -webkit-box-shadow: none; + -moz-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; +} +@media screen and (max-width: -1) { + /* line 31, ../scss/components/modules/_content.scss */ + html[data-lc-type=inline] #lightcase-content, html[data-lc-type=ajax] #lightcase-content, html[data-lc-type=error] #lightcase-content { + position: relative !important; + top: auto !important; + left: auto !important; + width: auto !important; + height: auto !important; + margin: 0 !important; + padding: 0 !important; + border: none !important; + background: none !important; + } +} +/* line 43, ../scss/components/modules/_content.scss */ +html[data-lc-type=inline] #lightcase-content .lightcase-contentInner, html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner, html[data-lc-type=error] #lightcase-content .lightcase-contentInner { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; +} +@media screen and (max-width: -1) { + /* line 43, ../scss/components/modules/_content.scss */ + html[data-lc-type=inline] #lightcase-content .lightcase-contentInner, html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner, html[data-lc-type=error] #lightcase-content .lightcase-contentInner { + padding: 15px; + } + /* line 52, ../scss/components/modules/_content.scss */ + html[data-lc-type=inline] #lightcase-content .lightcase-contentInner, html[data-lc-type=inline] #lightcase-content .lightcase-contentInner > *, html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner, html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner > *, html[data-lc-type=error] #lightcase-content .lightcase-contentInner, html[data-lc-type=error] #lightcase-content .lightcase-contentInner > * { + width: 100% !important; + max-width: none !important; + } + /* line 59, ../scss/components/modules/_content.scss */ + html[data-lc-type=inline] #lightcase-content .lightcase-contentInner > *:not(iframe), html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner > *:not(iframe), html[data-lc-type=error] #lightcase-content .lightcase-contentInner > *:not(iframe) { + height: auto !important; + max-height: none !important; + } +} +@media screen and (max-width: -1) { + /* line 70, ../scss/components/modules/_content.scss */ + html.lightcase-isMobileDevice[data-lc-type=iframe] #lightcase-content .lightcase-contentInner iframe { + overflow: auto; + -webkit-overflow-scrolling: touch; + } +} +@media screen and (max-width: -1) and (min-width: 0) { + /* line 74, ../scss/components/modules/_content.scss */ + html[data-lc-type=image] #lightcase-content .lightcase-contentInner, html[data-lc-type=video] #lightcase-content .lightcase-contentInner { + line-height: 0.75; + } +} + +/* line 82, ../scss/components/modules/_content.scss */ +html[data-lc-type=image] #lightcase-content .lightcase-contentInner { + position: relative; + overflow: hidden !important; +} +@media screen and (max-width: -1) { + /* line 91, ../scss/components/modules/_content.scss */ + html[data-lc-type=inline] #lightcase-content .lightcase-contentInner .lightcase-inlineWrap, html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner .lightcase-inlineWrap, html[data-lc-type=error] #lightcase-content .lightcase-contentInner .lightcase-inlineWrap { + position: relative !important; + top: auto !important; + left: auto !important; + width: auto !important; + height: auto !important; + margin: 0 !important; + padding: 0 !important; + border: none !important; + background: none !important; + } +} +@media screen and (min-width: 0) { + /* line 100, ../scss/components/modules/_content.scss */ + html:not([data-lc-type=error]) #lightcase-content .lightcase-contentInner .lightcase-inlineWrap { + padding: 30px; + overflow: auto; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + } +} +@media screen and (max-width: -1) { + /* line 117, ../scss/components/modules/_content.scss */ + #lightcase-content h1, #lightcase-content h2, #lightcase-content h3, #lightcase-content h4, #lightcase-content h5, #lightcase-content h6, #lightcase-content p { + color: #aaa; + } +} +@media screen and (min-width: 0) { + /* line 117, ../scss/components/modules/_content.scss */ + #lightcase-content h1, #lightcase-content h2, #lightcase-content h3, #lightcase-content h4, #lightcase-content h5, #lightcase-content h6, #lightcase-content p { + color: #333; + } +} + +/* line 3, ../scss/components/modules/_error.scss */ +#lightcase-case p.lightcase-error { + margin: 0; + font-size: 17px; + text-align: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #aaa; +} +@media screen and (max-width: -1) { + /* line 3, ../scss/components/modules/_error.scss */ + #lightcase-case p.lightcase-error { + padding: 30px 0; + } +} +@media screen and (min-width: 0) { + /* line 3, ../scss/components/modules/_error.scss */ + #lightcase-case p.lightcase-error { + padding: 0; + } +} + +/* line 4, ../scss/components/modules/_global.scss */ +.lightcase-open body { + overflow: hidden; +} +/* line 8, ../scss/components/modules/_global.scss */ +.lightcase-isMobileDevice .lightcase-open body { + max-width: 100%; + max-height: 100%; +} + +/* line 1, ../scss/components/modules/_info.scss */ +#lightcase-info { + position: absolute; + padding-top: 15px; +} +/* line 9, ../scss/components/modules/_info.scss */ +#lightcase-info #lightcase-title, +#lightcase-info #lightcase-caption { + margin: 0; + padding: 0; + line-height: 1.5; + font-weight: normal; + text-overflow: ellipsis; +} +/* line 19, ../scss/components/modules/_info.scss */ +#lightcase-info #lightcase-title { + font-size: 17px; + color: #aaa; +} +@media screen and (max-width: -1) { + /* line 19, ../scss/components/modules/_info.scss */ + #lightcase-info #lightcase-title { + position: fixed; + top: 10px; + left: 0; + max-width: 87.5%; + padding: 5px 15px; + background: #333; + } +} +/* line 33, ../scss/components/modules/_info.scss */ +#lightcase-info #lightcase-caption { + clear: both; + font-size: 13px; + color: #aaa; +} +/* line 39, ../scss/components/modules/_info.scss */ +#lightcase-info #lightcase-sequenceInfo { + font-size: 11px; + color: #aaa; +} +@media screen and (max-width: -1) { + /* line 45, ../scss/components/modules/_info.scss */ + .lightcase-fullScreenMode #lightcase-info { + padding-left: 15px; + padding-right: 15px; + } + /* line 51, ../scss/components/modules/_info.scss */ + html:not([data-lc-type=image]):not([data-lc-type=video]):not([data-lc-type=flash]):not([data-lc-type=error]) #lightcase-info { + position: static; + } +} + +/* line 1, ../scss/components/modules/_loading.scss */ +#lightcase-loading { + position: fixed; + z-index: 9999; + width: 1.123em; + height: auto; + font-size: 38px; + line-height: 1; + text-align: center; + text-shadow: none; + position: fixed; + z-index: 2001; + top: 50%; + left: 50%; + margin-top: -0.5em; + margin-left: -0.5em; + opacity: 1; + font-size: 32px; + text-shadow: 0 0 15px #fff; + -moz-transform-origin: 50% 53%; + -webkit-animation: lightcase-spin 0.5s infinite linear; + -moz-animation: lightcase-spin 0.5s infinite linear; + -o-animation: lightcase-spin 0.5s infinite linear; + animation: lightcase-spin 0.5s infinite linear; +} +/* line 20, ../scss/components/mixins/_presets.scss */ +#lightcase-loading, #lightcase-loading:focus { + text-decoration: none; + color: #fff; + -webkit-tap-highlight-color: transparent; + -webkit-transition: color, opacity, ease-in-out 0.25s; + -moz-transition: color, opacity, ease-in-out 0.25s; + -o-transition: color, opacity, ease-in-out 0.25s; + transition: color, opacity, ease-in-out 0.25s; +} +/* line 32, ../scss/components/mixins/_presets.scss */ +#lightcase-loading > span { + display: inline-block; + text-indent: -9999px; +} + +/* line 2, ../scss/components/modules/_navigation.scss */ +a[class*='lightcase-icon-'] { + position: fixed; + z-index: 9999; + width: 1.123em; + height: auto; + font-size: 38px; + line-height: 1; + text-align: center; + text-shadow: none; + outline: none; + cursor: pointer; +} +/* line 20, ../scss/components/mixins/_presets.scss */ +a[class*='lightcase-icon-'], a[class*='lightcase-icon-']:focus { + text-decoration: none; + color: rgba(255, 255, 255, 0.6); + -webkit-tap-highlight-color: transparent; + -webkit-transition: color, opacity, ease-in-out 0.25s; + -moz-transition: color, opacity, ease-in-out 0.25s; + -o-transition: color, opacity, ease-in-out 0.25s; + transition: color, opacity, ease-in-out 0.25s; +} +/* line 32, ../scss/components/mixins/_presets.scss */ +a[class*='lightcase-icon-'] > span { + display: inline-block; + text-indent: -9999px; +} +/* line 49, ../scss/components/mixins/_presets.scss */ +a[class*='lightcase-icon-']:hover { + color: white; + text-shadow: 0 0 15px white; +} +/* line 10, ../scss/components/modules/_navigation.scss */ +.lightcase-isMobileDevice a[class*='lightcase-icon-']:hover { + color: #aaa; + text-shadow: none; +} +/* line 17, ../scss/components/modules/_navigation.scss */ +a[class*='lightcase-icon-'].lightcase-icon-close { + position: fixed; + top: 15px; + right: 15px; + bottom: auto; + margin: 0; + opacity: 0; + outline: none; +} +/* line 28, ../scss/components/modules/_navigation.scss */ +a[class*='lightcase-icon-'].lightcase-icon-prev { + left: 15px; +} +/* line 33, ../scss/components/modules/_navigation.scss */ +a[class*='lightcase-icon-'].lightcase-icon-next { + right: 15px; +} +/* line 38, ../scss/components/modules/_navigation.scss */ +a[class*='lightcase-icon-'].lightcase-icon-pause, a[class*='lightcase-icon-'].lightcase-icon-play { + left: 50%; + margin-left: -0.5em; +} +@media screen and (min-width: 0) { + /* line 38, ../scss/components/modules/_navigation.scss */ + a[class*='lightcase-icon-'].lightcase-icon-pause, a[class*='lightcase-icon-'].lightcase-icon-play { + opacity: 0; + } +} +@media screen and (max-width: -1) { + /* line 2, ../scss/components/modules/_navigation.scss */ + a[class*='lightcase-icon-'] { + bottom: 15px; + font-size: 24px; + } +} +@media screen and (min-width: 0) { + /* line 2, ../scss/components/modules/_navigation.scss */ + a[class*='lightcase-icon-'] { + bottom: 50%; + margin-bottom: -0.5em; + } + /* line 57, ../scss/components/modules/_navigation.scss */ + a[class*='lightcase-icon-']:hover, #lightcase-case:hover ~ a[class*='lightcase-icon-'] { + opacity: 1; + } +} + +/* line 1, ../scss/components/modules/_overlay.scss */ +#lightcase-overlay { + display: none; + width: 100%; + min-height: 100%; + position: fixed; + z-index: 2000; + top: -9999px; + bottom: -9999px; + left: 0; + background: #333; +} +@media screen and (max-width: -1) { + /* line 1, ../scss/components/modules/_overlay.scss */ + #lightcase-overlay { + opacity: 1 !important; + } +} diff --git a/libs/lightcase/src/css/lightcase.css b/libs/lightcase/src/css/lightcase.css new file mode 100644 index 000000000..70c8ead9b --- /dev/null +++ b/libs/lightcase/src/css/lightcase.css @@ -0,0 +1,557 @@ +/** + * Lightcase - jQuery Plugin + * The smart and flexible Lightbox Plugin. + * + * @author Cornel Boppart + * @copyright Author + * + * @version 2.4.0 (09/04/2017) + */ +/** + * Lightcase settings + * + * Note: Override default settings for your project without touching this source code by simply + * defining those variables within a SASS map called '$lightcase-custom'. + * + * // Example usage + * $lightcase-custom: ( + * 'breakpoint': 768px + * ); + */ +@font-face { + font-family: 'lightcase'; + src: url("../fonts/lightcase.eot?55356177"); + src: url("../fonts/lightcase.eot?55356177#iefix") format("embedded-opentype"), url("../fonts/lightcase.woff?55356177") format("woff"), url("../fonts/lightcase.ttf?55356177") format("truetype"), url("../fonts/lightcase.svg?55356177#lightcase") format("svg"); + font-weight: normal; + font-style: normal; +} +/* line 12, ../scss/components/fonts/_font-lightcase.scss */ +[class*='lightcase-icon-']:before { + font-family: 'lightcase', sans-serif; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + text-align: center; + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +/* Codes */ +/* line 35, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-play:before { + content: '\e800'; +} + +/* line 36, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-pause:before { + content: '\e801'; +} + +/* line 37, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-close:before { + content: '\e802'; +} + +/* line 38, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-prev:before { + content: '\e803'; +} + +/* line 39, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-next:before { + content: '\e804'; +} + +/* line 40, ../scss/components/fonts/_font-lightcase.scss */ +.lightcase-icon-spin:before { + content: '\e805'; +} + +/** + * Mixin providing icon defaults to be used on top of font-lightcase. + * + * Example usage: + * @include icon(#e9e9e9) + */ +/** + * Mixin providing icon defaults including a hover status to be used + * on top of font-lightcase. + * + * Example usage: + * @include icon-hover(#e9e9e9, #fff) + */ +/** + * Provides natural content overflow behavior and scrolling support + * even so for touch devices. + * + * Example usage: + * @include overflow() + */ +/** + * Neutralizes/resets dimensions including width, height, position as well as margins, + * paddings and styles. Used to enforce a neutral and unstyled look and behavoir! + * + * Example usage: + * @include clear(true) + * + * @param boolean $important + */ +@-webkit-keyframes lightcase-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-moz-keyframes lightcase-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-o-keyframes lightcase-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-ms-keyframes lightcase-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes lightcase-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } +} +/* line 1, ../scss/components/modules/_case.scss */ +#lightcase-case { + display: none; + position: fixed; + z-index: 2002; + top: 50%; + left: 50%; + font-family: arial, sans-serif; + font-size: 13px; + line-height: 1.5; + text-align: left; + text-shadow: 0 0 10px rgba(0, 0, 0, 0.5); +} +@media screen and (max-width: 640px) { + /* line 16, ../scss/components/modules/_case.scss */ + html[data-lc-type=inline] #lightcase-case, html[data-lc-type=ajax] #lightcase-case { + position: fixed !important; + top: 0 !important; + left: 0 !important; + right: 0 !important; + bottom: 0 !important; + margin: 0 !important; + padding: 55px 0 70px 0; + width: 100% !important; + height: 100% !important; + overflow: auto !important; + } +} + +@media screen and (min-width: 641px) { + /* line 4, ../scss/components/modules/_content.scss */ + html:not([data-lc-type=error]) #lightcase-content { + position: relative; + z-index: 1; + text-shadow: none; + background-color: #fff; + -webkit-box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + -o-box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + -webkit-backface-visibility: hidden; + } +} +@media screen and (min-width: 641px) { + /* line 23, ../scss/components/modules/_content.scss */ + html[data-lc-type=image] #lightcase-content, html[data-lc-type=video] #lightcase-content { + background-color: #333; + } +} +/* line 31, ../scss/components/modules/_content.scss */ +html[data-lc-type=inline] #lightcase-content, html[data-lc-type=ajax] #lightcase-content, html[data-lc-type=error] #lightcase-content { + -webkit-box-shadow: none; + -moz-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; +} +@media screen and (max-width: 640px) { + /* line 31, ../scss/components/modules/_content.scss */ + html[data-lc-type=inline] #lightcase-content, html[data-lc-type=ajax] #lightcase-content, html[data-lc-type=error] #lightcase-content { + position: relative !important; + top: auto !important; + left: auto !important; + width: auto !important; + height: auto !important; + margin: 0 !important; + padding: 0 !important; + border: none !important; + background: none !important; + } +} +/* line 43, ../scss/components/modules/_content.scss */ +html[data-lc-type=inline] #lightcase-content .lightcase-contentInner, html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner, html[data-lc-type=error] #lightcase-content .lightcase-contentInner { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; +} +@media screen and (max-width: 640px) { + /* line 43, ../scss/components/modules/_content.scss */ + html[data-lc-type=inline] #lightcase-content .lightcase-contentInner, html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner, html[data-lc-type=error] #lightcase-content .lightcase-contentInner { + padding: 15px; + } + /* line 52, ../scss/components/modules/_content.scss */ + html[data-lc-type=inline] #lightcase-content .lightcase-contentInner, html[data-lc-type=inline] #lightcase-content .lightcase-contentInner > *, html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner, html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner > *, html[data-lc-type=error] #lightcase-content .lightcase-contentInner, html[data-lc-type=error] #lightcase-content .lightcase-contentInner > * { + width: 100% !important; + max-width: none !important; + } + /* line 59, ../scss/components/modules/_content.scss */ + html[data-lc-type=inline] #lightcase-content .lightcase-contentInner > *:not(iframe), html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner > *:not(iframe), html[data-lc-type=error] #lightcase-content .lightcase-contentInner > *:not(iframe) { + height: auto !important; + max-height: none !important; + } +} +@media screen and (max-width: 640px) { + /* line 70, ../scss/components/modules/_content.scss */ + html.lightcase-isMobileDevice[data-lc-type=iframe] #lightcase-content .lightcase-contentInner iframe { + overflow: auto; + -webkit-overflow-scrolling: touch; + } +} +@media screen and (max-width: 640px) and (min-width: 641px) { + /* line 74, ../scss/components/modules/_content.scss */ + html[data-lc-type=image] #lightcase-content .lightcase-contentInner, html[data-lc-type=video] #lightcase-content .lightcase-contentInner { + line-height: 0.75; + } +} + +/* line 82, ../scss/components/modules/_content.scss */ +html[data-lc-type=image] #lightcase-content .lightcase-contentInner { + position: relative; + overflow: hidden !important; +} +@media screen and (max-width: 640px) { + /* line 91, ../scss/components/modules/_content.scss */ + html[data-lc-type=inline] #lightcase-content .lightcase-contentInner .lightcase-inlineWrap, html[data-lc-type=ajax] #lightcase-content .lightcase-contentInner .lightcase-inlineWrap, html[data-lc-type=error] #lightcase-content .lightcase-contentInner .lightcase-inlineWrap { + position: relative !important; + top: auto !important; + left: auto !important; + width: auto !important; + height: auto !important; + margin: 0 !important; + padding: 0 !important; + border: none !important; + background: none !important; + } +} +@media screen and (min-width: 641px) { + /* line 100, ../scss/components/modules/_content.scss */ + html:not([data-lc-type=error]) #lightcase-content .lightcase-contentInner .lightcase-inlineWrap { + padding: 30px; + overflow: auto; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + } +} +@media screen and (max-width: 640px) { + /* line 117, ../scss/components/modules/_content.scss */ + #lightcase-content h1, #lightcase-content h2, #lightcase-content h3, #lightcase-content h4, #lightcase-content h5, #lightcase-content h6, #lightcase-content p { + color: #aaa; + } +} +@media screen and (min-width: 641px) { + /* line 117, ../scss/components/modules/_content.scss */ + #lightcase-content h1, #lightcase-content h2, #lightcase-content h3, #lightcase-content h4, #lightcase-content h5, #lightcase-content h6, #lightcase-content p { + color: #333; + } +} + +/* line 3, ../scss/components/modules/_error.scss */ +#lightcase-case p.lightcase-error { + margin: 0; + font-size: 17px; + text-align: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #aaa; +} +@media screen and (max-width: 640px) { + /* line 3, ../scss/components/modules/_error.scss */ + #lightcase-case p.lightcase-error { + padding: 30px 0; + } +} +@media screen and (min-width: 641px) { + /* line 3, ../scss/components/modules/_error.scss */ + #lightcase-case p.lightcase-error { + padding: 0; + } +} + +/* line 4, ../scss/components/modules/_global.scss */ +.lightcase-open body { + overflow: hidden; +} +/* line 8, ../scss/components/modules/_global.scss */ +.lightcase-isMobileDevice .lightcase-open body { + max-width: 100%; + max-height: 100%; +} + +/* line 1, ../scss/components/modules/_info.scss */ +#lightcase-info { + position: absolute; + padding-top: 15px; +} +/* line 9, ../scss/components/modules/_info.scss */ +#lightcase-info #lightcase-title, +#lightcase-info #lightcase-caption { + margin: 0; + padding: 0; + line-height: 1.5; + font-weight: normal; + text-overflow: ellipsis; +} +/* line 19, ../scss/components/modules/_info.scss */ +#lightcase-info #lightcase-title { + font-size: 17px; + color: #aaa; +} +@media screen and (max-width: 640px) { + /* line 19, ../scss/components/modules/_info.scss */ + #lightcase-info #lightcase-title { + position: fixed; + top: 10px; + left: 0; + max-width: 87.5%; + padding: 5px 15px; + background: #333; + } +} +/* line 33, ../scss/components/modules/_info.scss */ +#lightcase-info #lightcase-caption { + clear: both; + font-size: 13px; + color: #aaa; +} +/* line 39, ../scss/components/modules/_info.scss */ +#lightcase-info #lightcase-sequenceInfo { + font-size: 11px; + color: #aaa; +} +@media screen and (max-width: 640px) { + /* line 45, ../scss/components/modules/_info.scss */ + .lightcase-fullScreenMode #lightcase-info { + padding-left: 15px; + padding-right: 15px; + } + /* line 51, ../scss/components/modules/_info.scss */ + html:not([data-lc-type=image]):not([data-lc-type=video]):not([data-lc-type=flash]):not([data-lc-type=error]) #lightcase-info { + position: static; + } +} + +/* line 1, ../scss/components/modules/_loading.scss */ +#lightcase-loading { + position: fixed; + z-index: 9999; + width: 1.123em; + height: auto; + font-size: 38px; + line-height: 1; + text-align: center; + text-shadow: none; + position: fixed; + z-index: 2001; + top: 50%; + left: 50%; + margin-top: -0.5em; + margin-left: -0.5em; + opacity: 1; + font-size: 32px; + text-shadow: 0 0 15px #fff; + -moz-transform-origin: 50% 53%; + -webkit-animation: lightcase-spin 0.5s infinite linear; + -moz-animation: lightcase-spin 0.5s infinite linear; + -o-animation: lightcase-spin 0.5s infinite linear; + animation: lightcase-spin 0.5s infinite linear; +} +/* line 20, ../scss/components/mixins/_presets.scss */ +#lightcase-loading, #lightcase-loading:focus { + text-decoration: none; + color: #fff; + -webkit-tap-highlight-color: transparent; + -webkit-transition: color, opacity, ease-in-out 0.25s; + -moz-transition: color, opacity, ease-in-out 0.25s; + -o-transition: color, opacity, ease-in-out 0.25s; + transition: color, opacity, ease-in-out 0.25s; +} +/* line 32, ../scss/components/mixins/_presets.scss */ +#lightcase-loading > span { + display: inline-block; + text-indent: -9999px; +} + +/* line 2, ../scss/components/modules/_navigation.scss */ +a[class*='lightcase-icon-'] { + position: fixed; + z-index: 9999; + width: 1.123em; + height: auto; + font-size: 38px; + line-height: 1; + text-align: center; + text-shadow: none; + outline: none; + cursor: pointer; +} +/* line 20, ../scss/components/mixins/_presets.scss */ +a[class*='lightcase-icon-'], a[class*='lightcase-icon-']:focus { + text-decoration: none; + color: rgba(255, 255, 255, 0.6); + -webkit-tap-highlight-color: transparent; + -webkit-transition: color, opacity, ease-in-out 0.25s; + -moz-transition: color, opacity, ease-in-out 0.25s; + -o-transition: color, opacity, ease-in-out 0.25s; + transition: color, opacity, ease-in-out 0.25s; +} +/* line 32, ../scss/components/mixins/_presets.scss */ +a[class*='lightcase-icon-'] > span { + display: inline-block; + text-indent: -9999px; +} +/* line 49, ../scss/components/mixins/_presets.scss */ +a[class*='lightcase-icon-']:hover { + color: white; + text-shadow: 0 0 15px white; +} +/* line 10, ../scss/components/modules/_navigation.scss */ +.lightcase-isMobileDevice a[class*='lightcase-icon-']:hover { + color: #aaa; + text-shadow: none; +} +/* line 17, ../scss/components/modules/_navigation.scss */ +a[class*='lightcase-icon-'].lightcase-icon-close { + position: fixed; + top: 15px; + right: 15px; + bottom: auto; + margin: 0; + opacity: 0; + outline: none; +} +/* line 28, ../scss/components/modules/_navigation.scss */ +a[class*='lightcase-icon-'].lightcase-icon-prev { + left: 15px; +} +/* line 33, ../scss/components/modules/_navigation.scss */ +a[class*='lightcase-icon-'].lightcase-icon-next { + right: 15px; +} +/* line 38, ../scss/components/modules/_navigation.scss */ +a[class*='lightcase-icon-'].lightcase-icon-pause, a[class*='lightcase-icon-'].lightcase-icon-play { + left: 50%; + margin-left: -0.5em; +} +@media screen and (min-width: 641px) { + /* line 38, ../scss/components/modules/_navigation.scss */ + a[class*='lightcase-icon-'].lightcase-icon-pause, a[class*='lightcase-icon-'].lightcase-icon-play { + opacity: 0; + } +} +@media screen and (max-width: 640px) { + /* line 2, ../scss/components/modules/_navigation.scss */ + a[class*='lightcase-icon-'] { + bottom: 15px; + font-size: 24px; + } +} +@media screen and (min-width: 641px) { + /* line 2, ../scss/components/modules/_navigation.scss */ + a[class*='lightcase-icon-'] { + bottom: 50%; + margin-bottom: -0.5em; + } + /* line 57, ../scss/components/modules/_navigation.scss */ + a[class*='lightcase-icon-']:hover, #lightcase-case:hover ~ a[class*='lightcase-icon-'] { + opacity: 1; + } +} + +/* line 1, ../scss/components/modules/_overlay.scss */ +#lightcase-overlay { + display: none; + width: 100%; + min-height: 100%; + position: fixed; + z-index: 2000; + top: -9999px; + bottom: -9999px; + left: 0; + background: #333; +} +@media screen and (max-width: 640px) { + /* line 1, ../scss/components/modules/_overlay.scss */ + #lightcase-overlay { + opacity: 1 !important; + } +} diff --git a/libs/lightcase/src/fonts/lightcase.eot b/libs/lightcase/src/fonts/lightcase.eot new file mode 100644 index 000000000..0fec75065 Binary files /dev/null and b/libs/lightcase/src/fonts/lightcase.eot differ diff --git a/libs/lightcase/src/fonts/lightcase.svg b/libs/lightcase/src/fonts/lightcase.svg new file mode 100644 index 000000000..64659823a --- /dev/null +++ b/libs/lightcase/src/fonts/lightcase.svg @@ -0,0 +1,17 @@ + + + +Copyright (C) 2015 by original authors @ fontello.com + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/lightcase/src/fonts/lightcase.ttf b/libs/lightcase/src/fonts/lightcase.ttf new file mode 100644 index 000000000..cc479b43e Binary files /dev/null and b/libs/lightcase/src/fonts/lightcase.ttf differ diff --git a/libs/lightcase/src/fonts/lightcase.woff b/libs/lightcase/src/fonts/lightcase.woff new file mode 100644 index 000000000..375017c71 Binary files /dev/null and b/libs/lightcase/src/fonts/lightcase.woff differ diff --git a/libs/lightcase/src/js/lightcase.js b/libs/lightcase/src/js/lightcase.js new file mode 100644 index 000000000..546dd7c2e --- /dev/null +++ b/libs/lightcase/src/js/lightcase.js @@ -0,0 +1,1821 @@ +/* + * Lightcase - jQuery Plugin + * The smart and flexible Lightbox Plugin. + * + * @author Cornel Boppart + * @copyright Author + * + * @version 2.4.0 (09/04/2017) + */ + +;(function ($) { + + 'use strict'; + + var _self = { + cache: {}, + + support: {}, + + objects: {}, + + /** + * Initializes the plugin + * + * @param {object} options + * @return {object} + */ + init: function (options) { + return this.each(function () { + $(this).unbind('click.lightcase').bind('click.lightcase', function (event) { + event.preventDefault(); + $(this).lightcase('start', options); + }); + }); + }, + + /** + * Starts the plugin + * + * @param {object} options + * @return {void} + */ + start: function (options) { + _self.origin = lightcase.origin = this; + + _self.settings = lightcase.settings = $.extend(true, { + idPrefix: 'lightcase-', + classPrefix: 'lightcase-', + attrPrefix: 'lc-', + transition: 'elastic', + transitionOpen: null, + transitionClose: null, + transitionIn: null, + transitionOut: null, + cssTransitions: true, + speedIn: 250, + speedOut: 250, + width: null, + height: null, + maxWidth: 800, + maxHeight: 500, + forceWidth: false, + forceHeight: false, + liveResize: true, + fullScreenModeForMobile: true, + mobileMatchExpression: /(iphone|ipod|ipad|android|blackberry|symbian)/, + disableShrink: false, + fixedRatio: true, + shrinkFactor: .75, + overlayOpacity: .9, + slideshow: false, + slideshowAutoStart: true, + timeout: 5000, + swipe: true, + useKeys: true, + useCategories: true, + useAsCollection: false, + navigateEndless: true, + closeOnOverlayClick: true, + title: null, + caption: null, + showTitle: true, + showCaption: true, + showSequenceInfo: true, + inline: { + width: 'auto', + height: 'auto' + }, + ajax: { + width: 'auto', + height: 'auto', + type: 'get', + dataType: 'html', + data: {} + }, + iframe: { + width: 800, + height: 500, + frameborder: 0 + }, + flash: { + width: 400, + height: 205, + wmode: 'transparent' + }, + video: { + width: 400, + height: 225, + poster: '', + preload: 'auto', + controls: true, + autobuffer: true, + autoplay: true, + loop: false + }, + attr: 'data-rel', + href: null, + type: null, + typeMapping: { + 'image': 'jpg,jpeg,gif,png,bmp', + 'flash': 'swf', + 'video': 'mp4,mov,ogv,ogg,webm', + 'iframe': 'html,php', + 'ajax': 'json,txt', + 'inline': '#' + }, + errorMessage: function () { + return '

' + _self.settings.labels['errorMessage'] + '

'; + }, + labels: { + 'errorMessage': 'Source could not be found...', + 'sequenceInfo.of': ' of ', + 'close': 'Close', + 'navigator.prev': 'Prev', + 'navigator.next': 'Next', + 'navigator.play': 'Play', + 'navigator.pause': 'Pause' + }, + markup: function () { + _self.objects.body.append( + _self.objects.overlay = $('
'), + _self.objects.loading = $('
'), + _self.objects.case = $('') + ); + _self.objects.case.after( + _self.objects.close = $('' + _self.settings.labels['close'] + ''), + _self.objects.nav = $('
') + ); + _self.objects.nav.append( + _self.objects.prev = $('' + _self.settings.labels['navigator.prev'] + '').hide(), + _self.objects.next = $('' + _self.settings.labels['navigator.next'] + '').hide(), + _self.objects.play = $('' + _self.settings.labels['navigator.play'] + '').hide(), + _self.objects.pause = $('' + _self.settings.labels['navigator.pause'] + '').hide() + ); + _self.objects.case.append( + _self.objects.content = $('
'), + _self.objects.info = $('
') + ); + _self.objects.content.append( + _self.objects.contentInner = $('
') + ); + _self.objects.info.append( + _self.objects.sequenceInfo = $('
'), + _self.objects.title = $('

'), + _self.objects.caption = $('

') + ); + }, + onInit: {}, + onStart: {}, + onFinish: {}, + onResize: {}, + onClose: {}, + onCleanup: {} + }, + options, + // Load options from data-lc-options attribute + _self.origin.data ? _self.origin.data('lc-options') : {}); + + _self.objects.document = $('html'); + _self.objects.body = $('body'); + + // Call onInit hook functions + _self._callHooks(_self.settings.onInit); + + _self.objectData = _self._setObjectData(this); + + _self._addElements(); + _self._open(); + + _self.dimensions = _self.getViewportDimensions(); + }, + + /** + * Getter method for objects + * + * @param {string} name + * @return {object} + */ + get: function (name) { + return _self.objects[name]; + }, + + /** + * Getter method for objectData + * + * @return {object} + */ + getObjectData: function () { + return _self.objectData; + }, + + /** + * Sets the object data + * + * @param {object} object + * @return {object} objectData + */ + _setObjectData: function (object) { + var $object = $(object), + objectData = { + this: $(object), + title: _self.settings.title || $object.attr(_self._prefixAttributeName('title')) || $object.attr('title'), + caption: _self.settings.caption || $object.attr(_self._prefixAttributeName('caption')) || $object.children('img').attr('alt'), + url: _self._determineUrl(), + requestType: _self.settings.ajax.type, + requestData: _self.settings.ajax.data, + requestDataType: _self.settings.ajax.dataType, + rel: $object.attr(_self._determineAttributeSelector()), + type: _self.settings.type || _self._verifyDataType(_self._determineUrl()), + isPartOfSequence: _self.settings.useAsCollection || _self._isPartOfSequence($object.attr(_self.settings.attr), ':'), + isPartOfSequenceWithSlideshow: _self._isPartOfSequence($object.attr(_self.settings.attr), ':slideshow'), + currentIndex: $(_self._determineAttributeSelector()).index($object), + sequenceLength: $(_self._determineAttributeSelector()).length + }; + + // Add sequence info to objectData + objectData.sequenceInfo = (objectData.currentIndex + 1) + _self.settings.labels['sequenceInfo.of'] + objectData.sequenceLength; + + // Add next/prev index + objectData.prevIndex = objectData.currentIndex - 1; + objectData.nextIndex = objectData.currentIndex + 1; + + return objectData; + }, + + /** + * Prefixes a data attribute name with defined name from 'settings.attrPrefix' + * to ensure more uniqueness for all lightcase related/used attributes. + * + * @param {string} name + * @return {string} + */ + _prefixAttributeName: function (name) { + return 'data-' + _self.settings.attrPrefix + name; + }, + + /** + * Determines the link target considering 'settings.href' and data attributes + * but also with a fallback to the default 'href' value. + * + * @return {string} + */ + _determineLinkTarget: function () { + return _self.settings.href || $(_self.origin).attr(_self._prefixAttributeName('href')) || $(_self.origin).attr('href'); + }, + + /** + * Determines the attribute selector to use, depending on + * whether categorized collections are beeing used or not. + * + * @return {string} selector + */ + _determineAttributeSelector: function () { + var $origin = $(_self.origin), + selector = ''; + + if (typeof _self.cache.selector !== 'undefined') { + selector = _self.cache.selector; + } else if (_self.settings.useCategories === true && $origin.attr(_self._prefixAttributeName('categories'))) { + var categories = $origin.attr(_self._prefixAttributeName('categories')).split(' '); + + $.each(categories, function (index, category) { + if (index > 0) { + selector += ','; + } + selector += '[' + _self._prefixAttributeName('categories') + '~="' + category + '"]'; + }); + } else { + selector = '[' + _self.settings.attr + '="' + $origin.attr(_self.settings.attr) + '"]'; + } + + _self.cache.selector = selector; + + return selector; + }, + + /** + * Determines the correct resource according to the + * current viewport and density. + * + * @return {string} url + */ + _determineUrl: function () { + var dataUrl = _self._verifyDataUrl(_self._determineLinkTarget()), + width = 0, + density = 0, + supportLevel = '', + url; + + $.each(dataUrl, function (index, src) { + switch (_self._verifyDataType(src.url)) { + case 'video': + var video = document.createElement('video'), + videoType = _self._verifyDataType(src.url) + '/' + _self._getFileUrlSuffix(src.url); + + // Check if browser can play this type of video format + if (supportLevel !== 'probably' && supportLevel !== video.canPlayType(videoType) && video.canPlayType(videoType) !== '') { + supportLevel = video.canPlayType(videoType); + url = src.url; + } + break; + default: + if ( + // Check density + _self._devicePixelRatio() >= src.density && + src.density >= density && + // Check viewport width + _self._matchMedia()('screen and (min-width:' + src.width + 'px)').matches && + src.width >= width + ) { + width = src.width; + density = src.density; + url = src.url; + } + break; + } + }); + + return url; + }, + + /** + * Normalizes an url and returns information about the resource path, + * the viewport width as well as density if defined. + * + * @param {string} url Path to resource in format of an url or srcset + * @return {object} + */ + _normalizeUrl: function (url) { + var srcExp = /^\d+$/; + + return url.split(',').map(function (str) { + var src = { + width: 0, + density: 0 + }; + + str.trim().split(/\s+/).forEach(function (url, i) { + if (i === 0) { + return src.url = url; + } + + var value = url.substring(0, url.length - 1), + lastChar = url[url.length - 1], + intVal = parseInt(value, 10), + floatVal = parseFloat(value); + if (lastChar === 'w' && srcExp.test(value)) { + src.width = intVal; + } else if (lastChar === 'h' && srcExp.test(value)) { + src.height = intVal; + } else if (lastChar === 'x' && !isNaN(floatVal)) { + src.density = floatVal; + } + }); + + return src; + }); + }, + + /** + * Verifies if the link is part of a sequence + * + * @param {string} rel + * @param {string} expression + * @return {boolean} + */ + _isPartOfSequence: function (rel, expression) { + var getSimilarLinks = $('[' + _self.settings.attr + '="' + rel + '"]'), + regexp = new RegExp(expression); + + return (regexp.test(rel) && getSimilarLinks.length > 1); + }, + + /** + * Verifies if the slideshow should be enabled + * + * @return {boolean} + */ + isSlideshowEnabled: function () { + return (_self.objectData.isPartOfSequence && (_self.settings.slideshow === true || _self.objectData.isPartOfSequenceWithSlideshow === true)); + }, + + /** + * Loads the new content to show + * + * @return {void} + */ + _loadContent: function () { + if (_self.cache.originalObject) { + _self._restoreObject(); + } + + _self._createObject(); + }, + + /** + * Creates a new object + * + * @return {void} + */ + _createObject: function () { + var $object; + + // Create object + switch (_self.objectData.type) { + case 'image': + $object = $(new Image()); + $object.attr({ + // The time expression is required to prevent the binding of an image load + 'src': _self.objectData.url, + 'alt': _self.objectData.title + }); + break; + case 'inline': + $object = $('
'); + $object.html(_self._cloneObject($(_self.objectData.url))); + + // Add custom attributes from _self.settings + $.each(_self.settings.inline, function (name, value) { + $object.attr(_self._prefixAttributeName(name), value); + }); + break; + case 'ajax': + $object = $('
'); + + // Add custom attributes from _self.settings + $.each(_self.settings.ajax, function (name, value) { + if (name !== 'data') { + $object.attr(_self._prefixAttributeName(name), value); + } + }); + break; + case 'flash': + $object = $(''); + + // Add custom attributes from _self.settings + $.each(_self.settings.flash, function (name, value) { + $object.attr(name, value); + }); + break; + case 'video': + $object = $(''); + $object.attr('src', _self.objectData.url); + + // Add custom attributes from _self.settings + $.each(_self.settings.video, function (name, value) { + $object.attr(name, value); + }); + break; + default: + $object = $(''); + $object.attr({ + 'src': _self.objectData.url + }); + + // Add custom attributes from _self.settings + $.each(_self.settings.iframe, function (name, value) { + $object.attr(name, value); + }); + break; + } + + _self._addObject($object); + _self._loadObject($object); + }, + + /** + * Adds the new object to the markup + * + * @param {object} $object + * @return {void} + */ + _addObject: function ($object) { + // Add object to content holder + _self.objects.contentInner.html($object); + + // Start loading + _self._loading('start'); + + // Call onStart hook functions + _self._callHooks(_self.settings.onStart); + + // Add sequenceInfo to the content holder or hide if its empty + if (_self.settings.showSequenceInfo === true && _self.objectData.isPartOfSequence) { + _self.objects.sequenceInfo.html(_self.objectData.sequenceInfo); + _self.objects.sequenceInfo.show(); + } else { + _self.objects.sequenceInfo.empty(); + _self.objects.sequenceInfo.hide(); + } + // Add title to the content holder or hide if its empty + if (_self.settings.showTitle === true && _self.objectData.title !== undefined && _self.objectData.title !== '') { + _self.objects.title.html(_self.objectData.title); + _self.objects.title.show(); + } else { + _self.objects.title.empty(); + _self.objects.title.hide(); + } + // Add caption to the content holder or hide if its empty + if (_self.settings.showCaption === true && _self.objectData.caption !== undefined && _self.objectData.caption !== '') { + _self.objects.caption.html(_self.objectData.caption); + _self.objects.caption.show(); + } else { + _self.objects.caption.empty(); + _self.objects.caption.hide(); + } + }, + + /** + * Loads the new object + * + * @param {object} $object + * @return {void} + */ + _loadObject: function ($object) { + // Load the object + switch (_self.objectData.type) { + case 'inline': + if ($(_self.objectData.url)) { + _self._showContent($object); + } else { + _self.error(); + } + break; + case 'ajax': + $.ajax( + $.extend({}, _self.settings.ajax, { + url: _self.objectData.url, + type: _self.objectData.requestType, + dataType: _self.objectData.requestDataType, + data: _self.objectData.requestData, + success: function (data, textStatus, jqXHR) { + // Unserialize if data is transferred as json + if (_self.objectData.requestDataType === 'json') { + _self.objectData.data = data; + } else { + $object.html(data); + } + _self._showContent($object); + }, + error: function (jqXHR, textStatus, errorThrown) { + _self.error(); + } + }) + ); + break; + case 'flash': + _self._showContent($object); + break; + case 'video': + if (typeof($object.get(0).canPlayType) === 'function' || _self.objects.case.find('video').length === 0) { + _self._showContent($object); + } else { + _self.error(); + } + break; + default: + if (_self.objectData.url) { + $object.on('load', function () { + _self._showContent($object); + }); + $object.on('error', function () { + _self.error(); + }); + } else { + _self.error(); + } + break; + } + }, + + /** + * Throws an error message if something went wrong + * + * @return {void} + */ + error: function () { + _self.objectData.type = 'error'; + var $object = $('
'); + + $object.html(_self.settings.errorMessage); + _self.objects.contentInner.html($object); + + _self._showContent(_self.objects.contentInner); + }, + + /** + * Calculates the dimensions to fit content + * + * @param {object} $object + * @return {void} + */ + _calculateDimensions: function ($object) { + _self._cleanupDimensions(); + + // Set default dimensions + var dimensions = { + ratio: 1, + objectWidth: $object.attr('width') ? $object.attr('width') : $object.attr(_self._prefixAttributeName('width')), + objectHeight: $object.attr('height') ? $object.attr('height') : $object.attr(_self._prefixAttributeName('height')) + }; + + if (!_self.settings.disableShrink) { + // Add calculated maximum width/height to dimensions + dimensions.maxWidth = parseInt(_self.dimensions.windowWidth * _self.settings.shrinkFactor); + dimensions.maxHeight = parseInt(_self.dimensions.windowHeight * _self.settings.shrinkFactor); + + // If the auto calculated maxWidth/maxHeight greather than the user-defined one, use that. + if (dimensions.maxWidth > _self.settings.maxWidth) { + dimensions.maxWidth = _self.settings.maxWidth; + } + if (dimensions.maxHeight > _self.settings.maxHeight) { + dimensions.maxHeight = _self.settings.maxHeight; + } + + // Calculate the difference between screen width/height and image width/height + dimensions.differenceWidthAsPercent = parseInt(100 / dimensions.maxWidth * dimensions.objectWidth); + dimensions.differenceHeightAsPercent = parseInt(100 / dimensions.maxHeight * dimensions.objectHeight); + + switch (_self.objectData.type) { + case 'image': + case 'flash': + case 'video': + case 'iframe': + case 'ajax': + case 'inline': + if (_self.objectData.type === 'image' || _self.settings.fixedRatio === true) { + if (dimensions.differenceWidthAsPercent > 100 && dimensions.differenceWidthAsPercent > dimensions.differenceHeightAsPercent) { + dimensions.objectWidth = dimensions.maxWidth; + dimensions.objectHeight = parseInt(dimensions.objectHeight / dimensions.differenceWidthAsPercent * 100); + } + if (dimensions.differenceHeightAsPercent > 100 && dimensions.differenceHeightAsPercent > dimensions.differenceWidthAsPercent) { + dimensions.objectWidth = parseInt(dimensions.objectWidth / dimensions.differenceHeightAsPercent * 100); + dimensions.objectHeight = dimensions.maxHeight; + } + if (dimensions.differenceHeightAsPercent > 100 && dimensions.differenceWidthAsPercent < dimensions.differenceHeightAsPercent) { + dimensions.objectWidth = parseInt(dimensions.maxWidth / dimensions.differenceHeightAsPercent * dimensions.differenceWidthAsPercent); + dimensions.objectHeight = dimensions.maxHeight; + } + break; + } + case 'error': + if (!isNaN(dimensions.objectWidth) && dimensions.objectWidth > dimensions.maxWidth) { + dimensions.objectWidth = dimensions.maxWidth; + } + break; + default: + if ((isNaN(dimensions.objectWidth) || dimensions.objectWidth > dimensions.maxWidth) && !_self.settings.forceWidth) { + dimensions.objectWidth = dimensions.maxWidth; + } + if (((isNaN(dimensions.objectHeight) && dimensions.objectHeight !== 'auto') || dimensions.objectHeight > dimensions.maxHeight) && !_self.settings.forceHeight) { + dimensions.objectHeight = dimensions.maxHeight; + } + break; + } + } + + if (_self.settings.forceWidth) { + try { + dimensions.objectWidth = _self.settings[_self.objectData.type].width; + } catch (e) { + dimensions.objectWidth = _self.settings.width || dimensions.objectWidth; + } + + dimensions.maxWidth = null; + } + if ($object.attr(_self._prefixAttributeName('max-width'))) { + dimensions.maxWidth = $object.attr(_self._prefixAttributeName('max-width')); + } + + if (_self.settings.forceHeight) { + try { + dimensions.objectHeight = _self.settings[_self.objectData.type].height; + } catch (e) { + dimensions.objectHeight = _self.settings.height || dimensions.objectHeight; + } + + dimensions.maxHeight = null; + } + if ($object.attr(_self._prefixAttributeName('max-height'))) { + dimensions.maxHeight = $object.attr(_self._prefixAttributeName('max-height')); + } + _self._adjustDimensions($object, dimensions); + }, + + /** + * Adjusts the dimensions + * + * @param {object} $object + * @param {object} dimensions + * @return {void} + */ + _adjustDimensions: function ($object, dimensions) { + // Adjust width and height + $object.css({ + 'width': dimensions.objectWidth, + 'height': dimensions.objectHeight, + 'max-width': dimensions.maxWidth, + 'max-height': dimensions.maxHeight + }); + + _self.objects.contentInner.css({ + 'width': $object.outerWidth(), + 'height': $object.outerHeight(), + 'max-width': '100%' + }); + + _self.objects.case.css({ + 'width': _self.objects.contentInner.outerWidth() + }); + + // Adjust margin + _self.objects.case.css({ + 'margin-top': parseInt(-(_self.objects.case.outerHeight() / 2)), + 'margin-left': parseInt(-(_self.objects.case.outerWidth() / 2)) + }); + }, + + /** + * Handles the _loading + * + * @param {string} process + * @return {void} + */ + _loading: function (process) { + if (process === 'start') { + _self.objects.case.addClass(_self.settings.classPrefix + 'loading'); + _self.objects.loading.show(); + } else if (process === 'end') { + _self.objects.case.removeClass(_self.settings.classPrefix + 'loading'); + _self.objects.loading.hide(); + } + }, + + + /** + * Gets the client screen dimensions + * + * @return {object} dimensions + */ + getViewportDimensions: function () { + return { + windowWidth: $(window).innerWidth(), + windowHeight: $(window).innerHeight() + }; + }, + + /** + * Verifies the url + * + * @param {string} dataUrl + * @return {object} dataUrl Clean url for processing content + */ + _verifyDataUrl: function (dataUrl) { + if (!dataUrl || dataUrl === undefined || dataUrl === '') { + return false; + } + + if (dataUrl.indexOf('#') > -1) { + dataUrl = dataUrl.split('#'); + dataUrl = '#' + dataUrl[dataUrl.length - 1]; + } + + return _self._normalizeUrl(dataUrl.toString()); + }, + + // + /** + * Tries to get the (file) suffix of an url + * + * @param {string} url + * @return {string} + */ + _getFileUrlSuffix: function (url) { + return url.toLowerCase().split('?')[0].split('.')[1]; + }, + + /** + * Verifies the data type of the content to load + * + * @param {string} url + * @return {string|boolean} Array key if expression matched, else false + */ + _verifyDataType: function (url) { + var typeMapping = _self.settings.typeMapping; + + // Early abort if dataUrl couldn't be verified + if (!url) { + return false; + } + + // Verify the dataType of url according to typeMapping which + // has been defined in settings. + for (var key in typeMapping) { + if (typeMapping.hasOwnProperty(key)) { + var suffixArr = typeMapping[key].split(','); + + for (var i = 0; i < suffixArr.length; i++) { + var suffix = suffixArr[i].toLowerCase(), + regexp = new RegExp('\.(' + suffix + ')$', 'i'), + str = url.toLowerCase().split('?')[0].substr(-5); + + if (regexp.test(str) === true || (key === 'inline' && (url.indexOf(suffix) > -1))) { + return key; + } + } + } + } + + // If no expression matched, return 'iframe'. + return 'iframe'; + }, + + /** + * Extends html markup with the essential tags + * + * @return {void} + */ + _addElements: function () { + if (typeof _self.objects.case !== 'undefined' && $('#' + _self.objects.case.attr('id')).length) { + return; + } + + _self.settings.markup(); + }, + + /** + * Shows the loaded content + * + * @param {object} $object + * @return {void} + */ + _showContent: function ($object) { + // Add data attribute with the object type + _self.objects.document.attr(_self._prefixAttributeName('type'), _self.objectData.type); + + _self.cache.object = $object; + _self._calculateDimensions($object); + + // Call onFinish hook functions + _self._callHooks(_self.settings.onFinish); + + switch (_self.transition.in()) { + case 'scrollTop': + case 'scrollRight': + case 'scrollBottom': + case 'scrollLeft': + case 'scrollHorizontal': + case 'scrollVertical': + _self.transition.scroll(_self.objects.case, 'in', _self.settings.speedIn); + _self.transition.fade(_self.objects.contentInner, 'in', _self.settings.speedIn); + break; + case 'elastic': + if (_self.objects.case.css('opacity') < 1) { + _self.transition.zoom(_self.objects.case, 'in', _self.settings.speedIn); + _self.transition.fade(_self.objects.contentInner, 'in', _self.settings.speedIn); + } + case 'fade': + case 'fadeInline': + _self.transition.fade(_self.objects.case, 'in', _self.settings.speedIn); + _self.transition.fade(_self.objects.contentInner, 'in', _self.settings.speedIn); + break; + default: + _self.transition.fade(_self.objects.case, 'in', 0); + break; + } + + // End loading. + _self._loading('end'); + _self.isBusy = false; + + // Set index of the first item opened + if (!_self.cache.firstOpened) { + _self.cache.firstOpened = _self.objectData.this; + } + + // Fade in the info with delay + _self.objects.info.hide(); + setTimeout(function () { + _self.transition.fade(_self.objects.info, 'in', _self.settings.speedIn); + }, _self.settings.speedIn); + }, + + /** + * Processes the content to show + * + * @return {void} + */ + _processContent: function () { + _self.isBusy = true; + + // Fade out the info at first + _self.transition.fade(_self.objects.info, 'out', 0); + + switch (_self.settings.transitionOut) { + case 'scrollTop': + case 'scrollRight': + case 'scrollBottom': + case 'scrollLeft': + case 'scrollVertical': + case 'scrollHorizontal': + if (_self.objects.case.is(':hidden')) { + _self.transition.fade(_self.objects.contentInner, 'out', 0); + _self.transition.fade(_self.objects.case, 'out', 0, 0, function () { + _self._loadContent(); + }); + } else { + _self.transition.scroll(_self.objects.case, 'out', _self.settings.speedOut, function () { + _self._loadContent(); + }); + } + break; + case 'fade': + if (_self.objects.case.is(':hidden')) { + _self.transition.fade(_self.objects.case, 'out', 0, 0, function () { + _self._loadContent(); + }); + } else { + _self.transition.fade(_self.objects.case, 'out', _self.settings.speedOut, 0, function () { + _self._loadContent(); + }); + } + break; + case 'fadeInline': + case 'elastic': + if (_self.objects.case.is(':hidden')) { + _self.transition.fade(_self.objects.case, 'out', 0, 0, function () { + _self._loadContent(); + }); + } else { + _self.transition.fade(_self.objects.contentInner, 'out', _self.settings.speedOut, 0, function () { + _self._loadContent(); + }); + } + break; + default: + _self.transition.fade(_self.objects.case, 'out', 0, 0, function () { + _self._loadContent(); + }); + break; + } + }, + + /** + * Handles events for gallery buttons + * + * @return {void} + */ + _handleEvents: function () { + _self._unbindEvents(); + + _self.objects.nav.children().not(_self.objects.close).hide(); + + // If slideshow is enabled, show play/pause and start timeout. + if (_self.isSlideshowEnabled()) { + // Only start the timeout if slideshow autostart is enabled and slideshow is not pausing + if ( + (_self.settings.slideshowAutoStart === true || _self.isSlideshowStarted) && + !_self.objects.nav.hasClass(_self.settings.classPrefix + 'paused') + ) { + _self._startTimeout(); + } else { + _self._stopTimeout(); + } + } + + if (_self.settings.liveResize) { + _self._watchResizeInteraction(); + } + + _self.objects.close.click(function (event) { + event.preventDefault(); + _self.close(); + }); + + if (_self.settings.closeOnOverlayClick === true) { + _self.objects.overlay.css('cursor', 'pointer').click(function (event) { + event.preventDefault(); + + _self.close(); + }); + } + + if (_self.settings.useKeys === true) { + _self._addKeyEvents(); + } + + if (_self.objectData.isPartOfSequence) { + _self.objects.nav.attr(_self._prefixAttributeName('ispartofsequence'), true); + _self.objects.nav.data('items', _self._setNavigation()); + + _self.objects.prev.click(function (event) { + event.preventDefault(); + + if (_self.settings.navigateEndless === true || !_self.item.isFirst()) { + _self.objects.prev.unbind('click'); + _self.cache.action = 'prev'; + _self.objects.nav.data('items').prev.click(); + + if (_self.isSlideshowEnabled()) { + _self._stopTimeout(); + } + } + }); + + _self.objects.next.click(function (event) { + event.preventDefault(); + + if (_self.settings.navigateEndless === true || !_self.item.isLast()) { + _self.objects.next.unbind('click'); + _self.cache.action = 'next'; + _self.objects.nav.data('items').next.click(); + + if (_self.isSlideshowEnabled()) { + _self._stopTimeout(); + } + } + }); + + if (_self.isSlideshowEnabled()) { + _self.objects.play.click(function (event) { + event.preventDefault(); + _self._startTimeout(); + }); + _self.objects.pause.click(function (event) { + event.preventDefault(); + _self._stopTimeout(); + }); + } + + // Enable swiping if activated + if (_self.settings.swipe === true) { + if ($.isPlainObject($.event.special.swipeleft)) { + _self.objects.case.on('swipeleft', function (event) { + event.preventDefault(); + _self.objects.next.click(); + if (_self.isSlideshowEnabled()) { + _self._stopTimeout(); + } + }); + } + if ($.isPlainObject($.event.special.swiperight)) { + _self.objects.case.on('swiperight', function (event) { + event.preventDefault(); + _self.objects.prev.click(); + if (_self.isSlideshowEnabled()) { + _self._stopTimeout(); + } + }); + } + } + } + }, + + /** + * Adds the key events + * + * @return {void} + */ + _addKeyEvents: function () { + $(document).bind('keyup.lightcase', function (event) { + // Do nothing if lightcase is in process + if (_self.isBusy) { + return; + } + + switch (event.keyCode) { + // Escape key + case 27: + _self.objects.close.click(); + break; + // Backward key + case 37: + if (_self.objectData.isPartOfSequence) { + _self.objects.prev.click(); + } + break; + // Forward key + case 39: + if (_self.objectData.isPartOfSequence) { + _self.objects.next.click(); + } + break; + } + }); + }, + + /** + * Starts the slideshow timeout + * + * @return {void} + */ + _startTimeout: function () { + _self.isSlideshowStarted = true; + + _self.objects.play.hide(); + _self.objects.pause.show(); + + _self.cache.action = 'next'; + _self.objects.nav.removeClass(_self.settings.classPrefix + 'paused'); + + _self.timeout = setTimeout(function () { + _self.objects.nav.data('items').next.click(); + }, _self.settings.timeout); + }, + + /** + * Stops the slideshow timeout + * + * @return {void} + */ + _stopTimeout: function () { + _self.objects.play.show(); + _self.objects.pause.hide(); + + _self.objects.nav.addClass(_self.settings.classPrefix + 'paused'); + + clearTimeout(_self.timeout); + }, + + /** + * Sets the navigator buttons (prev/next) + * + * @return {object} items + */ + _setNavigation: function () { + var $links = $((_self.cache.selector || _self.settings.attr)), + sequenceLength = _self.objectData.sequenceLength - 1, + items = { + prev: $links.eq(_self.objectData.prevIndex), + next: $links.eq(_self.objectData.nextIndex) + }; + + if (_self.objectData.currentIndex > 0) { + _self.objects.prev.show(); + } else { + items.prevItem = $links.eq(sequenceLength); + } + if (_self.objectData.nextIndex <= sequenceLength) { + _self.objects.next.show(); + } else { + items.next = $links.eq(0); + } + + if (_self.settings.navigateEndless === true) { + _self.objects.prev.show(); + _self.objects.next.show(); + } + + return items; + }, + + /** + * Item information/status + * + */ + item: { + /** + * Verifies if the current item is first item. + * + * @return {boolean} + */ + isFirst: function () { + return (_self.objectData.currentIndex === 0); + }, + + /** + * Verifies if the current item is first item opened. + * + * @return {boolean} + */ + isFirstOpened: function () { + return _self.objectData.this.is(_self.cache.firstOpened); + }, + + /** + * Verifies if the current item is last item. + * + * @return {boolean} + */ + isLast: function () { + return (_self.objectData.currentIndex === (_self.objectData.sequenceLength - 1)); + } + }, + + /** + * Clones the object for inline elements + * + * @param {object} $object + * @return {object} $clone + */ + _cloneObject: function ($object) { + var $clone = $object.clone(), + objectId = $object.attr('id'); + + // If element is hidden, cache the object and remove + if ($object.is(':hidden')) { + _self._cacheObjectData($object); + $object.attr('id', _self.settings.idPrefix + 'temp-' + objectId).empty(); + } else { + // Prevent duplicated id's + $clone.removeAttr('id'); + } + + return $clone.show(); + }, + + /** + * Verifies if it is a mobile device + * + * @return {boolean} + */ + isMobileDevice: function () { + var deviceAgent = navigator.userAgent.toLowerCase(), + agentId = deviceAgent.match(_self.settings.mobileMatchExpression); + + return agentId ? true : false; + }, + + /** + * Verifies if css transitions are supported + * + * @return {string|boolean} The transition prefix if supported, else false. + */ + isTransitionSupported: function () { + var body = _self.objects.body.get(0), + isTransitionSupported = false, + transitionMapping = { + 'transition': '', + 'WebkitTransition': '-webkit-', + 'MozTransition': '-moz-', + 'OTransition': '-o-', + 'MsTransition': '-ms-' + }; + + for (var key in transitionMapping) { + if (transitionMapping.hasOwnProperty(key) && key in body.style) { + _self.support.transition = transitionMapping[key]; + isTransitionSupported = true; + } + } + + return isTransitionSupported; + }, + + /** + * Transition types + * + */ + transition: { + /** + * Returns the correct transition type according to the status of interaction. + * + * @return {string} Transition type + */ + in: function () { + if (_self.settings.transitionOpen && !_self.cache.firstOpened) { + return _self.settings.transitionOpen; + } + return _self.settings.transitionIn; + }, + + /** + * Fades in/out the object + * + * @param {object} $object + * @param {string} type + * @param {number} speed + * @param {number} opacity + * @param {function} callback + * @return {void} Animates an object + */ + fade: function ($object, type, speed, opacity, callback) { + var isInTransition = type === 'in', + startTransition = {}, + startOpacity = $object.css('opacity'), + endTransition = {}, + endOpacity = opacity ? opacity: isInTransition ? 1 : 0; + + if (!_self.isOpen && isInTransition) return; + + startTransition['opacity'] = startOpacity; + endTransition['opacity'] = endOpacity; + + $object.css(startTransition).show(); + + // Css transition + if (_self.support.transitions) { + endTransition[_self.support.transition + 'transition'] = speed + 'ms ease'; + + setTimeout(function () { + $object.css(endTransition); + + setTimeout(function () { + $object.css(_self.support.transition + 'transition', ''); + + if (callback && (_self.isOpen || !isInTransition)) { + callback(); + } + }, speed); + }, 15); + } else { + // Fallback to js transition + $object.stop(); + $object.animate(endTransition, speed, callback); + } + }, + + /** + * Scrolls in/out the object + * + * @param {object} $object + * @param {string} type + * @param {number} speed + * @param {function} callback + * @return {void} Animates an object + */ + scroll: function ($object, type, speed, callback) { + var isInTransition = type === 'in', + transition = isInTransition ? _self.settings.transitionIn : _self.settings.transitionOut, + direction = 'left', + startTransition = {}, + startOpacity = isInTransition ? 0 : 1, + startOffset = isInTransition ? '-50%' : '50%', + endTransition = {}, + endOpacity = isInTransition ? 1 : 0, + endOffset = isInTransition ? '50%' : '-50%'; + + if (!_self.isOpen && isInTransition) return; + + switch (transition) { + case 'scrollTop': + direction = 'top'; + break; + case 'scrollRight': + startOffset = isInTransition ? '150%' : '50%'; + endOffset = isInTransition ? '50%' : '150%'; + break; + case 'scrollBottom': + direction = 'top'; + startOffset = isInTransition ? '150%' : '50%'; + endOffset = isInTransition ? '50%' : '150%'; + break; + case 'scrollHorizontal': + startOffset = isInTransition ? '150%' : '50%'; + endOffset = isInTransition ? '50%' : '-50%'; + break; + case 'scrollVertical': + direction = 'top'; + startOffset = isInTransition ? '-50%' : '50%'; + endOffset = isInTransition ? '50%' : '150%'; + break; + } + + if (_self.cache.action === 'prev') { + switch (transition) { + case 'scrollHorizontal': + startOffset = isInTransition ? '-50%' : '50%'; + endOffset = isInTransition ? '50%' : '150%'; + break; + case 'scrollVertical': + startOffset = isInTransition ? '150%' : '50%'; + endOffset = isInTransition ? '50%' : '-50%'; + break; + } + } + + startTransition['opacity'] = startOpacity; + startTransition[direction] = startOffset; + + endTransition['opacity'] = endOpacity; + endTransition[direction] = endOffset; + + $object.css(startTransition).show(); + + // Css transition + if (_self.support.transitions) { + endTransition[_self.support.transition + 'transition'] = speed + 'ms ease'; + + setTimeout(function () { + $object.css(endTransition); + + setTimeout(function () { + $object.css(_self.support.transition + 'transition', ''); + + if (callback && (_self.isOpen || !isInTransition)) { + callback(); + } + }, speed); + }, 15); + } else { + // Fallback to js transition + $object.stop(); + $object.animate(endTransition, speed, callback); + } + }, + + /** + * Zooms in/out the object + * + * @param {object} $object + * @param {string} type + * @param {number} speed + * @param {function} callback + * @return {void} Animates an object + */ + zoom: function ($object, type, speed, callback) { + var isInTransition = type === 'in', + startTransition = {}, + startOpacity = $object.css('opacity'), + startScale = isInTransition ? 'scale(0.75)' : 'scale(1)', + endTransition = {}, + endOpacity = isInTransition ? 1 : 0, + endScale = isInTransition ? 'scale(1)' : 'scale(0.75)'; + + if (!_self.isOpen && isInTransition) return; + + startTransition['opacity'] = startOpacity; + startTransition[_self.support.transition + 'transform'] = startScale; + + endTransition['opacity'] = endOpacity; + + $object.css(startTransition).show(); + + // Css transition + if (_self.support.transitions) { + endTransition[_self.support.transition + 'transform'] = endScale; + endTransition[_self.support.transition + 'transition'] = speed + 'ms ease'; + + setTimeout(function () { + $object.css(endTransition); + + setTimeout(function () { + $object.css(_self.support.transition + 'transform', ''); + $object.css(_self.support.transition + 'transition', ''); + + if (callback && (_self.isOpen || !isInTransition)) { + callback(); + } + }, speed); + }, 15); + } else { + // Fallback to js transition + $object.stop(); + $object.animate(endTransition, speed, callback); + } + } + }, + + /** + * Calls all the registered functions of a specific hook + * + * @param {object} hooks + * @return {void} + */ + _callHooks: function (hooks) { + if (typeof(hooks) === 'object') { + $.each(hooks, function(index, hook) { + if (typeof(hook) === 'function') { + hook.call(_self.origin); + } + }); + } + }, + + /** + * Caches the object data + * + * @param {object} $object + * @return {void} + */ + _cacheObjectData: function ($object) { + $.data($object, 'cache', { + id: $object.attr('id'), + content: $object.html() + }); + + _self.cache.originalObject = $object; + }, + + /** + * Restores the object from cache + * + * @return void + */ + _restoreObject: function () { + var $object = $('[id^="' + _self.settings.idPrefix + 'temp-"]'); + + $object.attr('id', $.data(_self.cache.originalObject, 'cache').id); + $object.html($.data(_self.cache.originalObject, 'cache').content); + }, + + /** + * Executes functions for a window resize. + * It stops an eventual timeout and recalculates dimenstions. + * + * @return {void} + */ + resize: function () { + if (!_self.isOpen) return; + + if (_self.isSlideshowEnabled()) { + _self._stopTimeout(); + } + + _self.dimensions = _self.getViewportDimensions(); + _self._calculateDimensions(_self.cache.object); + + // Call onResize hook functions + _self._callHooks(_self.settings.onResize); + }, + + /** + * Watches for any resize interaction and caches the new sizes. + * + * @return {void} + */ + _watchResizeInteraction: function () { + $(window).resize(_self.resize); + }, + + /** + * Stop watching any resize interaction related to _self. + * + * @return {void} + */ + _unwatchResizeInteraction: function () { + $(window).off('resize', _self.resize); + }, + + /** + * Switches to the fullscreen mode + * + * @return {void} + */ + _switchToFullScreenMode: function () { + _self.settings.shrinkFactor = 1; + _self.settings.overlayOpacity = 1; + + $('html').addClass(_self.settings.classPrefix + 'fullScreenMode'); + }, + + /** + * Enters into the lightcase view + * + * @return {void} + */ + _open: function () { + _self.isOpen = true; + + _self.support.transitions = _self.settings.cssTransitions ? _self.isTransitionSupported() : false; + _self.support.mobileDevice = _self.isMobileDevice(); + + if (_self.support.mobileDevice) { + $('html').addClass(_self.settings.classPrefix + 'isMobileDevice'); + + if (_self.settings.fullScreenModeForMobile) { + _self._switchToFullScreenMode(); + } + } + + if (!_self.settings.transitionIn) { + _self.settings.transitionIn = _self.settings.transition; + } + if (!_self.settings.transitionOut) { + _self.settings.transitionOut = _self.settings.transition; + } + + switch (_self.transition.in()) { + case 'fade': + case 'fadeInline': + case 'elastic': + case 'scrollTop': + case 'scrollRight': + case 'scrollBottom': + case 'scrollLeft': + case 'scrollVertical': + case 'scrollHorizontal': + if (_self.objects.case.is(':hidden')) { + _self.objects.close.css('opacity', 0); + _self.objects.overlay.css('opacity', 0); + _self.objects.case.css('opacity', 0); + _self.objects.contentInner.css('opacity', 0); + } + _self.transition.fade(_self.objects.overlay, 'in', _self.settings.speedIn, _self.settings.overlayOpacity, function () { + _self.transition.fade(_self.objects.close, 'in', _self.settings.speedIn); + _self._handleEvents(); + _self._processContent(); + }); + break; + default: + _self.transition.fade(_self.objects.overlay, 'in', 0, _self.settings.overlayOpacity, function () { + _self.transition.fade(_self.objects.close, 'in', 0); + _self._handleEvents(); + _self._processContent(); + }); + break; + } + + _self.objects.document.addClass(_self.settings.classPrefix + 'open'); + _self.objects.case.attr('aria-hidden', 'false'); + }, + + /** + * Escapes from the lightcase view + * + * @return {void} + */ + close: function () { + _self.isOpen = false; + + if (_self.isSlideshowEnabled()) { + _self._stopTimeout(); + _self.isSlideshowStarted = false; + _self.objects.nav.removeClass(_self.settings.classPrefix + 'paused'); + } + + _self.objects.loading.hide(); + + _self._unbindEvents(); + + _self._unwatchResizeInteraction(); + + $('html').removeClass(_self.settings.classPrefix + 'open'); + _self.objects.case.attr('aria-hidden', 'true'); + + _self.objects.nav.children().hide(); + _self.objects.close.hide(); + + // Call onClose hook functions + _self._callHooks(_self.settings.onClose); + + // Fade out the info at first + _self.transition.fade(_self.objects.info, 'out', 0); + + switch (_self.settings.transitionClose || _self.settings.transitionOut) { + case 'fade': + case 'fadeInline': + case 'scrollTop': + case 'scrollRight': + case 'scrollBottom': + case 'scrollLeft': + case 'scrollHorizontal': + case 'scrollVertical': + _self.transition.fade(_self.objects.case, 'out', _self.settings.speedOut, 0, function () { + _self.transition.fade(_self.objects.overlay, 'out', _self.settings.speedOut, 0, function () { + _self.cleanup(); + }); + }); + break; + case 'elastic': + _self.transition.zoom(_self.objects.case, 'out', _self.settings.speedOut, function () { + _self.transition.fade(_self.objects.overlay, 'out', _self.settings.speedOut, 0, function () { + _self.cleanup(); + }); + }); + break; + default: + _self.cleanup(); + break; + } + }, + + /** + * Unbinds all given events + * + * @return {void} + */ + _unbindEvents: function () { + // Unbind overlay event + _self.objects.overlay.unbind('click'); + + // Unbind key events + $(document).unbind('keyup.lightcase'); + + // Unbind swipe events + _self.objects.case.unbind('swipeleft').unbind('swiperight'); + + // Unbind navigator events + _self.objects.prev.unbind('click'); + _self.objects.next.unbind('click'); + _self.objects.play.unbind('click'); + _self.objects.pause.unbind('click'); + + // Unbind close event + _self.objects.close.unbind('click'); + }, + + /** + * Cleans up the dimensions + * + * @return {void} + */ + _cleanupDimensions: function () { + var opacity = _self.objects.contentInner.css('opacity'); + + _self.objects.case.css({ + 'width': '', + 'height': '', + 'top': '', + 'left': '', + 'margin-top': '', + 'margin-left': '' + }); + + _self.objects.contentInner.removeAttr('style').css('opacity', opacity); + _self.objects.contentInner.children().removeAttr('style'); + }, + + /** + * Cleanup after aborting lightcase + * + * @return {void} + */ + cleanup: function () { + _self._cleanupDimensions(); + + _self.objects.loading.hide(); + _self.objects.overlay.hide(); + _self.objects.case.hide(); + _self.objects.prev.hide(); + _self.objects.next.hide(); + _self.objects.play.hide(); + _self.objects.pause.hide(); + + _self.objects.document.removeAttr(_self._prefixAttributeName('type')); + _self.objects.nav.removeAttr(_self._prefixAttributeName('ispartofsequence')); + + _self.objects.contentInner.empty().hide(); + _self.objects.info.children().empty(); + + if (_self.cache.originalObject) { + _self._restoreObject(); + } + + // Call onCleanup hook functions + _self._callHooks(_self.settings.onCleanup); + + // Restore cache + _self.cache = {}; + }, + + /** + * Returns the supported match media or undefined if the browser + * doesn't support match media. + * + * @return {mixed} + */ + _matchMedia: function () { + return window.matchMedia || window.msMatchMedia; + }, + + /** + * Returns the devicePixelRatio if supported. Else, it simply returns + * 1 as the default. + * + * @return {number} + */ + _devicePixelRatio: function () { + return window.devicePixelRatio || 1; + }, + + /** + * Checks if method is public + * + * @return {boolean} + */ + _isPublicMethod: function (method) { + return (typeof _self[method] === 'function' && method.charAt(0) !== '_'); + }, + + /** + * Exports all public methods to be accessible, callable + * from global scope. + * + * @return {void} + */ + _export: function () { + window.lightcase = {}; + + $.each(_self, function (property) { + if (_self._isPublicMethod(property)) { + lightcase[property] = _self[property]; + } + }); + } + }; + + _self._export(); + + $.fn.lightcase = function (method) { + // Method calling logic (only public methods are applied) + if (_self._isPublicMethod(method)) { + return _self[method].apply(this, Array.prototype.slice.call(arguments, 1)); + } else if (typeof method === 'object' || !method) { + return _self.init.apply(this, arguments); + } else { + $.error('Method ' + method + ' does not exist on jQuery.lightcase'); + } + }; +})(jQuery); diff --git a/libs/lightcase/src/scss/components/_settings.scss b/libs/lightcase/src/scss/components/_settings.scss new file mode 100644 index 000000000..ae6db722b --- /dev/null +++ b/libs/lightcase/src/scss/components/_settings.scss @@ -0,0 +1,41 @@ +/** + * Lightcase settings + * + * Note: Override default settings for your project without touching this source code by simply + * defining those variables within a SASS map called '$lightcase-custom'. + * + * // Example usage + * $lightcase-custom: ( + * 'breakpoint': 768px + * ); + */ +$lightcase-default: ( + 'font-path': '../fonts/', // Path relative to the compiled css file + + 'breakpoint': 641px, + + 'overlay-color': #333, + + 'case-background': #fff, + 'case-background-media': #333, + + 'icon-font-size': 38px, + 'icon-color': rgba(255, 255, 255, 0.6), + 'icon-color-hover': rgba(255, 255, 255, 1), + + 'title-font-size': 17px, + 'title-color': #aaa, + + 'caption-font-size': 13px, + 'caption-color': #aaa, + + 'sequenceInfo-font-size': 11px, + 'sequenceInfo-color': #aaa, + + 'text-shadow': 0 0 10px rgba(0, 0, 0, 0.5), + 'text-color-viewport-small': #aaa, + 'text-color-viewport-large': #333 +); + +$lightcase-custom: ()!default; +$lightcase-settings: map-merge($lightcase-default, $lightcase-custom); \ No newline at end of file diff --git a/libs/lightcase/src/scss/components/fonts/_font-lightcase.scss b/libs/lightcase/src/scss/components/fonts/_font-lightcase.scss new file mode 100644 index 000000000..4370cc63d --- /dev/null +++ b/libs/lightcase/src/scss/components/fonts/_font-lightcase.scss @@ -0,0 +1,40 @@ +@font-face { + font-family: 'lightcase'; + src: url('#{map-get($lightcase-settings, font-path)}lightcase.eot?55356177'); + src: url('#{map-get($lightcase-settings, font-path)}lightcase.eot?55356177#iefix') format('embedded-opentype'), + url('#{map-get($lightcase-settings, font-path)}lightcase.woff?55356177') format('woff'), + url('#{map-get($lightcase-settings, font-path)}lightcase.ttf?55356177') format('truetype'), + url('#{map-get($lightcase-settings, font-path)}lightcase.svg?55356177#lightcase') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class*='lightcase-icon-']:before { + font-family: 'lightcase', sans-serif; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + text-align: center; + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +/* Codes */ +.lightcase-icon-play:before { content: '\e800'; } +.lightcase-icon-pause:before { content: '\e801'; } +.lightcase-icon-close:before { content: '\e802'; } +.lightcase-icon-prev:before { content: '\e803'; } +.lightcase-icon-next:before { content: '\e804'; } +.lightcase-icon-spin:before { content: '\e805'; } \ No newline at end of file diff --git a/libs/lightcase/src/scss/components/mixins/_presets.scss b/libs/lightcase/src/scss/components/mixins/_presets.scss new file mode 100644 index 000000000..0229da250 --- /dev/null +++ b/libs/lightcase/src/scss/components/mixins/_presets.scss @@ -0,0 +1,53 @@ +/** + * Mixin providing icon defaults to be used on top of font-lightcase. + * + * Example usage: + * @include icon(#e9e9e9) + */ +@mixin icon($color: #fff) { + position: fixed; + z-index: 9999; + + width: 1.123em; + height: auto; + + font-size: #{map-get($lightcase-settings, 'icon-font-size')}; + line-height: 1; + + text-align: center; + text-shadow: none; + + &, &:focus { + text-decoration: none; + color: $color; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + + -webkit-transition: color, opacity, ease-in-out 0.25s; + -moz-transition: color, opacity, ease-in-out 0.25s; + -o-transition: color, opacity, ease-in-out 0.25s; + transition: color, opacity, ease-in-out 0.25s; + } + + & > span { + display: inline-block; + text-indent: -9999px; + } +} + +/** + * Mixin providing icon defaults including a hover status to be used + * on top of font-lightcase. + * + * Example usage: + * @include icon-hover(#e9e9e9, #fff) + */ +@mixin icon-hover($color: #fff, $color-hover: #f9f9f9) { + @include icon($color); + + // Default hover status + &:hover { + color: $color-hover; + text-shadow: 0 0 15px $color-hover; + } +} \ No newline at end of file diff --git a/libs/lightcase/src/scss/components/mixins/_utilities.scss b/libs/lightcase/src/scss/components/mixins/_utilities.scss new file mode 100644 index 000000000..a01d6ddc4 --- /dev/null +++ b/libs/lightcase/src/scss/components/mixins/_utilities.scss @@ -0,0 +1,40 @@ +/** + * Provides natural content overflow behavior and scrolling support + * even so for touch devices. + * + * Example usage: + * @include overflow() + */ +@mixin overflow() { + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +/** + * Neutralizes/resets dimensions including width, height, position as well as margins, + * paddings and styles. Used to enforce a neutral and unstyled look and behavoir! + * + * Example usage: + * @include clear(true) + * + * @param boolean $important + */ +@mixin clear($important) { + @if $important { + $important: !important; + } + + position: relative $important; + + top: auto $important; + left: auto $important; + + width: auto $important; + height: auto $important; + + margin: 0 $important; + padding: 0 $important; + + border: none $important; + background: none $important; +} \ No newline at end of file diff --git a/libs/lightcase/src/scss/components/modules/_animations.scss b/libs/lightcase/src/scss/components/modules/_animations.scss new file mode 100644 index 000000000..a34f81207 --- /dev/null +++ b/libs/lightcase/src/scss/components/modules/_animations.scss @@ -0,0 +1,85 @@ +// Spin animation +@-webkit-keyframes lightcase-spin { + + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + +} + +@-moz-keyframes lightcase-spin { + + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + +} + +@-o-keyframes lightcase-spin { + + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + +} + +@-ms-keyframes lightcase-spin { + + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + +} + +@keyframes lightcase-spin { + + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + +} \ No newline at end of file diff --git a/libs/lightcase/src/scss/components/modules/_case.scss b/libs/lightcase/src/scss/components/modules/_case.scss new file mode 100644 index 000000000..948486da5 --- /dev/null +++ b/libs/lightcase/src/scss/components/modules/_case.scss @@ -0,0 +1,31 @@ +#lightcase-case { + display: none; + + position: fixed; + z-index: 2002; + top: 50%; + left: 50%; + + font-family: arial, sans-serif; + font-size: 13px; + line-height: 1.5; + text-align: left; + text-shadow: #{map-get($lightcase-settings, 'text-shadow')}; + + // Only for type: inline, ajax + html[data-lc-type=inline] &, + html[data-lc-type=ajax] & { + @media screen and (max-width: #{map-get($lightcase-settings, 'breakpoint')-1}) { + position: fixed !important; + top: 0 !important; + left: 0 !important; + right: 0 !important; + bottom: 0 !important; + margin: 0 !important; + padding: 55px 0 70px 0; + width: 100% !important; + height: 100% !important; + overflow: auto !important; + } + } +} diff --git a/libs/lightcase/src/scss/components/modules/_content.scss b/libs/lightcase/src/scss/components/modules/_content.scss new file mode 100644 index 000000000..9ea262bd6 --- /dev/null +++ b/libs/lightcase/src/scss/components/modules/_content.scss @@ -0,0 +1,127 @@ +#lightcase-content { + + // Not type: error + html:not([data-lc-type=error]) & { + @media screen and (min-width: #{map-get($lightcase-settings, 'breakpoint')}) { + position: relative; + z-index: 1; + + text-shadow: none; + + background-color: #{map-get($lightcase-settings, 'case-background')}; + + -webkit-box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + -o-box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + box-shadow: 0 0 30px rgba(0, 0, 0, 0.5); + + -webkit-backface-visibility: hidden; + } + } + + // Type: image + video + html[data-lc-type=image] &, + html[data-lc-type=video] & { + @media screen and (min-width: #{map-get($lightcase-settings, 'breakpoint')}) { + background-color: #{map-get($lightcase-settings, 'case-background-media')}; + } + } + + // Only for type: inline, ajax, error + html[data-lc-type=inline] &, + html[data-lc-type=ajax] &, + html[data-lc-type=error] & { + -webkit-box-shadow: none; + -moz-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; + + @media screen and (max-width: #{map-get($lightcase-settings, 'breakpoint')-1}) { + @include clear(true); + } + + .lightcase-contentInner { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + + @media screen and (max-width: #{map-get($lightcase-settings, 'breakpoint')-1}) { + padding: 15px; + + &, & > * { + width: 100% !important; + max-width: none !important; + } + + // Set auto height to each element except iframes, because of that + // those cannot have a natural/native height and it must be especially defined. + & > *:not(iframe) { + height: auto !important; + max-height: none !important; + } + } + } + } + + .lightcase-contentInner { + @media screen and (max-width: #{map-get($lightcase-settings, 'breakpoint')-1}) { + // For mobile (touch) devices + html.lightcase-isMobileDevice[data-lc-type=iframe] & iframe { + @include overflow(); + } + // Type: image + video + html[data-lc-type=image] &, + html[data-lc-type=video] & { + @media screen and (min-width: #{map-get($lightcase-settings, 'breakpoint')}) { + line-height: 0.75; + } + } + } + + html[data-lc-type=image] & { + position: relative; + overflow: hidden !important; + } + + // Note: This is a very special wrap only added for few + // types of content, type 'inline' and 'ajax'. + .lightcase-inlineWrap { + // Only for type: inline, ajax error + html[data-lc-type=inline] &, + html[data-lc-type=ajax] &, + html[data-lc-type=error] & { + @media screen and (max-width: #{map-get($lightcase-settings, 'breakpoint')-1}) { + @include clear(true); + } + } + + // Not type: error + html:not([data-lc-type=error]) & { + @media screen and (min-width: #{map-get($lightcase-settings, 'breakpoint')}) { + padding: 30px; + + overflow: auto; + + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + } + } + } + } + + // Content - Extend with further selectors and colors in case you have + // elements like
    ,
  • , or other as part of content within lightcase. + h1, h2, h3, h4, h5, h6, p { + @media screen and (max-width: #{map-get($lightcase-settings, 'breakpoint')-1}) { + color: #{map-get($lightcase-settings, 'text-color-viewport-small')}; + } + + @media screen and (min-width: #{map-get($lightcase-settings, 'breakpoint')}) { + color: #{map-get($lightcase-settings, 'text-color-viewport-large')}; + } + } + +} \ No newline at end of file diff --git a/libs/lightcase/src/scss/components/modules/_error.scss b/libs/lightcase/src/scss/components/modules/_error.scss new file mode 100644 index 000000000..f12ce8849 --- /dev/null +++ b/libs/lightcase/src/scss/components/modules/_error.scss @@ -0,0 +1,23 @@ +#lightcase-case { + + p.lightcase-error { + margin: 0; + font-size: 17px; + text-align: center; + + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + color: #aaa; + + @media screen and (max-width: #{map-get($lightcase-settings, 'breakpoint')-1}) { + padding: 30px 0; + } + + @media screen and (min-width: #{map-get($lightcase-settings, 'breakpoint')}) { + padding: 0; + } + } + +} \ No newline at end of file diff --git a/libs/lightcase/src/scss/components/modules/_global.scss b/libs/lightcase/src/scss/components/modules/_global.scss new file mode 100644 index 000000000..32c5daddd --- /dev/null +++ b/libs/lightcase/src/scss/components/modules/_global.scss @@ -0,0 +1,14 @@ +// Styles and overrides for all elements out of the lightcase scope +.lightcase-open { + + body { + overflow: hidden; + + // For mobile (touch) devices + .lightcase-isMobileDevice & { + max-width: 100%; + max-height: 100%; + } + } + +} \ No newline at end of file diff --git a/libs/lightcase/src/scss/components/modules/_info.scss b/libs/lightcase/src/scss/components/modules/_info.scss new file mode 100644 index 000000000..72df653da --- /dev/null +++ b/libs/lightcase/src/scss/components/modules/_info.scss @@ -0,0 +1,55 @@ +#lightcase-info { + // You can change to position "static" or "relative" instead, but consider + // that this height will be integrated and calculated + // to the maximum height additionally to the image height. + position: absolute; + + padding-top: 15px; + + #lightcase-title, + #lightcase-caption { + margin: 0; + padding: 0; + + line-height: 1.5; + font-weight: normal; + text-overflow: ellipsis; + } + + #lightcase-title { + font-size: #{map-get($lightcase-settings, 'title-font-size')}; + color: #{map-get($lightcase-settings, 'title-color')}; + + @media screen and (max-width: #{map-get($lightcase-settings, 'breakpoint')-1}) { + position: fixed; + top: 10px; + left: 0; + max-width: 87.5%; + padding: 5px 15px; + background: #{map-get($lightcase-settings, 'overlay-color')}; + } + } + + #lightcase-caption { + clear: both; + font-size: #{map-get($lightcase-settings, 'caption-font-size')}; + color: #{map-get($lightcase-settings, 'caption-color')}; + } + + #lightcase-sequenceInfo { + font-size: #{map-get($lightcase-settings, 'sequenceInfo-font-size')}; + color: #{map-get($lightcase-settings, 'sequenceInfo-color')}; + } + + @media screen and (max-width: #{map-get($lightcase-settings, 'breakpoint')-1}) { + .lightcase-fullScreenMode & { + padding-left: 15px; + padding-right: 15px; + } + + // Not type: image, video, flash or error + html:not([data-lc-type=image]):not([data-lc-type=video]):not([data-lc-type=flash]):not([data-lc-type=error]) & { + position: static; + } + } +} \ No newline at end of file diff --git a/libs/lightcase/src/scss/components/modules/_loading.scss b/libs/lightcase/src/scss/components/modules/_loading.scss new file mode 100644 index 000000000..e87e8e16b --- /dev/null +++ b/libs/lightcase/src/scss/components/modules/_loading.scss @@ -0,0 +1,25 @@ +#lightcase-loading { + @include icon(#fff); + + position: fixed; + z-index: 2001; + top: 50%; + left: 50%; + + margin-top: -0.5em; + margin-left: -0.5em; + + opacity: 1; + + font-size: 32px; + + text-shadow: 0 0 15px #fff; + + // Fixes the icon wobble issue in firefox + -moz-transform-origin: 50% 53%; + + -webkit-animation: lightcase-spin 0.5s infinite linear; + -moz-animation: lightcase-spin 0.5s infinite linear; + -o-animation: lightcase-spin 0.5s infinite linear; + animation: lightcase-spin 0.5s infinite linear; +} \ No newline at end of file diff --git a/libs/lightcase/src/scss/components/modules/_navigation.scss b/libs/lightcase/src/scss/components/modules/_navigation.scss new file mode 100644 index 000000000..b199aef1c --- /dev/null +++ b/libs/lightcase/src/scss/components/modules/_navigation.scss @@ -0,0 +1,62 @@ +// Generic styles for all navigation links +a[class*='lightcase-icon-'] { + @include icon-hover(#{map-get($lightcase-settings, 'icon-color')}, #{map-get($lightcase-settings, 'icon-color-hover')}); + + outline: none; + cursor: pointer; + + // Hover status for mobile (touch) devices + .lightcase-isMobileDevice & { + &:hover { + color: #aaa; + text-shadow: none; + } + } + + // Close button + &.lightcase-icon-close { + position: fixed; + top: 15px; + right: 15px; + bottom: auto; + margin: 0; + opacity: 0; + outline: none; + } + + // Prev button + &.lightcase-icon-prev { + left: 15px; + } + + // Next button + &.lightcase-icon-next { + right: 15px; + } + + // Play/Pause button + &.lightcase-icon-pause, + &.lightcase-icon-play { + left: 50%; + margin-left: -0.5em; + + @media screen and (min-width: #{map-get($lightcase-settings, 'breakpoint')}) { + opacity: 0; + } + } + + @media screen and (max-width: #{map-get($lightcase-settings, 'breakpoint')-1}) { + bottom: 15px; + font-size: 24px; + } + + @media screen and (min-width: #{map-get($lightcase-settings, 'breakpoint')}) { + bottom: 50%; + margin-bottom: -0.5em; + + &:hover, + #lightcase-case:hover ~ & { + opacity: 1; + } + } +} \ No newline at end of file diff --git a/libs/lightcase/src/scss/components/modules/_overlay.scss b/libs/lightcase/src/scss/components/modules/_overlay.scss new file mode 100644 index 000000000..ba6bf45a1 --- /dev/null +++ b/libs/lightcase/src/scss/components/modules/_overlay.scss @@ -0,0 +1,17 @@ +#lightcase-overlay { + display: none; + width: 100%; + min-height: 100%; + + position: fixed; + z-index: 2000; + top: -9999px; + bottom: -9999px; + left: 0; + + background: #{map-get($lightcase-settings, 'overlay-color')}; + + @media screen and (max-width: #{map-get($lightcase-settings, 'breakpoint')-1}) { + opacity: 1 !important; + } +} \ No newline at end of file diff --git a/libs/lightcase/src/scss/lightcase.scss b/libs/lightcase/src/scss/lightcase.scss new file mode 100644 index 000000000..02bc03b69 --- /dev/null +++ b/libs/lightcase/src/scss/lightcase.scss @@ -0,0 +1,30 @@ +/** + * Lightcase - jQuery Plugin + * The smart and flexible Lightbox Plugin. + * + * @author Cornel Boppart + * @copyright Author + * + * @version 2.4.0 (09/04/2017) + */ + +// Import settings +@import 'components/settings'; + +// Import icon font +@import 'components/fonts/font-lightcase'; + +// Import mixins +@import 'components/mixins/presets'; +@import 'components/mixins/utilities'; + +// Import modules +@import 'components/modules/animations'; +@import 'components/modules/case'; +@import 'components/modules/content'; +@import 'components/modules/error'; +@import 'components/modules/global'; +@import 'components/modules/info'; +@import 'components/modules/loading'; +@import 'components/modules/navigation'; +@import 'components/modules/overlay'; diff --git a/libs/lightcase/vendor/jQuery/jquery.events.touch.js b/libs/lightcase/vendor/jQuery/jquery.events.touch.js new file mode 100644 index 000000000..058c3453d --- /dev/null +++ b/libs/lightcase/vendor/jQuery/jquery.events.touch.js @@ -0,0 +1,3 @@ +/*! jQuery Mobile v1.4.5 | Copyright 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */ + +(function(e,t,n){typeof define=="function"&&define.amd?define(["jquery"],function(r){return n(r,e,t),r.mobile}):n(e.jQuery,e,t)})(this,document,function(e,t,n,r){(function(e,t,n,r){function T(e){while(e&&typeof e.originalEvent!="undefined")e=e.originalEvent;return e}function N(t,n){var i=t.type,s,o,a,l,c,h,p,d,v;t=e.Event(t),t.type=n,s=t.originalEvent,o=e.event.props,i.search(/^(mouse|click)/)>-1&&(o=f);if(s)for(p=o.length,l;p;)l=o[--p],t[l]=s[l];i.search(/mouse(down|up)|click/)>-1&&!t.which&&(t.which=1);if(i.search(/^touch/)!==-1){a=T(s),i=a.touches,c=a.changedTouches,h=i&&i.length?i[0]:c&&c.length?c[0]:r;if(h)for(d=0,v=u.length;di||Math.abs(n.pageY-p)>i,d&&!r&&P("vmousecancel",t,s),P("vmousemove",t,s),_()}function I(e){if(g)return;A();var t=C(e.target),n,r;P("vmouseup",e,t),d||(n=P("vclick",e,t),n&&n.isDefaultPrevented()&&(r=T(e).changedTouches[0],v.push({touchID:E,x:r.clientX,y:r.clientY}),m=!0)),P("vmouseout",e,t),d=!1,_()}function q(t){var n=e.data(t,i),r;if(n)for(r in n)if(n[r])return!0;return!1}function R(){}function U(t){var n=t.substr(1);return{setup:function(){q(this)||e.data(this,i,{});var r=e.data(this,i);r[t]=!0,l[t]=(l[t]||0)+1,l[t]===1&&b.bind(n,H),e(this).bind(n,R),y&&(l.touchstart=(l.touchstart||0)+1,l.touchstart===1&&b.bind("touchstart",B).bind("touchend",I).bind("touchmove",F).bind("scroll",j))},teardown:function(){--l[t],l[t]||b.unbind(n,H),y&&(--l.touchstart,l.touchstart||b.unbind("touchstart",B).unbind("touchmove",F).unbind("touchend",I).unbind("scroll",j));var r=e(this),s=e.data(this,i);s&&(s[t]=!1),r.unbind(n,R),q(this)||r.removeData(i)}}}var i="virtualMouseBindings",s="virtualTouchID",o="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),u="clientX clientY pageX pageY screenX screenY".split(" "),a=e.event.mouseHooks?e.event.mouseHooks.props:[],f=e.event.props.concat(a),l={},c=0,h=0,p=0,d=!1,v=[],m=!1,g=!1,y="addEventListener"in n,b=e(n),w=1,E=0,S,x;e.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(x=0;xMath.floor(e.pageY)||e.pageX===0&&Math.floor(i)>Math.floor(e.pageX))i-=n,s-=r;else if(se.event.special.swipe.horizontalDistanceThreshold&&Math.abs(t.coords[1]-n.coords[1])n.coords[0]?"swipeleft":"swiperight";return l(r,"swipe",e.Event("swipe",{target:i,swipestart:t,swipestop:n}),!0),l(r,s,e.Event(s,{target:i,swipestart:t,swipestop:n}),!0),!0}return!1},eventInProgress:!1,setup:function(){var t,n=this,r=e(n),s={};t=e.data(this,"mobile-events"),t||(t={length:0},e.data(this,"mobile-events",t)),t.length++,t.swipe=s,s.start=function(t){if(e.event.special.swipe.eventInProgress)return;e.event.special.swipe.eventInProgress=!0;var r,o=e.event.special.swipe.start(t),u=t.target,l=!1;s.move=function(t){if(!o||t.isDefaultPrevented())return;r=e.event.special.swipe.stop(t),l||(l=e.event.special.swipe.handleSwipe(o,r,n,u),l&&(e.event.special.swipe.eventInProgress=!1)),Math.abs(o.coords[0]-r.coords[0])>e.event.special.swipe.scrollSupressionThreshold&&t.preventDefault()},s.stop=function(){l=!0,e.event.special.swipe.eventInProgress=!1,i.off(f,s.move),s.move=null},i.on(f,s.move).one(a,s.stop)},r.on(u,s.start)},teardown:function(){var t,n;t=e.data(this,"mobile-events"),t&&(n=t.swipe,delete t.swipe,t.length--,t.length===0&&e.removeData(this,"mobile-events")),n&&(n.start&&e(this).off(u,n.start),n.move&&i.off(f,n.move),n.stop&&i.off(a,n.stop))}},e.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe.left",swiperight:"swipe.right"},function(t,n){e.event.special[t]={setup:function(){e(this).bind(n,e.noop)},teardown:function(){e(this).unbind(n)}}})}(e,this)}); \ No newline at end of file diff --git a/libs/lunr.js b/libs/lunr.js new file mode 160000 index 000000000..9ede3d315 --- /dev/null +++ b/libs/lunr.js @@ -0,0 +1 @@ +Subproject commit 9ede3d315c8e41bed87a93938714a433a037cfe2 diff --git a/officehours/index.html b/officehours/index.html deleted file mode 100644 index 6c295fce2..000000000 --- a/officehours/index.html +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/opensite.sh b/opensite.sh new file mode 100755 index 000000000..4009dfc3c --- /dev/null +++ b/opensite.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sleep 1 +xdg-open http://127.0.0.1:4000 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..4a9aba505 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,150 @@ +{ + "name": "purdueusb.com", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "es5-shim": { + "version": "4.5.15", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.15.tgz", + "integrity": "sha512-FYpuxEjMeDvU4rulKqFdukQyZSTpzhg4ScQHrAosrlVpR6GFyaw14f74yn2+4BugniIS0Frpg7TvwZocU4ZMTw==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "postcss": { + "version": "8.2.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", + "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map": "^0.6.1" + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "purgecss": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.0.3.tgz", + "integrity": "sha512-PYOIn5ibRIP34PBU9zohUcCI09c7drPJJtTDAc0Q6QlRz2/CHQ8ywGLdE7ZhxU2VTqB7p5wkvj5Qcm05Rz3Jmw==", + "requires": { + "commander": "^6.0.0", + "glob": "^7.0.0", + "postcss": "^8.2.1", + "postcss-selector-parser": "^6.0.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..21afc01ed --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "purdueusb.com", + "version": "1.0.0", + "description": "This repository is created for Purdue's CS Undergraduate Student Board website. Our main consideration is the ease of maintenance and content updates. Information that frequently changes, like members, initiatives, and Student Wiki, can all be updated through YAML and Markdown files.", + "main": "", + "dependencies": { + "es5-shim": "4.5.15", + "purgecss": "4.0.3" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Purdue-CSUSB/purdueusb.com.git" + }, + "bugs": { + "url": "https://github.com/Purdue-CSUSB/purdueusb.com/issues" + }, + "homepage": "https://github.com/Purdue-CSUSB/purdueusb.com#readme" +} diff --git a/purgecss.config.js b/purgecss.config.js new file mode 100644 index 000000000..6746e0a53 --- /dev/null +++ b/purgecss.config.js @@ -0,0 +1,17 @@ +module.exports = { + // These are the files that Purgecss will search through + content: ["./**/*.md", "./**/*.html", "./_sass/**/*"], + + // These are the stylesheets that will be subjected to the purge + css: ["./_site/assets/main.css"], + + // For media queries, pseudo-classes, etc + defaultExtractor: content => content.match(/[\w-/:@]+(? - - {%- if site.posts.size > 0 -%} -
      - {%- for post in site.posts -%} -
    • - {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%} - -

      - - {{ post.title | escape }} - -

      -

      {{ post.description }}

      -
    • - {%- endfor -%} -
    - {%- endif -%} - - \ No newline at end of file diff --git a/run.sh b/run.sh new file mode 100755 index 000000000..8722d365e --- /dev/null +++ b/run.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +JENV="development" +OPEN=true +LIVE=false +TRACE=false +while getopts "chplit" opt; do + case "${opt}" in + c) ./clean.sh + ;; + h) OPEN=false + ;; + p) JENV="production" + ;; + l) LIVE=true + ;; + i) bundle install + npm install + ;; + t) TRACE=true + ;; + esac +done + +echo Running in $JENV mode. +$OPEN && echo "Opening site in browser" && ./opensite.sh & +OPTS="--host 0.0.0.0" + +if [ $LIVE = true ]; then + OPTS="${OPTS} --incremental --livereload" +fi + +if [ $TRACE = true ]; then + OPTS="${OPTS} --trace" +fi + +eval JEKYLL_ENV=${JENV} bundle exec jekyll serve ${OPTS} \ No newline at end of file diff --git a/site.webmanifest b/site.webmanifest index 45dc8a206..675e4b869 100644 --- a/site.webmanifest +++ b/site.webmanifest @@ -1 +1 @@ -{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.webp","sizes":"192x192","type":"image/webp"},{"src":"/android-chrome-512x512.webp","sizes":"512x512","type":"image/webp"}],"theme_color":"#FFCA44","background_color":"#333333","display":"standalone"} \ No newline at end of file diff --git a/tutors/index.html b/tutors/index.html deleted file mode 100644 index ef34d7436..000000000 --- a/tutors/index.html +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/webp-convert.sh b/webp-convert.sh new file mode 100755 index 000000000..f50e0fc34 --- /dev/null +++ b/webp-convert.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# converting JPEG images +find $1 -type f -and \( -iname "*.jpg" -o -iname "*.jpeg" \) \ +-exec bash -c ' +webp_path=$(sed 's/\.[^.]*$/.webp/' <<< "$0"); +if [ ! -f "$webp_path" ]; then + cwebp -quiet -q 90 "$0" -o "$webp_path"; +fi;' {} \; + +# converting PNG images +find $1 -type f -and -iname "*.png" \ +-exec bash -c ' +webp_path=$(sed 's/\.[^.]*$/.webp/' <<< "$0"); +if [ ! -f "$webp_path" ]; then + cwebp -quiet -lossless "$0" -o "$webp_path"; +fi;' {} \;