diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..78ecb1090 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index c08f9add7..c43f5b5e7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -_site \ No newline at end of file +_site + +.vscode/ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..428fe725f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "html.format.enable": true, + "css.format.enable": false +} \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..588576342 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +www.allanlab.org \ No newline at end of file diff --git a/Gemfile b/Gemfile new file mode 100644 index 000000000..47867dc34 --- /dev/null +++ b/Gemfile @@ -0,0 +1,37 @@ +source "https://rubygems.org" +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +# gem "jekyll", "~> 4.1.1" +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.5" +# 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! +group :jekyll_plugins do + # gem "jekyll-feed", "~> 0.12" +end + +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", "~> 1.2" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] + +gem 'bootstrap', '~> 4.5.2' +gem 'jekyll-seo-tag' +gem 'jekyll-sitemap' +# gem "github-pages", "~> 207", group: :jekyll_plugins +# gem 'jekyll-autoprefixer' +# gem 'therubyracer' +gem "webrick", "~> 1.7" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 000000000..c350b4112 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,398 @@ +GEM + remote: https://rubygems.org/ + specs: + actionpack (7.2.1) + actionview (= 7.2.1) + activesupport (= 7.2.1) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4, < 3.2) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + useragent (~> 0.16) + actionview (7.2.1) + activesupport (= 7.2.1) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activesupport (7.2.1) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + autoprefixer-rails (10.4.19.0) + execjs (~> 2) + base64 (0.2.0) + bigdecimal (3.1.8) + bootstrap (4.5.3) + autoprefixer-rails (>= 9.1.0) + popper_js (>= 1.14.3, < 2) + sassc-rails (>= 2.0.0) + builder (3.3.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.12.2) + colorator (1.1.0) + commonmarker (0.23.10) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crass (1.0.6) + csv (3.3.0) + dnsruby (1.72.2) + simpleidn (~> 0.2.1) + drb (2.2.1) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + erubi (1.13.0) + ethon (0.16.0) + ffi (>= 1.15.0) + eventmachine (1.2.7) + execjs (2.9.1) + faraday (2.11.0) + faraday-net_http (>= 2.0, < 3.4) + logger + faraday-net_http (3.3.0) + net-http + ffi (1.17.0-aarch64-linux-gnu) + ffi (1.17.0-aarch64-linux-musl) + ffi (1.17.0-arm-linux-gnu) + ffi (1.17.0-arm-linux-musl) + ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x86-linux-gnu) + ffi (1.17.0-x86-linux-musl) + ffi (1.17.0-x86_64-darwin) + ffi (1.17.0-x86_64-linux-gnu) + ffi (1.17.0-x86_64-linux-musl) + forwardable-extended (2.6.0) + gemoji (4.1.0) + github-pages (232) + github-pages-health-check (= 1.18.2) + jekyll (= 3.10.0) + jekyll-avatar (= 0.8.0) + jekyll-coffeescript (= 1.2.2) + jekyll-commonmark-ghpages (= 0.5.1) + jekyll-default-layout (= 0.1.5) + jekyll-feed (= 0.17.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.16.1) + jekyll-include-cache (= 0.2.1) + jekyll-mentions (= 1.6.0) + jekyll-optional-front-matter (= 0.3.2) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.16.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.3) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.8.0) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.2.0) + jekyll-theme-cayman (= 0.2.0) + jekyll-theme-dinky (= 0.2.0) + jekyll-theme-hacker (= 0.2.0) + jekyll-theme-leap-day (= 0.2.0) + jekyll-theme-merlot (= 0.2.0) + jekyll-theme-midnight (= 0.2.0) + jekyll-theme-minimal (= 0.2.0) + jekyll-theme-modernist (= 0.2.0) + jekyll-theme-primer (= 0.6.0) + jekyll-theme-slate (= 0.2.0) + jekyll-theme-tactile (= 0.2.0) + jekyll-theme-time-machine (= 0.2.0) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.13.0) + kramdown (= 2.4.0) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.4) + mercenary (~> 0.3) + minima (= 2.5.1) + nokogiri (>= 1.16.2, < 2.0) + rouge (= 3.30.0) + terminal-table (~> 1.4) + webrick (~> 1.8) + github-pages-health-check (1.18.2) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (>= 4, < 8) + public_suffix (>= 3.0, < 6.0) + typhoeus (~> 1.3) + html-pipeline (2.14.3) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.8.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + jekyll (3.10.0) + addressable (~> 2.4) + colorator (~> 1.0) + csv (~> 3.0) + em-websocket (~> 0.5) + i18n (>= 0.7, < 2) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + webrick (>= 1.0) + jekyll-avatar (0.8.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.2.2) + coffee-script (~> 2.2) + coffee-script-source (~> 1.12) + jekyll-commonmark (1.4.0) + commonmarker (~> 0.22) + jekyll-commonmark-ghpages (0.5.1) + commonmarker (>= 0.23.7, < 1.1.0) + jekyll (>= 3.9, < 4.0) + jekyll-commonmark (~> 1.4.0) + rouge (>= 2.0, < 5.0) + jekyll-default-layout (0.1.5) + jekyll (>= 3.0, < 5.0) + jekyll-feed (0.17.0) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.16.1) + jekyll (>= 3.4, < 5.0) + octokit (>= 4, < 7, != 4.4.0) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-mentions (1.6.0) + html-pipeline (~> 2.3) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.3) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.6.0) + jekyll (> 3.5, < 5.0) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.13.0) + gemoji (>= 3, < 5) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + logger (1.6.1) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mercenary (0.3.6) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.25.1) + net-http (0.4.1) + uri + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-arm-linux) + racc (~> 1.4) + nokogiri (1.16.7-arm64-darwin) + racc (~> 1.4) + nokogiri (1.16.7-x86-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + octokit (4.25.1) + faraday (>= 1, < 3) + sawyer (~> 0.9) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + popper_js (1.16.1) + psych (5.1.2) + stringio + public_suffix (5.1.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.2.1) + actionpack (= 7.2.1) + activesupport (= 7.2.1) + irb (~> 1.13) + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rake (13.2.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rdoc (6.7.0) + psych (>= 4.0.0) + reline (0.5.9) + io-console (~> 0.5) + rexml (3.3.7) + rouge (3.30.0) + rubyzip (2.3.2) + safe_yaml (1.0.5) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sassc (2.4.0) + ffi (~> 1.9) + sassc-rails (2.1.2) + railties (>= 4.0.0) + sassc (>= 2.0) + sprockets (> 3.0) + sprockets-rails + tilt + sawyer (0.9.2) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + securerandom (0.3.1) + simpleidn (0.2.3) + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.5.2) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) + stringio (3.1.1) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thor (1.3.2) + tilt (2.4.0) + typhoeus (1.4.1) + ethon (>= 0.9.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (1.8.0) + uri (0.13.1) + useragent (0.16.10) + webrick (1.8.1) + zeitwerk (2.6.18) + +PLATFORMS + aarch64-linux + aarch64-linux-gnu + aarch64-linux-musl + arm-linux + arm-linux-gnu + arm-linux-musl + arm64-darwin + x86-linux + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + bootstrap (~> 4.5.2) + github-pages + jekyll-seo-tag + jekyll-sitemap + minima (~> 2.5) + tzinfo (~> 1.2) + tzinfo-data + wdm (~> 0.1.1) + webrick (~> 1.7) + +BUNDLED WITH + 2.5.18 diff --git a/README.md b/README.md index 2defffd56..59f4e12ad 100644 --- a/README.md +++ b/README.md @@ -1,83 +1,24 @@ -Solid. A Bootstrap theme for Jekyll. -============ -![Screenshot](https://st4ple.github.io/solid-jekyll/assets/img/browser.png) +# How to develop this site locally?? -This is a [Jekyll](http://jekyllrb.com/) port of the [Solid theme](http://www.blacktie.co/2014/05/solid-multipurpose-theme/) by [blacktie.co](http://www.blacktie.co/). Visit the [live demo](https://st4ple.github.io/solid-jekyll/) for a preview. +1. Use [this](https://jekyllrb.com/docs/installation/windows/) link, follow the instructions and install stuffs. +2. Open cmd and run `gem install bundler`. +3. Open the directory of the project and run `bundle install`. +4. Run `bundle exec jekyll serve` +5. Install additional gems if error occurs. I executed `gem install faraday-retry` and `bundle add webrick` -## Usage +# Adding new members +1. Add your picture in one of the appropriate directory of `assets/img/members`. -This theme can be customized, built and published straight from GitHub, thanks to [GitHub Pages](https://pages.github.com/). A local installation of Jekyll isn't even necessary! +2. Add the description in the `_config.yml` file. You will find grad and undergrad students. Follow the style and add yours. the `team.html` uses these lists of `_config.yml` and render the member list in the UI. + ``` + - name: "Your name" + position: "Your position" + img: "Name of the image you have saved in step 1 with extension, e.g., png, jpg" + details_link: "Name of your personal file without the extension. This file will be created in step-3" + ``` -[Fork this repository](https://github.com/st4ple/solid-jekyll/fork) to get started. -#### Customize -Most general settings and data like site name, colors, address, etc. can be configured and changed right in the main config file: `/_config.yml` -The content of the Home page can be changed here: `/home.html` -The content of the About page can be changed here: `/about.html` -The content of the Portfolio page can be changed here:`/portfolio.html` -The content of the Contact page can be changed here:`/contact.html` -#### Add content -Delete the demo content and publish your own content. -##### Blog post -Create a Blog post by creating a file called `yyyy-mm-dd-name-of-post-like-this.markdown` in the `/_posts/blog/` directory with the following template: -```markdown ---- -layout: post #important: don't change this -title: "Name of post like this" -date: yyyy-mm-dd hh:mm:ss -author: Name -categories: -- blog #important: leave this here -- category1 -- category2 -- ... -img: post01.jpg #place image (850x450) with this name in /assets/img/blog/ -thumb: thumb01.jpg #place thumbnail (70x70) with this name in /assets/img/blog/thumbs/ ---- -This text will appear in the excerpt "post preview" on the Blog page that lists all the posts. - -This text will not be shown in the excerpt because it is after the excerpt separator. -``` -##### Project post -Create a Project post to go in your Portfolio by creating a file called `yyyy-mm-dd-name-of-the-project.markdown` in the `/_posts/project/` directory with the following template: -```markdown ---- -layout: project #important: don't change this -title: "Name of the project" -date: yyyy-mm-dd hh:mm:ss -author: Name -categories: -- project #important: leave this here -img: portfolio_10.jpg #place image (600x450) with this name in /assets/img/project/ -thumb: thumb02.jpg -carousel: -- single01.jpg #place image (1280x600) with this name in /assets/img/project/carousel/ -- single02.jpg -- ... -client: Company XY -website: http://www.internet.com ---- -#### This is a heading -This is a regular paragraph. Write as much as you like. -``` -##### Question entry -Create a Question entry (that is listed in the Frequently Asked section on the Home page) in this directory by creating a file called `yyyy-mm-dd-do-i-have-a-question.markdown` in the `/_posts/project/` directory with the following template: -```markdown ---- -layout: question -title: "Do I have a question?" -date: yyyy-mm-dd hh:mm:ss -author: First Last -categories: -- question #important: leave this here ---- -#### Can I use this theme for my website? -Of course you can! -``` -#### Publish -To publish with [GitHub Pages](https://pages.github.com/), simply create a branch called `gh-pages`in your repository. GitHub will build your site automatically and publish it at `http://yourusername.github.io/repositoryname/`. -If there are problems with loading assets like CSS files and images, make sure that the `baseurl` in the `_config.yml`is set correctly (it should say `/repositoryname`). +3. In the folder `_team_members` add your personal page in the appropriate directory, e.g. graduate, undergrad. Copy this [template]("https://github.com/PERSUE-Lab-ASU/persue-lab-asu.github.io/blob/master/_team_members/template-for-new-member.markdown"), rename and update with your information. + +This is a modified verion of **Solid. A Bootstrap theme for Jekyll** -If you want to host your website somewhere else than GitHub (or just would like to customize and build your site locally), please check out the [Jekyll documentation](http://jekyllrb.com/). -## License -This theme is licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/). diff --git a/_config.yml b/_config.yml index 45e1a5b59..04981f5ea 100644 --- a/_config.yml +++ b/_config.yml @@ -1,117 +1,307 @@ -### GENERAL SETTINGS ### +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely need to edit after that. +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'jekyll serve'. If you change this file, please restart the server process # Site settings -title: SOLID. -description: "Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description." -analytics: #Google analytics code in the format XX-nnnnnnnn-n -baseurl: "" #important: start with / -url: "http://yourdomain.com" +title: 'PERSUE: PrivatE, Reliable and SecUrE Computing Lab' +title_abbreviation: PERSUE +email: your-email@domain.com +description: Website for the PERSUE Lab, School of Computing and Augmented + Intelligence at Arizona State University. +analytics: null #Google analytics code in the format XX-nnnnnnnn-n +baseurl: '' #important: start with / +url: http://privacy-and-security-lab.github.io -# Build settings +include: + - .htaccess + - _pages + +sass: + sass_dir: _sass + +# Conversion markdown: kramdown -permalink: /:categories/:title/ -excerpt_separator: #use this in posts to define how long the excerpt of the post (that is shown on the Blog page) is - -colors: #in hex code if not noted else - primary: "#00b3fe" #"#F70031" - primary_rgb: "0,179,254" #"247,0,49" #rgb of the primary. Needed in some places for the transparency effect. - secondary: "#384452" #"#33004D" - link: "#428bca" - link_hover: "#01b2fe" - footer_heading: "#ffffff" - footer_content: "#bfc9d3" - -# Making projects separate from posts +highlighter: rouge +lsi: false +excerpt_separator: "" +incremental: false + +# Markdown Processing +kramdown: + input: GFM + hard_wrap: false + auto_ids: true + footnote_nr: 1 + entity_output: as_char + toc_levels: 1..6 + smart_quotes: lsquo,rsquo,ldquo,rdquo + enable_coderay: false + parse_block_html: true # default for kramdown is false. This will enable using Markdown links + collections: - projects: + team_members: output: true - permalink: /projects/:title/ - questions: + permalink: /team/:title/ + project_details: output: true - permalink: /questions/:title/ - -### CONTACT SETTINGS ### - -# Social networks usernames. Many more available: google-plus, flickr, linkedin, etc). Shown in footer. -social: - - title: dribbble - url: - - title: facebook - url: - - title: twitter - url: - - title: instagram - url: - - title: tumblr - url: - -# Postal address (add as many lines as necessary). Shown in footer and on Contact page. -address: - - lines: - - Some Ave, 987, - - 23890, New York, - - United States. -email: hello@solidtheme.com -tel: +34 8493-4893 - - -### GENERAL DATA FOR VARIOUS LOCATIONS ### - -# Members information. Shown on About page. -members: - - name: Mark Webber - position: CEO - text: Lorem Ipsum is simply dummy text of the printing and typesetting industry. - img: team01.jpg - social: - - title: envelope #use for email address - url: mailto:name@domain.com - - title: twitter - url: http://twitter.com/handle - - name: Paul Jameson - position: Lead Designer - text: Lorem Ipsum is simply dummy text of the printing and typesetting industry. - img: team02.jpg - social: - - title: envelope #use for email address - url: mailto:name@domain.com - - title: twitter - url: http://twitter.com/handle - - name: Laura Sommers - position: Lead Developer - text: Lorem Ipsum is simply dummy text of the printing and typesetting industry. - img: team03.jpg - social: - - title: envelope #use for email address - url: mailto:name@domain.com - - title: twitter - url: http://twitter.com/handle - - name: Martin Blunt - position: Marketing - text: Lorem Ipsum is simply dummy text of the printing and typesetting industry. - img: team04.jpg - social: - - title: envelope #use for email address - url: mailto:name@domain.com - - title: twitter - url: http://twitter.com/handle - -# Clients information. Shown on Home and About pages. -clients: - - name: dribbble - img: client01.png - - name: Code is Poetry - img: client02.png - - name: Vimeo - img: client03.png - - name: VimeoPro - img: client04.png + permalink: /projects/:title/ + +# Projects +projects: + - name: Understanding-and-preventing-fake-news-propagation + img: fake-news.jpg + link: Understanding-and-preventing-fake-news-propagation + - name: Privacy, Security, and Safety issues in Education Technology + img: edtech.jpg + link: privacy-security-and-safety-issues-in-education-technology + - name: Privacy on social platforms + img: social_media.jpg + link: privacy-on-social-platforms + - name: Interdependent and multi-party privacy + img: interdependent-privacy.png + link: interdependent-and-multi-party-privacy + +# Faculty +faculty: + - name: Dr. Rakibul Hasan + position: Faculty + img: dr_rakibul_hasan.png + details_link: dr-rakibul-hasan + +# Current graduate students +current_phd_students: + - name: Syed Zami-Ul-Haque Navid + position: Ph.D. student + img: navid.jpg + details_link: syed-zami-ul-haque-navid + - name: Khalid Alasiri + position: Ph.D. student + img: Khalid.jpg + details_link: khalid-alasiri + +#current_ms_students: + - name: Sri Harsha Gajavalli + position: Masters student + img: SriHarshaGajavalli-profilepic.png + details_link: sri-harsha-gajavilli + +# Current undergrad students +current_undergrad_students: + - name: Easton Kelso + position: Undergrad Student + img: easton_kelso.jpg + details_link: easton-kelso + - name: Junichi Koizumi + position: Undergrad Student + img: Junichi.jpeg + details_link: junichi-koizumi + - name: Mrinaal Ramachandran + position: Undergraduate Student + img: Mrinaal.jpeg + details_link: mrinaal-ramachandran + - name: Saharsh Goenka + position: Undregraduate Student + img: saharsh.png + details_link: saharsh-goenka + - name: : Adit Prabhu + position : Undergraduate Student + img : Adit_PFP1.jpeg + + +former_students: + - name: Tianyi Yang + position: Research Aide + img: tianyi_yang.jpg + details_link: tianyi-yang + - name: Sanskar Srivastava + position: Undergrad Researcher + img: sanskar_srivastava.jpg + details_link: sanskar-srivastava # Short text about your company. Shown in footer on every page and also separately on Home and Contact page. -about: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s." +about: We aim to enhance the privacy, security, and reliability of computing + technologies. Our research activities identify and understand privacy, + security, and reliability issues with information technologies and explore + mitigation strategies toward a safer technology ecosystem. We take a + human-centered perspective to understand the problem space while combining + techniques from AI and Machine Learning, Internet Measurement, Cognitive + Psychology, and Statistical Causal Inference methodologies to solve the + identified problems. # Testimonial content. Shown on Home and About page. -testimonial: - message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged." - author: Marcel Newman - position: WEB DESIGNER - BLACKTIE.CO + + +# publication-list +publications: + - type: poster + name: 'Exploring Privacy and Security Concerns of EdTech Users: A Qualitative + Analysis of User Written Reviews' + authors: Waqar Hassan Khan, Protik Bose Pranto, Tianyi Yang, Rakibul Hasan + year: 2023 + venue_full_name: Nineteenth Symposium on Usable Privacy and Security + venue_short_name: SOUPS'23 + paper_link: /assets/publications/SOUPS_23_poster_edtech/abstract.pdf + poster_link: /assets/publications/SOUPS_23_poster_edtech/poster.pdf + poster_image_link: SOUPS_23_poster_edtech/poster.jpg + + - type: poster + name: Understanding the Effect of Private Data in Disinformation Propagation + authors: Protik Bose Pranto, Waqar Hassan Khan, Sahar Abdelnabi, Rebecca Weil, + Mario Fritz, Rakibul Hasan + year: 2023 + venue_full_name: Nineteenth Symposium on Usable Privacy and Security + venue_short_name: SOUPS'23 + paper_link: /assets/publications/SOUPS_23_poster_misinfo/abstract.pdf + poster_link: /assets/publications/SOUPS_23_poster_misinfo/poster.pdf + poster_image_link: SOUPS_23_poster_misinfo/poster.jpg + + - type: paper + name: 'From Bad to Worse: Using Private Data to Propagate Disinformation on + Online Platforms with a Greater Efficiency' + authors: Protik Bose Pranto, Waqar Hassan Khan, Sahar Abdelnabi, Rebecca Weil, + Mario Fritz, Rakibul Hasan + year: 2023 + venue_full_name: 'Designing Technology and Policy Simultaneously: Towards A + Research Agenda and New Practice' + venue_short_name: CHI'23 Workshop + paper_link: /assets/publications/CHI_23_Design_Policy_misinfo.pdf + + - type: paper + name: A Psychometric Scale to Measure Individuals' Value of Other People's + Privacy (VOPP) + authors: Rakibul Hasan, Rebecca Weil, Rudolf Siegel, Katharina Krombholz + year: 2023 + venue_full_name: Proceedings of the 2023 CHI Conference on Human Factors in + Computing Systems + venue_short_name: CHI'23 + paper_link: https://publications.cispa.saarland/3930/1/VOPP_Hasan_et_al_2023.pdf + + - type: paper + name: Understanding the Perception and Awareness of Education Technologies' + Privacy and Security Issues + authors: Rakibul Hasan + year: 2023 + venue_full_name: The 23rd Privacy Enhancing Technologies Symposium + venue_short_name: PETS 23 + paper_link: https://www.petsymposium.org/2023/files/papers/issue4/popets-2023-0110.pdf + + - type: poster + name: Developing a Psychometric Scale to Measure One’s Valuation of Other + People’s Privacy + authors: Rakibul Hasan, Rudolf Siegel, Rebecca Weil, Katharina Krombholz + year: 2022 + venue_full_name: The Eighteenth Symposium on Usable Privacy and Security + venue_short_name: SOUPS 2022 + paper_link: https://www.usenix.org/system/files/soups2022-poster57_hasan_abstract_final_1.pdf + poster_link: https://www.usenix.org/system/files/soups2022-poster57_hasan_final_1.pdf + poster_image_link: prof/soups2022-poster57_hasan_final_1.jpg + + - type: paper + name: 'The Impact of Viral Posts on Visibility and Behavior of Professionals: A + Longitudinal Study of Scientists on Twitter' + authors: Rakibul Hasan, Cristobal Cheyre, Yong-Yeol Ahn, Roberto Hoyle, Apu Kapadia + year: 2022 + venue_full_name: Proceedings of the International AAAI Conference on Web and Social Media + venue_short_name: AAAI 22 + paper_link: /assets/publications/prof/aaai-paper-22.pdf + + - type: paper + name: Understanding Utility and Privacy of Demographic Data in Education + Technology by Causal Analysis and Adversarial-Censoring + authors: Rakibul Hasan, Mario Fritz + year: 2022 + venue_full_name: The 22nd Privacy Enhancing Technologies Symposium + venue_short_name: PETS 22 + paper_link: https://petsymposium.org/popets/2022/popets-2022-0044.pdf + + - type: paper + name: Open-domain, content-based, multi-modal fact-checking of out-of-context + images via online resources + authors: Sahar Abdelnabi, Rakibul Hasan, Mario Fritz + year: 2022 + venue_full_name: Proceedings of the IEEE/CVF Conference on Computer Vision and + Pattern Recognition + venue_short_name: IEEE/CVF 22 + paper_link: https://openaccess.thecvf.com/content/CVPR2022/papers/Abdelnabi_Open-Domain_Content-Based_Multi-Modal_Fact-Checking_of_Out-of-Context_Images_via_Online_Resources_CVPR_2022_paper.pdf + + - type: paper + name: 'Your photo is so funny that i don’t mind violating your privacy by + sharing it: effects of individual humor styles on online photo-sharing + behaviors' + authors: Rakibul Hasan, Bennett I Bertenthal, Kurt Hugenberg, Apu Kapadia + year: 2021 + venue_full_name: Proceedings of the 2021 CHI Conference on Human Factors in + Computing Systems + venue_short_name: CHI 21 + paper_link: https://dl.acm.org/doi/pdf/10.1145/3411764.3445258 + + - type: paper + name: Automatically detecting bystanders in photos to reduce privacy risks + authors: Rakibul Hasan, David Crandall, Mario Fritz, Apu Kapadia + year: 2020 + venue_full_name: IEEE Symposium on Security and Privacy 2020 + venue_short_name: IEEE S & P 20 + paper_link: https://publications.cispa.saarland/3051/1/bystander-oakland-2020.pdf + + - type: paper + name: 'Influencing photo sharing decisions on social media: A case of + paradoxical findings' + authors: Mary Jean Amon, Rakibul Hasan, Kurt Hugenberg, Bennett I Bertenthal, + Apu Kapadia + year: 2020 + venue_full_name: IEEE Symposium on Security and Privacy 2020 + venue_short_name: IEEE S & P 20 + paper_link: https://par.nsf.gov/servlets/purl/10183400 + + - type: paper + name: Reducing Privacy Risks in the Context of Sharing Photos Online + authors: Rakibul Hasan + year: 2020 + venue_full_name: Extended Abstracts of the 2020 CHI Conference on Human Factors + in Computing Systems + venue_short_name: CHI'20 (EA) + paper_link: https://drive.google.com/file/u/0/d/1bbDJc8BD0yg2EdLWjkW_AyWZJFfZDiJn/view + + - type: paper + name: Can privacy be satisfying? on improving viewer satisfaction for + privacy-enhanced photos using aesthetic transforms + authors: Rakibul Hasan, Yifang Li, Eman Hassan, Kelly Caine, David J Crandall, + Roberto Hoyle, Apu Kapadia + year: 2019 + venue_full_name: Proceedings of the 2019 CHI Conference on Human Factors in + Computing Systems + venue_short_name: CHI'19 + paper_link: https://dl.acm.org/doi/pdf/10.1145/3290605.3300597 + + - type: paper + name: Viewer experience of obscuring scene elements in photos to enhance privacy + authors: Rakibul Hasan, Eman Hassan, Yifang Li, Kelly Caine, David J Crandall, + Roberto Hoyle, Apu Kapadia + year: 2018 + venue_full_name: Proceedings of the 2018 CHI Conference on Human Factors in + Computing Systems + venue_short_name: CHI'18 + paper_link: https://dl.acm.org/doi/pdf/10.1145/3173574.3173621 + + - type: paper + name: Cartooning for enhanced privacy in lifelogging and streaming videos + authors: Rakibul Hasan, Patrick Shaffer, David Crandall, Eman T Apu Kapadia + year: 2017 + venue_full_name: Proceedings of the IEEE conference on computer vision and + pattern recognition workshops + venue_short_name: CVPR 17 + paper_link: https://openaccess.thecvf.com/content_cvpr_2017_workshops/w16/papers/Kapadia_Cartooning_for_Enhanced_CVPR_2017_paper.pdf + + - type: paper + name: A novel approach for constructing emulator for Microsoft Kinect XBOX 360 + Sensor in the. NET platform + authors: Mohammad Raihanul Islam, Sazzadur Rahaman, Rakibul Hasan, Ridwan Rashid + Noel, Asif Salekin, Hasan Shahid Ferdous + year: 2013 + venue_full_name: 2013 4th International Conference on Intelligent Systems, + Modelling and Simulation + venue_short_name: ISMS 13 + paper_link: /assets/publications/prof/ISMS2013.pdf diff --git a/_data/.DS_Store b/_data/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/_data/.DS_Store differ diff --git a/_data/adit-prabhu.md b/_data/adit-prabhu.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/adit-prabhu.md @@ -0,0 +1 @@ + diff --git a/_data/alumni_bsc.yml b/_data/alumni_bsc.yml new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/alumni_bsc.yml @@ -0,0 +1 @@ + diff --git a/_data/alumni_members.yml b/_data/alumni_members.yml new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/alumni_members.yml @@ -0,0 +1 @@ + diff --git a/_data/alumni_msc.yml b/_data/alumni_msc.yml new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/alumni_msc.yml @@ -0,0 +1 @@ + diff --git a/_data/alumni_visitors.yml b/_data/alumni_visitors.yml new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/alumni_visitors.yml @@ -0,0 +1 @@ + diff --git a/_data/dr-rakibul-hasan.md b/_data/dr-rakibul-hasan.md new file mode 100644 index 000000000..f74a924ce --- /dev/null +++ b/_data/dr-rakibul-hasan.md @@ -0,0 +1,33 @@ +--- +layout: team_member +title: "Team" +--- + + + + + +### Dr. Rakibul Hasan + + +
+ + rakibul.hasan@asu.edu +
+
+ + @rakib062 +
+
+ + Google scholar +
+ +
+ + +I direct the PERSUE lab. + +I am an assistant professor in the School of Computing and Augmented Intelligence at ASU. I am also affiliated with the [Cybersecurity and Trusted Foundations](https://globalsecurity.asu.edu/expertise/cybersecurity-and-trusted-foundations/) and the [Human, Artificial Intelligence, and Robot Teaming](https://globalsecurity.asu.edu/expertise/human-artificial-intelligence-and-robot-teaming/) initiatives. + +My research interests overlap with (usable) privacy and security, artificial intelligence, behavioral modeling and decision making, and internet measurement. I completed my Ph.D. in Computer Science from Indiana University Bloomington in 2020, advised by [Prof. Apu Kapadia](https://homes.luddy.indiana.edu/kapadia/). Before Joining ASU, I was a postdoctoral researcher at [CISPA Helmholtz Center for Information Security](https://cispa.de/en). diff --git a/_data/easton-kelso.md b/_data/easton-kelso.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/easton-kelso.md @@ -0,0 +1 @@ + diff --git a/_data/junichi-koizumi.md b/_data/junichi-koizumi.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/junichi-koizumi.md @@ -0,0 +1 @@ + diff --git a/_data/khalid-alasiri.md b/_data/khalid-alasiri.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/khalid-alasiri.md @@ -0,0 +1 @@ + diff --git a/_data/mrinaal-ramachandran.md b/_data/mrinaal-ramachandran.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/mrinaal-ramachandran.md @@ -0,0 +1 @@ + diff --git a/_data/news.yml b/_data/news.yml new file mode 100644 index 000000000..301f86e49 --- /dev/null +++ b/_data/news.yml @@ -0,0 +1,11 @@ +- date: August 2024 + headline: We received $.5M funding from the National Science Foundation to research on a new visualization technique to teach data privacy. + +- date: August 2024 + headline: Our research on education technology and privacy at higher education institutes will appear at ACM CCS! [Find the preprint here](https://arxiv.org/pdf/2405.11712) + +- date: August 2024 + headline: We received $.6M in funding from the Air Force Office of Scientific Research to innovate on proactive cyber defense techniques. + +- date: July 2024 + headline: Our research at the intersection of misinformation and privacy ":" Tell me what you like and I know what you will share ":" Topical interest influences behavior toward news from high and low credible sources received *best paper award* at the on [14th International Workshop on Socio-Technical Aspects in Security](https://stast.uni.lu/index.html) diff --git a/_data/pictures_Leiden.yml b/_data/pictures_Leiden.yml new file mode 100644 index 000000000..a86e92498 --- /dev/null +++ b/_data/pictures_Leiden.yml @@ -0,0 +1,34 @@ +- title: pic1_description + image: DSC_0366.JPG +- title: pic1_description + image: DSC_0368.JPG +- title: pic_description + image: 20150918_145800.jpg +- title: pic1_description + image: DSC_0030.jpg +- title: pic1_description + image: DSC_0051.jpg +- title: pic1_description + image: DSC_0116.jpg +- title: pic1_description + image: DSC_0119.jpg +- title: pic1_description + image: DSC_0128.jpg +- title: pic1_description + image: DSC_0139.jpg +- title: pic1_description + image: DSC_0636.jpg +- title: pic1_description + image: DSC_0683.jpg +- title: pic1_description + image: DSC_0696.jpg +- title: pic1_description + image: DSC_0757.jpg +- title: pic1_description + image: IMG_4334.jpg +- title: pic1_description + image: IMG_4376.jpg +- title: pic1_description + image: tamagochi.jpg +- title: pic1_description + image: tmp2-2.jpg diff --git a/_data/publist.yml b/_data/publist.yml new file mode 100644 index 000000000..ae5e4226d --- /dev/null +++ b/_data/publist.yml @@ -0,0 +1,169 @@ + +- title: "Exploring Privacy and Security Concerns of EdTech Users: A Qualitative Analysis of User Written Reviews" + image: soups_23_poster.jpg + description: "[Click here](/downloads/soups_23_poster.pdf) for Abstract" + authors: Waqar Hassan Khan, Protik Bose Pranto, Tianyi Yang, Rakibul Hasan + link: + url: https://persue-lab-asu.github.io/assets/publications/SOUPS_23_poster_edtech/abstract.pdf + display: + highlight: 1 + +- title: "Understanding the Effect of Private Data in Disinformation Propagation" + image: SOUPS_23_poster_misinfo/poster.jpg + description: "[Click here] (https://persue-lab-asu.github.io/assets/publications/SOUPS_23_poster_misinfo/abstract.pdf) for Abstract" + authors: Protik Bose Pranto, Waqar Hassan Khan, Sahar Abdelnabi, Rebecca Weil, Mario Fritz, Rakibul Hasan + link: + url: https://persue-lab-asu.github.io/assets/publications/SOUPS_23_poster_misinfo/abstract.pdf + display: + highlight: 1 + + +- title: "From Bad to Worse: Using Private Data to Propagate Disinformation on Online Platforms with a Greater Efficiency" + description: "[Click here] (https://persue-lab-asu.github.io/assets/publications/CHI_23_Design_Policy_misinfo.pdf)" + authors: Protik Bose Pranto, Waqar Hassan Khan, Sahar Abdelnabi, Rebecca Weil, Mario Fritz, Rakibul Hasan + link: + url: https://persue-lab-asu.github.io/assets/publications/CHI_23_Design_Policy_misinfo.pdf + display: + highlight: 1 + + + +- title: "A Psychometric Scale to Measure Individuals' Value of Other People's Privacy (VOPP)" + description: "[Click here] (https://publications.cispa.saarland/3930/1/VOPP_Hasan_et_al_2023.pdf)" + authors: Rakibul Hasan, Rebecca Weil, Rudolf Siegel, Katharina Krombholz + link: + url: https://publications.cispa.saarland/3930/1/VOPP_Hasan_et_al_2023.pdf + display: + highlight: 1 + + +- title: "Understanding the Perception and Awareness of Education Technologies' Privacy and Security Issues" + description: "[Click here] (https://www.petsymposium.org/2023/files/papers/issue4/popets-2023-0110.pdf)" + authors: Rakibul Hasan + link: + url: https://www.petsymposium.org/2023/files/papers/issue4/popets-2023-0110.pdf + display: + highlight: 0 + + +- title: "Developing a Psychometric Scale to Measure One’s Valuation of Other People’s Privacy" + image: prof/soups2022-poster57_hasan_final_1.jpg + description: "[Click here] https://www.usenix.org/system/files/soups2022-poster57_hasan_abstract_final_1.pdf" + authors: Rakibul Hasan, Rudolf Siegel, Rebecca Weil, Katharina Krombholz + link: + url: https://www.usenix.org/system/files/soups2022-poster57_hasan_abstract_final_1.pdf + display: + highlight: 1 + + +- title: "The Impact of Viral Posts on Visibility and Behavior of Professionals: A Longitudinal Study of Scientists on Twitter" + image: + description: "[Click here] https://persue-lab-asu.github.io/assets/publications/prof/aaai-paper-22.pdf" + authors: Rakibul Hasan, Cristobal Cheyre, Yong-Yeol Ahn, Roberto Hoyle, Apu Kapadia + link: + url: https://persue-lab-asu.github.io/assets/publications/prof/aaai-paper-22.pdf + display: + highlight: 1 + +- title: "Understanding Utility and Privacy of Demographic Data in Education Technology by Causal Analysis and Adversarial-Censoring" + image: + description:"[Click here] https://petsymposium.org/popets/2022/popets-2022-0044.pdf" + authors: Rakibul Hasan, Mario Fritz + link: + url: https://petsymposium.org/popets/2022/popets-2022-0044.pdf + display: + highlight: 0 + news2: + + +- title: "Open-domain, content-based, multi-modal fact-checking of out-of-context images via online resources" + image: + description: "[Click here] https://openaccess.thecvf.com/content/CVPR2022/papers/Abdelnabi_Open-Domain_Content-Based_Multi-Modal_Fact-Checking_of_Out-of-Context_Images_via_Online_Resources_CVPR_2022_paper.pdf" + authors: Sahar Abdelnabi, Rakibul Hasan, Mario Fritz + link: + url: https://openaccess.thecvf.com/content/CVPR2022/papers/Abdelnabi_Open-Domain_Content-Based_Multi-Modal_Fact-Checking_of_Out-of-Context_Images_via_Online_Resources_CVPR_2022_paper.pdf + display: + highlight: 1 + news2: + +- title: "Your photo is so funny that i don’t mind violating your privacy by sharing it: effects of individual humor styles on online photo-sharing behaviors" + image: + authors: Rakibul Hasan, Bennett I Bertenthal, Kurt Hugenberg, Apu Kapadia + description: "[Click here] https://dl.acm.org/doi/pdf/10.1145/3411764.3445258" + link: + url: https://dl.acm.org/doi/pdf/10.1145/3411764.3445258 + display: + highlight: 1 + news2: + +- title: "Automatically detecting bystanders in photos to reduce privacy risks" + image: + authors: Rakibul Hasan, David Crandall, Mario Fritz, Apu Kapadia + description: "[Click here] https://publications.cispa.saarland/3051/1/bystander-oakland-2020.pdf" + link: + url: https://publications.cispa.saarland/3051/1/bystander-oakland-2020.pdf + display: + highlight: 0 + news2: + +- title: "Influencing photo sharing decisions on social media: A case of paradoxical findings" + image: + description: "[Click here] https://par.nsf.gov/servlets/purl/10183400" + authors: Mary Jean Amon, Rakibul Hasan, Kurt Hugenberg, Bennett I Bertenthal, Apu Kapadia + link: + url: https://par.nsf.gov/servlets/purl/10183400 + display: + highlight: 0 + news2: + +- title: "Reducing Privacy Risks in the Context of Sharing Photos Online" + image: + description: "[Click here] https://drive.google.com/file/d/1bbDJc8BD0yg2EdLWjkW_AyWZJFfZDiJn/view" + authors: Rakibul Hasan + link: + url: https://drive.google.com/file/d/1bbDJc8BD0yg2EdLWjkW_AyWZJFfZDiJn/view + display: + highlight: 1 + news2: + +- title: "Can privacy be satisfying? on improving viewer satisfaction for privacy-enhanced photos using aesthetic transforms" + image: + description: "[Click here] https://dl.acm.org/doi/pdf/10.1145/3290605.3300597" + authors: Rakibul Hasan, Yifang Li, Eman Hassan, Kelly Caine, David J Crandall, Roberto Hoyle, Apu Kapadia + link: + url: https://dl.acm.org/doi/pdf/10.1145/3290605.3300597 + display: + highlight: 1 + news2: + +- title: "Viewer experience of obscuring scene elements in photos to enhance privacy" + image: + description: "[Click here] https://dl.acm.org/doi/pdf/10.1145/3173574.3173621" + authors: Rakibul Hasan, Eman Hassan, Yifang Li, Kelly Caine, David J Crandall, Roberto Hoyle, Apu Kapadia + link: + url: https://dl.acm.org/doi/pdf/10.1145/3173574.3173621 + display: + highlight: 1 + news2: + +- title: "Cartooning for enhanced privacy in lifelogging and streaming videos" + image: + description: "[Click here] https://openaccess.thecvf.com/content_cvpr_2017_workshops/w16/papers/Kapadia_Cartooning_for_Enhanced_CVPR_2017_paper.pdf" + authors: Rakibul Hasan, Patrick Shaffer, David Crandall, Eman T Apu Kapadia + link: + url: https://openaccess.thecvf.com/content_cvpr_2017_workshops/w16/papers/Kapadia_Cartooning_for_Enhanced_CVPR_2017_paper.pdf + display: + highlight: 1 + news2: + +- title: "A novel approach for constructing emulator for Microsoft Kinect XBOX 360 Sensor in the. NET platform" + image: + description: "[Click here] https://persue-lab-asu.github.io/assets/publications/prof/ISMS2013.pdf" + authors: Mohammad Raihanul Islam, Sazzadur Rahaman, Rakibul Hasan, Ridwan Rashid Noel, Asif Salekin, Hasan Shahid Ferdous + link: + url: https://persue-lab-asu.github.io/assets/publications/prof/ISMS2013.pdf + display: + highlight: 1 + news1: + news2: + diff --git a/_data/saharsh-goenka.md b/_data/saharsh-goenka.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/saharsh-goenka.md @@ -0,0 +1 @@ + diff --git a/_data/sri-harsha-gajavalli.md b/_data/sri-harsha-gajavalli.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/sri-harsha-gajavalli.md @@ -0,0 +1 @@ + diff --git a/_data/students.yml b/_data/students.yml new file mode 100644 index 000000000..f79cb5473 --- /dev/null +++ b/_data/students.yml @@ -0,0 +1,11 @@ +#- name: +# photo: rock.jpg +# info: +# email: +# number_educ: +# education1: +# education2: +# education3: +# education4: + + diff --git a/_data/syed-zami-ul-haque-navid.md b/_data/syed-zami-ul-haque-navid.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/_data/syed-zami-ul-haque-navid.md @@ -0,0 +1 @@ + diff --git a/_data/team_members.yml b/_data/team_members.yml new file mode 100644 index 000000000..bc66c333a --- /dev/null +++ b/_data/team_members.yml @@ -0,0 +1,59 @@ +- name: Dr. Rakibul Hasan + photo: dr_rakibul_hasan.png + info: Director of Persue Lab. Associate professor in the School of Computing and Augmented Intelligence at ASU + Dr. Rakibul is also affiliated with Cybersecurity and Trusted Foundations and the Human, Artificial Intelligence, and Robot Teaming initiatives. + email: rhasan3@asu.edu + education1: Ph.D. in Computer Science from Indiana University Bloomington in 2020, advised by Prof. Apu Kapadia. + education2: postdoctoral researcher at CISPA Helmholtz Center for Information Security + + +- name: Syed Zami-Ul-Haque Navid + photo: navid.jpg + info: PhD researcher + email: snavid2@asu.edu + education1: PhD at Arizona State University + education2: BSc. in CSE from Bangladesh University of Engineering and Technology + +- name: Sri Harsha Gajavalli + photo: SriHarshaGajavalli-profilepic.png + info: Graduate Researcher + email: sgajaval@asu.edu + education1: Master, Arizona State University + +- name: Easton Kelso + photo: easton_kelso.jpg + info: undergraduate researcher + email: eakelso@asu.edu + education1: Undergraduate, Arizona State University + +- name: Junichi Koizumi + photo: Junichi.jpeg + info: undergraduate researcher + email: jkoizum1@asu.edu + education: Undergradute, Arizona State University + +- name: Mrinaal Ramachandran + photo: Mrinaal.jpeg + info: Undergraduate Researcher + email: mrinaalr@icloud.com + education: Undergraduate, Arizona State University + +- name: Khalid Alasiri + photo: Khalid.jpg + info: Phd Researcher + email: kalasir1@asu.edu + education: Phd, Arizona State University + +- name: Saharsh Goenka + photo: saharsh.png + info: Undergraduate Researcher + email: sgoenka1@asu.edu + education: Undergraduate, Arizona State University + +- name: Adit Prabhu + photo : Adit_PFP1.jpeg + info : Undergradute Researcher + email : adprabh2@asu.edu + education : Undergraduate, Arizona State University + + diff --git a/_includes/.DS_Store b/_includes/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/_includes/.DS_Store differ diff --git a/_includes/analytics.html b/_includes/analytics.html new file mode 100644 index 000000000..833e7a8d4 --- /dev/null +++ b/_includes/analytics.html @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/_includes/carousel.html b/_includes/carousel.html deleted file mode 100644 index 1838cb338..000000000 --- a/_includes/carousel.html +++ /dev/null @@ -1,28 +0,0 @@ -
- -
diff --git a/_includes/clients.html b/_includes/clients.html deleted file mode 100644 index 9f189403a..000000000 --- a/_includes/clients.html +++ /dev/null @@ -1,12 +0,0 @@ -
-
-
-

OUR CLIENTS

- {% for client in site.clients %} -
- -
- {% endfor %} -
-
-
\ No newline at end of file diff --git a/_includes/css/main.css b/_includes/css/main.css deleted file mode 100755 index 666caf785..000000000 --- a/_includes/css/main.css +++ /dev/null @@ -1,507 +0,0 @@ -/* ################################################################ - - Author: Carlos Alvarez - URL: http://alvarez.is - - Project Name: SOLID - Bootstrap 3 Theme - Version: 1.0 - URL: http://alvarez.is - -################################################################# */ -@import url(http://fonts.googleapis.com/css?family=Raleway:400,700,900); -@import url(http://fonts.googleapis.com/css?family=Lato:400,900); -@import url("prettyPhoto.css") screen; -@import url("hoverex-all.css") screen; - -/* ################################################################ - 1. GENERAL STRUCTURES -################################################################# */ - * { - margin: 0; - padding: 0px; - } - -body { - background: #ffffff; - margin: 0; - height: 100%; - color: {{ site.colors.secondary }}; - font-family: 'Lato', sans-serif; - font-weight: 400; - } - -h1, h2, h3, h4, h5, h6 { - font-family: 'Raleway', sans-serif; - font-weight: 700; -} - -p { - padding: 0; - margin-bottom: 12px; - font-family: 'Lato', sans-serif; - font-weight: 400; - font-size: 14px; - line-height: 24px; - color: {{ site.colors.secondary }}; - margin-top: 10px; -} - -img { - height: auto; - max-width: 100%; -} - -ul { - margin-left: 0; - padding-left: 20px; -} - -ol { - margin-left: 0; - padding-left: 26px; -} - -a { - color:{{ site.colors.link }}; - padding: 0; - margin: 0; - text-decoration: none; - -webkit-transition: background-color .4s linear, color .4s linear; - -moz-transition: background-color .4s linear, color .4s linear; - -o-transition: background-color .4s linear, color .4s linear; - -ms-transition: background-color .4s linear, color .4s linear; - transition: background-color .4s linear, color .4s linear; -} -a:hover, -a:focus { - text-decoration: none; - color:{{ site.colors.link_hover }}; -} - -::-moz-selection { - color: #fff; - text-shadow:none; - background:{{ site.colors.secondary }}; -} -::selection { - color: #fff; - text-shadow:none; - background:{{ site.colors.secondary }}; -} - -.centered { - text-align: center -} - -/* ################################################################ - BOOTSTRAP MODIFICATIONS & TWEAKS -################################################################# */ -.navbar { - min-height: 70px; - padding-top: 10px; - margin-bottom: 0px; -} - -.navbar-brand { - font-family: 'Raleway', sans-serif; - font-weight: 900; -} - -.navbar-header .navbar-brand { - color: white; -} - -.navbar-default .navbar-nav > li > a { - color: white; - font-weight: 700; - font-size: 12px; -} - -.navbar-default .navbar-nav > li > a:hover { - color: {{ site.colors.primary }}; -} - -.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { - color: {{ site.colors.primary }}; - background-color: transparent; -} - -.navbar-default { - background-color: {{ site.colors.secondary }}; - border-color: transparent; -} - -.dropdown-menu { - background: {{ site.colors.secondary }}; -} - -.dropdown-menu > li > a { - color: white; - font-weight: 700; - font-size: 12px; -} - -.btn-theme { - color: #fff; - background-color: {{ site.colors.secondary }}; - border-color: {{ site.colors.secondary }}; - margin: 4px; -} -.btn-theme:hover, -.btn-theme:focus, -.btn-theme:active, -.btn-theme.active, -.open .dropdown-toggle.btn-theme { - color: #fff; - background-color: {{ site.colors.primary }}; - border-color: {{ site.colors.primary }}; -} - -.dmbutton:hover, -.dmbutton:active, -.dmbutton:focus{ - color: #ffffff; - background-color: #222222; - border-color: #ffffff; -} -.dmbutton { - background:rgba(0, 0, 0, 0); - border: 1px solid #ffffff; - color: #ffffff; - -webkit-border-radius: 2px; - border-radius: 2px; - padding-top: 1.025rem; - padding-right: 2.25rem; - letter-spacing:0.85px; - padding-bottom: 1.0875rem; - padding-left: 2.25rem; - font-size: 1.55rem; - cursor: pointer; - font-weight: normal; - line-height: normal; - margin: 0 0 1.25rem; - text-decoration: none; - text-align: center; - display: inline-block; - -webkit-transition: background-color 300ms ease-out; - -moz-transition: background-color 300ms ease-out; - transition: background-color 300ms ease-out; - -webkit-appearance: none; - font-weight: normal !important; -} - -.mtb { - margin-top: 80px; - margin-bottom: 80px; -} - -.mb { - margin-bottom: 60px; -} - -.mt { - margin-top: 60px; -} - -.hline { - border-bottom: 2px solid {{ site.colors.secondary }}; -} - -.hline-w { - border-bottom: 2px solid #ffffff; - margin-bottom: 25px; -} -/* ################################################################ - SITE WRAPS -################################################################# */ - -#headerwrap { - background-color: {{ site.colors.primary }}; - min-height: 0px; - padding-top: 100px; - padding-bottom: 50px; - text-align: center; -} - -#headerwrap h3, h5 { - color: white; - font-weight: 400; -} - -#headerwrap h1 { - color: white; - margin-bottom: 25px; -} - -#headerwrap .img-responsive { - margin: 0 auto; -} - -/* Services Wrap */ -#service { - margin-top: 0px; - margin-bottom: 0px; -} - -#service i { - color: {{ site.colors.primary }}; - font-size: 60px; - padding: 15px; -} - -/* Portfolio Wrap */ -#portfoliowrap { - padding-top: 60px; - margin-bottom: 60px; - display: block; - text-align: center -} - -#portfoliowrap h3 { - margin-bottom: 25px; -} - -.portfolio { - padding:0 !important; - margin:0 !important; - display:block; -} - - -.portfolio-item .title:before {border-radius:0; display:none} -.portfolio-item p {margin:0px 0 30px;} -.portfolio-item h3 {margin:-10px 0 10px; font-size:16px; text-transform:uppercase;} - - -.tpl6 h3 -{ - color:#fff; - margin:0; - padding:40px 5px 0; - font-size:16px; - text-transform:uppercase; -} -.tpl6 .dmbutton -{ - display:inline-block; - margin:30px 5px 20px 5px; - font-size:13px; -} - -.tpl6 .bg -{ - height:100%; - width:100%; - background-color:{{ site.colors.primary }}; - background-color:rgba({{ site.colors.primary_rgb }},.9); - text-align:center; -} - -/* Testimonials Wrap */ -#twrapback { - background-color: {{ site.colors.primary }}; - background-color:rgba({{ site.colors.primary_rgb }},.8); - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -#twrap { - background: url(../img/t-back.jpg) no-repeat center top; - position: relative; - margin-top: 0px; - padding-top:60px; - text-align:center; - background-attachment: relative; - background-position: center center; - min-height: 450px; - width: 100%; - - -webkit-background-size: 100%; - -moz-background-size: 100%; - -o-background-size: 100%; - background-size: 100%; - - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; -} - -#twrap i { - font-size: 50px; - color: white; - margin-bottom: 25px; -} - -#twrap p { - color: white; - font-size: 15px; - line-height: 30px; -} - -/* clients logo */ -#cwrap { - background: #f7f7f7; - margin-top: 0px; - padding-top: 80px; - padding-bottom: 100px; -} - -#cwrap h3 { - margin-bottom: 60px; -} - -/* Footer */ -#footerwrap { - padding-top: 60px; - padding-bottom: 60px; - background: {{ site.colors.secondary }}; -} - -#footerwrap p { - color: {{ site.colors.footer_content }}; -} - -#footerwrap h4 { - color: {{ site.colors.footer_heading }}; -} - -#footerwrap i { - font-size: 30px; - color: {{ site.colors.footer_content }}; - padding-right: 25px; -} - -#footerwrap i:hover { - color: {{ site.colors.primary }} -} - -/* ################################################################ - PAGE CONFIGURATIONS -################################################################# */ -/* General Tweaks */ - -#blue { - background: {{ site.colors.primary }}; - margin-top: 60px; - margin-bottom: 60px; - padding-top: 25px; - padding-bottom: 25px; -} - -#blue h3 { - color: white; - margin-left: 15px; -} - -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: 600px; - max-height: 600px; - margin: 0 auto; -} - -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #ccc \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #666; - border-radius: 10px; -} - -.ctitle { - color: {{ site.colors.primary }}; - font-weight: 700; - margin-bottom: 15px; -} - -csmall { - font-size: 12px; - color: #b3b3b3; -} - -.spacing { - margin-top: 40px; - margin-bottom: 40px; -} - -.badge-theme { - background: {{ site.colors.primary }}; -} - -/* Contact Page */ -#contactwrap { - background: url(../img/contact.jpg) no-repeat center top; - margin-top: -60px; - padding-top:0px; - text-align:center; - background-attachment: relative; - background-position: center center; - min-height: 400px; - width: 100%; - - -webkit-background-size: 100%; - -moz-background-size: 100%; - -o-background-size: 100%; - background-size: 100%; - - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; -} - -/* Blog Page */ -.popular-posts { - margin: 0px; - padding-left: 0px; - } - -.popular-posts li { - list-style: none; - margin-bottom: 20px; - min-height: 70px; -} -.popular-posts li a, -.popular-posts li a:hover { - color:#2f2f2f; - text-decoration: none; - } - -.popular-posts li img { - float: left; - margin-right: 20px; - } - -.popular-posts li em { - font-family: 'Lato', sans-serif; - font-size: 12px; - color: #b3b3b3 - } - -.popular-posts p { - line-height: normal; - margin-bottom: auto; -} - -.share i { - padding-right: 15px; - font-size: 18px; -} - -a.anchor{ - display: block; - position: relative; - top: -80px; - visibility: hidden; -} diff --git a/_includes/footer.html b/_includes/footer.html index 4960a8327..53f204530 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -1,32 +1,31 @@
-
-
-
-

About

-
-

{{ site.about }}

-
-
-

Social Links

-
-

- {% for network in site.social %} - - - {{network.title}} - - {% endfor %} -

-
-
-

Our Bunker

-
-

- {% for line in site.address.first.lines %} - {{ line }}
- {% endfor %} -

-
-
-
-
\ No newline at end of file +
+
+
+

Our Location

+
+

+ Brickyard Engineering
+ 699 S Mill Ave, Tempe, AZ 85281
+

+
+ +
+
+ diff --git a/_includes/head.html b/_includes/head.html index 2497500a0..d3f906224 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -1,30 +1,14 @@ - - - - - - + + + + {% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %} + + + + +{% if jekyll.environment == 'production' %} +{% include analytics.html %} +{% endif %} - {{ site.title }}{% if page.title %} - {{ page.title }}{% endif %} - - - - - - - - - - - - - - - - - diff --git a/_includes/header.html b/_includes/header.html index 8914214e0..f953ad1fa 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -1,15 +1,24 @@ -
-
-
-
-

Show your work with this beautiful theme

-

Eyecatching Bootstrap 3 Theme.

-
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
-
More Lorem Ipsum added here too.
-
-
- -
-
-
-
\ No newline at end of file + diff --git a/_includes/js.html b/_includes/js.html deleted file mode 100644 index 3d2715e62..000000000 --- a/_includes/js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - -{% if site.analytics %} - -{% endif %} - \ No newline at end of file diff --git a/_includes/members.html b/_includes/members.html deleted file mode 100644 index da1fe9987..000000000 --- a/_includes/members.html +++ /dev/null @@ -1,26 +0,0 @@ -
-
-

MEET OUR TEAM

- - {% for member in site.members %} -
-
- -
-
-

Contact Me:

- {% for entry in member.social %} - - {% endfor %} -
-
-
-

{{ member.name }}

-
{{ member.position }}
-

{{ member.text }}

-
-
- {% endfor %} - -
-
\ No newline at end of file diff --git a/_includes/nav.html b/_includes/nav.html deleted file mode 100644 index f9ef90632..000000000 --- a/_includes/nav.html +++ /dev/null @@ -1,23 +0,0 @@ - - \ No newline at end of file diff --git a/_includes/news.html b/_includes/news.html new file mode 100644 index 000000000..234adebce --- /dev/null +++ b/_includes/news.html @@ -0,0 +1,11 @@ + +
+

News

+ +{% for article in site.data.news limit:9 %} +

{{ article.date }}
{{ article.headline | markdownify}}

+{% endfor %} + +

... see all news

+ +
diff --git a/_includes/portfolio.html b/_includes/portfolio.html deleted file mode 100644 index 7b00e1f24..000000000 --- a/_includes/portfolio.html +++ /dev/null @@ -1,21 +0,0 @@ -
-
- {% if include.title %}

{{ include.title }}

{% endif %} -
- {% for project in site.projects limit:include.limit %} -
-
- -
-
-

{{ project.title }}

- - -
-
-
-
- {% endfor %} -
-
-
diff --git a/_includes/sidebar.html b/_includes/sidebar.html deleted file mode 100644 index 85980c856..000000000 --- a/_includes/sidebar.html +++ /dev/null @@ -1,47 +0,0 @@ -
- -

Subscribe

-
-

-

Subscribe to this blog via RSS.

-

-
-

Categories

-
- {% for category in site.categories %} -

- {{ category | first | capitalize }} - {{ category | last | size }} -

- {% endfor %} - -
- -

Recent Posts

-
- - -
- -

Popular Tags

-
-

- {% for category in site.categories %} - {{ category | first | capitalize }} ({{ category | last | size }}) - {% endfor %} -

-
diff --git a/_includes/testimonial.html b/_includes/testimonial.html deleted file mode 100644 index 1d233767a..000000000 --- a/_includes/testimonial.html +++ /dev/null @@ -1,13 +0,0 @@ -
-
-
-
-
- -

{{ site.testimonial.message }}

-


{{ site.testimonial.author }}

-

{{ site.testimonial.position }}

-
-
-
-
\ No newline at end of file diff --git a/_includes/wrap.html b/_includes/wrap.html deleted file mode 100644 index 32188e052..000000000 --- a/_includes/wrap.html +++ /dev/null @@ -1,7 +0,0 @@ -
-
-
-

{% if page.wrap_title %}{{ page.wrap_title }}{% else %}{{ page.title }}{% endif %}

-
-
-
\ No newline at end of file diff --git a/_layouts/about.html b/_layouts/about.html deleted file mode 100644 index 3b643a84e..000000000 --- a/_layouts/about.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default ---- -{% include wrap.html %} - - {{ content }} - -{% include members.html %} -{% include testimonial.html %} -{% include clients.html %} \ No newline at end of file diff --git a/_layouts/blog.html b/_layouts/blog.html deleted file mode 100644 index 0a3a5050d..000000000 --- a/_layouts/blog.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: default ---- -{% include wrap.html %} - - {{ content }} \ No newline at end of file diff --git a/_layouts/contact.html b/_layouts/contact.html deleted file mode 100644 index 6e08a7d10..000000000 --- a/_layouts/contact.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: default ---- -{% include wrap.html %} - - {{ content }} \ No newline at end of file diff --git a/_layouts/default.html b/_layouts/default.html index 991e1f4ee..df89cb68a 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,14 +1,20 @@ - {% include head.html %} + {% include head.html %} - - {% include nav.html %} + - {{ content }} + {% include header.html %} - {% include footer.html %} - {% include js.html %} - - \ No newline at end of file +
+
+ {{ content }} +
+
+ + {% include footer.html %} + + + + diff --git a/_layouts/gridlay.html b/_layouts/gridlay.html new file mode 100644 index 000000000..456079409 --- /dev/null +++ b/_layouts/gridlay.html @@ -0,0 +1,6 @@ +--- +layout: default +--- +
+ {{ content }} +
diff --git a/_layouts/homelay.html b/_layouts/homelay.html new file mode 100644 index 000000000..916a91642 --- /dev/null +++ b/_layouts/homelay.html @@ -0,0 +1,12 @@ +--- +layout: default +--- + +
+

PERSUE: PrivatE, Reliable, and SecUrE Computing Lab

+ + {{ content }} +
+
+ {% include news.html %} +
diff --git a/_layouts/index.html b/_layouts/index.html deleted file mode 100644 index f1c2418d9..000000000 --- a/_layouts/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: default ---- -{% include header.html %} - - {{ content }} - -{% include testimonial.html %} -{% include clients.html %} \ No newline at end of file diff --git a/_layouts/main.css b/_layouts/main.css deleted file mode 100644 index fdb584620..000000000 --- a/_layouts/main.css +++ /dev/null @@ -1 +0,0 @@ -{% include css/main.css %} diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 000000000..ce233ad75 --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,14 @@ +--- +layout: default +--- +
+ +
+

{{ page.title }}

+
+ +
+ {{ content }} +
+ +
diff --git a/_layouts/piclay.html b/_layouts/piclay.html new file mode 100644 index 000000000..3a7ddcaa4 --- /dev/null +++ b/_layouts/piclay.html @@ -0,0 +1,7 @@ +--- +layout: default +--- + +
+ {{ content }} +
diff --git a/_layouts/portfolio.html b/_layouts/portfolio.html deleted file mode 100644 index 93de58a43..000000000 --- a/_layouts/portfolio.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: default ---- -{% include wrap.html %} - - {{ content }} - -{% include portfolio.html %} \ No newline at end of file diff --git a/_layouts/post.html b/_layouts/post.html index 614469e74..3a0fb52ec 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -1,31 +1,15 @@ --- layout: default --- +
-{% include wrap.html %} +
+

{{ page.title }}

+ +
-
-
- -
- -

-

{{ page.title }}

-

{{ page.date | date: "%b %-d, %Y" }}. | By: {{ page.author }}

- - {{ content }} +
+ {{ content }} +
-
- -
- - {% include sidebar.html %} - -
-
\ No newline at end of file +
diff --git a/_layouts/project.html b/_layouts/project.html deleted file mode 100644 index bb2b71dce..000000000 --- a/_layouts/project.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default ---- - -{% include wrap.html %} - -
-
- - {% include carousel.html %} - -
-
- - {{ content }} - -
-
-
-

Project Details

-
-

Date: {{ page.date | date: "%b %-d, %Y" }}

-

Author: {{ page.author }}

-

Categories: {{ page.categories }}

-

Tagged: {{ page.tagged }}

-

Client: {{ page.client }}

-

Website: {{ page.website }}

-
-
-
- -{% include portfolio.html title="Related Works." limit=5 %} diff --git a/_layouts/publications.html b/_layouts/publications.html new file mode 100644 index 000000000..ac4e92cde --- /dev/null +++ b/_layouts/publications.html @@ -0,0 +1,6 @@ +--- +layout: default +--- +
+ {{ content }} +
diff --git a/_layouts/question.html b/_layouts/question.html deleted file mode 100644 index 31324b99e..000000000 --- a/_layouts/question.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default -wrap_title: 'Frequently asked' ---- - -{% include wrap.html %} - -
-
- -
- -

{{ page.title }}

- - {{ content }} - -
- -
- - {% include sidebar.html %} - -
-
\ No newline at end of file diff --git a/_layouts/research.html b/_layouts/research.html new file mode 100644 index 000000000..1fb65e773 --- /dev/null +++ b/_layouts/research.html @@ -0,0 +1,6 @@ +--- +layout: default +--- +
+ {{ content }} +
diff --git a/_layouts/team.html b/_layouts/team.html new file mode 100644 index 000000000..c17f2cea8 --- /dev/null +++ b/_layouts/team.html @@ -0,0 +1,7 @@ +--- +layout: default +--- +
+ {{ content }} +
+ diff --git a/_layouts/textlay.html b/_layouts/textlay.html new file mode 100644 index 000000000..a2bbf5e3f --- /dev/null +++ b/_layouts/textlay.html @@ -0,0 +1,6 @@ +--- +layout: default +--- +
+ {{ content }} +
diff --git a/_pages/.DS_Store b/_pages/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/_pages/.DS_Store differ diff --git a/_pages/404.md b/_pages/404.md new file mode 100755 index 000000000..4dfa48449 --- /dev/null +++ b/_pages/404.md @@ -0,0 +1,10 @@ +--- +title: "Page Not Found" +layout: default +excerpt: "Page not found. Your pixels are in another canvas." +sitemap: false +permalink: /404.html +--- + +Sorry, but the page you were trying to view does not exist. + diff --git a/_pages/Instrumente.md b/_pages/Instrumente.md new file mode 100644 index 000000000..c42bff23a --- /dev/null +++ b/_pages/Instrumente.md @@ -0,0 +1,24 @@ +--- +title: "PERSUE Lab - Instrumente" +layout: textlay +excerpt: "AOA" +sitemap: false +permalink: /instrumente.html +--- + + +## Hier paar Bilder von laufenden und abgeschlossenen Projekten + +### Rastertunnelmikroskop "Dome" +![image](/images/inst/DomePlan.jpg){:class="img-responsive"} +![image](/images/inst/domescrew.jpg){:class="img-responsive" width="75%"} +![image](/images/inst/build.jpg){:class="img-responsive" width="35%"} +![image](/images/inst/dometest.jpg){:class="img-responsive"} +![image](/images/inst/domebig.jpg){:class="img-responsive"} + +### Rastertunnelmikroskop "STM4" +![image](/images/inst/STM4.jpg){:class="img-responsive"} + + +### Rastertunnelmikroskop "Tama" +![image](/images/inst/tama.jpeg){:class="img-responsive" width="75%"} diff --git a/_pages/aboutwebsite.md b/_pages/aboutwebsite.md new file mode 100644 index 000000000..bd18ba1d9 --- /dev/null +++ b/_pages/aboutwebsite.md @@ -0,0 +1,50 @@ +--- +title: "About the website" +layout: textlay +excerpt: "About the website." +sitemap: false +permalink: /aboutwebsite.html +--- + +# Use this website as a template for your academic research group + +This website is powered by [Jekyll](https://jekyllrb.com) and uses some [Bootstrap](http://www.getbootstrap.com) and [Bootswatch](http://www.bootswatch.com). We tried to make it simple yet adaptable, so that it is easy for you to re-use it for your purpose. + +### Getting started +All pages are written in [markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) for easy editing, and [Jekyll](https://jekyllrb.com) uses Liquid for the data-driven pages. The publicaion list, news items, and group members are stored as `.yml` data sheets (plain text) in the `_data folder`, so that one can update the website easily. The pages are in the `_pages` folder. Updating and maintaining is easy using [Github](http://www.github.com) (not worldpress-easy, but there are other advantages (see e.g. [this](https://www.taniarascia.com/make-a-static-website-with-jekyll/), or [this](http://www.webdesignerdepot.com/2015/11/jekyll-against-the-rest-of-the-world/)). [Jekyll](https://jekyllrb.com) takes all the markdown and data files, and creates beautiful `html` files in the `_site` folder. + +If you never used [Jekyll](https://jekyllrb.com), read the [wikipedia article](https://en.wikipedia.org/wiki/Jekyll_(software)) article and check out [their website](https://jekyllrb.com). Same for [Github](http://www.github.com), which will host your first website draft. + +Create and open a github account, go to [our repository](https://github.com/allanlab/allanlab), and click 'fork'. This is now your copy of the website, and you can change and adapt it as you want. You don't have to link to us or mention us (but of course we appreciate it). Then change the name of the repository to "your_username" and the name of the branch to "gh-pages". Your website is now automatically published under *your_username.github.io/your_username/*. Except that it probably still looks like our website. + +To modify the webpage, you can either do everything on on github.com (go to a file, click "edit", then "commit", "push"), or install [Jekyll](https://jekyllrb.com) on your computer and play with your local copy that you sync with the branch on github.com. The former is much easier in the beginning, but a bit less convenient once you start rewriting everythint. To get it to work on your computer (and to learn a bit more about [Jekyll](https://jekyllrb.com)), [here](https://www.taniarascia.com/make-a-static-website-with-jekyll/) and [here](https://scotch.io/tutorials/getting-started-with-jekyll-plus-a-free-bootstrap-3-starter-theme) are tutorials on how to use it and how set it up locally. Also, consider using the [Github desktop app](http://www.desktop.github.com), I found it helpful. + +### Customization +Now let's make this *your* website. + +First, go to the `news.ylm`, `publist.ylm`, and `team.ylm` files in the `_data` folder and insert your own data into the data fields. Watch out: [Jekyll](https://jekyllrb.com) is quite strict about extra or missing spaces etc. Adhere to the format. In the beginning, test each change: commit, push, and check the published website. + +For publications, you can add a "1" in the highlight field, then it will be featured prominently. You can add important news items (red, "news1"), and less important news items (blue, "news2"). + +For the news items, just keep adding them. The first 10 will be displayed on the 'home' page. + +For the `team.ylm` file + +Next, change the content of all files in the `_pages` folder. To change the title in the homepage, go to `homelay.html` in the `_layout` folder. + +Lastly, change the footer and perhaps header appropriately (in `_include`). + +You might also want to change the style or theme. I imported style files (in sass) from Bootstrap/Bootwatch, you can replace them with your own (in the `_sass directory`). For small changes, just work on the override stuff in the `main.sass` file in the `CSS` folder. Or change some variables in the `_variables.sass` file, like the background color etc. + +As said, [Jekyll](https://jekyllrb.com) takes all the markdown and data files, and creates beautiful `html` files in the `_site` folder.In the end, either upload these files to your server, or buy yourself a domain and check the instructions on github on how to host it there. + +### Copyright / credit + +You can use this template as you please. You don't have to link to us or mention us (but of course we appreciate it). We also welcome it if you send us an email with a link to your website, perhaps we'll publish a list here at some point. + +Comments welcome. + +Code released under the MIT License. + + + diff --git a/_pages/allnews.md b/_pages/allnews.md new file mode 100644 index 000000000..28cb6741d --- /dev/null +++ b/_pages/allnews.md @@ -0,0 +1,13 @@ +--- +title: "News" +layout: textlay +excerpt: "PERSUE Lab at Arizona State University." +sitemap: false +permalink: /allnews.html +--- + +# News + +{% for article in site.data.news %} +

{{ article.date }}
{{ article.headline | markdownify}}

+{% endfor %} diff --git a/_pages/home.md b/_pages/home.md new file mode 100644 index 000000000..329c4c61e --- /dev/null +++ b/_pages/home.md @@ -0,0 +1,69 @@ +--- +title: "PERSUE: PrivatE, Reliable and SecUrE Computing Lab - Home" +layout: homelay +excerpt: "PERSUE: PrivatE, Reliable and SecUrE Computing Lab." +sitemap: false +permalink: / +--- + +**News: New Research Funding!** We received $.5M funding from the National Science Foundation to research on a new visualization technique to teach data privacy. +More details to follow. + + + + +We aim to enhance the privacy, security, and reliability of computing technologies. Our research activities identify and understand privacy, security, and reliability issues with information technologies and explore mitigation strategies toward a safer technology ecosystem. We take a human-centered perspective to understand the problem space while combining techniques from AI and Machine Learning, Internet Measurement, Cognitive Psychology, and Statistical Causal Inference methodologies to solve the identified problems. Our research has been supported by the National Science Foundation and the Air Force Office of Scientific Research. + + **We are looking for passionate new PhD students, Postdocs, and Master students to join the team** [(more info)]({{ site.url }}{{ site.baseurl }}/vacancies) **!** + + + + + diff --git a/_pages/openings.md b/_pages/openings.md new file mode 100644 index 000000000..1ef6ea891 --- /dev/null +++ b/_pages/openings.md @@ -0,0 +1,9 @@ +--- +title: "PERSUE Lab - Vacancies" +layout: textlay +excerpt: "Openings" +sitemap: false +permalink: /vacancies +--- + + diff --git a/_pages/pictures.md b/_pages/pictures.md new file mode 100644 index 000000000..95332e6f7 --- /dev/null +++ b/_pages/pictures.md @@ -0,0 +1,78 @@ +--- +title: "PERSUE Lab - Pictures" +layout: piclay +excerpt: "PERSUE Lab -- Pictures" +permalink: /pictures/ +--- + +# Pictures +Jump to: [Leiden](#leiden), [ETHZ](#ethz), [Cornell](#cornell), [St Andrews](#st-andrews) + + +## Leiden + +#### Timelapse of our STM assembling [(see LION news item)](https://www.physics.leidenuniv.nl/index.php?id=11573&news=867&type=lion&ln=EN): + + +#### Gallery +(Right-click *'view image'* to see a larger image.) +{% assign number_printed = 0 %} +{% for pic in site.data.pictures_Leiden %} + +{% assign even_odd = number_printed | modulo: 4 %} + +{% if even_odd == 0 %} +
+{% endif %} + +
+ +
+ +{% assign number_printed = number_printed | plus: 1 %} + +{% if even_odd > 2 %} +
+{% endif %} + + +{% endfor %} + +{% assign even_odd = number_printed | modulo: 4 %} +{% if even_odd == 1 %} + +{% endif %} + +{% if even_odd == 2 %} + +{% endif %} + +{% if even_odd == 3 %} + +{% endif %} + +

 

+ +First advertisement. +
+ +
+ + +## ETHZ +From the [group of Andreas Wallraff](http://www.qudev.ethz.ch/). +
+ +
+ +## Cornell +From the [group of Seamus JC Davis](http://davisgroup.lassp.cornell.edu). +
+ +
+ +## St Andrews +From the [group of Felix Baumberger](http://dqmp.unige.ch/baumberger/) (now at University of Geneva). +
+ +
diff --git a/_pages/publications.md b/_pages/publications.md new file mode 100644 index 000000000..bc0cda2e8 --- /dev/null +++ b/_pages/publications.md @@ -0,0 +1,62 @@ +--- +title: "PERSUE Lab - Publications" +layout: gridlay +excerpt: "PERSUE Lab -- Publications." +sitemap: false +permalink: /publications/ +--- + + +# Publications + +## Group highlights + +**At the end of this page, you can find the [full list of publications and patents](#full-list-of-publications). All papers are also available on [arXiv](https://arxiv.org/search/).** + +{% assign number_printed = 0 %} +{% for publi in site.data.publist %} + +{% assign even_odd = number_printed | modulo: 2 %} +{% if publi.highlight == 1 %} + +{% if even_odd == 0 %} +
+{% endif %} + +
+
+ {{ publi.title }} + +

{{ publi.description }}

+

{{ publi.authors }}

+

{{ publi.link.display }}

+

{{ publi.news1 }}

+

{{ publi.news2 }}

+
+
+ +{% assign number_printed = number_printed | plus: 1 %} + +{% if even_odd == 1 %} +
+{% endif %} + +{% endif %} +{% endfor %} + +{% assign even_odd = number_printed | modulo: 2 %} +{% if even_odd == 1 %} + +{% endif %} + +

 

+ + +## Full List of publications + +{% for publi in site.data.publist %} + + {{ publi.title }}
+ {{ publi.authors }}
{{ publi.link.display }} + +{% endfor %} diff --git a/_pages/research.md b/_pages/research.md new file mode 100644 index 000000000..7f4912827 --- /dev/null +++ b/_pages/research.md @@ -0,0 +1,14 @@ +--- +title: "PERSUE Lab - Research" +layout: textlay +excerpt: "PERSUE Lab -- Research" +sitemap: false +permalink: /research/ +--- + +# Research + +Updating soon -- stay put. (Aug 11 2023) + + + diff --git a/_pages/team.md b/_pages/team.md new file mode 100644 index 000000000..659ea1dd0 --- /dev/null +++ b/_pages/team.md @@ -0,0 +1,166 @@ +--- +title: "PERSUE Lab - Team" +layout: gridlay +excerpt: "PERSUE Lab: Team members" +sitemap: false +permalink: /team/ +--- + +# Group Members + + + +## Staff +{% assign number_printed = 0 %} +{% for member in site.data.team_members %} + +{% assign even_odd = number_printed | modulo: 2 %} + +{% if even_odd == 0 %} +
+{% endif %} + +
+ +

{{ member.name }}

+ {{ member.info }} +
    + + {% if member.number_educ == 1 %} +
  • {{ member.education1 }}
  • + {% endif %} + + {% if member.number_educ == 2 %} +
  • {{ member.education1 | markdownify}}
  • +
  • {{ member.education2 | markdownify}}
  • + {% endif %} + + {% if member.number_educ == 3 %} +
  • {{ member.education1 }}
  • +
  • {{ member.education2 }}
  • +
  • {{ member.education3 }}
  • + {% endif %} + + {% if member.number_educ == 4 %} +
  • {{ member.education1 }}
  • +
  • {{ member.education2 }}
  • +
  • {{ member.education3 }}
  • +
  • {{ member.education4 }}
  • + {% endif %} + + {% if member.number_educ == 5 %} +
  • {{ member.education1 }}
  • +
  • {{ member.education2 }}
  • +
  • {{ member.education3 }}
  • +
  • {{ member.education4 }}
  • +
  • {{ member.education5 }}
  • + {% endif %} + +
+
+ +{% assign number_printed = number_printed | plus: 1 %} + +{% if even_odd == 1 %} +
+{% endif %} + +{% endfor %} + +{% assign even_odd = number_printed | modulo: 2 %} +{% if even_odd == 1 %} + +{% endif %} + + + + +## Master and Bachelor Students +{% assign number_printed = 0 %} +{% for member in site.data.students %} + +{% assign even_odd = number_printed | modulo: 2 %} + +{% if even_odd == 0 %} +
+{% endif %} + +
+

{{ member.name }}

+ {{ member.info }} +
    + + {% if member.number_educ == 1 %} +
  • {{ member.education1 }}
  • + {% endif %} + + {% if member.number_educ == 2 %} +
  • {{ member.education1 }}
  • +
  • {{ member.education2 }}
  • + {% endif %} + + {% if member.number_educ == 3 %} +
  • {{ member.education1 }}
  • +
  • {{ member.education2 }}
  • +
  • {{ member.education3 }}
  • + {% endif %} + + {% if member.number_educ == 4 %} +
  • {{ member.education1 }}
  • +
  • {{ member.education2 }}
  • +
  • {{ member.education3 }}
  • +
  • {{ member.education4 }}
  • + {% endif %} + +
+
+ +{% assign number_printed = number_printed | plus: 1 %} + +{% if even_odd == 1 %} +
+{% endif %} + +{% endfor %} + +{% assign even_odd = number_printed | modulo: 2 %} +{% if even_odd == 1 %} + +{% endif %} + + +## Alumni + +{% assign number_printed = 0 %} +{% for member in site.data.alumni_members %} + +{% assign even_odd = number_printed | modulo: 2 %} + +{% if even_odd == 0 %} +
+{% endif %} + +
+ +

{{ member.name }}

+ {{ member.duration }}
Role: {{ member.info }}
+
    + +
+
+ +{% assign number_printed = number_printed | plus: 1 %} + +{% if even_odd == 1 %} +
+{% endif %} + +{% endfor %} + +{% assign even_odd = number_printed | modulo: 2 %} +{% if even_odd == 1 %} + +{% endif %} + + + diff --git a/_plugins/markdown.rb b/_plugins/markdown.rb new file mode 100644 index 000000000..727bf4027 --- /dev/null +++ b/_plugins/markdown.rb @@ -0,0 +1,23 @@ +=begin + Jekyll tag to include Markdown text from _includes directory preprocessing with Liquid. + Usage: + {% markdown %} + Dependency: + - kramdown +=end +module Jekyll + class MarkdownTag < Liquid::Tag + def initialize(tag_name, text, tokens) + super + @text = text.strip + end + require "kramdown" + def render(context) + tmpl = File.read File.join Dir.pwd, "_includes", @text + site = context.registers[:site] + tmpl = (Liquid::Template.parse tmpl).render site.site_payload + html = Kramdown::Document.new(tmpl).to_html + end + end +end +Liquid::Template.register_tag('markdown', Jekyll::MarkdownTag) diff --git a/_posts/2014-04-25-logo-design-contest-starts-now.markdown b/_posts/2014-04-25-logo-design-contest-starts-now.markdown deleted file mode 100644 index 404763acd..000000000 --- a/_posts/2014-04-25-logo-design-contest-starts-now.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: post -title: "Logo design contest starts now" -date: 2014-04-25 16:54:46 -author: Admin -categories: -- blog -- Tips&Tricks -- Code-Snippets -img: post03.jpg -thumb: thumb03.jpg ---- - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. - -It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at [Hampden-Sydney College][hampden] in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source.< - -Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -####Why do we use it? -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. - - ->Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. - -[hampden]: https://github.com/jekyll/jekyll diff --git a/_posts/2014-04-25-our-new-logo-is-here.markdown b/_posts/2014-04-25-our-new-logo-is-here.markdown deleted file mode 100644 index 77323efa3..000000000 --- a/_posts/2014-04-25-our-new-logo-is-here.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: post -title: "Our new logo is here" -date: 2014-04-25 16:54:46 -author: Admin -categories: -- blog -- Web-Design -- Development -img: post02.jpg -thumb: thumb02.jpg ---- - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. - -It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at [Hampden-Sydney College][hampden] in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source.< - -Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -####Why do we use it? -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. - - ->Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. - -[hampden]: https://github.com/jekyll/jekyll \ No newline at end of file diff --git a/_posts/2014-04-25-time-to-change-your-apps.markdown b/_posts/2014-04-25-time-to-change-your-apps.markdown deleted file mode 100644 index 3560233ed..000000000 --- a/_posts/2014-04-25-time-to-change-your-apps.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: post -title: "Time to change your apps" -date: 2014-04-25 16:54:46 -author: Admin -categories: -- blog -- Wordpress -- Photoshop -img: post01.jpg -thumb: thumb01.jpg ---- - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. - -It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at [Hampden-Sydney College][hampden] in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source.< - -Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -####Why do we use it? -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. - - ->Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. - -[hampden]: https://github.com/jekyll/jekyll \ No newline at end of file diff --git a/_posts/question/2014-04-15-your-project-name.markdown b/_posts/question/2014-04-15-your-project-name.markdown deleted file mode 100644 index 41dc9cc5a..000000000 --- a/_posts/question/2014-04-15-your-project-name.markdown +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: question -title: "Why did the Chicken cross the road?" -date: 2014-04-25 16:54:46 -author: Marcel Newman -categories: -- question ---- -To get to the other side. \ No newline at end of file diff --git a/_projects/2014-04-15-your-project-name.markdown b/_projects/2014-04-15-your-project-name.markdown deleted file mode 100644 index 6b05b3d2e..000000000 --- a/_projects/2014-04-15-your-project-name.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: project -title: "YOUR PROJECT NAME" -date: 2014-04-25 16:54:46 -author: Marcel Newman -categories: -- project -img: portfolio_10.jpg -thumb: thumb02.jpg -carousel: -- single01.jpg -- single02.jpg -- single03.jpg -tagged: Flat, UI, Development -client: Wonder Corp. -website: http://blacktie.co ---- -#### YOUR PROJECT NAME -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. - -#### Our Proposal -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. diff --git a/_projects/2014-04-16-your-project-name.markdown b/_projects/2014-04-16-your-project-name.markdown deleted file mode 100644 index c09a583ec..000000000 --- a/_projects/2014-04-16-your-project-name.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: project -title: "YOUR PROJECT NAME" -date: 2014-04-25 16:54:46 -author: Marcel Newman -categories: -- project -img: portfolio_01.jpg -thumb: thumb02.jpg -carousel: -- single01.jpg -- single02.jpg -- single03.jpg -tagged: Flat, UI, Development -client: Wonder Corp. -website: http://blacktie.co ---- -#### YOUR PROJECT NAME -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. - -#### Our Proposal -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. diff --git a/_projects/2014-04-17-your-project-name.markdown b/_projects/2014-04-17-your-project-name.markdown deleted file mode 100644 index 39f44a0c7..000000000 --- a/_projects/2014-04-17-your-project-name.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: project -title: "YOUR PROJECT NAME" -date: 2014-04-25 16:54:46 -author: Marcel Newman -categories: -- project -img: portfolio_02.jpg -thumb: thumb02.jpg -carousel: -- single01.jpg -- single02.jpg -- single03.jpg -tagged: Flat, UI, Development -client: Wonder Corp. -website: http://blacktie.co ---- -#### YOUR PROJECT NAME -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. - -#### Our Proposal -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. diff --git a/_projects/2014-04-18-your-project-name.markdown b/_projects/2014-04-18-your-project-name.markdown deleted file mode 100644 index dee4eb537..000000000 --- a/_projects/2014-04-18-your-project-name.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: project -title: "YOUR PROJECT NAME" -date: 2014-04-25 16:54:46 -author: Marcel Newman -categories: -- project -img: portfolio_03.jpg -thumb: thumb02.jpg -carousel: -- single01.jpg -- single02.jpg -- single03.jpg -tagged: Flat, UI, Development -client: Wonder Corp. -website: http://blacktie.co ---- -#### YOUR PROJECT NAME -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. - -#### Our Proposal -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. diff --git a/_projects/2014-04-19-your-project-name.markdown b/_projects/2014-04-19-your-project-name.markdown deleted file mode 100644 index dd655c828..000000000 --- a/_projects/2014-04-19-your-project-name.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: project -title: "YOUR PROJECT NAME" -date: 2014-04-25 16:54:46 -author: Marcel Newman -categories: -- project -img: portfolio_04.jpg -thumb: thumb02.jpg -carousel: -- single01.jpg -- single02.jpg -- single03.jpg -tagged: Flat, UI, Development -client: Wonder Corp. -website: http://blacktie.co ---- -#### YOUR PROJECT NAME -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. - -#### Our Proposal -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. diff --git a/_projects/2014-04-20-your-project-name.markdown b/_projects/2014-04-20-your-project-name.markdown deleted file mode 100644 index c4758a293..000000000 --- a/_projects/2014-04-20-your-project-name.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: project -title: "YOUR PROJECT NAME" -date: 2014-04-25 16:54:46 -author: Marcel Newman -categories: -- project -img: portfolio_05.jpg -thumb: thumb02.jpg -carousel: -- single01.jpg -- single02.jpg -- single03.jpg -tagged: Flat, UI, Development -client: Wonder Corp. -website: http://blacktie.co ---- -#### YOUR PROJECT NAME -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. - -#### Our Proposal -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. diff --git a/_projects/2014-04-21-your-project-name.markdown b/_projects/2014-04-21-your-project-name.markdown deleted file mode 100644 index adbdace90..000000000 --- a/_projects/2014-04-21-your-project-name.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: project -title: "YOUR PROJECT NAME" -date: 2014-04-25 16:54:46 -author: Marcel Newman -categories: -- project -img: portfolio_06.jpg -thumb: thumb02.jpg -carousel: -- single01.jpg -- single02.jpg -- single03.jpg -tagged: Flat, UI, Development -client: Wonder Corp. -website: http://blacktie.co ---- -#### YOUR PROJECT NAME -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. - -#### Our Proposal -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. diff --git a/_projects/2014-04-22-your-project-name.markdown b/_projects/2014-04-22-your-project-name.markdown deleted file mode 100644 index 1bf679380..000000000 --- a/_projects/2014-04-22-your-project-name.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: project -title: "YOUR PROJECT NAME" -date: 2014-04-25 16:54:46 -author: Marcel Newman -categories: -- project -img: portfolio_07.jpg -thumb: thumb02.jpg -carousel: -- single01.jpg -- single02.jpg -- single03.jpg -tagged: Flat, UI, Development -client: Wonder Corp. -website: http://blacktie.co ---- -#### YOUR PROJECT NAME -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. - -#### Our Proposal -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. diff --git a/_projects/2014-04-23-your-project-name.markdown b/_projects/2014-04-23-your-project-name.markdown deleted file mode 100644 index 1bd01be79..000000000 --- a/_projects/2014-04-23-your-project-name.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: project -title: "YOUR PROJECT NAME" -date: 2014-04-25 16:54:46 -author: Marcel Newman -categories: -- project -img: portfolio_08.jpg -thumb: thumb02.jpg -carousel: -- single01.jpg -- single02.jpg -- single03.jpg -tagged: Flat, UI, Development -client: Wonder Corp. -website: http://blacktie.co ---- -#### YOUR PROJECT NAME -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. - -#### Our Proposal -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. diff --git a/_projects/2014-04-25-your-project-name.markdown b/_projects/2014-04-25-your-project-name.markdown deleted file mode 100644 index 85f68b259..000000000 --- a/_projects/2014-04-25-your-project-name.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: project -title: "YOUR PROJECT NAME" -date: 2014-04-25 16:54:46 -author: Marcel Newman -categories: -- project -img: portfolio_09.jpg -thumb: thumb02.jpg -carousel: -- single01.jpg -- single02.jpg -- single03.jpg -tagged: Flat, UI, Development -client: Wonder Corp. -website: http://blacktie.co ---- -#### YOUR PROJECT NAME -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. - -#### Our Proposal -It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. diff --git a/_sass/.DS_Store b/_sass/.DS_Store new file mode 100644 index 000000000..4068988b2 Binary files /dev/null and b/_sass/.DS_Store differ diff --git a/_sass/_bootstrap.scss b/_sass/_bootstrap.scss new file mode 100644 index 000000000..9babefd59 --- /dev/null +++ b/_sass/_bootstrap.scss @@ -0,0 +1,58 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// Core variables and mixins +@import "bootstrap/variables"; +@import "bootstrap/mixins"; + +// Reset and dependencies +@import "bootstrap/normalize"; +@import "bootstrap/print"; +@import "bootstrap/glyphicons"; + +// Core CSS +@import "bootstrap/scaffolding"; +@import "bootstrap/type"; +@import "bootstrap/code"; +@import "bootstrap/grid"; +@import "bootstrap/tables"; +@import "bootstrap/forms"; +@import "bootstrap/buttons"; + +// Components +@import "bootstrap/component-animations"; +@import "bootstrap/dropdowns"; +@import "bootstrap/button-groups"; +@import "bootstrap/input-groups"; +@import "bootstrap/navs"; +@import "bootstrap/navbar"; +@import "bootstrap/breadcrumbs"; +@import "bootstrap/pagination"; +@import "bootstrap/pager"; +@import "bootstrap/labels"; +@import "bootstrap/badges"; +@import "bootstrap/jumbotron"; +@import "bootstrap/thumbnails"; +@import "bootstrap/alerts"; +@import "bootstrap/progress-bars"; +@import "bootstrap/media"; +@import "bootstrap/list-group"; +@import "bootstrap/panels"; +@import "bootstrap/responsive-embed"; +@import "bootstrap/wells"; +@import "bootstrap/close"; + +// Components w/ JavaScript +@import "bootstrap/modals"; +@import "bootstrap/tooltip"; +@import "bootstrap/popovers"; +@import "bootstrap/carousel"; + +// Utility classes +@import "bootstrap/utilities"; +@import "bootstrap/responsive-utilities"; +@import "bootstrap/bootswatch"; + diff --git a/_sass/bootstrap/_alerts.scss b/_sass/bootstrap/_alerts.scss new file mode 100644 index 000000000..7d1e1fddd --- /dev/null +++ b/_sass/bootstrap/_alerts.scss @@ -0,0 +1,73 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: $alert-padding; + margin-bottom: $line-height-computed; + border: 1px solid transparent; + border-radius: $alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + // Specified for the h4 to prevent conflicts of changing $headings-color + color: inherit; + } + + // Provide class for links that match alerts + .alert-link { + font-weight: $alert-link-font-weight; + } + + // Improve alignment and spacing of inner content + > p, + > ul { + margin-bottom: 0; + } + + > p + p { + margin-top: 5px; + } +} + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. +.alert-dismissible { + padding-right: ($alert-padding + 20); + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +.alert-success { + @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); +} + +.alert-info { + @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); +} + +.alert-warning { + @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); +} + +.alert-danger { + @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); +} diff --git a/_sass/bootstrap/_badges.scss b/_sass/bootstrap/_badges.scss new file mode 100644 index 000000000..70002e085 --- /dev/null +++ b/_sass/bootstrap/_badges.scss @@ -0,0 +1,68 @@ +// +// Badges +// -------------------------------------------------- + + +// Base class +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: $font-size-small; + font-weight: $badge-font-weight; + color: $badge-color; + line-height: $badge-line-height; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: $badge-bg; + border-radius: $badge-border-radius; + + // Empty badges collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for badges in buttons + .btn & { + position: relative; + top: -1px; + } + + .btn-xs &, + .btn-group-xs > .btn & { + top: 0; + padding: 1px 5px; + } + + // [converter] extracted a& to a.badge + + // Account for badges in navs + .list-group-item.active > &, + .nav-pills > .active > a > & { + color: $badge-active-color; + background-color: $badge-active-bg; + } + + .list-group-item > & { + float: right; + } + + .list-group-item > & + & { + margin-right: 5px; + } + + .nav-pills > li > a > & { + margin-left: 3px; + } +} + +// Hover state, but only for links +a.badge { + &:hover, + &:focus { + color: $badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } +} diff --git a/_sass/bootstrap/_bootswatch.scss b/_sass/bootstrap/_bootswatch.scss new file mode 100644 index 000000000..2d35f5229 --- /dev/null +++ b/_sass/bootstrap/_bootswatch.scss @@ -0,0 +1,523 @@ +// Lumen 3.3.7 +// Bootswatch +// ----------------------------------------------------- + +$web-font-path: "https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic" !default; +@import url($web-font-path); + +@mixin shadow($width: 4px){ + border-width: 0 1px $width 1px; +} + +// Navbar ===================================================================== + +.navbar { + @include shadow(); +} + +// Buttons ==================================================================== + +.btn { + padding: ($padding-base-vertical + 2) $padding-base-horizontal $padding-base-vertical; + @include shadow(); + font-size: 12px; + font-weight: bold; + text-transform: uppercase; + + &:hover { + margin-top: 1px; + border-bottom-width: 3px; + } + + &:active { + margin-top: 2px; + border-bottom-width: 2px; + @include box-shadow(none); + } + + &-lg, + &-group-lg > .btn { + padding: ($padding-large-vertical + 2) $padding-large-horizontal $padding-large-vertical; + line-height: 15px; + } + + &-sm, + &-group-sm > .btn { + padding: ($padding-small-vertical + 2) $padding-small-horizontal $padding-small-vertical; + } + + &-xs, + &-group-xs > .btn { + padding: ($padding-xs-vertical + 2) $padding-xs-horizontal $padding-xs-vertical; + } + + &-default:hover, + &-default:focus, + &-group.open .dropdown-toggle.btn-default { + background-color: $btn-default-bg; + border-color: $btn-default-border; + } + + &-primary:hover, + &-primary:focus, + &-group.open .dropdown-toggle.btn-primary { + background-color: $btn-primary-bg; + border-color: $btn-primary-border; + } + + &-success:hover, + &-success:focus, + &-group.open .dropdown-toggle.btn-success { + background-color: $btn-success-bg; + border-color: $btn-success-border; + } + + &-info:hover, + &-info:focus, + &-group.open .dropdown-toggle.btn-info { + background-color: $btn-info-bg; + border-color: $btn-info-border; + } + + &-warning:hover, + &-warning:focus, + &-group.open .dropdown-toggle.btn-warning { + background-color: $btn-warning-bg; + border-color: $btn-warning-border; + } + + &-danger:hover, + &-danger:focus, + &-group.open .dropdown-toggle.btn-danger { + background-color: $btn-danger-bg; + border-color: $btn-danger-border; + } + + &-group.open .dropdown-toggle { + @include box-shadow(none); + } +} + +.navbar-btn { + &:hover { + margin-top: 8px + } + + &:active { + margin-top: 9px + } + + &.btn-sm { + &:hover { + margin-top: 11px + } + + &:active { + margin-top: 12px + } + } + + &.btn-xs { + &:hover { + margin-top: 15px + } + + &:active { + margin-top: 16px + } + } +} + +.btn-group-vertical { + .btn + .btn { + &:hover { + border-top-width: 1px; + } + + &:active { + border-top-width: 2px; + } + } +} + +// Typography ================================================================= + +.text-primary, +.text-primary:hover { + color: $brand-primary; +} + +.text-success, +.text-success:hover { + color: $brand-success; +} + +.text-danger, +.text-danger:hover { + color: $brand-danger; +} + +.text-warning, +.text-warning:hover { + color: $brand-warning; +} + +.text-info, +.text-info:hover { + color: $brand-info; +} + +// Tables ===================================================================== + +table, +.table { + + a:not(.btn) { + text-decoration: underline; + } + + .dropdown-menu a { + text-decoration: none; + } + + .success, + .warning, + .danger, + .info { + color: #fff; + + a:not(.btn) { + color: #fff; + } + } + + &:not(.table-bordered) { + > thead > tr > th, + > tbody > tr > th, + > tfoot > tr > th, + > thead > tr > td, + > tbody > tr > td, + > tfoot > tr > td { + border-color: transparent; + } + } +} + +// Forms ====================================================================== + +.form-control { + @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075)); +} + +label { + font-weight: normal; +} + +.has-warning { + .help-block, + .control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline, + &.radio label, + &.checkbox label, + &.radio-inline label, + &.checkbox-inline label, + .form-control-feedback { + color: $brand-warning; + } + + .form-control, + .form-control:focus { + border: 1px solid $brand-warning; + @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075)); + } + + .input-group-addon { + border: 1px solid $brand-warning; + } +} + +.has-error { + .help-block, + .control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline, + &.radio label, + &.checkbox label, + &.radio-inline label, + &.checkbox-inline label, + .form-control-feedback { + color: $brand-danger; + } + + .form-control, + .form-control:focus { + border: 1px solid $brand-danger; + @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075)); + } + + .input-group-addon { + border: 1px solid $brand-danger; + } +} + +.has-success { + .help-block, + .control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline, + &.radio label, + &.checkbox label, + &.radio-inline label, + &.checkbox-inline label, + .form-control-feedback { + color: $brand-success; + } + + .form-control, + .form-control:focus { + border: 1px solid $brand-success; + @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075)); + } + + .input-group-addon { + border: 1px solid $brand-success; + } +} + +// Navs ======================================================================= + +.nav { + .open > a, + .open > a:hover, + .open > a:focus { + border-color: transparent; + } +} + +.nav-tabs { + + > li > a { + margin-top: 6px; + border-color: $navbar-default-border; + color: $gray-dark; + @include transition(all 0.2s ease-in-out); + } + + > li > a:hover, + > li > a:focus, + > li.active > a, + > li.active > a:hover, + > li.active > a:focus, + .open > a, + .open > a:hover, + .open > a:focus { + padding-bottom: ($padding-large-vertical + 3); + margin-top: 0; + } + + .open > a, + .open > a:hover, + .open > a:focus { + border-color: $navbar-default-border; + } + + > li.disabled > a:hover, + > li.disabled > a:focus { + padding-top: 10px; + padding-bottom: 10px; + margin-top: 6px; + } + + &.nav-justified > li { + vertical-align: bottom; + } +} + +.dropdown-menu { + margin-top: 0; + @include shadow(); + border-top-width: 1px; + @include box-shadow(none); +} + +.breadcrumb { + border-color: darken($breadcrumb-bg, 5%); + border-style: solid; + @include shadow(); +} + +.pagination, +.pager { + + > li > a, + > li > span { + position: relative; + top: 0; + @include shadow(); + color: $pagination-color; + font-size: 12px; + font-weight: bold; + text-transform: uppercase; + + &:hover { + top: 1px; + border-bottom-width: 3px; + } + + &:active { + top: 2px; + border-bottom-width: 2px; + } + } + + > .disabled > a, + > .disabled > span { + + &:hover { + top: 0; + @include shadow(); + } + + &:active { + top: 0; + @include shadow(); + } + } +} + +.pager { + + > li > a, + > li > span, + > .disabled > a, + > .disabled > span { + + &, + &:hover, + &:active { + border-left-width: 2px; + border-right-width: 2px; + } + } +} + +// Indicators ================================================================= + +.close { + color: #fff; + text-decoration: none; + opacity: 0.4; + + &:hover, + &:focus { + color: #fff; + opacity: 1; + } +} + +.alert { + @include shadow(); + + .alert-link { + font-weight: normal; + color: #fff; + text-decoration: underline; + } +} + +.label { + font-weight: normal; +} + +// Progress bars ============================================================== + +.progress { + border: 1px solid $navbar-default-border; + @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.1)); + + &-bar { + @include box-shadow(inset 0 -4px 0 rgba(0, 0, 0, 0.15)); + } +} + +// Containers ================================================================= + +.well { + border: 1px solid $navbar-default-border; + @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.05)); +} + +a.list-group-item { + + &.active, + &.active:hover, + &.active:focus { + border-color: $list-group-border; + } + + &-success { + &.active { + background-color: $state-success-bg; + } + + &.active:hover, + &.active:focus { + background-color: darken($state-success-bg, 5%); + } + } + + &-warning { + &.active { + background-color: $state-warning-bg; + } + + &.active:hover, + &.active:focus { + background-color: darken($state-warning-bg, 5%); + } + } + + &-danger { + &.active { + background-color: $state-danger-bg; + } + + &.active:hover, + &.active:focus { + background-color: darken($state-danger-bg, 5%); + } + } +} + +.jumbotron { + border: 1px solid $navbar-default-border; + @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.05)); +} + +.panel { + border: 1px solid $navbar-default-border; + @include shadow(); + + &-default { + .close { + color: $text-color; + } + } +} + +.modal { + .close { + color: $text-color; + } +} + +.popover { + color: $text-color; +} diff --git a/_sass/bootstrap/_breadcrumbs.scss b/_sass/bootstrap/_breadcrumbs.scss new file mode 100644 index 000000000..b61f0c731 --- /dev/null +++ b/_sass/bootstrap/_breadcrumbs.scss @@ -0,0 +1,28 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; + margin-bottom: $line-height-computed; + list-style: none; + background-color: $breadcrumb-bg; + border-radius: $border-radius-base; + + > li { + display: inline-block; + + + li:before { + // [converter] Workaround for https://github.com/sass/libsass/issues/1115 + $nbsp: "\00a0"; + content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space + padding: 0 5px; + color: $breadcrumb-color; + } + } + + > .active { + color: $breadcrumb-active-color; + } +} diff --git a/_sass/bootstrap/_button-groups.scss b/_sass/bootstrap/_button-groups.scss new file mode 100644 index 000000000..4b385f569 --- /dev/null +++ b/_sass/bootstrap/_button-groups.scss @@ -0,0 +1,244 @@ +// +// Button groups +// -------------------------------------------------- + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:focus, + &:active, + &.active { + z-index: 2; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: -1px; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + margin-left: -5px; // Offset the first child's margin + @include clearfix; + + .btn, + .btn-group, + .input-group { + float: left; + } + > .btn, + > .btn-group, + > .input-group { + margin-left: 5px; + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + @include border-right-radius(0); + } +} +// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + @include border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + @include border-right-radius(0); + } +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + @include border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-xs > .btn { @extend .btn-xs; } +.btn-group-sm > .btn { @extend .btn-sm; } +.btn-group-lg > .btn { @extend .btn-lg; } + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + @include box-shadow(none); + } +} + + +// Reposition the caret +.btn .caret { + margin-left: 0; +} +// Carets in other button sizes +.btn-lg .caret { + border-width: $caret-width-large $caret-width-large 0; + border-bottom-width: 0; +} +// Upside down carets for .dropup +.dropup .btn-lg .caret { + border-width: 0 $caret-width-large $caret-width-large; +} + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + > .btn, + > .btn-group, + > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + + // Clear floats so dropdown menus can be properly placed + > .btn-group { + @include clearfix; + > .btn { + float: none; + } + } + + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } +} + +.btn-group-vertical > .btn { + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + &:first-child:not(:last-child) { + @include border-top-radius($btn-border-radius-base); + @include border-bottom-radius(0); + } + &:last-child:not(:first-child) { + @include border-top-radius(0); + @include border-bottom-radius($btn-border-radius-base); + } +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + @include border-bottom-radius(0); + } +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + @include border-top-radius(0); +} + + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + > .btn, + > .btn-group { + float: none; + display: table-cell; + width: 1%; + } + > .btn-group .btn { + width: 100%; + } + + > .btn-group .dropdown-menu { + left: auto; + } +} + + +// Checkbox and radio options +// +// In order to support the browser's form validation feedback, powered by the +// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use +// `display: none;` or `visibility: hidden;` as that also hides the popover. +// Simply visually hiding the inputs via `opacity` would leave them clickable in +// certain cases which is prevented by using `clip` and `pointer-events`. +// This way, we ensure a DOM element is visible to position the popover from. +// +// See https://github.com/twbs/bootstrap/pull/12794 and +// https://github.com/twbs/bootstrap/pull/14559 for more information. + +[data-toggle="buttons"] { + > .btn, + > .btn-group > .btn { + input[type="radio"], + input[type="checkbox"] { + position: absolute; + clip: rect(0,0,0,0); + pointer-events: none; + } + } +} diff --git a/_sass/bootstrap/_buttons.scss b/_sass/bootstrap/_buttons.scss new file mode 100644 index 000000000..6452b709f --- /dev/null +++ b/_sass/bootstrap/_buttons.scss @@ -0,0 +1,168 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +.btn { + display: inline-block; + margin-bottom: 0; // For input.btn + font-weight: $btn-font-weight; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + white-space: nowrap; + @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base); + @include user-select(none); + + &, + &:active, + &.active { + &:focus, + &.focus { + @include tab-focus; + } + } + + &:hover, + &:focus, + &.focus { + color: $btn-default-color; + text-decoration: none; + } + + &:active, + &.active { + outline: 0; + background-image: none; + @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: $cursor-disabled; + @include opacity(.65); + @include box-shadow(none); + } + + // [converter] extracted a& to a.btn +} + +a.btn { + &.disabled, + fieldset[disabled] & { + pointer-events: none; // Future-proof disabling of clicks on `` elements + } +} + + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); +} +.btn-primary { + @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); +} +// Success appears as green +.btn-success { + @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); +} +// Info appears as blue-green +.btn-info { + @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); +} +// Warning appears as orange +.btn-warning { + @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); +} +// Danger and error appear as red +.btn-danger { + @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + color: $link-color; + font-weight: normal; + border-radius: 0; + + &, + &:active, + &.active, + &[disabled], + fieldset[disabled] & { + background-color: transparent; + @include box-shadow(none); + } + &, + &:hover, + &:focus, + &:active { + border-color: transparent; + } + &:hover, + &:focus { + color: $link-hover-color; + text-decoration: $link-hover-decoration; + background-color: transparent; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: $btn-link-disabled-color; + text-decoration: none; + } + } +} + + +// Button Sizes +// -------------------------------------------------- + +.btn-lg { + // line-height: ensure even-numbered height of button next to large input + @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large); +} +.btn-sm { + // line-height: ensure proper height of button next to small input + @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); +} +.btn-xs { + @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/_sass/bootstrap/_carousel.scss b/_sass/bootstrap/_carousel.scss new file mode 100644 index 000000000..823476ac6 --- /dev/null +++ b/_sass/bootstrap/_carousel.scss @@ -0,0 +1,270 @@ +// +// Carousel +// -------------------------------------------------- + + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; + + > .item { + display: none; + position: relative; + @include transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + @include img-responsive; + line-height: 1; + } + + // WebKit CSS3 transforms for supported devices + @media all and (transform-3d), (-webkit-transform-3d) { + @include transition-transform(0.6s ease-in-out); + @include backface-visibility(hidden); + @include perspective(1000px); + + &.next, + &.active.right { + @include translate3d(100%, 0, 0); + left: 0; + } + &.prev, + &.active.left { + @include translate3d(-100%, 0, 0); + left: 0; + } + &.next.left, + &.prev.right, + &.active { + @include translate3d(0, 0, 0); + left: 0; + } + } + } + + > .active, + > .next, + > .prev { + display: block; + } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: $carousel-control-width; + @include opacity($carousel-control-opacity); + font-size: $carousel-control-font-size; + color: $carousel-control-color; + text-align: center; + text-shadow: $carousel-text-shadow; + background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug + // We can't have this transition here because WebKit cancels the carousel + // animation if you trip this while in the middle of another animation. + + // Set gradients for backgrounds + &.left { + @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.0001)); + } + &.right { + left: auto; + right: 0; + @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.0001)); + } + + // Hover/focus state + &:hover, + &:focus { + outline: 0; + color: $carousel-control-color; + text-decoration: none; + @include opacity(.9); + } + + // Toggles + .icon-prev, + .icon-next, + .glyphicon-chevron-left, + .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; + } + .icon-prev, + .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .icon-next, + .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; + } + + + .icon-prev { + &:before { + content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) + } + } + .icon-next { + &:before { + content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) + } + } +} + +// Optional indicator pips +// +// Add an unordered list with the following class and add a list item for each +// slide your carousel holds. + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; + + li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid $carousel-indicator-border-color; + border-radius: 10px; + cursor: pointer; + + // IE8-9 hack for event handling + // + // Internet Explorer 8-9 does not support clicks on elements without a set + // `background-color`. We cannot use `filter` since that's not viewed as a + // background color by the browser. Thus, a hack is needed. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer + // + // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we + // set alpha transparency for the best results possible. + background-color: #000 \9; // IE8 + background-color: rgba(0,0,0,0); // IE9 + } + .active { + margin: 0; + width: 12px; + height: 12px; + background-color: $carousel-indicator-active-bg; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: $carousel-caption-color; + text-align: center; + text-shadow: $carousel-text-shadow; + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + + +// Scale up controls for tablets and up +@media screen and (min-width: $screen-sm-min) { + + // Scale up the controls a smidge + .carousel-control { + .glyphicon-chevron-left, + .glyphicon-chevron-right, + .icon-prev, + .icon-next { + width: ($carousel-control-font-size * 1.5); + height: ($carousel-control-font-size * 1.5); + margin-top: ($carousel-control-font-size / -2); + font-size: ($carousel-control-font-size * 1.5); + } + .glyphicon-chevron-left, + .icon-prev { + margin-left: ($carousel-control-font-size / -2); + } + .glyphicon-chevron-right, + .icon-next { + margin-right: ($carousel-control-font-size / -2); + } + } + + // Show and left align the captions + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + + // Move up the indicators + .carousel-indicators { + bottom: 20px; + } +} diff --git a/_sass/bootstrap/_close.scss b/_sass/bootstrap/_close.scss new file mode 100644 index 000000000..3b74d8a97 --- /dev/null +++ b/_sass/bootstrap/_close.scss @@ -0,0 +1,36 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: ($font-size-base * 1.5); + font-weight: $close-font-weight; + line-height: 1; + color: $close-color; + text-shadow: $close-text-shadow; + @include opacity(.2); + + &:hover, + &:focus { + color: $close-color; + text-decoration: none; + cursor: pointer; + @include opacity(.5); + } + + // [converter] extracted button& to button.close +} + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} diff --git a/_sass/bootstrap/_code.scss b/_sass/bootstrap/_code.scss new file mode 100644 index 000000000..caa5f0630 --- /dev/null +++ b/_sass/bootstrap/_code.scss @@ -0,0 +1,69 @@ +// +// Code (inline and block) +// -------------------------------------------------- + + +// Inline and block code styles +code, +kbd, +pre, +samp { + font-family: $font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: $code-color; + background-color: $code-bg; + border-radius: $border-radius-base; +} + +// User input typically entered via keyboard +kbd { + padding: 2px 4px; + font-size: 90%; + color: $kbd-color; + background-color: $kbd-bg; + border-radius: $border-radius-small; + box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); + + kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; + } +} + +// Blocks of code +pre { + display: block; + padding: (($line-height-computed - 1) / 2); + margin: 0 0 ($line-height-computed / 2); + font-size: ($font-size-base - 1); // 14px to 13px + line-height: $line-height-base; + word-break: break-all; + word-wrap: break-word; + color: $pre-color; + background-color: $pre-bg; + border: 1px solid $pre-border-color; + border-radius: $border-radius-base; + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: $pre-scrollable-max-height; + overflow-y: scroll; +} diff --git a/_sass/bootstrap/_component-animations.scss b/_sass/bootstrap/_component-animations.scss new file mode 100644 index 000000000..ca3b43ca7 --- /dev/null +++ b/_sass/bootstrap/_component-animations.scss @@ -0,0 +1,37 @@ +// +// Component animations +// -------------------------------------------------- + +// Heads up! +// +// We don't use the `.opacity()` mixin here since it causes a bug with text +// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. + +.fade { + opacity: 0; + @include transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + + &.in { display: block; } + // [converter] extracted tr&.in to tr.collapse.in + // [converter] extracted tbody&.in to tbody.collapse.in +} + +tr.collapse.in { display: table-row; } + +tbody.collapse.in { display: table-row-group; } + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + @include transition-property(height, visibility); + @include transition-duration(.35s); + @include transition-timing-function(ease); +} diff --git a/_sass/bootstrap/_dropdowns.scss b/_sass/bootstrap/_dropdowns.scss new file mode 100644 index 000000000..aac84597a --- /dev/null +++ b/_sass/bootstrap/_dropdowns.scss @@ -0,0 +1,216 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: $caret-width-base dashed; + border-top: $caret-width-base solid \9; // IE8 + border-right: $caret-width-base solid transparent; + border-left: $caret-width-base solid transparent; +} + +// The dropdown wrapper (div) +.dropup, +.dropdown { + position: relative; +} + +// Prevent the focus on the dropdown toggle when closing dropdowns +.dropdown-toggle:focus { + outline: 0; +} + +// The dropdown menu (ul) +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: $zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + font-size: $font-size-base; + text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) + background-color: $dropdown-bg; + border: 1px solid $dropdown-fallback-border; // IE8 fallback + border: 1px solid $dropdown-border; + border-radius: $border-radius-base; + @include box-shadow(0 6px 12px rgba(0,0,0,.175)); + background-clip: padding-box; + + // Aligns the dropdown menu to right + // + // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + @include nav-divider($dropdown-divider-bg); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: $line-height-base; + color: $dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + } +} + +// Hover/Focus state +.dropdown-menu > li > a { + &:hover, + &:focus { + text-decoration: none; + color: $dropdown-link-hover-color; + background-color: $dropdown-link-hover-bg; + } +} + +// Active state +.dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: $dropdown-link-active-color; + text-decoration: none; + outline: 0; + background-color: $dropdown-link-active-bg; + } +} + +// Disabled state +// +// Gray out text and ensure the hover/focus state remains gray + +.dropdown-menu > .disabled > a { + &, + &:hover, + &:focus { + color: $dropdown-link-disabled-color; + } + + // Nuke hover/focus effects + &:hover, + &:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + @include reset-filter; + cursor: $cursor-disabled; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Menu positioning +// +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown +// menu with the parent. +.dropdown-menu-right { + left: auto; // Reset the default from `.dropdown-menu` + right: 0; +} +// With v3, we enabled auto-flipping if you have a dropdown within a right +// aligned nav component. To enable the undoing of that, we provide an override +// to restore the default dropdown menu alignment. +// +// This is only for left-aligning a dropdown menu within a `.navbar-right` or +// `.pull-right` nav component. +.dropdown-menu-left { + left: 0; + right: auto; +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: $font-size-small; + line-height: $line-height-base; + color: $dropdown-header-color; + white-space: nowrap; // as with > li > a +} + +// Backdrop to catch body clicks on mobile, etc. +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: ($zindex-dropdown - 10); +} + +// Right aligned dropdowns +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? + +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: $caret-width-base dashed; + border-bottom: $caret-width-base solid \9; // IE8 + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; + } +} + + +// Component alignment +// +// Reiterate per navbar.less and the modified component alignment there. + +@media (min-width: $grid-float-breakpoint) { + .navbar-right { + .dropdown-menu { + right: 0; left: auto; + } + // Necessary for overrides of the default right aligned menu. + // Will remove come v4 in all likelihood. + .dropdown-menu-left { + left: 0; right: auto; + } + } +} diff --git a/_sass/bootstrap/_forms.scss b/_sass/bootstrap/_forms.scss new file mode 100644 index 000000000..ac26a6ad8 --- /dev/null +++ b/_sass/bootstrap/_forms.scss @@ -0,0 +1,617 @@ +// +// Forms +// -------------------------------------------------- + + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + padding: 0; + margin: 0; + border: 0; + // Chrome and Firefox set a `min-width: min-content;` on fieldsets, + // so we reset that to ensure it behaves more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359. + min-width: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: $line-height-computed; + font-size: ($font-size-base * 1.5); + line-height: inherit; + color: $legend-color; + border: 0; + border-bottom: 1px solid $legend-border-color; +} + +label { + display: inline-block; + max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) + margin-bottom: 5px; + font-weight: bold; +} + + +// Normalize form controls +// +// While most of our form styles require extra classes, some basic normalization +// is required to ensure optimum display with or without those classes to better +// address browser inconsistencies. + +// Override content-box in Normalize (* isn't specific enough) +input[type="search"] { + @include box-sizing(border-box); +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; // IE8-9 + line-height: normal; +} + +input[type="file"] { + display: block; +} + +// Make range inputs behave like textual form controls +input[type="range"] { + display: block; + width: 100%; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Focus for file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + @include tab-focus; +} + +// Adjust output element +output { + display: block; + padding-top: ($padding-base-vertical + 1); + font-size: $font-size-base; + line-height: $line-height-base; + color: $input-color; +} + + +// Common form controls +// +// Shared size and type resets for form controls. Apply `.form-control` to any +// of the following form controls: +// +// select +// textarea +// input[type="text"] +// input[type="password"] +// input[type="datetime"] +// input[type="datetime-local"] +// input[type="date"] +// input[type="month"] +// input[type="time"] +// input[type="week"] +// input[type="number"] +// input[type="email"] +// input[type="url"] +// input[type="search"] +// input[type="tel"] +// input[type="color"] + +.form-control { + display: block; + width: 100%; + height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: $padding-base-vertical $padding-base-horizontal; + font-size: $font-size-base; + line-height: $line-height-base; + color: $input-color; + background-color: $input-bg; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid $input-border; + border-radius: $input-border-radius; // Note: This has no effect on s in CSS. + @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s); + + // Customize the `:focus` state to imitate native WebKit styles. + @include form-control-focus; + + // Placeholder + @include placeholder; + + // Unstyle the caret on `` background color +$input-bg: #fff !default; +//** `` background color +$input-bg-disabled: $gray-lighter !default; + +//** Text color for ``s +$input-color: $gray !default; +//** `` border color +$input-border: #ccc !default; + +// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4 +//** Default `.form-control` border radius +// This has no effect on ``s in CSS. +$input-border-radius: $border-radius-base !default; +//** Large `.form-control` border radius +$input-border-radius-large: $border-radius-large !default; +//** Small `.form-control` border radius +$input-border-radius-small: $border-radius-small !default; + +//** Border color for inputs on focus +$input-border-focus: #66afe9 !default; + +//** Placeholder text color +$input-color-placeholder: #999 !default; + +//** Default `.form-control` height +$input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default; +//** Large `.form-control` height +$input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default; +//** Small `.form-control` height +$input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default; + +//** `.form-group` margin +$form-group-margin-bottom: 15px !default; + +$legend-color: $gray-dark !default; +$legend-border-color: #e5e5e5 !default; + +//** Background color for textual input addons +$input-group-addon-bg: $gray-lighter !default; +//** Border color for textual input addons +$input-group-addon-border-color: $input-border !default; + +//** Disabled cursor for form controls and buttons. +$cursor-disabled: not-allowed !default; + + +//== Dropdowns +// +//## Dropdown menu container and contents. + +//** Background for the dropdown menu. +$dropdown-bg: #fff !default; +//** Dropdown menu `border-color`. +$dropdown-border: rgba(0,0,0,.15) !default; +//** Dropdown menu `border-color` **for IE8**. +$dropdown-fallback-border: #ccc !default; +//** Divider color for between dropdown items. +$dropdown-divider-bg: #e5e5e5 !default; + +//** Dropdown link text color. +$dropdown-link-color: $gray-dark !default; +//** Hover color for dropdown links. +$dropdown-link-hover-color: darken($gray-dark, 5%) !default; +//** Hover background for dropdown links. +$dropdown-link-hover-bg: #f5f5f5 !default; + +//** Active dropdown menu item text color. +$dropdown-link-active-color: $component-active-color !default; +//** Active dropdown menu item background color. +$dropdown-link-active-bg: $component-active-bg !default; + +//** Disabled dropdown menu item background color. +$dropdown-link-disabled-color: $gray-light !default; + +//** Text color for headers within dropdown menus. +$dropdown-header-color: $gray-light !default; + +//** Deprecated `$dropdown-caret-color` as of v3.1.0 +$dropdown-caret-color: #000 !default; + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +$zindex-navbar: 1000 !default; +$zindex-dropdown: 1000 !default; +$zindex-popover: 1060 !default; +$zindex-tooltip: 1070 !default; +$zindex-navbar-fixed: 1030 !default; +$zindex-modal-background: 1040 !default; +$zindex-modal: 1050 !default; + + +//== Media queries breakpoints +// +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +// Extra small screen / phone +//** Deprecated `$screen-xs` as of v3.0.1 +$screen-xs: 480px !default; +//** Deprecated `$screen-xs-min` as of v3.2.0 +$screen-xs-min: $screen-xs !default; +//** Deprecated `$screen-phone` as of v3.0.1 +$screen-phone: $screen-xs-min !default; + +// Small screen / tablet +//** Deprecated `$screen-sm` as of v3.0.1 +$screen-sm: 768px !default; +$screen-sm-min: $screen-sm !default; +//** Deprecated `$screen-tablet` as of v3.0.1 +$screen-tablet: $screen-sm-min !default; + +// Medium screen / desktop +//** Deprecated `$screen-md` as of v3.0.1 +$screen-md: 992px !default; +$screen-md-min: $screen-md !default; +//** Deprecated `$screen-desktop` as of v3.0.1 +$screen-desktop: $screen-md-min !default; + +// Large screen / wide desktop +//** Deprecated `$screen-lg` as of v3.0.1 +$screen-lg: 1200px !default; +$screen-lg-min: $screen-lg !default; +//** Deprecated `$screen-lg-desktop` as of v3.0.1 +$screen-lg-desktop: $screen-lg-min !default; + +// So media queries don't overlap when required, provide a maximum +$screen-xs-max: ($screen-sm-min - 1) !default; +$screen-sm-max: ($screen-md-min - 1) !default; +$screen-md-max: ($screen-lg-min - 1) !default; + + +//== Grid system +// +//## Define your custom responsive grid. + +//** Number of columns in the grid. +$grid-columns: 12 !default; +//** Padding between columns. Gets divided in half for the left and right. +$grid-gutter-width: 30px !default; +// Navbar collapse +//** Point at which the navbar becomes uncollapsed. +$grid-float-breakpoint: $screen-sm-min !default; +//** Point at which the navbar begins collapsing. +$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default; + + +//== Container sizes +// +//## Define the maximum width of `.container` for different screen sizes. + +// Small screen / tablet +$container-tablet: (720px + $grid-gutter-width) !default; +//** For `$screen-sm-min` and up. +$container-sm: $container-tablet !default; + +// Medium screen / desktop +$container-desktop: (940px + $grid-gutter-width) !default; +//** For `$screen-md-min` and up. +$container-md: $container-desktop !default; + +// Large screen / wide desktop +$container-large-desktop: (1140px + $grid-gutter-width) !default; +//** For `$screen-lg-min` and up. +$container-lg: $container-large-desktop !default; + + +//== Navbar +// +//## + +// Basics of a navbar +$navbar-height: 50px !default; +$navbar-margin-bottom: $line-height-computed !default; +$navbar-border-radius: $border-radius-base !default; +$navbar-padding-horizontal: floor(($grid-gutter-width / 2)) !default; +$navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) !default; +$navbar-collapse-max-height: 340px !default; + +$navbar-default-color: #777 !default; +$navbar-default-bg: #f8f8f8 !default; +$navbar-default-border: darken($navbar-default-bg, 6.5%) !default; + +// Navbar links +$navbar-default-link-color: #777 !default; +$navbar-default-link-hover-color: #333 !default; +$navbar-default-link-hover-bg: transparent !default; +$navbar-default-link-active-color: #555 !default; +$navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) !default; +$navbar-default-link-disabled-color: #ccc !default; +$navbar-default-link-disabled-bg: transparent !default; + +// Navbar brand label +$navbar-default-brand-color: $navbar-default-link-color !default; +$navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%) !default; +$navbar-default-brand-hover-bg: transparent !default; + +// Navbar toggle +$navbar-default-toggle-hover-bg: #ddd !default; +$navbar-default-toggle-icon-bar-bg: #888 !default; +$navbar-default-toggle-border-color: #ddd !default; + + +//=== Inverted navbar +// Reset inverted navbar basics +$navbar-inverse-color: lighten($gray-light, 15%) !default; +$navbar-inverse-bg: #222 !default; +$navbar-inverse-border: darken($navbar-inverse-bg, 10%) !default; + +// Inverted navbar links +$navbar-inverse-link-color: lighten($gray-light, 15%) !default; +$navbar-inverse-link-hover-color: #fff !default; +$navbar-inverse-link-hover-bg: transparent !default; +$navbar-inverse-link-active-color: $navbar-inverse-link-hover-color !default; +$navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) !default; +$navbar-inverse-link-disabled-color: #444 !default; +$navbar-inverse-link-disabled-bg: transparent !default; + +// Inverted navbar brand label +$navbar-inverse-brand-color: $navbar-inverse-link-color !default; +$navbar-inverse-brand-hover-color: #fff !default; +$navbar-inverse-brand-hover-bg: transparent !default; + +// Inverted navbar toggle +$navbar-inverse-toggle-hover-bg: #333 !default; +$navbar-inverse-toggle-icon-bar-bg: #fff !default; +$navbar-inverse-toggle-border-color: #333 !default; + + +//== Navs +// +//## + +//=== Shared nav styles +$nav-link-padding: 10px 15px !default; +$nav-link-hover-bg: $gray-lighter !default; + +$nav-disabled-link-color: $gray-light !default; +$nav-disabled-link-hover-color: $gray-light !default; + +//== Tabs +$nav-tabs-border-color: #ddd !default; + +$nav-tabs-link-hover-border-color: $gray-lighter !default; + +$nav-tabs-active-link-hover-bg: $body-bg !default; +$nav-tabs-active-link-hover-color: $gray !default; +$nav-tabs-active-link-hover-border-color: #ddd !default; + +$nav-tabs-justified-link-border-color: #ddd !default; +$nav-tabs-justified-active-link-border-color: $body-bg !default; + +//== Pills +$nav-pills-border-radius: $border-radius-base !default; +$nav-pills-active-link-hover-bg: $component-active-bg !default; +$nav-pills-active-link-hover-color: $component-active-color !default; + + +//== Pagination +// +//## + +$pagination-color: $link-color !default; +$pagination-bg: #fff !default; +$pagination-border: #ddd !default; + +$pagination-hover-color: $link-hover-color !default; +$pagination-hover-bg: $gray-lighter !default; +$pagination-hover-border: #ddd !default; + +$pagination-active-color: #fff !default; +$pagination-active-bg: $brand-primary !default; +$pagination-active-border: $brand-primary !default; + +$pagination-disabled-color: $gray-light !default; +$pagination-disabled-bg: #fff !default; +$pagination-disabled-border: #ddd !default; + + +//== Pager +// +//## + +$pager-bg: $pagination-bg !default; +$pager-border: $pagination-border !default; +$pager-border-radius: 15px !default; + +$pager-hover-bg: $pagination-hover-bg !default; + +$pager-active-bg: $pagination-active-bg !default; +$pager-active-color: $pagination-active-color !default; + +$pager-disabled-color: $pagination-disabled-color !default; + + +//== Jumbotron +// +//## + +$jumbotron-padding: 30px !default; +$jumbotron-color: inherit !default; +$jumbotron-bg: $gray-lighter !default; +$jumbotron-heading-color: inherit !default; +$jumbotron-font-size: ceil(($font-size-base * 1.5)) !default; +$jumbotron-heading-font-size: ceil(($font-size-base * 4.5)) !default; + + +//== Form states and alerts +// +//## Define colors for form feedback states and, by default, alerts. + +$state-success-text: #3c763d !default; +$state-success-bg: #dff0d8 !default; +$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) !default; + +$state-info-text: #31708f !default; +$state-info-bg: #d9edf7 !default; +$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) !default; + +$state-warning-text: #8a6d3b !default; +$state-warning-bg: #fcf8e3 !default; +$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) !default; + +$state-danger-text: #a94442 !default; +$state-danger-bg: #f2dede !default; +$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) !default; + + +//== Tooltips +// +//## + +//** Tooltip max width +$tooltip-max-width: 200px !default; +//** Tooltip text color +$tooltip-color: #fff !default; +//** Tooltip background color +$tooltip-bg: #000 !default; +$tooltip-opacity: .9 !default; + +//** Tooltip arrow width +$tooltip-arrow-width: 5px !default; +//** Tooltip arrow color +$tooltip-arrow-color: $tooltip-bg !default; + + +//== Popovers +// +//## + +//** Popover body background color +$popover-bg: #fff !default; +//** Popover maximum width +$popover-max-width: 276px !default; +//** Popover border color +$popover-border-color: rgba(0,0,0,.2) !default; +//** Popover fallback border color +$popover-fallback-border-color: #ccc !default; + +//** Popover title background color +$popover-title-bg: darken($popover-bg, 3%) !default; + +//** Popover arrow width +$popover-arrow-width: 10px !default; +//** Popover arrow color +$popover-arrow-color: $popover-bg !default; + +//** Popover outer arrow width +$popover-arrow-outer-width: ($popover-arrow-width + 1) !default; +//** Popover outer arrow color +$popover-arrow-outer-color: fade_in($popover-border-color, 0.05) !default; +//** Popover outer arrow fallback color +$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) !default; + + +//== Labels +// +//## + +//** Default label background color +$label-default-bg: $gray-light !default; +//** Primary label background color +$label-primary-bg: $brand-primary !default; +//** Success label background color +$label-success-bg: $brand-success !default; +//** Info label background color +$label-info-bg: $brand-info !default; +//** Warning label background color +$label-warning-bg: $brand-warning !default; +//** Danger label background color +$label-danger-bg: $brand-danger !default; + +//** Default label text color +$label-color: #fff !default; +//** Default text color of a linked label +$label-link-hover-color: #fff !default; + + +//== Modals +// +//## + +//** Padding applied to the modal body +$modal-inner-padding: 15px !default; + +//** Padding applied to the modal title +$modal-title-padding: 15px !default; +//** Modal title line-height +$modal-title-line-height: $line-height-base !default; + +//** Background color of modal content area +$modal-content-bg: #fff !default; +//** Modal content border color +$modal-content-border-color: rgba(0,0,0,.2) !default; +//** Modal content border color **for IE8** +$modal-content-fallback-border-color: #999 !default; + +//** Modal backdrop background color +$modal-backdrop-bg: #000 !default; +//** Modal backdrop opacity +$modal-backdrop-opacity: .5 !default; +//** Modal header border color +$modal-header-border-color: #e5e5e5 !default; +//** Modal footer border color +$modal-footer-border-color: $modal-header-border-color !default; + +$modal-lg: 900px !default; +$modal-md: 600px !default; +$modal-sm: 300px !default; + + +//== Alerts +// +//## Define alert colors, border radius, and padding. + +$alert-padding: 15px !default; +$alert-border-radius: $border-radius-base !default; +$alert-link-font-weight: bold !default; + +$alert-success-bg: $state-success-bg !default; +$alert-success-text: $state-success-text !default; +$alert-success-border: $state-success-border !default; + +$alert-info-bg: $state-info-bg !default; +$alert-info-text: $state-info-text !default; +$alert-info-border: $state-info-border !default; + +$alert-warning-bg: $state-warning-bg !default; +$alert-warning-text: $state-warning-text !default; +$alert-warning-border: $state-warning-border !default; + +$alert-danger-bg: $state-danger-bg !default; +$alert-danger-text: $state-danger-text !default; +$alert-danger-border: $state-danger-border !default; + + +//== Progress bars +// +//## + +//** Background color of the whole progress component +$progress-bg: #f5f5f5 !default; +//** Progress bar text color +$progress-bar-color: #fff !default; +//** Variable for setting rounded corners on progress bar. +$progress-border-radius: $border-radius-base !default; + +//** Default progress bar color +$progress-bar-bg: $brand-primary !default; +//** Success progress bar color +$progress-bar-success-bg: $brand-success !default; +//** Warning progress bar color +$progress-bar-warning-bg: $brand-warning !default; +//** Danger progress bar color +$progress-bar-danger-bg: $brand-danger !default; +//** Info progress bar color +$progress-bar-info-bg: $brand-info !default; + + +//== List group +// +//## + +//** Background color on `.list-group-item` +$list-group-bg: #fff !default; +//** `.list-group-item` border color +$list-group-border: #ddd !default; +//** List group border radius +$list-group-border-radius: $border-radius-base !default; + +//** Background color of single list items on hover +$list-group-hover-bg: #f5f5f5 !default; +//** Text color of active list items +$list-group-active-color: $component-active-color !default; +//** Background color of active list items +$list-group-active-bg: $component-active-bg !default; +//** Border color of active list elements +$list-group-active-border: $list-group-active-bg !default; +//** Text color for content within active list items +$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default; + +//** Text color of disabled list items +$list-group-disabled-color: $gray-light !default; +//** Background color of disabled list items +$list-group-disabled-bg: $gray-lighter !default; +//** Text color for content within disabled list items +$list-group-disabled-text-color: $list-group-disabled-color !default; + +$list-group-link-color: #555 !default; +$list-group-link-hover-color: $list-group-link-color !default; +$list-group-link-heading-color: #333 !default; + + +//== Panels +// +//## + +$panel-bg: #fff !default; +$panel-body-padding: 15px !default; +$panel-heading-padding: 10px 15px !default; +$panel-footer-padding: $panel-heading-padding !default; +$panel-border-radius: $border-radius-base !default; + +//** Border color for elements within panels +$panel-inner-border: #ddd !default; +$panel-footer-bg: #f5f5f5 !default; + +$panel-default-text: $gray-dark !default; +$panel-default-border: #ddd !default; +$panel-default-heading-bg: #f5f5f5 !default; + +$panel-primary-text: #fff !default; +$panel-primary-border: $brand-primary !default; +$panel-primary-heading-bg: $brand-primary !default; + +$panel-success-text: $state-success-text !default; +$panel-success-border: $state-success-border !default; +$panel-success-heading-bg: $state-success-bg !default; + +$panel-info-text: $state-info-text !default; +$panel-info-border: $state-info-border !default; +$panel-info-heading-bg: $state-info-bg !default; + +$panel-warning-text: $state-warning-text !default; +$panel-warning-border: $state-warning-border !default; +$panel-warning-heading-bg: $state-warning-bg !default; + +$panel-danger-text: $state-danger-text !default; +$panel-danger-border: $state-danger-border !default; +$panel-danger-heading-bg: $state-danger-bg !default; + + +//== Thumbnails +// +//## + +//** Padding around the thumbnail image +$thumbnail-padding: 4px !default; +//** Thumbnail background color +$thumbnail-bg: $body-bg !default; +//** Thumbnail border color +$thumbnail-border: #ddd !default; +//** Thumbnail border radius +$thumbnail-border-radius: $border-radius-base !default; + +//** Custom text color for thumbnail captions +$thumbnail-caption-color: $text-color !default; +//** Padding around the thumbnail caption +$thumbnail-caption-padding: 9px !default; + + +//== Wells +// +//## + +$well-bg: #f5f5f5 !default; +$well-border: darken($well-bg, 7%) !default; + + +//== Badges +// +//## + +$badge-color: #fff !default; +//** Linked badge text color on hover +$badge-link-hover-color: #fff !default; +$badge-bg: $gray-light !default; + +//** Badge text color in active nav link +$badge-active-color: $link-color !default; +//** Badge background color in active nav link +$badge-active-bg: #fff !default; + +$badge-font-weight: bold !default; +$badge-line-height: 1 !default; +$badge-border-radius: 10px !default; + + +//== Breadcrumbs +// +//## + +$breadcrumb-padding-vertical: 8px !default; +$breadcrumb-padding-horizontal: 15px !default; +//** Breadcrumb background color +$breadcrumb-bg: #f5f5f5 !default; +//** Breadcrumb text color +$breadcrumb-color: #ccc !default; +//** Text color of current page in the breadcrumb +$breadcrumb-active-color: $gray-light !default; +//** Textual separator for between breadcrumb elements +$breadcrumb-separator: "/" !default; + + +//== Carousel +// +//## + +$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default; + +$carousel-control-color: #fff !default; +$carousel-control-width: 15% !default; +$carousel-control-opacity: .5 !default; +$carousel-control-font-size: 20px !default; + +$carousel-indicator-active-bg: #fff !default; +$carousel-indicator-border-color: #fff !default; + +$carousel-caption-color: #fff !default; + + +//== Close +// +//## + +$close-font-weight: bold !default; +$close-color: #000 !default; +$close-text-shadow: 0 1px 0 #fff !default; + + +//== Code +// +//## + +$code-color: #c7254e !default; +$code-bg: #f9f2f4 !default; + +$kbd-color: #fff !default; +$kbd-bg: #333 !default; + +$pre-bg: #f5f5f5 !default; +$pre-color: $gray-dark !default; +$pre-border-color: #ccc !default; +$pre-scrollable-max-height: 340px !default; + + +//== Type +// +//## + +//** Horizontal offset for forms and lists. +$component-offset-horizontal: 180px !default; +//** Text muted color +$text-muted: $gray-light !default; +//** Abbreviations and acronyms border color +$abbr-border-color: $gray-light !default; +//** Headings small color +$headings-small-color: $gray-light !default; +//** Blockquote small color +$blockquote-small-color: $gray-light !default; +//** Blockquote font size +$blockquote-font-size: ($font-size-base * 1.25) !default; +//** Blockquote border color +$blockquote-border-color: $gray-lighter !default; +//** Page header border color +$page-header-border-color: $gray-lighter !default; +//** Width of horizontal description list titles +$dl-horizontal-offset: $component-offset-horizontal !default; +//** Point at which .dl-horizontal becomes horizontal +$dl-horizontal-breakpoint: $grid-float-breakpoint !default; +//** Horizontal line color. +$hr-border: $gray-lighter !default; diff --git a/_sass/bootstrap/_variables.scss b/_sass/bootstrap/_variables.scss new file mode 100644 index 000000000..26e7e3bea --- /dev/null +++ b/_sass/bootstrap/_variables.scss @@ -0,0 +1,870 @@ +$bootstrap-sass-asset-helper: false !default; +// Lumen 3.3.7 +// Variables +// -------------------------------------------------- + + +//== Colors +// +//## Gray and brand colors for use across Bootstrap. + +$gray-base: #000 !default; +$gray-darker: lighten($gray-base, 13.5%) !default; // #222 +$gray-dark: lighten($gray-base, 20%) !default; // #333 +$gray: lighten($gray-base, 33.5%) !default; // #555 +$gray-light: lighten($gray-base, 60%) !default; // #999 +$gray-lighter: lighten($gray-base, 93.5%) !default; // #eee + +$brand-primary: #158CBA !default; +$brand-success: #28B62C !default; +$brand-info: #75CAEB !default; +$brand-warning: #FF851B !default; +$brand-danger: #FF4136 !default; + + +//== Scaffolding +// +//## Settings for some of the most global styles. + +//** Background color for ``. +$body-bg: #fff !default; +//** Global text color on ``. +$text-color: $gray !default; + +//** Global textual link color. +$link-color: $brand-primary !default; +//** Link hover color set via `darken()` function. +$link-hover-color: $link-color !default; +//** Link hover decoration. +$link-hover-decoration: underline !default; + + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. + +$font-family-sans-serif: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif !default; +$font-family-serif: Georgia, "Times New Roman", Times, serif !default; +//** Default monospace fonts for ``, ``, and `
`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          16px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the ``.
+$headings-font-family:    inherit !default;
+$headings-font-weight:    400 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          $gray-dark !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     7px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    13px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    4px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       5px !default;
+$border-radius-small:       2px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for ``s and ``s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            $gray-lighter !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              $gray !default;
+$btn-default-bg:                 $gray-lighter !default;
+$btn-default-border:             darken($btn-default-bg, 5%) !default;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             darken($btn-primary-bg, 5%) !default;
+
+$btn-success-color:              #fff !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             darken($btn-success-bg, 5%) !default;
+
+$btn-info-color:                 #fff !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                darken($btn-info-bg, 5%) !default;
+
+$btn-warning-color:              #fff !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             darken($btn-warning-bg, 5%) !default;
+
+$btn-danger-color:               #fff !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              darken($btn-danger-bg, 5%) !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `` background color
+$input-bg:                       #fff !default;
+//** `` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for ``s
+$input-color:                    $gray !default;
+//** `` border color
+$input-border:                   darken(#f8f8f8, 6.5%) !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on ``s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 4) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $gray-dark !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                $input-border !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            $gray-lighter !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-light !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      $gray-dark !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         transparent !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     $component-active-color !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-lighter !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             $text-color !default;
+$navbar-default-bg:                #f8f8f8 !default;
+$navbar-default-border:            $input-border !default;
+
+// Navbar links
+$navbar-default-link-color:                $gray-light !default;
+$navbar-default-link-hover-color:          $gray-dark !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         $navbar-default-link-hover-color !default;
+$navbar-default-link-active-bg:            transparent !default;
+$navbar-default-link-disabled-color:       $gray-lighter !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-hover-color !default;
+$navbar-default-brand-hover-color:         $navbar-default-link-hover-color !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           #fff !default;
+$navbar-default-toggle-icon-bar-bg:        $gray-light !default;
+$navbar-default-toggle-border-color:       $gray-lighter !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      $gray-light !default;
+$navbar-inverse-bg:                         #fff !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 $gray-light !default;
+$navbar-inverse-link-hover-color:           $gray-dark !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             transparent !default;
+$navbar-inverse-link-disabled-color:        $gray-lighter !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            $gray-lighter !default;
+$navbar-inverse-toggle-icon-bar-bg:         $gray-light !default;
+$navbar-inverse-toggle-border-color:        $gray-lighter !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         #fff !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     $navbar-default-border !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             #fff !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   $nav-tabs-border-color !default;
+
+$nav-tabs-justified-link-border-color:            $nav-tabs-border-color !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $btn-default-color !default;
+$pagination-bg:                        $btn-default-bg !default;
+$pagination-border:                    $btn-default-border !default;
+
+$pagination-hover-color:               $pagination-color !default;
+$pagination-hover-bg:                  $pagination-bg !default;
+$pagination-hover-border:              $pagination-border !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 $brand-primary !default;
+$pagination-active-border:             $btn-primary-border !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               $pagination-bg !default;
+$pagination-disabled-border:           $pagination-border !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $pagination-disabled-color !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   #fafafa !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #fff !default;
+$state-success-bg:               $brand-success !default;
+$state-success-border:           darken($state-success-bg, 4%) !default;
+
+$state-info-text:                #fff !default;
+$state-info-bg:                  $brand-info !default;
+$state-info-border:              darken($state-info-bg, 12%) !default;
+
+$state-warning-text:             #fff !default;
+$state-warning-bg:               $brand-warning !default;
+$state-warning-border:           darken($state-warning-bg, 5%) !default;
+
+$state-danger-text:              #fff !default;
+$state-danger-bg:                $brand-danger !default;
+$state-danger-border:            darken($state-danger-bg, 10%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray-light !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.05) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          $gray-lighter !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 $jumbotron-bg !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             $gray-lighter !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list elements
+$list-group-active-bg:          $component-active-bg !default;
+//** Background color of active list items
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          transparent !default;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        transparent !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        transparent !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        transparent !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           transparent !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        transparent !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         transparent !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            $gray-lighter !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     $jumbotron-bg !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $brand-primary !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           normal !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 $well-bg !default;
+//** Breadcrumb text color
+$breadcrumb-color:              $gray-light !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          ">" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .7 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #fff !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
diff --git a/_sass/bootstrap/_wells.scss b/_sass/bootstrap/_wells.scss
new file mode 100644
index 000000000..b8657118a
--- /dev/null
+++ b/_sass/bootstrap/_wells.scss
@@ -0,0 +1,29 @@
+//
+// Wells
+// --------------------------------------------------
+
+
+// Base class
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: $well-bg;
+  border: 1px solid $well-border;
+  border-radius: $border-radius-base;
+  @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
+  blockquote {
+    border-color: #ddd;
+    border-color: rgba(0,0,0,.15);
+  }
+}
+
+// Sizes
+.well-lg {
+  padding: 24px;
+  border-radius: $border-radius-large;
+}
+.well-sm {
+  padding: 9px;
+  border-radius: $border-radius-small;
+}
diff --git a/_sass/bootstrap/mixins/_alerts.scss b/_sass/bootstrap/mixins/_alerts.scss
new file mode 100644
index 000000000..3faf0b5a5
--- /dev/null
+++ b/_sass/bootstrap/mixins/_alerts.scss
@@ -0,0 +1,14 @@
+// Alerts
+
+@mixin alert-variant($background, $border, $text-color) {
+  background-color: $background;
+  border-color: $border;
+  color: $text-color;
+
+  hr {
+    border-top-color: darken($border, 5%);
+  }
+  .alert-link {
+    color: darken($text-color, 10%);
+  }
+}
diff --git a/_sass/bootstrap/mixins/_background-variant.scss b/_sass/bootstrap/mixins/_background-variant.scss
new file mode 100644
index 000000000..4c7769e13
--- /dev/null
+++ b/_sass/bootstrap/mixins/_background-variant.scss
@@ -0,0 +1,12 @@
+// Contextual backgrounds
+
+// [converter] $parent hack
+@mixin bg-variant($parent, $color) {
+  #{$parent} {
+    background-color: $color;
+  }
+  a#{$parent}:hover,
+  a#{$parent}:focus {
+    background-color: darken($color, 10%);
+  }
+}
diff --git a/_sass/bootstrap/mixins/_border-radius.scss b/_sass/bootstrap/mixins/_border-radius.scss
new file mode 100644
index 000000000..ce1949987
--- /dev/null
+++ b/_sass/bootstrap/mixins/_border-radius.scss
@@ -0,0 +1,18 @@
+// Single side border-radius
+
+@mixin border-top-radius($radius) {
+  border-top-right-radius: $radius;
+   border-top-left-radius: $radius;
+}
+@mixin border-right-radius($radius) {
+  border-bottom-right-radius: $radius;
+     border-top-right-radius: $radius;
+}
+@mixin border-bottom-radius($radius) {
+  border-bottom-right-radius: $radius;
+   border-bottom-left-radius: $radius;
+}
+@mixin border-left-radius($radius) {
+  border-bottom-left-radius: $radius;
+     border-top-left-radius: $radius;
+}
diff --git a/_sass/bootstrap/mixins/_buttons.scss b/_sass/bootstrap/mixins/_buttons.scss
new file mode 100644
index 000000000..b93f84b2c
--- /dev/null
+++ b/_sass/bootstrap/mixins/_buttons.scss
@@ -0,0 +1,65 @@
+// Button variants
+//
+// Easily pump out default styles, as well as :hover, :focus, :active,
+// and disabled options for all buttons
+
+@mixin button-variant($color, $background, $border) {
+  color: $color;
+  background-color: $background;
+  border-color: $border;
+
+  &:focus,
+  &.focus {
+    color: $color;
+    background-color: darken($background, 10%);
+        border-color: darken($border, 25%);
+  }
+  &:hover {
+    color: $color;
+    background-color: darken($background, 10%);
+        border-color: darken($border, 12%);
+  }
+  &:active,
+  &.active,
+  .open > &.dropdown-toggle {
+    color: $color;
+    background-color: darken($background, 10%);
+        border-color: darken($border, 12%);
+
+    &:hover,
+    &:focus,
+    &.focus {
+      color: $color;
+      background-color: darken($background, 17%);
+          border-color: darken($border, 25%);
+    }
+  }
+  &:active,
+  &.active,
+  .open > &.dropdown-toggle {
+    background-image: none;
+  }
+  &.disabled,
+  &[disabled],
+  fieldset[disabled] & {
+    &:hover,
+    &:focus,
+    &.focus {
+      background-color: $background;
+          border-color: $border;
+    }
+  }
+
+  .badge {
+    color: $background;
+    background-color: $color;
+  }
+}
+
+// Button sizes
+@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
+  padding: $padding-vertical $padding-horizontal;
+  font-size: $font-size;
+  line-height: $line-height;
+  border-radius: $border-radius;
+}
diff --git a/_sass/bootstrap/mixins/_center-block.scss b/_sass/bootstrap/mixins/_center-block.scss
new file mode 100644
index 000000000..e06fb5e27
--- /dev/null
+++ b/_sass/bootstrap/mixins/_center-block.scss
@@ -0,0 +1,7 @@
+// Center-align a block level element
+
+@mixin center-block() {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
diff --git a/_sass/bootstrap/mixins/_clearfix.scss b/_sass/bootstrap/mixins/_clearfix.scss
new file mode 100644
index 000000000..dc3e2ab42
--- /dev/null
+++ b/_sass/bootstrap/mixins/_clearfix.scss
@@ -0,0 +1,22 @@
+// Clearfix
+//
+// For modern browsers
+// 1. The space content is one way to avoid an Opera bug when the
+//    contenteditable attribute is included anywhere else in the document.
+//    Otherwise it causes space to appear at the top and bottom of elements
+//    that are clearfixed.
+// 2. The use of `table` rather than `block` is only necessary if using
+//    `:before` to contain the top-margins of child elements.
+//
+// Source: http://nicolasgallagher.com/micro-clearfix-hack/
+
+@mixin clearfix() {
+  &:before,
+  &:after {
+    content: " "; // 1
+    display: table; // 2
+  }
+  &:after {
+    clear: both;
+  }
+}
diff --git a/_sass/bootstrap/mixins/_forms.scss b/_sass/bootstrap/mixins/_forms.scss
new file mode 100644
index 000000000..277aa5f8e
--- /dev/null
+++ b/_sass/bootstrap/mixins/_forms.scss
@@ -0,0 +1,88 @@
+// Form validation states
+//
+// Used in forms.less to generate the form validation CSS for warnings, errors,
+// and successes.
+
+@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) {
+  // Color the label and help text
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label  {
+    color: $text-color;
+  }
+  // Set the border and box shadow on specific inputs to match
+  .form-control {
+    border-color: $border-color;
+    @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
+    &:focus {
+      border-color: darken($border-color, 10%);
+      $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);
+      @include box-shadow($shadow);
+    }
+  }
+  // Set validation states also for addons
+  .input-group-addon {
+    color: $text-color;
+    border-color: $border-color;
+    background-color: $background-color;
+  }
+  // Optional feedback icon
+  .form-control-feedback {
+    color: $text-color;
+  }
+}
+
+
+// Form control focus state
+//
+// Generate a customized focus state and for any input with the specified color,
+// which defaults to the `$input-border-focus` variable.
+//
+// We highly encourage you to not customize the default value, but instead use
+// this to tweak colors on an as-needed basis. This aesthetic change is based on
+// WebKit's default styles, but applicable to a wider range of browsers. Its
+// usability and accessibility should be taken into account with any change.
+//
+// Example usage: change the default blue border and shadow to white for better
+// contrast against a dark gray background.
+@mixin form-control-focus($color: $input-border-focus) {
+  $color-rgba: rgba(red($color), green($color), blue($color), .6);
+  &:focus {
+    border-color: $color;
+    outline: 0;
+    @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba);
+  }
+}
+
+// Form control sizing
+//
+// Relative text size, padding, and border-radii changes for form controls. For
+// horizontal sizing, wrap controls in the predefined grid classes. `
-                  
-                  
- - -
-
- - -
-
- - -
- - - - -
-

Our Address

-
-

- {% for line in site.address.first.lines %} - {{ line }}
- {% endfor %} -

-

- Email: {{ site.email }}
- Tel: {{ site.tel }} -

-

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.

-
- - diff --git a/css/main.scss b/css/main.scss new file mode 100644 index 000000000..a0371ab7c --- /dev/null +++ b/css/main.scss @@ -0,0 +1,93 @@ +--- +--- + +@import "bootstrap"; + +img { margin-bottom: 24px; + margin-top: 17px; + border-radius:2%; +} + + +body { + padding-top: 70px; +} + +figcaption { + text-align: right; + margin-top: -20px; + margin-bottom: 20px; +} + + + +/* Top navigation bar */ + + +p.byline { + text-align: center; + font-size: 18px; + line-height: 36px; + margin-top: -24px; + margin-bottom: 48px; +} + + +pubtit { + font-weight: bold; +} + +firstp { +} + +.container-fluid { + margin-right: auto; + margin-left: auto; + max-width: 1000px; /* or 950px */ +} + +/* Home, News */ +#newsid p { + text-align: left; +} + +#homeidtmp h1 { + text-align: center; +} + +#newsid img { + margin-top: 6px; + margin-bottom: 6px; +} + +/* Team & Publications */ +#gridid img { margin: 16px 22px 6px 0; border-radius:10%; box-shadow: 2px 2px 5px #888888 } +#homeid img { margin: 0 0 0 0; border-radius:5%; box-shadow: 0px 0px 0px #888888 } +#picid img { margin: 6px 3px 60px 6px; border-radius:1%; box-shadow: 2px 2px 5px #888888 } +#gridid .row { margin-bottom: 24px; } + + +/* Grid overrides */ +.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-5, .col-sm-6, +.col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + padding-left: 16px; + padding-right: 16px; +} + +/* Grid overrides */ +.col-sm-4 { + padding-left: 26px; + padding-right: 26px; +} + + +/* Carusel */ + +.carousel { + border-radius: 3px 3px 3px 3px; + margin-bottom: 20px; + margin-top: 20px; + margin-left: 30px; + margin-right: 30px; +} + diff --git a/downloads/.DS_Store b/downloads/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/downloads/.DS_Store differ diff --git a/downloads/soups_23_abstract.pdf b/downloads/soups_23_abstract.pdf new file mode 100644 index 000000000..99fce86ae Binary files /dev/null and b/downloads/soups_23_abstract.pdf differ diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 000000000..0e89b8643 Binary files /dev/null and b/favicon.ico differ diff --git a/feed.xml b/feed.xml deleted file mode 100644 index 4df0b7c2e..000000000 --- a/feed.xml +++ /dev/null @@ -1,30 +0,0 @@ ---- - ---- - - - - {{ site.title | xml_escape }} - {{ site.description | xml_escape }} - {{ site.url }}{{ site.baseurl }}/ - - {{ site.time | date_to_rfc822 }} - {{ site.time | date_to_rfc822 }} - Jekyll v{{ jekyll.version }} - {% for post in site.posts limit:10 %} - - {{ post.categories.first | capitalize }}: {{ post.title | xml_escape }} - {{ post.content | xml_escape }} - {{ post.date | date_to_rfc822 }} - {{ post.url | prepend: site.baseurl | prepend: site.url }} - {{ post.url | prepend: site.baseurl | prepend: site.url }} - {% for tag in post.tags %} - {{ tag | xml_escape }} - {% endfor %} - {% for cat in post.categories %} - {{ cat | xml_escape }} - {% endfor %} - - {% endfor %} - - diff --git a/fonts/glyphicons-halflings-regular.eot b/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 000000000..b93a4953f Binary files /dev/null and b/fonts/glyphicons-halflings-regular.eot differ diff --git a/fonts/glyphicons-halflings-regular.svg b/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 000000000..94fb5490a --- /dev/null +++ b/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/fonts/glyphicons-halflings-regular.ttf b/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 000000000..1413fc609 Binary files /dev/null and b/fonts/glyphicons-halflings-regular.ttf differ diff --git a/fonts/glyphicons-halflings-regular.woff b/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 000000000..9e612858f Binary files /dev/null and b/fonts/glyphicons-halflings-regular.woff differ diff --git a/fonts/glyphicons-halflings-regular.woff2 b/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 000000000..64539b54c Binary files /dev/null and b/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/images/.DS_Store b/images/.DS_Store new file mode 100644 index 000000000..e509e6f5e Binary files /dev/null and b/images/.DS_Store differ diff --git a/images/Group05022015.jpg b/images/Group05022015.jpg new file mode 100644 index 000000000..a7b29348a Binary files /dev/null and b/images/Group05022015.jpg differ diff --git a/images/Group05022015_red.jpg b/images/Group05022015_red.jpg new file mode 100644 index 000000000..91f7ef4de Binary files /dev/null and b/images/Group05022015_red.jpg differ diff --git a/images/Group2015.png b/images/Group2015.png new file mode 100644 index 000000000..25848e079 Binary files /dev/null and b/images/Group2015.png differ diff --git a/images/Group2015_red.jpg b/images/Group2015_red.jpg new file mode 100644 index 000000000..ec27c1619 Binary files /dev/null and b/images/Group2015_red.jpg differ diff --git a/images/Logos_h.jpg b/images/Logos_h.jpg new file mode 100644 index 000000000..4f963089a Binary files /dev/null and b/images/Logos_h.jpg differ diff --git a/images/News_M2PG.png b/images/News_M2PG.png new file mode 100644 index 000000000..89705fc56 Binary files /dev/null and b/images/News_M2PG.png differ diff --git a/images/News_Maarten.png b/images/News_Maarten.png new file mode 100644 index 000000000..e30dd71ea Binary files /dev/null and b/images/News_Maarten.png differ diff --git a/images/bio-photo.jpg b/images/bio-photo.jpg new file mode 100755 index 000000000..000845179 Binary files /dev/null and b/images/bio-photo.jpg differ diff --git a/images/dummy.png b/images/dummy.png new file mode 100644 index 000000000..942c56d74 Binary files /dev/null and b/images/dummy.png differ diff --git a/images/favicon.ico b/images/favicon.ico new file mode 100644 index 000000000..0e89b8643 Binary files /dev/null and b/images/favicon.ico differ diff --git a/images/inst/.DS_Store b/images/inst/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/images/inst/.DS_Store differ diff --git a/images/inst/DomePlan.jpg b/images/inst/DomePlan.jpg new file mode 100644 index 000000000..3f7e598c1 Binary files /dev/null and b/images/inst/DomePlan.jpg differ diff --git a/images/inst/STM4.jpg b/images/inst/STM4.jpg new file mode 100644 index 000000000..26cbc3a90 Binary files /dev/null and b/images/inst/STM4.jpg differ diff --git a/images/inst/build.jpg b/images/inst/build.jpg new file mode 100644 index 000000000..85dbd6e7e Binary files /dev/null and b/images/inst/build.jpg differ diff --git a/images/inst/domebig.jpg b/images/inst/domebig.jpg new file mode 100644 index 000000000..035c4ec46 Binary files /dev/null and b/images/inst/domebig.jpg differ diff --git a/images/inst/domebuild.jpg b/images/inst/domebuild.jpg new file mode 100644 index 000000000..a8dcc1203 Binary files /dev/null and b/images/inst/domebuild.jpg differ diff --git a/images/inst/domescrew.jpg b/images/inst/domescrew.jpg new file mode 100644 index 000000000..ef2aa8117 Binary files /dev/null and b/images/inst/domescrew.jpg differ diff --git a/images/inst/dometest.jpg b/images/inst/dometest.jpg new file mode 100644 index 000000000..accb6bbff Binary files /dev/null and b/images/inst/dometest.jpg differ diff --git a/images/inst/tama.jpeg b/images/inst/tama.jpeg new file mode 100644 index 000000000..40c1e2d8b Binary files /dev/null and b/images/inst/tama.jpeg differ diff --git a/images/logo1.png b/images/logo1.png new file mode 100644 index 000000000..9ca294c22 Binary files /dev/null and b/images/logo1.png differ diff --git a/images/logo2.png b/images/logo2.png new file mode 100644 index 000000000..e3be5563e Binary files /dev/null and b/images/logo2.png differ diff --git a/images/logopic/.DS_Store b/images/logopic/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/images/logopic/.DS_Store differ diff --git a/images/logopic/Logo_ERC.jpg b/images/logopic/Logo_ERC.jpg new file mode 100644 index 000000000..b7181ee00 Binary files /dev/null and b/images/logopic/Logo_ERC.jpg differ diff --git a/images/logopic/Logo_Leiden.jpg b/images/logopic/Logo_Leiden.jpg new file mode 100644 index 000000000..fc2fb71f1 Binary files /dev/null and b/images/logopic/Logo_Leiden.jpg differ diff --git a/images/logopic/Logo_NWO.jpg b/images/logopic/Logo_NWO.jpg new file mode 100644 index 000000000..cf594f7fd Binary files /dev/null and b/images/logopic/Logo_NWO.jpg differ diff --git a/images/logopic/Logo_Nanofront.jpg b/images/logopic/Logo_Nanofront.jpg new file mode 100644 index 000000000..ea5f285ac Binary files /dev/null and b/images/logopic/Logo_Nanofront.jpg differ diff --git a/images/mm-browser-mockups.png b/images/mm-browser-mockups.png new file mode 100755 index 000000000..56a0a708e Binary files /dev/null and b/images/mm-browser-mockups.png differ diff --git a/images/mm-layout-examples.png b/images/mm-layout-examples.png new file mode 100755 index 000000000..88ef60fd6 Binary files /dev/null and b/images/mm-layout-examples.png differ diff --git a/images/newspic/.DS_Store b/images/newspic/.DS_Store new file mode 100644 index 000000000..fec7a1aea Binary files /dev/null and b/images/newspic/.DS_Store differ diff --git a/images/newspic/Contest.jpg b/images/newspic/Contest.jpg new file mode 100644 index 000000000..628e58f0f Binary files /dev/null and b/images/newspic/Contest.jpg differ diff --git a/images/newspic/DomeNews.png b/images/newspic/DomeNews.png new file mode 100644 index 000000000..5f641436b Binary files /dev/null and b/images/newspic/DomeNews.png differ diff --git a/images/newspic/LCposter.jpg b/images/newspic/LCposter.jpg new file mode 100644 index 000000000..ab69d745d Binary files /dev/null and b/images/newspic/LCposter.jpg differ diff --git a/images/newspic/NewsNP.png b/images/newspic/NewsNP.png new file mode 100644 index 000000000..a2269fdc6 Binary files /dev/null and b/images/newspic/NewsNP.png differ diff --git a/images/newspic/SFnews.png b/images/newspic/SFnews.png new file mode 100644 index 000000000..a5c19725d Binary files /dev/null and b/images/newspic/SFnews.png differ diff --git a/images/newspic/Saphireheadline.jpeg b/images/newspic/Saphireheadline.jpeg new file mode 100644 index 000000000..9ea41b219 Binary files /dev/null and b/images/newspic/Saphireheadline.jpeg differ diff --git a/images/newspic/ShotnoiseEditor.png b/images/newspic/ShotnoiseEditor.png new file mode 100644 index 000000000..6e7037062 Binary files /dev/null and b/images/newspic/ShotnoiseEditor.png differ diff --git a/images/newspic/SmartTip.png b/images/newspic/SmartTip.png new file mode 100644 index 000000000..2556614d7 Binary files /dev/null and b/images/newspic/SmartTip.png differ diff --git a/images/newspic/amp.PNG b/images/newspic/amp.PNG new file mode 100644 index 000000000..1eac1ccdb Binary files /dev/null and b/images/newspic/amp.PNG differ diff --git a/images/newspic/doohee_prize.png b/images/newspic/doohee_prize.png new file mode 100644 index 000000000..20b0356da Binary files /dev/null and b/images/newspic/doohee_prize.png differ diff --git a/images/newspic/erclogo.png b/images/newspic/erclogo.png new file mode 100644 index 000000000..bb8cac4e0 Binary files /dev/null and b/images/newspic/erclogo.png differ diff --git a/images/newspic/order.png b/images/newspic/order.png new file mode 100644 index 000000000..d30c226ec Binary files /dev/null and b/images/newspic/order.png differ diff --git a/images/newspic/scesprizes.jpg b/images/newspic/scesprizes.jpg new file mode 100644 index 000000000..4656c2630 Binary files /dev/null and b/images/newspic/scesprizes.jpg differ diff --git a/images/picpic/.DS_Store b/images/picpic/.DS_Store new file mode 100644 index 000000000..7284b4048 Binary files /dev/null and b/images/picpic/.DS_Store differ diff --git a/images/picpic/Gallery/.DS_Store b/images/picpic/Gallery/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/images/picpic/Gallery/.DS_Store differ diff --git a/images/picpic/Gallery/20150918_145800.jpg b/images/picpic/Gallery/20150918_145800.jpg new file mode 100644 index 000000000..630aaf3ae Binary files /dev/null and b/images/picpic/Gallery/20150918_145800.jpg differ diff --git a/images/picpic/Gallery/DSC_0030.jpg b/images/picpic/Gallery/DSC_0030.jpg new file mode 100644 index 000000000..bf34dba94 Binary files /dev/null and b/images/picpic/Gallery/DSC_0030.jpg differ diff --git a/images/picpic/Gallery/DSC_0051.jpg b/images/picpic/Gallery/DSC_0051.jpg new file mode 100644 index 000000000..a7926e689 Binary files /dev/null and b/images/picpic/Gallery/DSC_0051.jpg differ diff --git a/images/picpic/Gallery/DSC_0116.jpg b/images/picpic/Gallery/DSC_0116.jpg new file mode 100644 index 000000000..d3a083256 Binary files /dev/null and b/images/picpic/Gallery/DSC_0116.jpg differ diff --git a/images/picpic/Gallery/DSC_0119.jpg b/images/picpic/Gallery/DSC_0119.jpg new file mode 100644 index 000000000..324f734b1 Binary files /dev/null and b/images/picpic/Gallery/DSC_0119.jpg differ diff --git a/images/picpic/Gallery/DSC_0128.jpg b/images/picpic/Gallery/DSC_0128.jpg new file mode 100644 index 000000000..ce8ef09f3 Binary files /dev/null and b/images/picpic/Gallery/DSC_0128.jpg differ diff --git a/images/picpic/Gallery/DSC_0139.jpg b/images/picpic/Gallery/DSC_0139.jpg new file mode 100644 index 000000000..2560ff9d9 Binary files /dev/null and b/images/picpic/Gallery/DSC_0139.jpg differ diff --git a/images/picpic/Gallery/DSC_0366.JPG b/images/picpic/Gallery/DSC_0366.JPG new file mode 100644 index 000000000..d62e35cb8 Binary files /dev/null and b/images/picpic/Gallery/DSC_0366.JPG differ diff --git a/images/picpic/Gallery/DSC_0368.JPG b/images/picpic/Gallery/DSC_0368.JPG new file mode 100644 index 000000000..441ecc017 Binary files /dev/null and b/images/picpic/Gallery/DSC_0368.JPG differ diff --git a/images/picpic/Gallery/DSC_0636.jpg b/images/picpic/Gallery/DSC_0636.jpg new file mode 100644 index 000000000..8a80edfc8 Binary files /dev/null and b/images/picpic/Gallery/DSC_0636.jpg differ diff --git a/images/picpic/Gallery/DSC_0683.jpg b/images/picpic/Gallery/DSC_0683.jpg new file mode 100644 index 000000000..aefa04309 Binary files /dev/null and b/images/picpic/Gallery/DSC_0683.jpg differ diff --git a/images/picpic/Gallery/DSC_0696.jpg b/images/picpic/Gallery/DSC_0696.jpg new file mode 100644 index 000000000..5db54856e Binary files /dev/null and b/images/picpic/Gallery/DSC_0696.jpg differ diff --git a/images/picpic/Gallery/DSC_0757.jpg b/images/picpic/Gallery/DSC_0757.jpg new file mode 100644 index 000000000..01bc4ee2a Binary files /dev/null and b/images/picpic/Gallery/DSC_0757.jpg differ diff --git a/images/picpic/Gallery/Group05022015.jpg b/images/picpic/Gallery/Group05022015.jpg new file mode 100644 index 000000000..b03281f4b Binary files /dev/null and b/images/picpic/Gallery/Group05022015.jpg differ diff --git a/images/picpic/Gallery/IMG_4334.jpg b/images/picpic/Gallery/IMG_4334.jpg new file mode 100644 index 000000000..d130a8f44 Binary files /dev/null and b/images/picpic/Gallery/IMG_4334.jpg differ diff --git a/images/picpic/Gallery/IMG_4376.jpg b/images/picpic/Gallery/IMG_4376.jpg new file mode 100644 index 000000000..84f46cd79 Binary files /dev/null and b/images/picpic/Gallery/IMG_4376.jpg differ diff --git a/images/picpic/Gallery/tamagochi.jpg b/images/picpic/Gallery/tamagochi.jpg new file mode 100644 index 000000000..e14290eb6 Binary files /dev/null and b/images/picpic/Gallery/tamagochi.jpg differ diff --git a/images/picpic/Gallery/tmp2-2.jpg b/images/picpic/Gallery/tmp2-2.jpg new file mode 100644 index 000000000..62434cc31 Binary files /dev/null and b/images/picpic/Gallery/tmp2-2.jpg differ diff --git a/images/picpic/WebpageCornell.jpg b/images/picpic/WebpageCornell.jpg new file mode 100644 index 000000000..3674df158 Binary files /dev/null and b/images/picpic/WebpageCornell.jpg differ diff --git a/images/picpic/WebpageCornell_red.jpg b/images/picpic/WebpageCornell_red.jpg new file mode 100644 index 000000000..46feb67c7 Binary files /dev/null and b/images/picpic/WebpageCornell_red.jpg differ diff --git a/images/picpic/WebpageETH.jpg b/images/picpic/WebpageETH.jpg new file mode 100644 index 000000000..153c2e083 Binary files /dev/null and b/images/picpic/WebpageETH.jpg differ diff --git a/images/picpic/WebpageETH_red.jpg b/images/picpic/WebpageETH_red.jpg new file mode 100644 index 000000000..4fc14f555 Binary files /dev/null and b/images/picpic/WebpageETH_red.jpg differ diff --git a/images/picpic/WebpageLeiden.jpg b/images/picpic/WebpageLeiden.jpg new file mode 100644 index 000000000..6f3f9189d Binary files /dev/null and b/images/picpic/WebpageLeiden.jpg differ diff --git a/images/picpic/WebpageLeiden2.jpg b/images/picpic/WebpageLeiden2.jpg new file mode 100644 index 000000000..07b0b2258 Binary files /dev/null and b/images/picpic/WebpageLeiden2.jpg differ diff --git a/images/picpic/WebpageLeiden_red.jpg b/images/picpic/WebpageLeiden_red.jpg new file mode 100644 index 000000000..57dde0661 Binary files /dev/null and b/images/picpic/WebpageLeiden_red.jpg differ diff --git a/images/picpic/WebpageSTA.jpg b/images/picpic/WebpageSTA.jpg new file mode 100644 index 000000000..9fecb5f92 Binary files /dev/null and b/images/picpic/WebpageSTA.jpg differ diff --git a/images/picpic/WebpageSTA_red.jpg b/images/picpic/WebpageSTA_red.jpg new file mode 100644 index 000000000..d489f8f4d Binary files /dev/null and b/images/picpic/WebpageSTA_red.jpg differ diff --git a/images/pubpic/.DS_Store b/images/pubpic/.DS_Store new file mode 100644 index 000000000..2875b5918 Binary files /dev/null and b/images/pubpic/.DS_Store differ diff --git a/images/pubpic/soups_23_poster.jpg b/images/pubpic/soups_23_poster.jpg new file mode 100644 index 000000000..a1fc1be9e Binary files /dev/null and b/images/pubpic/soups_23_poster.jpg differ diff --git a/images/respic/STM.png b/images/respic/STM.png new file mode 100644 index 000000000..203e72267 Binary files /dev/null and b/images/respic/STM.png differ diff --git a/images/respic/STMHead.png b/images/respic/STMHead.png new file mode 100644 index 000000000..f44d9bd59 Binary files /dev/null and b/images/respic/STMHead.png differ diff --git a/images/respic/SciPost.png b/images/respic/SciPost.png new file mode 100644 index 000000000..32e24c990 Binary files /dev/null and b/images/respic/SciPost.png differ diff --git a/images/respic/SmartTip.png b/images/respic/SmartTip.png new file mode 100644 index 000000000..ed99aa2fa Binary files /dev/null and b/images/respic/SmartTip.png differ diff --git a/images/respic/SpinFluc.png b/images/respic/SpinFluc.png new file mode 100644 index 000000000..598f9196c Binary files /dev/null and b/images/respic/SpinFluc.png differ diff --git a/images/respic/layers_fft.gif b/images/respic/layers_fft.gif new file mode 100644 index 000000000..766f41ee6 Binary files /dev/null and b/images/respic/layers_fft.gif differ diff --git a/images/respic/layers_fft.jpg b/images/respic/layers_fft.jpg new file mode 100644 index 000000000..d9d54341e Binary files /dev/null and b/images/respic/layers_fft.jpg differ diff --git a/images/respic/layers_fft_red.gif b/images/respic/layers_fft_red.gif new file mode 100644 index 000000000..d018d3244 Binary files /dev/null and b/images/respic/layers_fft_red.gif differ diff --git a/images/respic/layers_real.gif b/images/respic/layers_real.gif new file mode 100644 index 000000000..262c0103d Binary files /dev/null and b/images/respic/layers_real.gif differ diff --git a/images/respic/layers_real.jpg b/images/respic/layers_real.jpg new file mode 100644 index 000000000..cb2e651d8 Binary files /dev/null and b/images/respic/layers_real.jpg differ diff --git a/images/respic/layers_real_red.gif b/images/respic/layers_real_red.gif new file mode 100644 index 000000000..939d9e08d Binary files /dev/null and b/images/respic/layers_real_red.gif differ diff --git a/images/slider7001400/.DS_Store b/images/slider7001400/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/images/slider7001400/.DS_Store differ diff --git a/images/slider7001400/BSCCO2gap2.jpg b/images/slider7001400/BSCCO2gap2.jpg new file mode 100644 index 000000000..0d631431a Binary files /dev/null and b/images/slider7001400/BSCCO2gap2.jpg differ diff --git a/images/slider7001400/BSCCO2gap2.png b/images/slider7001400/BSCCO2gap2.png new file mode 100644 index 000000000..c606c6639 Binary files /dev/null and b/images/slider7001400/BSCCO2gap2.png differ diff --git a/images/slider7001400/FabSCAU.jpg b/images/slider7001400/FabSCAU.jpg new file mode 100644 index 000000000..90c60f993 Binary files /dev/null and b/images/slider7001400/FabSCAU.jpg differ diff --git a/images/slider7001400/Fig_Science_Web.jpg b/images/slider7001400/Fig_Science_Web.jpg new file mode 100644 index 000000000..ec22d2ab7 Binary files /dev/null and b/images/slider7001400/Fig_Science_Web.jpg differ diff --git a/images/slider7001400/Group2015_red.jpg b/images/slider7001400/Group2015_red.jpg new file mode 100644 index 000000000..1bed707ab Binary files /dev/null and b/images/slider7001400/Group2015_red.jpg differ diff --git a/images/slider7001400/Logos_h.jpg b/images/slider7001400/Logos_h.jpg new file mode 100644 index 000000000..4f963089a Binary files /dev/null and b/images/slider7001400/Logos_h.jpg differ diff --git a/images/slider7001400/MottMap.jpg b/images/slider7001400/MottMap.jpg new file mode 100644 index 000000000..e585b98d7 Binary files /dev/null and b/images/slider7001400/MottMap.jpg differ diff --git a/images/slider7001400/NoiseCover2.jpg b/images/slider7001400/NoiseCover2.jpg new file mode 100644 index 000000000..8f0df3714 Binary files /dev/null and b/images/slider7001400/NoiseCover2.jpg differ diff --git a/images/slider7001400/QPI_Rh.jpg b/images/slider7001400/QPI_Rh.jpg new file mode 100644 index 000000000..ae498aedc Binary files /dev/null and b/images/slider7001400/QPI_Rh.jpg differ diff --git a/images/slider7001400/STS.jpg b/images/slider7001400/STS.jpg new file mode 100644 index 000000000..ce8ac9fc6 Binary files /dev/null and b/images/slider7001400/STS.jpg differ diff --git a/images/slider7001400/SaphireSTM2.jpg b/images/slider7001400/SaphireSTM2.jpg new file mode 100644 index 000000000..c641326b9 Binary files /dev/null and b/images/slider7001400/SaphireSTM2.jpg differ diff --git a/images/slider7001400/SmartTipSide.jpg b/images/slider7001400/SmartTipSide.jpg new file mode 100644 index 000000000..bf660cfa3 Binary files /dev/null and b/images/slider7001400/SmartTipSide.jpg differ diff --git a/images/slider7001400/cake_web.jpg b/images/slider7001400/cake_web.jpg new file mode 100644 index 000000000..8db5fd5c4 Binary files /dev/null and b/images/slider7001400/cake_web.jpg differ diff --git a/images/slider7001400/dinner2.jpg b/images/slider7001400/dinner2.jpg new file mode 100644 index 000000000..4e49486a3 Binary files /dev/null and b/images/slider7001400/dinner2.jpg differ diff --git a/images/slider7001400/dinner3.jpg b/images/slider7001400/dinner3.jpg new file mode 100644 index 000000000..6e9947cce Binary files /dev/null and b/images/slider7001400/dinner3.jpg differ diff --git a/images/slider7001400/groupDinner.jpg b/images/slider7001400/groupDinner.jpg new file mode 100644 index 000000000..0e1f40867 Binary files /dev/null and b/images/slider7001400/groupDinner.jpg differ diff --git a/images/slider7001400/lab.jpg b/images/slider7001400/lab.jpg new file mode 100644 index 000000000..1df07a199 Binary files /dev/null and b/images/slider7001400/lab.jpg differ diff --git a/images/slider7001400/logos.jpg b/images/slider7001400/logos.jpg new file mode 100644 index 000000000..ab5891b34 Binary files /dev/null and b/images/slider7001400/logos.jpg differ diff --git a/images/slider7001400/tamagochi.jpg b/images/slider7001400/tamagochi.jpg new file mode 100644 index 000000000..6292702e6 Binary files /dev/null and b/images/slider7001400/tamagochi.jpg differ diff --git a/images/slider7001400/topo214.png b/images/slider7001400/topo214.png new file mode 100644 index 000000000..108079e36 Binary files /dev/null and b/images/slider7001400/topo214.png differ diff --git a/images/teampic/.DS_Store b/images/teampic/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/images/teampic/.DS_Store differ diff --git a/images/teampic/Adit_PFP1.jpeg b/images/teampic/Adit_PFP1.jpeg new file mode 100644 index 000000000..821f0dfe1 Binary files /dev/null and b/images/teampic/Adit_PFP1.jpeg differ diff --git a/images/teampic/Amber.png b/images/teampic/Amber.png new file mode 100644 index 000000000..e4b55d441 Binary files /dev/null and b/images/teampic/Amber.png differ diff --git a/images/teampic/DSC_1032.JPG b/images/teampic/DSC_1032.JPG new file mode 100644 index 000000000..9dd0e65d2 Binary files /dev/null and b/images/teampic/DSC_1032.JPG differ diff --git a/images/teampic/Damianos.jpg b/images/teampic/Damianos.jpg new file mode 100644 index 000000000..a13d89d1e Binary files /dev/null and b/images/teampic/Damianos.jpg differ diff --git a/images/teampic/Doohee2.jpg b/images/teampic/Doohee2.jpg new file mode 100644 index 000000000..fb1ba47a6 Binary files /dev/null and b/images/teampic/Doohee2.jpg differ diff --git a/images/teampic/Freek.jpg b/images/teampic/Freek.jpg new file mode 100644 index 000000000..430e75fd1 Binary files /dev/null and b/images/teampic/Freek.jpg differ diff --git a/images/teampic/Jacky.jpg b/images/teampic/Jacky.jpg new file mode 100644 index 000000000..958cd7ac2 Binary files /dev/null and b/images/teampic/Jacky.jpg differ diff --git a/images/teampic/Jiasen.png b/images/teampic/Jiasen.png new file mode 100644 index 000000000..3c7c9c77a Binary files /dev/null and b/images/teampic/Jiasen.png differ diff --git a/images/teampic/Jinwon.jpg b/images/teampic/Jinwon.jpg new file mode 100644 index 000000000..d7b9f18e7 Binary files /dev/null and b/images/teampic/Jinwon.jpg differ diff --git a/images/teampic/Junichi .jpeg b/images/teampic/Junichi .jpeg new file mode 100644 index 000000000..3a231c734 Binary files /dev/null and b/images/teampic/Junichi .jpeg differ diff --git a/images/teampic/Kaveh.png b/images/teampic/Kaveh.png new file mode 100644 index 000000000..d33bd93e8 Binary files /dev/null and b/images/teampic/Kaveh.png differ diff --git a/images/teampic/Kees.jpg b/images/teampic/Kees.jpg new file mode 100644 index 000000000..8ef2951a0 Binary files /dev/null and b/images/teampic/Kees.jpg differ diff --git a/images/teampic/Khalid.jpg b/images/teampic/Khalid.jpg new file mode 100644 index 000000000..f85714321 Binary files /dev/null and b/images/teampic/Khalid.jpg differ diff --git a/images/teampic/Koen.jpg b/images/teampic/Koen.jpg new file mode 100644 index 000000000..ce465f8bf Binary files /dev/null and b/images/teampic/Koen.jpg differ diff --git a/images/teampic/Maarten.png b/images/teampic/Maarten.png new file mode 100644 index 000000000..121c35074 Binary files /dev/null and b/images/teampic/Maarten.png differ diff --git a/images/teampic/Maialen.png b/images/teampic/Maialen.png new file mode 100644 index 000000000..5619f9ef7 Binary files /dev/null and b/images/teampic/Maialen.png differ diff --git a/images/teampic/MengLi.jpg b/images/teampic/MengLi.jpg new file mode 100644 index 000000000..e0426df49 Binary files /dev/null and b/images/teampic/MengLi.jpg differ diff --git a/images/teampic/Milan.jpg b/images/teampic/Milan.jpg new file mode 100644 index 000000000..a7f1d7989 Binary files /dev/null and b/images/teampic/Milan.jpg differ diff --git a/images/teampic/Milan1.jpg b/images/teampic/Milan1.jpg new file mode 100644 index 000000000..90619c74c Binary files /dev/null and b/images/teampic/Milan1.jpg differ diff --git a/images/teampic/Mrinaal.jpeg b/images/teampic/Mrinaal.jpeg new file mode 100644 index 000000000..6dae75ee8 Binary files /dev/null and b/images/teampic/Mrinaal.jpeg differ diff --git a/images/teampic/Photo Vincent.jpg b/images/teampic/Photo Vincent.jpg new file mode 100644 index 000000000..230d74c4c Binary files /dev/null and b/images/teampic/Photo Vincent.jpg differ diff --git a/images/teampic/Photo_Irene.jpg b/images/teampic/Photo_Irene.jpg new file mode 100644 index 000000000..cea5a0ce0 Binary files /dev/null and b/images/teampic/Photo_Irene.jpg differ diff --git a/images/teampic/Ram.png b/images/teampic/Ram.png new file mode 100644 index 000000000..050efa908 Binary files /dev/null and b/images/teampic/Ram.png differ diff --git a/images/teampic/Sanghun.jpg b/images/teampic/Sanghun.jpg new file mode 100644 index 000000000..79f5397d4 Binary files /dev/null and b/images/teampic/Sanghun.jpg differ diff --git a/images/teampic/Sato.jpeg b/images/teampic/Sato.jpeg new file mode 100644 index 000000000..a0d3ceb9c Binary files /dev/null and b/images/teampic/Sato.jpeg differ diff --git a/images/teampic/SriHarshaGajavalli-profilepic.png b/images/teampic/SriHarshaGajavalli-profilepic.png new file mode 100644 index 000000000..718364f3a Binary files /dev/null and b/images/teampic/SriHarshaGajavalli-profilepic.png differ diff --git a/images/teampic/Thomas.jpg b/images/teampic/Thomas.jpg new file mode 100644 index 000000000..7bdb248a1 Binary files /dev/null and b/images/teampic/Thomas.jpg differ diff --git a/images/teampic/Vitaly.JPG b/images/teampic/Vitaly.JPG new file mode 100644 index 000000000..c6b235f16 Binary files /dev/null and b/images/teampic/Vitaly.JPG differ diff --git a/images/teampic/Webfoto_HS2.jpg b/images/teampic/Webfoto_HS2.jpg new file mode 100644 index 000000000..6dd559148 Binary files /dev/null and b/images/teampic/Webfoto_HS2.jpg differ diff --git a/images/teampic/dr_rakibul_hasan.png b/images/teampic/dr_rakibul_hasan.png new file mode 100644 index 000000000..21d115fde Binary files /dev/null and b/images/teampic/dr_rakibul_hasan.png differ diff --git a/images/teampic/easton_kelso.jpg b/images/teampic/easton_kelso.jpg new file mode 100644 index 000000000..f44dc54bc Binary files /dev/null and b/images/teampic/easton_kelso.jpg differ diff --git a/images/teampic/fazle_rafsani.jpg b/images/teampic/fazle_rafsani.jpg new file mode 100644 index 000000000..33ebde673 Binary files /dev/null and b/images/teampic/fazle_rafsani.jpg differ diff --git a/images/teampic/hugo.jpg b/images/teampic/hugo.jpg new file mode 100644 index 000000000..640ef02c7 Binary files /dev/null and b/images/teampic/hugo.jpg differ diff --git a/images/teampic/ilse.jpeg b/images/teampic/ilse.jpeg new file mode 100644 index 000000000..074f15567 Binary files /dev/null and b/images/teampic/ilse.jpeg differ diff --git a/images/teampic/irene.jpg b/images/teampic/irene.jpg new file mode 100644 index 000000000..9e8cf8efe Binary files /dev/null and b/images/teampic/irene.jpg differ diff --git a/images/teampic/ishraq_r_rahman.jpg b/images/teampic/ishraq_r_rahman.jpg new file mode 100644 index 000000000..1b3fcded1 Binary files /dev/null and b/images/teampic/ishraq_r_rahman.jpg differ diff --git a/images/teampic/navid.jpg b/images/teampic/navid.jpg new file mode 100644 index 000000000..05f691192 Binary files /dev/null and b/images/teampic/navid.jpg differ diff --git a/images/teampic/protik_bose_pranto.jpg b/images/teampic/protik_bose_pranto.jpg new file mode 100644 index 000000000..950890cd7 Binary files /dev/null and b/images/teampic/protik_bose_pranto.jpg differ diff --git a/images/teampic/rock.jpg b/images/teampic/rock.jpg new file mode 100644 index 000000000..1d5ebeffe Binary files /dev/null and b/images/teampic/rock.jpg differ diff --git a/images/teampic/saharsh.png b/images/teampic/saharsh.png new file mode 100644 index 000000000..b8496805f Binary files /dev/null and b/images/teampic/saharsh.png differ diff --git a/images/teampic/sanskar_srivastava.jpg b/images/teampic/sanskar_srivastava.jpg new file mode 100644 index 000000000..00366eed9 Binary files /dev/null and b/images/teampic/sanskar_srivastava.jpg differ diff --git a/images/teampic/tianyi_yang.jpg b/images/teampic/tianyi_yang.jpg new file mode 100644 index 000000000..8e19668a7 Binary files /dev/null and b/images/teampic/tianyi_yang.jpg differ diff --git a/images/teampic/tjeruk.jpg b/images/teampic/tjeruk.jpg new file mode 100644 index 000000000..667ff4a28 Binary files /dev/null and b/images/teampic/tjeruk.jpg differ diff --git a/images/teampic/verdoes.jpg b/images/teampic/verdoes.jpg new file mode 100644 index 000000000..eb1aa5898 Binary files /dev/null and b/images/teampic/verdoes.jpg differ diff --git a/images/teampic/waqar_hassan_khan.jpg b/images/teampic/waqar_hassan_khan.jpg new file mode 100644 index 000000000..9fe4f4ccf Binary files /dev/null and b/images/teampic/waqar_hassan_khan.jpg differ diff --git a/images/teampic/website_pic_willem.jpg b/images/teampic/website_pic_willem.jpg new file mode 100644 index 000000000..7af81405e Binary files /dev/null and b/images/teampic/website_pic_willem.jpg differ diff --git a/index.html b/index.html deleted file mode 100755 index ea09d6ee7..000000000 --- a/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: index -title: Home -permalink: / ---- - -
-
-
- -
- - An image of a laboratory flask -

Retina Ready

-

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

-


More Info

-
-
- - An image of a trophy -

Quality Theme

-

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

-


More Info

-
-
-
-
- -{% include portfolio.html title="LATEST WORKS" limit=10 %} - -
-
-
-

More About Our Agency.

-

{{ site.about }}

-


More Info

-
- -
-

Frequently Asked

-
- {% for question in site.questions %} -

{{ question.title }}

- {% endfor %} -
- -
-

Latest Posts

-
- {% for post in site.posts limit:5 %} -

{{ post.title }}.

- {% endfor %} -
- -
-
diff --git a/js/bootstrap.js b/js/bootstrap.js new file mode 100644 index 000000000..01fbbcbaa --- /dev/null +++ b/js/bootstrap.js @@ -0,0 +1,2363 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + 'use strict'; + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.6 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.6 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.6' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.6 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.6' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.6 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.6' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.6 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.6' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.6 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.6' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.3.6 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.6' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.6 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.6' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.3.6 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.6' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.6 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.6' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.3.6 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.6' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.3.6 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.6' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/js/bootstrap.min.js b/js/bootstrap.min.js new file mode 100644 index 000000000..e79c06513 --- /dev/null +++ b/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/js/npm.js b/js/npm.js new file mode 100644 index 000000000..bf6aa8060 --- /dev/null +++ b/js/npm.js @@ -0,0 +1,13 @@ +// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. +require('../../js/transition.js') +require('../../js/alert.js') +require('../../js/button.js') +require('../../js/carousel.js') +require('../../js/collapse.js') +require('../../js/dropdown.js') +require('../../js/modal.js') +require('../../js/tooltip.js') +require('../../js/popover.js') +require('../../js/scrollspy.js') +require('../../js/tab.js') +require('../../js/affix.js') \ No newline at end of file diff --git a/portfolio.html b/portfolio.html deleted file mode 100755 index 3de0cc075..000000000 --- a/portfolio.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: portfolio -title: Portfolio -permalink: /portfolio/ ---- - -
-
-
-

We create awesome designs to standout your site or product. Check some of our latest works.

-
-
-
-
-
\ No newline at end of file diff --git a/research 2.md b/research 2.md new file mode 100644 index 000000000..012d28033 --- /dev/null +++ b/research 2.md @@ -0,0 +1,10 @@ +--- +title: "Persue Lab - Research" +layout: textlay +excerpt: "Persue Lab -- Research" +sitemap: false +permalink: /research/ +--- + +# Research + diff --git a/research.md b/research.md new file mode 100644 index 000000000..6c5d10d0e --- /dev/null +++ b/research.md @@ -0,0 +1,11 @@ +--- +title: "Persue Lab - Research" +layout: textlay +excerpt: "Persue Lab -- Research" +sitemap: false +permalink: /research/ +--- + +# Research + +