From d6dda0bfbbe3fa1228b7d1810dfb054f164e5bbc Mon Sep 17 00:00:00 2001 From: Jason Brooks Date: Jun 21 2019 19:43:50 +0000 Subject: Merge remote-tracking branch 'github-tmp/jekyll' into pr-jekyll --- diff --git a/.gitignore b/.gitignore index 5285ad4..e6da282 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ tmp/* Guardfile output.diff crash.log +_site/* diff --git a/Gemfile b/Gemfile index 6fb39b1..e1d8eaf 100644 --- a/Gemfile +++ b/Gemfile @@ -1,68 +1,32 @@ -# If you have OpenSSL installed, we recommend updating -# the following line to use "https" -source 'http://rubygems.org' - -gem "nanoc", "~>3.6" -gem "compass", "0.12.2" -gem "sass", "3.2.18" -gem "susy", "1.0.9" -gem "haml", "~>4.0.5" -gem "rubypants", "~> 0.2.0" -gem "rainpress", "~> 1.0" -gem "kramdown", '~> 1.3.3' -gem 'systemu', '~> 2.6.4' -gem 'adsf' -gem 'guard-nanoc' - -# Debugger / REPL alternative to irb -gem 'pry' - -# Cross-templating language block fix for Ruby 1.8 -platforms :mri_18 do - gem "ruby18_source_location" +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", "~> 3.8.5" + +# This is the default theme for new Jekyll sites. You may change this to anything you like. +#gem "minima", "~> 2.0" + +# 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.6" + gem "jekyll-haml" + gem "jekyll-sitemap" end -# For faster file watcher updates for people using Windows -gem "wdm", "~> 0.1.0", :platforms => [:mswin, :mingw] - - -##### -# General plugins - -# Blog plugin - -# Thumbnailer -#gem "middleman-thumbnailer", github: "nhemsley/middleman-thumbnailer" - -# favicon support (favicon PNG should be 144×144) - -# HTML & XML parsing smarts -gem "nokogiri" - -# Syntax highlighting - -# For feed.xml.builder -gem "builder", "~> 3.0" - -# Better JSON lib -gem "oj" - - -##### -# Bootstrap - -# Bootstrap, as SASS 3 version (there's a bug in 3.0.1+, so we're -# locking to 3.0.0 for now -gem "bootstrap-sass", "3.0.0" - - -##### -# Formats - -# less (css) -gem "therubyracer" -gem "less" +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] -# asciidoctor -gem "asciidoctor" +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.0" if Gem.win_platform? diff --git a/Gemfile.lock b/Gemfile.lock index 803d436..d558ccd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,105 +1,79 @@ GEM - remote: http://rubygems.org/ + remote: https://rubygems.org/ specs: - adsf (1.2.0) - rack (>= 1.0.0) - asciidoctor (1.5.4) - bootstrap-sass (3.0.0.0) - sass (~> 3.2) - builder (3.2.2) - chunky_png (1.3.5) - coderay (1.1.0) - colored (1.2) - commonjs (0.2.7) - compass (0.12.2) - chunky_png (~> 1.2) - fssm (>= 0.2.7) - sass (~> 3.1) - cri (2.7.0) - colored (~> 1.2) - ffi (1.9.10) - formatador (0.2.5) - fssm (0.2.10) - guard (2.13.0) - formatador (>= 0.2.4) - listen (>= 2.7, <= 4.0) - lumberjack (~> 1.0) - nenv (~> 0.1) - notiffany (~> 0.0) - pry (>= 0.9.12) - shellany (~> 0.0) - thor (>= 0.18.1) - guard-nanoc (1.0.3) - guard (~> 2.8) - nanoc (~> 3.6) - haml (4.0.7) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + colorator (1.1.0) + concurrent-ruby (1.1.3) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.7) + ffi (1.9.25) + forwardable-extended (2.6.0) + haml (5.0.4) + temple (>= 0.8.0) tilt - kramdown (1.3.3) - less (2.6.0) - commonjs (~> 0.2.7) - libv8 (3.16.14.13) - listen (3.0.5) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9) - lumberjack (1.0.9) - method_source (0.8.2) - mini_portile2 (2.0.0) - nanoc (3.8.0) - cri (~> 2.3) - nenv (0.2.0) - nokogiri (1.6.7) - mini_portile2 (~> 2.0.0.rc2) - notiffany (0.0.8) - nenv (~> 0.1) - shellany (~> 0.0) - oj (2.14.0) - pry (0.10.3) - coderay (~> 1.1.0) - method_source (~> 0.8.1) - slop (~> 3.4) - rack (1.6.4) - rainpress (1.0) - rb-fsevent (0.9.6) - rb-inotify (0.9.5) - ffi (>= 0.5.0) - ref (2.0.0) - ruby18_source_location (0.2) - rubypants (0.2.0) - sass (3.2.18) - shellany (0.0.1) - slop (3.6.0) - susy (1.0.9) - compass (>= 0.12.2) - sass (>= 3.2.0) - systemu (2.6.5) - therubyracer (0.12.2) - libv8 (~> 3.16.14.0) - ref - thor (0.19.1) - tilt (2.0.1) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.8.5) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-feed (0.11.0) + jekyll (~> 3.3) + jekyll-haml (0.1.6) + haml (>= 3.0.0) + jekyll (>= 3.3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-sitemap (1.2.0) + jekyll (~> 3.3) + jekyll-watch (2.1.2) + listen (~> 3.0) + kramdown (1.17.0) + liquid (4.0.1) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (3.0.3) + rb-fsevent (0.10.3) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + rouge (3.3.0) + ruby_dep (1.5.0) + safe_yaml (1.0.4) + sass (3.7.2) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + temple (0.8.0) + tilt (2.0.9) PLATFORMS ruby DEPENDENCIES - adsf - asciidoctor - bootstrap-sass (= 3.0.0) - builder (~> 3.0) - compass (= 0.12.2) - guard-nanoc - haml (~> 4.0.5) - kramdown (~> 1.3.3) - less - nanoc (~> 3.6) - nokogiri - oj - pry - rainpress (~> 1.0) - ruby18_source_location - rubypants (~> 0.2.0) - sass (= 3.2.18) - susy (= 1.0.9) - systemu (~> 2.6.4) - therubyracer - wdm (~> 0.1.0) + jekyll (~> 3.8.5) + jekyll-feed (~> 0.6) + jekyll-haml + jekyll-sitemap + tzinfo-data + +BUNDLED WITH + 1.17.1 diff --git a/README.md b/README.md index bd7de6b..b34e23e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,23 @@ +# a test conversion of this site to jekyll + +## test it in a container + +Clone this repo, and then, from inside your working copy: + +``` +sudo podman run -d --name centos-jekyll -p 4000:4000 -v $(pwd):/srv/jekyll:Z jekyll/jekyll jekyll serve --watch +``` + +## todo + +* Need to figure out `media.erb`. + + +*** + + + The site is built with *nanoc* and *Bootstrap 3*. * http://www.nanoc.ws diff --git a/Rules b/Rules deleted file mode 100644 index ede8eec..0000000 --- a/Rules +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/env ruby - -## Required Gems -require 'compass' -require 'susy' - -### Compass configuration #################################################### -Compass.add_project_configuration 'config.rb' -sass_options = Compass.sass_engine_options - -### Configuration ############################################################ -TypographicalImprovementFilter = :rubypants -TypographicalImprovementFilterParams = {} - -### Preprocessing ############################################################ -preprocess do - config[:nanoc_version_info] = `nanoc --version`.strip - config[:gem_version_info] = `gem --version`.strip -end - -### Routing ################################################################## -route '/static/*' do - # /static/foo.html/ → /foo.html - item.identifier[7..-2] -end - -route 'sitemap' do - item.identifier.chop + '.xml' -end - - -route '/assets/css/bootstrap/_*/' do - # Don't output partials, so return nil - nil -end - -route '/assets/css/*/' do - # path with version - '/assets/style' + '-v' + rep.item[:version].to_s + '.css' -end - -route '*' do - if item.binary? - item.identifier.chop + '.' + item[:extension] - elsif item[:is_partial] || item[:kind] == 'article' - # Don’t output partial items (e.g. sub-stylesheets) - nil - elsif item[:path] - item[:path] - else - # Place each file in its own directory - rep.item.identifier + 'index.html' - end -end - - -### Compilation ############################################################## - -compile 'sitemap' do - filter :erb -end - -compile '/assets/css/bootstrap/_*/' do - # Don’t compile partials -end - -compile '/assets/css/*/' do - filter :sass, Compass.sass_engine_options - filter :relativize_paths, :type => :css - filter :rainpress -end -compile '/static/*' do -end - -compile '*' do - if item.binary? - # ha, do nothing! :) - else - puts "item = #{item.identifier} -- extension = #{item[:extension]}" - case item[:extension] - when 'md' - filter :erb - filter :kramdown - when 'haml' - filter :erb - filter :haml - when 'js' - filter :erb - filter :uglify_js - when 'adoc' - filter :asciidoc - else - filter :erb - end - layout 'default-haml' unless item[:extension] == 'js' - filter :add_ids_to_headers - filter TypographicalImprovementFilter, TypographicalImprovementFilterParams - end -end -### Layouting ################################################################ - - -layout '*', :haml diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..25a9661 --- /dev/null +++ b/_config.yml @@ -0,0 +1,4 @@ +name: centos-jekyll + +plugins: + - jekyll-sitemap diff --git a/_data/sponsors.yml b/_data/sponsors.yml new file mode 100644 index 0000000..df4c4be --- /dev/null +++ b/_data/sponsors.yml @@ -0,0 +1,539 @@ +- name: 45Drives + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/45drives.png + url: http://www.45drives.com/ + +- name: artmotion + sponsor: true + country: eu + is_hidden: true + img: /images/sponsors/am-logo.png + url: http://www.artmotion.eu + +- name: BackupVault + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/BackupVault.png + url: https://www.backupvault.co.uk/ + +- name: baseip + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/baseip_240x60.jpg + url: http://www.baseip.com/ + +- name: castlegem + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/Banner_Castlegem_240x60.gif + url: http://www.castlegem.co.uk/ + +- name: cdn77 + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/cdn77.png + url: http://www.cdn77.com/ + +- name: ch-center + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/ch-center-small.png + url: http://www.ch-center.com/ + +- name: Cloudbase Solutions + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/CentOS-CBSL-02.png + url: http://www.cloudbase.it + +- name: codero + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/codero.png + url: http://www.codero.com + +- name: Colocation America + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/coloamerica_small.gif + url: http://www.colocationamerica.com/dedicated_servers + +- name: Colocation Australia Pty Ltd + sponsor: true + country: Australia + is_hidden: true + img: /images/sponsors/coloau.png + url: http://coloau.com.au/ + +- name: cologuard + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/cologuard.png + url: http://www.colocationguard.com/ + +- name: constant + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/constant.png + url: http://www.constant.com/ + +- name: Coreix + sponsor: true + country: uk + is_hidden: true + img: /images/sponsors/coreix.jpg + url: https://www.coreix.net/ + +- name: cPanel + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/cpanel.png + url: http://www.cpanel.com/ + +- name: Database By Design + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/dbd_240_60.jpg + url: http://www.databasebydesignllc.com + +- name: Dedicatednow + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/dedicatednow.gif + url: http://www.dedicatednow.com/ + +- name: Dedicated Solutions + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/dedicatedsolutions.png + url: https://www.dedicatedsolutions.com/ + +- name: easyspace + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/iomart-240x60.gif + url: http://www.easyspace.com/dedserver_main.php + +- name: eukhost + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/eukhost.png + url: http://www.eukhost.com/ + +- name: everex + sponsor: true + country: spain + is_hidden: true + img: /images/sponsors/everex.png + url: http://www.everex.es/ + +- name: Exabytes cloud + sponsor: true + country: malaysia + is_hidden: true + img: /images/sponsors/exabytes-my.png + url: http://www.exabytes.com.my/ + +- name: FastHosts + sponsor: true + country: uk + is_hidden: true + img: /images/sponsors/fasthosts.png + url: https://www.fasthosts.co.uk/ + +- name: Globo.Tech + sponsor: true + country: canada + is_hidden: true + img: /images/sponsors/globotech.png + url: http://www.globo.tech/ + +- name: GoDaddy + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/godaddy.jpg + url: http://www.godaddy.com + +- name: Host1Plus + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/host1plus_logo.png + url: http://www.host1plus.com/ + +- name: hostasaurus + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/hostasaurus240x60banner.gif + url: http://www.hostasaurus.com/ + +- name: hostdime-br + sponsor: true + country: brazil + is_hidden: true + img: /images/sponsors/hostdime_br_small.jpg + url: http://www.hostdime.com.br + +- name: hostdime + sponsor: true + country: USA + is_hidden: true + img: /images/sponsors/HostDime_Logo_Slogan_300_71.png + url: http://www.hostdime.com + +- name: Host-Engine + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/host-engine.png + url: http://host-engine.com/ + +- name: hostiserver + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/hostiserver.png + url: https://www.hostiserver.com/ + +- name: hostkey + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/hostkey_small.gif + url: http://www.hostkey.com/ + +- name: HostStage + sponsor: true + country: france + is_hidden: true + img: /images/sponsors/host-stage.png + url: http://www.host-stage.net/ + +- name: InterNetX + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/internetx.gif + url: http://www.internetx.com + +- name: ITsyndicate + sponsor: true + country: Ukraine + is_hidden: true + img: /images/sponsors/itsyndicate.png + url: https://itsyndicate.org/ + +- name: leaseweb + sponsor: true + country: netherlands + is_hidden: true + img: /images/sponsors/leaseweb.png + url: http://www.leaseweb.com/ + +- name: Liberty VPS + sponsor: true + country: israel + is_hidden: true + img: /images/sponsors/OffshoreVPS.png + url: https://libertyvps.net + +- name: liquidweb + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/liquidweb.png + url: http://www.liquidweb.com/ + +- name: multacom + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/multacom-240x60.gif + url: http://www.multacom.com/ + +- name: NDCHost + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/ndc_host_240.gif + url: http://www.ndchost.com/ + +- name: netelligent + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/netelligent_small.png + url: http://www.netelligent.ca/centos/ + +- name: nexcess + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/nexcess.png + url: http://www.nexcess.net/ + +- name: Node4 + sponsor: true + country: UK + is_hidden: true + img: /images/sponsors/N4_logo_colour-banner-small.jpg + url: http://www.node4.co.uk/managed-services/ + +- name: Pidgin Host + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/pidginhost.png + url: http://www.pidginhost.com/ + +- name: Pirates Hosting + sponsor: true + country: israel + is_hidden: true + img: /images/sponsors/OffshoreServers.png + url: https://www.pirateshosting.net + +- name: Profvds + sponsor: true + country: russia + is_hidden: true + img: /images/sponsors/profvds.png + url: http://www.profvds.com + + +- name: psw group + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/PSW_Banner_240x60.jpg + url: http://www.psw.net/ + + +- name: Psychz Networks + sponsor: true + is_hidden: true + img: /images/sponsors/psychz-234x60.jpg + url: http://www.psychz.net/ + +- name: ptisp + sponsor: true + country: portugal + is_hidden: true + img: /images/sponsors/ptisp.png + url: http://www.ptisp.pt/ + +- name: redstation + sponsor: true + country: uk + is_hidden: true + img: /images/sponsors/redstation.png + url: http://www.redstation.com/ + +- name: Scaleway + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/scaleway_logo.png + url: http://www.scaleway.com + +- name: Phoenix NAP + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/PNAP_Banner.gif + url: http://www.securedservers.com/landing/linux-hosting/ + +- name: seedvps + sponsor: true + country: netherlands + is_hidden: true + img: /images/sponsors/seedvps.png + url: https://www.seedvps.com/ + +- name: serverel + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/serverel.png + url: http://www.serverel.com/ + +- name: ServerHub + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/centos-serverhub.png + url: http://www.serverhub.com + +- name: ServerMania + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/servermania.gif + url: http://servermania.com/ + +- name: serverpoint + sponsor: true + country: us + is_hidden: true + img: /images/sponsors/serverpoint.png + url: http://www.serverpoint.com + +- name: serverpronto + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/serverpronto_small.gif + url: http://www.serverpronto.com/ + +- name: shinjiru + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/shinjirubanner260x60.gif + url: http://shinjiru.com/ + +- name: steadfast + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/steadfast.png + url: http://steadfast.net/ + +- name: Tailor Made Servers + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/tailoredservers.png + url: http://www.tailoredservers.com + +- name: theplanet + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/theplanet.png + url: http://www.theplanet.com/dedicated-servers/ + + +- name: vHost + sponsor: true + is_hidden: true + img: /images/sponsors/vhostvn.gif + url: http://vhost.vn/ + +- name: Virtual Internet + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/2014-11-10-vi.gif + url: http://www.vi.net + +- name: vitelity + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/vitelity.png + url: http://www.vitelity.net/ + +- name: webnx + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/webnx1.png + url: http://www.webnx.com + +- name: Whitelabel ITSolutions + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/whitelabelitsolutions.gif + url: http://whitelabelitsolutions.com/ + +- name: wowrack + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/wow.234x60.gif + url: http://www.wowrack.com/ + +- name: Xen Project + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/ad_lfcpxen_240x60.png + url: http://www.xenproject.org/ + +- name: yourname + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/yourname_small.gif + url: http://www.yourname.nl/ + +- name: NDCHost + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/NDCHost.png + url: https://www.ndchost.com/ + +- name: intevation + sponsor: true + country: germany + is_hidden: true + img: /images/sponsors/intevation.png + url: http://www.intevation.de/ + +- name: Iomart + sponsor: true + country: uk + is_hidden: true + img: /images/sponsors/iomart.png + url: https://www.iomart.com + +- name: Miva + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/miva.png + url: https://www.miva.com/ + +- name: Packet + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/packet.png + url: https://www.packet.com/ + +- name: trabia network + sponsor: true + country: usa + is_hidden: moldova + img: /images/sponsors/trabia.png + url: https://www.trabia.com/ + +- name: Voyant + sponsor: true + country: usa + is_hidden: true + img: /images/sponsors/voyant.png + url: http://www.voyant.com/ diff --git a/_includes/navbar.haml b/_includes/navbar.haml new file mode 100644 index 0000000..c44dd2f --- /dev/null +++ b/_includes/navbar.haml @@ -0,0 +1,65 @@ +.navbar.navbar-inverse.navbar-static-top + .container + .navbar-header + %button.navbar-toggle( type="button" data-toggle="collapse" data-target=".navbar-collapse" ) + %span.icon-bar + %span.icon-bar + %span.icon-bar + %a.navbar-brand( href="/" title="Home" ) + %img( src="/images/logo_small.png" ) + .navbar-collapse.collapse + %ul.nav.navbar-nav + %li + %a( href="/download/" ) Get CentOS + %li.dropdown + %a.dropdown-toggle( href="#learn" title="About CentOS" data-toggle="dropdown" ) + About + %b.caret + %ul.dropdown-menu + %li + %a( href="/about/" ) About CentOS + %li + %a( href="https://wiki.centos.org/FAQ" ) FAQ + %li + %a( href="https://wiki.centos.org/SpecialInterestGroup" ) About SIGs + %li + %a( href="/variants/" ) CentOS Variants + %li + %a( href="/about/governance/" ) Governance + + %li.dropdown + %a.dropdown-toggle( href="#learn" title="The CentOS Community" data-toggle="dropdown" ) + Community + %b.caret + %ul.dropdown-menu + %li + %a( href="https://wiki.centos.org/Contribute" ) Contribute + %li + %a( href="https://www.centos.org/forums/" ) Forums + %li + %a( href="https://wiki.centos.org/GettingHelp/ListInfo" ) Mailing Lists + %li + %a( href="https://wiki.centos.org/irc" ) IRC + %li + %a( href="/community/calendar/" ) Calendar & IRC Meeting List + %li + %a( href="http://planet.centos.org" ) Planet + %li + %a( href="https://bugs.centos.org" ) Submit a Bug + %li + %a( href="/community/stories/" ) Stories + + %li.dropdown + %a.dropdown-toggle( href="#learn" title="CentOS Documentation" data-toggle="dropdown" ) + Documentation + %b.caret + %ul.dropdown-menu + %li + %a( href="https://wiki.centos.org" ) Wiki + %li + %a( href="https://docs.centos.org" ) Manuals + %li + %a( href="/keys") GPG Key Info + + %li + %a( href="http://wiki.centos.org/Documentation?action=show&redirect=GettingHelp" ) Help diff --git a/_layouts/default.haml b/_layouts/default.haml new file mode 100644 index 0000000..f2ec181 --- /dev/null +++ b/_layouts/default.haml @@ -0,0 +1,40 @@ +!!!5 +%html + %head + %link( href="//fonts.googleapis.com/css?family=Oxygen+Mono|Source+Sans+Pro:400,300,300italic,400italic,600,600italic|Exo:400,100,100italic,200,200italic,300,300italic,400italic,500italic,500,600,600italic" rel="stylesheet" type="text/css") + %meta( charset="utf-8" ) + %meta( name = "viewport" content = "width=device-width, initial-scale=1.0" ) + %meta( name = "description" content = "" ) + %meta( name = "author" content = "" ) + %meta( http-equiv = "cache-control" content = "max-age=0" ) + %meta( http-equiv = "pragma" content = "no-cache" ) + %link( rel="shortcut icon" href="/images/favicon.ico" ) + %title= "{{ page.title }}" + %script{ :src=>'/assets/js/jquery.min.js' } + %script{ :src=>'/assets/js/jquery.cycle2.min.js' } + %script{ :src=>'/assets/js/jquery.cycle2.center.min.js' } + %script{ :src=>'/assets/js/jquery.backstretch.min.js' } + %script{ :src=>'/assets/js/sass-bootstrap.js' } + %script{ :src=>'/assets/js/jquery.tidy.table.min.js' } + %script{ :src=>'/assets/js/jquery.rss.js' } + %script{ :src=>'/assets/js/moment.min.js' } + %script{ :src=>'/assets/js/google.js' } + %link(rel='stylesheet' type='text/css' href='/styles/site.css' ) + %link(rel='stylesheet' type='text/css' href='/assets/stylesheet.css' ) + %link(rel='stylesheet' type='text/css' href='/assets/jquery.tidy.table.css' ) + %link{:href => "/favicon.ico", :rel => "shortcut icon"} + /[if lt IE 9] + %script{ :type=>'text/javascript', :src=>'/assets/js/html5.js' } + %body + %script + $.backstretch("/images/background.jpeg"); + #wrap + #header + .container.text-center + {% haml navbar.haml %} + .container#main + = "{{ content }}" + #footer + .container.text-center + %p.text-muted.credit © #{ DateTime.now.year } The CentOS Project | Legal | Privacy + diff --git a/_sass/bootstrap.scss b/_sass/bootstrap.scss new file mode 100644 index 0000000..4447833 --- /dev/null +++ b/_sass/bootstrap.scss @@ -0,0 +1,2 @@ +@import "bootstrap/bootstrap"; +@import "extra"; diff --git a/_sass/bootstrap/_alerts.scss b/_sass/bootstrap/_alerts.scss new file mode 100644 index 0000000..cba8a1f --- /dev/null +++ b/_sass/bootstrap/_alerts.scss @@ -0,0 +1,67 @@ +// +// 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 $headingsColor + 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; + } +} + +// Dismissable alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissable { + 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 0000000..191b715 --- /dev/null +++ b/_sass/bootstrap/_badges.scss @@ -0,0 +1,51 @@ +// +// Badges +// -------------------------------------------------- + + +// Base classes +.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: baseline; + 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; + } +} + +// Hover state, but only for links +a.badge { + &:hover, + &:focus { + color: $badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } +} + +// Quick fix for labels/badges in buttons +.btn .badge { + position: relative; + top: -1px; +} + +// Account for counters in navs +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: $badge-active-color; + background-color: $badge-active-bg; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} diff --git a/_sass/bootstrap/_breadcrumbs.scss b/_sass/bootstrap/_breadcrumbs.scss new file mode 100644 index 0000000..d6097c9 --- /dev/null +++ b/_sass/bootstrap/_breadcrumbs.scss @@ -0,0 +1,23 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: 8px 15px; + margin-bottom: $line-height-computed; + list-style: none; + background-color: $breadcrumb-bg; + border-radius: $border-radius-base; + > li { + display: inline-block; + &+li:before { + content: "/\00a0"; // 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 0000000..53b9bf2 --- /dev/null +++ b/_sass/bootstrap/_button-groups.scss @@ -0,0 +1,248 @@ +// +// Button groups +// -------------------------------------------------- + +// Button carets +// +// Match the button text color to the arrow/caret for indicating dropdown-ness. + +.caret { + .btn-default & { + border-top-color: $btn-default-color; + } + .btn-primary &, + .btn-success &, + .btn-warning &, + .btn-danger &, + .btn-info & { + border-top-color: #fff; + } +} +.dropup { + & .btn-default .caret { + border-bottom-color: $btn-default-color; + } + .btn-primary, + .btn-success, + .btn-warning, + .btn-danger, + .btn-info { + .caret { + border-bottom-color: #fff; + } + } +} + +// 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; + } + &:focus { + // Remove focus outline when dropdown JS adds it after closing the menu + outline: none; + } + } +} + +// 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 { + @include clearfix(); + + .btn-group { + float: left; + } + // Space out series of button groups + > .btn, + > .btn-group { + + .btn, + + .btn-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 a .dropdown-menu 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 { + > .btn:last-child, + > .dropdown-toggle { + @include border-right-radius(0); + } +} +.btn-group > .btn-group:last-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)); +} + + +// 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 { + 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) { + border-top-right-radius: $border-radius-base; + @include border-bottom-radius(0); + } + &:last-child:not(:first-child) { + border-bottom-left-radius: $border-radius-base; + @include border-top-radius(0); + } +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child { + > .btn:last-child, + > .dropdown-toggle { + @include border-bottom-radius(0); + } +} +.btn-group-vertical > .btn-group:last-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 { + float: none; + display: table-cell; + width: 1%; + } +} + + +// Checkbox and radio options +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} diff --git a/_sass/bootstrap/_buttons.scss b/_sass/bootstrap/_buttons.scss new file mode 100644 index 0000000..564b28c --- /dev/null +++ b/_sass/bootstrap/_buttons.scss @@ -0,0 +1,160 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +// Core styles +.btn { + display: inline-block; + padding: $padding-base-vertical $padding-base-horizontal; + margin-bottom: 0; // For input.btn + font-size: $font-size-base; + font-weight: $btn-font-weight; + line-height: $line-height-base; + text-align: center; + vertical-align: middle; + cursor: pointer; + border: 1px solid transparent; + border-radius: $border-radius-base; + white-space: nowrap; + @include user-select(none); + + &:focus { + @include tab-focus(); + } + + &:hover, + &: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: not-allowed; + pointer-events: none; // Future-proof disabling of clicks + @include opacity(.65); + @include box-shadow(none); + } + +} + + +// 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); +} +// 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); +} +// 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); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + color: $link-color; + font-weight: normal; + cursor: pointer; + border-radius: 0; + + &, + &: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: underline; + 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, $border-radius-large); +} +.btn-sm, +.btn-xs { + // 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, $border-radius-small); +} +.btn-xs { + padding: 1px 5px; +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +// 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 0000000..40d4c6c --- /dev/null +++ b/_sass/bootstrap/_carousel.scss @@ -0,0 +1,209 @@ +// +// 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; + } + } + + > .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; + // 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,.5), $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,.5)); + } + + // Hover/focus state + &:hover, + &:focus { + 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%; + left: 50%; + z-index: 5; + display: inline-block; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + 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; + } + .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-tablet) { + + // Scale up the controls a smidge + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + + // 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 0000000..62ce30f --- /dev/null +++ b/_sass/bootstrap/_close.scss @@ -0,0 +1,35 @@ +// +// 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="#"`. +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 0000000..4946e2b --- /dev/null +++ b/_sass/bootstrap/_code.scss @@ -0,0 +1,56 @@ +// +// Code (inline and blocK) +// -------------------------------------------------- + + +// Inline and block code styles +code, +pre { + font-family: $font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: $code-color; + background-color: $code-bg; + white-space: nowrap; + border-radius: $border-radius-base; +} + +// 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; + + // Make prettyprint styles more spaced out for readability + &.prettyprint { + margin-bottom: $line-height-computed; + } + + // 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: 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 0000000..86632fd --- /dev/null +++ b/_sass/bootstrap/_component-animations.scss @@ -0,0 +1,29 @@ +// +// 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/twitter/bootstrap/pull/3552. + +.fade { + opacity: 0; + @include transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + &.in { + display: block; + } +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + @include transition(height .35s ease); +} diff --git a/_sass/bootstrap/_dropdowns.scss b/_sass/bootstrap/_dropdowns.scss new file mode 100644 index 0000000..8d8db0a --- /dev/null +++ b/_sass/bootstrap/_dropdowns.scss @@ -0,0 +1,194 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: $caret-width-base solid $dropdown-caret-color; + border-right: $caret-width-base solid transparent; + border-left: $caret-width-base solid transparent; + // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once fixed, + // we can just straight up remove this. + border-bottom: 0 dotted; + content: ""; +} + +// The dropdown wrapper (div) +.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; + 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 + &.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 +.dropdown-menu > .disabled > a { + &:hover, + &:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + @include reset-filter(); + cursor: not-allowed; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: $font-size-small; + line-height: $line-height-base; + color: $dropdown-header-color; +} + +// 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 { + // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once this + // gets fixed, restore `border-top: 0;`. + border-top: 0 dotted; + border-bottom: 4px solid $dropdown-caret-color; + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +} + + +// 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; + } + } +} + diff --git a/_sass/bootstrap/_forms.scss b/_sass/bootstrap/_forms.scss new file mode 100644 index 0000000..fefb3be --- /dev/null +++ b/_sass/bootstrap/_forms.scss @@ -0,0 +1,352 @@ +// +// Forms +// -------------------------------------------------- + + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + padding: 0; + margin: 0; + border: 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; + margin-bottom: 5px; + font-weight: bold; +} + + +// Normalize form controls + +// 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; +} + +// Set the height of select and file controls to match text inputs +input[type="file"] { + display: block; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Fix optgroup Firefox bug per https://github.com/twbs/bootstrap/issues/7611 +select optgroup { + font-size: inherit; + font-style: inherit; + font-family: inherit; +} + +// Focus for select, file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + @include tab-focus(); +} + +// Fix for Chrome number input +// Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button. +// See https://github.com/twbs/bootstrap/issues/8350 for more. +input[type="number"] { + &::-webkit-outer-spin-button, + &::-webkit-inner-spin-button { + height: auto; + } +} + + +// Placeholder +// +// Placeholder text gets special styles because when browsers invalidate entire +// lines if it doesn't understand a selector/ +.form-control { + @include placeholder(); +} + + +// 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; + vertical-align: middle; + background-color: $input-bg; + border: 1px solid $input-border; + border-radius: $input-border-radius; + @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(); + + // Disabled and read-only inputs + // Note: HTML5 says that controls under a fieldset > legend:first-child won't + // be disabled if the fieldset is disabled. Due to implementation difficulty, + // we don't honor that edge case; we style them as disabled anyway. + &[disabled], + &[readonly], + fieldset[disabled] & { + cursor: not-allowed; + background-color: $input-bg-disabled; + } + + // [converter] extracted textarea& to textarea.form-control +} + +// Reset height for `textarea`s +textarea.form-control { + height: auto; +} + + +// Form groups +// +// Designed to help with the organization and spacing of vertical forms. For +// horizontal forms, use the predefined grid classes. + +.form-group { + margin-bottom: 15px; +} + + +// Checkboxes and radios +// +// Indent the labels to position radios/checkboxes as hanging controls. + +.radio, +.checkbox { + display: block; + min-height: $line-height-computed; // clear the floating input if there is no label text + margin-top: 10px; + margin-bottom: 10px; + padding-left: 20px; + vertical-align: middle; + label { + display: inline; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing +} + +// Radios and checkboxes on same line +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; // space out consecutive inline controls +} + +// Apply same disabled cursor tweak as for inputs +// +// Note: Neither radios nor checkboxes can be readonly. +input[type="radio"], +input[type="checkbox"], +.radio, +.radio-inline, +.checkbox, +.checkbox-inline { + &[disabled], + fieldset[disabled] & { + cursor: not-allowed; + } +} + +// Form control sizing + +@include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small); + +@include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large); + + +// Form control feedback states +// +// Apply contextual and semantic states to individual form controls. + +// Warning +.has-warning { + @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg); +} +// Error +.has-error { + @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg); +} +// Success +.has-success { + @include form-control-validation($state-success-text, $state-success-text, $state-success-bg); +} + + +// Static form control text +// +// Apply class to a `p` element to make any string of text align with labels in +// a horizontal form layout. + +.form-control-static { + margin-bottom: 0; // Remove default margin from `p` + padding-top: ($padding-base-vertical + 1); +} + + +// Help text +// +// Apply to any element you wish to create light text for placement immediately +// below a form control. Use for general help, formatting, or instructional text. + +.help-block { + display: block; // account for any element using help-block + margin-top: 5px; + margin-bottom: 10px; + color: lighten($text-color, 25%); // lighten the text some for contrast +} + + + +// Inline forms +// +// Make forms appear inline(-block) by adding the `.form-inline` class. Inline +// forms begin stacked on extra small (mobile) devices and then go inline when +// viewports reach <768px. +// +// Requires wrapping inputs and labels with `.form-group` for proper display of +// default HTML form controls and our custom form controls (e.g., input groups). +// +// Heads up! This is mixin-ed into `.navbar-form` in navbars.less. + +.form-inline { + + // Kick in the inline + @media (min-width: $screen-tablet) { + // Inline-block all the things for "inline" + .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + + // In navbar-form, allow folks to *not* use `.form-group` + .form-control { + display: inline-block; + } + + // Remove default margin on radios/checkboxes that were used for stacking, and + // then undo the floating of radios and checkboxes to match (which also avoids + // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969). + .radio, + .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; + } + .radio input[type="radio"], + .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + } +} + + +// Horizontal forms +// +// Horizontal forms are built on grid classes and allow you to create forms with +// labels on the left and inputs on the right. + +.form-horizontal { + + // Consistent vertical alignment of labels, radios, and checkboxes + .control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: ($padding-base-vertical + 1); // Default padding plus a border + } + + // Make form groups behave like rows + .form-group { + @include make-row(); + } + + // Only right align form labels here when the columns stop stacking + @media (min-width: $screen-tablet) { + .control-label { + text-align: right; + } + } +} diff --git a/_sass/bootstrap/_glyphicons.scss b/_sass/bootstrap/_glyphicons.scss new file mode 100644 index 0000000..7614a7a --- /dev/null +++ b/_sass/bootstrap/_glyphicons.scss @@ -0,0 +1,232 @@ +// +// Glyphicons for Bootstrap +// +// Since icons are fonts, they can be placed anywhere text is placed and are +// thus automatically sized to match the surrounding child. To use, create an +// inline element with the appropriate classes, like so: +// +// Star + +// Import the fonts +@font-face { + font-family: 'Glyphicons Halflings'; + src: font-url('#{$icon-font-path}#{$icon-font-name}.eot'); + src: font-url('#{$icon-font-path}#{$icon-font-name}.eot?#iefix') format('embedded-opentype'), + font-url('#{$icon-font-path}#{$icon-font-name}.woff') format('woff'), + font-url('#{$icon-font-path}#{$icon-font-name}.ttf') format('truetype'), + font-url('#{$icon-font-path}#{$icon-font-name}.svg#glyphicons-halflingsregular') format('svg'); +} + +// Catchall baseclass +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; +} + +// Individual icons +.glyphicon-asterisk { &:before { content: "\2a"; } } +.glyphicon-plus { &:before { content: "\2b"; } } +.glyphicon-euro { &:before { content: "\20ac"; } } +.glyphicon-minus { &:before { content: "\2212"; } } +.glyphicon-cloud { &:before { content: "\2601"; } } +.glyphicon-envelope { &:before { content: "\2709"; } } +.glyphicon-pencil { &:before { content: "\270f"; } } +.glyphicon-glass { &:before { content: "\e001"; } } +.glyphicon-music { &:before { content: "\e002"; } } +.glyphicon-search { &:before { content: "\e003"; } } +.glyphicon-heart { &:before { content: "\e005"; } } +.glyphicon-star { &:before { content: "\e006"; } } +.glyphicon-star-empty { &:before { content: "\e007"; } } +.glyphicon-user { &:before { content: "\e008"; } } +.glyphicon-film { &:before { content: "\e009"; } } +.glyphicon-th-large { &:before { content: "\e010"; } } +.glyphicon-th { &:before { content: "\e011"; } } +.glyphicon-th-list { &:before { content: "\e012"; } } +.glyphicon-ok { &:before { content: "\e013"; } } +.glyphicon-remove { &:before { content: "\e014"; } } +.glyphicon-zoom-in { &:before { content: "\e015"; } } +.glyphicon-zoom-out { &:before { content: "\e016"; } } +.glyphicon-off { &:before { content: "\e017"; } } +.glyphicon-signal { &:before { content: "\e018"; } } +.glyphicon-cog { &:before { content: "\e019"; } } +.glyphicon-trash { &:before { content: "\e020"; } } +.glyphicon-home { &:before { content: "\e021"; } } +.glyphicon-file { &:before { content: "\e022"; } } +.glyphicon-time { &:before { content: "\e023"; } } +.glyphicon-road { &:before { content: "\e024"; } } +.glyphicon-download-alt { &:before { content: "\e025"; } } +.glyphicon-download { &:before { content: "\e026"; } } +.glyphicon-upload { &:before { content: "\e027"; } } +.glyphicon-inbox { &:before { content: "\e028"; } } +.glyphicon-play-circle { &:before { content: "\e029"; } } +.glyphicon-repeat { &:before { content: "\e030"; } } +.glyphicon-refresh { &:before { content: "\e031"; } } +.glyphicon-list-alt { &:before { content: "\e032"; } } +.glyphicon-flag { &:before { content: "\e034"; } } +.glyphicon-headphones { &:before { content: "\e035"; } } +.glyphicon-volume-off { &:before { content: "\e036"; } } +.glyphicon-volume-down { &:before { content: "\e037"; } } +.glyphicon-volume-up { &:before { content: "\e038"; } } +.glyphicon-qrcode { &:before { content: "\e039"; } } +.glyphicon-barcode { &:before { content: "\e040"; } } +.glyphicon-tag { &:before { content: "\e041"; } } +.glyphicon-tags { &:before { content: "\e042"; } } +.glyphicon-book { &:before { content: "\e043"; } } +.glyphicon-print { &:before { content: "\e045"; } } +.glyphicon-font { &:before { content: "\e047"; } } +.glyphicon-bold { &:before { content: "\e048"; } } +.glyphicon-italic { &:before { content: "\e049"; } } +.glyphicon-text-height { &:before { content: "\e050"; } } +.glyphicon-text-width { &:before { content: "\e051"; } } +.glyphicon-align-left { &:before { content: "\e052"; } } +.glyphicon-align-center { &:before { content: "\e053"; } } +.glyphicon-align-right { &:before { content: "\e054"; } } +.glyphicon-align-justify { &:before { content: "\e055"; } } +.glyphicon-list { &:before { content: "\e056"; } } +.glyphicon-indent-left { &:before { content: "\e057"; } } +.glyphicon-indent-right { &:before { content: "\e058"; } } +.glyphicon-facetime-video { &:before { content: "\e059"; } } +.glyphicon-picture { &:before { content: "\e060"; } } +.glyphicon-map-marker { &:before { content: "\e062"; } } +.glyphicon-adjust { &:before { content: "\e063"; } } +.glyphicon-tint { &:before { content: "\e064"; } } +.glyphicon-edit { &:before { content: "\e065"; } } +.glyphicon-share { &:before { content: "\e066"; } } +.glyphicon-check { &:before { content: "\e067"; } } +.glyphicon-move { &:before { content: "\e068"; } } +.glyphicon-step-backward { &:before { content: "\e069"; } } +.glyphicon-fast-backward { &:before { content: "\e070"; } } +.glyphicon-backward { &:before { content: "\e071"; } } +.glyphicon-play { &:before { content: "\e072"; } } +.glyphicon-pause { &:before { content: "\e073"; } } +.glyphicon-stop { &:before { content: "\e074"; } } +.glyphicon-forward { &:before { content: "\e075"; } } +.glyphicon-fast-forward { &:before { content: "\e076"; } } +.glyphicon-step-forward { &:before { content: "\e077"; } } +.glyphicon-eject { &:before { content: "\e078"; } } +.glyphicon-chevron-left { &:before { content: "\e079"; } } +.glyphicon-chevron-right { &:before { content: "\e080"; } } +.glyphicon-plus-sign { &:before { content: "\e081"; } } +.glyphicon-minus-sign { &:before { content: "\e082"; } } +.glyphicon-remove-sign { &:before { content: "\e083"; } } +.glyphicon-ok-sign { &:before { content: "\e084"; } } +.glyphicon-question-sign { &:before { content: "\e085"; } } +.glyphicon-info-sign { &:before { content: "\e086"; } } +.glyphicon-screenshot { &:before { content: "\e087"; } } +.glyphicon-remove-circle { &:before { content: "\e088"; } } +.glyphicon-ok-circle { &:before { content: "\e089"; } } +.glyphicon-ban-circle { &:before { content: "\e090"; } } +.glyphicon-arrow-left { &:before { content: "\e091"; } } +.glyphicon-arrow-right { &:before { content: "\e092"; } } +.glyphicon-arrow-up { &:before { content: "\e093"; } } +.glyphicon-arrow-down { &:before { content: "\e094"; } } +.glyphicon-share-alt { &:before { content: "\e095"; } } +.glyphicon-resize-full { &:before { content: "\e096"; } } +.glyphicon-resize-small { &:before { content: "\e097"; } } +.glyphicon-exclamation-sign { &:before { content: "\e101"; } } +.glyphicon-gift { &:before { content: "\e102"; } } +.glyphicon-leaf { &:before { content: "\e103"; } } +.glyphicon-eye-open { &:before { content: "\e105"; } } +.glyphicon-eye-close { &:before { content: "\e106"; } } +.glyphicon-warning-sign { &:before { content: "\e107"; } } +.glyphicon-plane { &:before { content: "\e108"; } } +.glyphicon-random { &:before { content: "\e110"; } } +.glyphicon-comment { &:before { content: "\e111"; } } +.glyphicon-magnet { &:before { content: "\e112"; } } +.glyphicon-chevron-up { &:before { content: "\e113"; } } +.glyphicon-chevron-down { &:before { content: "\e114"; } } +.glyphicon-retweet { &:before { content: "\e115"; } } +.glyphicon-shopping-cart { &:before { content: "\e116"; } } +.glyphicon-folder-close { &:before { content: "\e117"; } } +.glyphicon-folder-open { &:before { content: "\e118"; } } +.glyphicon-resize-vertical { &:before { content: "\e119"; } } +.glyphicon-resize-horizontal { &:before { content: "\e120"; } } +.glyphicon-hdd { &:before { content: "\e121"; } } +.glyphicon-bullhorn { &:before { content: "\e122"; } } +.glyphicon-certificate { &:before { content: "\e124"; } } +.glyphicon-thumbs-up { &:before { content: "\e125"; } } +.glyphicon-thumbs-down { &:before { content: "\e126"; } } +.glyphicon-hand-right { &:before { content: "\e127"; } } +.glyphicon-hand-left { &:before { content: "\e128"; } } +.glyphicon-hand-up { &:before { content: "\e129"; } } +.glyphicon-hand-down { &:before { content: "\e130"; } } +.glyphicon-circle-arrow-right { &:before { content: "\e131"; } } +.glyphicon-circle-arrow-left { &:before { content: "\e132"; } } +.glyphicon-circle-arrow-up { &:before { content: "\e133"; } } +.glyphicon-circle-arrow-down { &:before { content: "\e134"; } } +.glyphicon-globe { &:before { content: "\e135"; } } +.glyphicon-tasks { &:before { content: "\e137"; } } +.glyphicon-filter { &:before { content: "\e138"; } } +.glyphicon-fullscreen { &:before { content: "\e140"; } } +.glyphicon-dashboard { &:before { content: "\e141"; } } +.glyphicon-heart-empty { &:before { content: "\e143"; } } +.glyphicon-link { &:before { content: "\e144"; } } +.glyphicon-phone { &:before { content: "\e145"; } } +.glyphicon-usd { &:before { content: "\e148"; } } +.glyphicon-gbp { &:before { content: "\e149"; } } +.glyphicon-sort { &:before { content: "\e150"; } } +.glyphicon-sort-by-alphabet { &:before { content: "\e151"; } } +.glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } } +.glyphicon-sort-by-order { &:before { content: "\e153"; } } +.glyphicon-sort-by-order-alt { &:before { content: "\e154"; } } +.glyphicon-sort-by-attributes { &:before { content: "\e155"; } } +.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } } +.glyphicon-unchecked { &:before { content: "\e157"; } } +.glyphicon-expand { &:before { content: "\e158"; } } +.glyphicon-collapse-down { &:before { content: "\e159"; } } +.glyphicon-collapse-up { &:before { content: "\e160"; } } +.glyphicon-log-in { &:before { content: "\e161"; } } +.glyphicon-flash { &:before { content: "\e162"; } } +.glyphicon-log-out { &:before { content: "\e163"; } } +.glyphicon-new-window { &:before { content: "\e164"; } } +.glyphicon-record { &:before { content: "\e165"; } } +.glyphicon-save { &:before { content: "\e166"; } } +.glyphicon-open { &:before { content: "\e167"; } } +.glyphicon-saved { &:before { content: "\e168"; } } +.glyphicon-import { &:before { content: "\e169"; } } +.glyphicon-export { &:before { content: "\e170"; } } +.glyphicon-send { &:before { content: "\e171"; } } +.glyphicon-floppy-disk { &:before { content: "\e172"; } } +.glyphicon-floppy-saved { &:before { content: "\e173"; } } +.glyphicon-floppy-remove { &:before { content: "\e174"; } } +.glyphicon-floppy-save { &:before { content: "\e175"; } } +.glyphicon-floppy-open { &:before { content: "\e176"; } } +.glyphicon-credit-card { &:before { content: "\e177"; } } +.glyphicon-transfer { &:before { content: "\e178"; } } +.glyphicon-cutlery { &:before { content: "\e179"; } } +.glyphicon-header { &:before { content: "\e180"; } } +.glyphicon-compressed { &:before { content: "\e181"; } } +.glyphicon-earphone { &:before { content: "\e182"; } } +.glyphicon-phone-alt { &:before { content: "\e183"; } } +.glyphicon-tower { &:before { content: "\e184"; } } +.glyphicon-stats { &:before { content: "\e185"; } } +.glyphicon-sd-video { &:before { content: "\e186"; } } +.glyphicon-hd-video { &:before { content: "\e187"; } } +.glyphicon-subtitles { &:before { content: "\e188"; } } +.glyphicon-sound-stereo { &:before { content: "\e189"; } } +.glyphicon-sound-dolby { &:before { content: "\e190"; } } +.glyphicon-sound-5-1 { &:before { content: "\e191"; } } +.glyphicon-sound-6-1 { &:before { content: "\e192"; } } +.glyphicon-sound-7-1 { &:before { content: "\e193"; } } +.glyphicon-copyright-mark { &:before { content: "\e194"; } } +.glyphicon-registration-mark { &:before { content: "\e195"; } } +.glyphicon-cloud-download { &:before { content: "\e197"; } } +.glyphicon-cloud-upload { &:before { content: "\e198"; } } +.glyphicon-tree-conifer { &:before { content: "\e199"; } } +.glyphicon-tree-deciduous { &:before { content: "\e200"; } } +.glyphicon-briefcase { &:before { content: "\1f4bc"; } } +.glyphicon-calendar { &:before { content: "\1f4c5"; } } +.glyphicon-pushpin { &:before { content: "\1f4cc"; } } +.glyphicon-paperclip { &:before { content: "\1f4ce"; } } +.glyphicon-camera { &:before { content: "\1f4f7"; } } +.glyphicon-lock { &:before { content: "\1f512"; } } +.glyphicon-bell { &:before { content: "\1f514"; } } +.glyphicon-bookmark { &:before { content: "\1f516"; } } +.glyphicon-fire { &:before { content: "\1f525"; } } +.glyphicon-wrench { &:before { content: "\1f527"; } } diff --git a/_sass/bootstrap/_grid.scss b/_sass/bootstrap/_grid.scss new file mode 100644 index 0000000..b739362 --- /dev/null +++ b/_sass/bootstrap/_grid.scss @@ -0,0 +1,346 @@ +// +// Grid system +// -------------------------------------------------- + + +// Set the container width, and override it for fixed navbars in media queries +.container { + @include container-fixed(); +} + +// mobile first defaults +.row { + @include make-row(); +} + +// Common styles for small and large grid columns +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-md-1, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-10, +.col-md-11, +.col-md-12, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: ($grid-gutter-width / 2); + padding-right: ($grid-gutter-width / 2); +} + + +// Extra small grid +// +// Grid classes for extra small devices like smartphones. No offset, push, or +// pull classes are present here due to the size of the target. +// +// Note that `.col-xs-12` doesn't get floated on purpose-there's no need since +// it's full-width. + +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11 { + float: left; +} +.col-xs-1 { width: percentage((1 / $grid-columns)); } +.col-xs-2 { width: percentage((2 / $grid-columns)); } +.col-xs-3 { width: percentage((3 / $grid-columns)); } +.col-xs-4 { width: percentage((4 / $grid-columns)); } +.col-xs-5 { width: percentage((5 / $grid-columns)); } +.col-xs-6 { width: percentage((6 / $grid-columns)); } +.col-xs-7 { width: percentage((7 / $grid-columns)); } +.col-xs-8 { width: percentage((8 / $grid-columns)); } +.col-xs-9 { width: percentage((9 / $grid-columns)); } +.col-xs-10 { width: percentage((10/ $grid-columns)); } +.col-xs-11 { width: percentage((11/ $grid-columns)); } +.col-xs-12 { width: 100%; } + + +// Small grid +// +// Columns, offsets, pushes, and pulls for the small device range, from phones +// to tablets. +// +// Note that `.col-sm-12` doesn't get floated on purpose-there's no need since +// it's full-width. + +@media (min-width: $screen-tablet) { + .container { + max-width: $container-tablet; + } + + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11 { + float: left; + } + .col-sm-1 { width: percentage((1 / $grid-columns)); } + .col-sm-2 { width: percentage((2 / $grid-columns)); } + .col-sm-3 { width: percentage((3 / $grid-columns)); } + .col-sm-4 { width: percentage((4 / $grid-columns)); } + .col-sm-5 { width: percentage((5 / $grid-columns)); } + .col-sm-6 { width: percentage((6 / $grid-columns)); } + .col-sm-7 { width: percentage((7 / $grid-columns)); } + .col-sm-8 { width: percentage((8 / $grid-columns)); } + .col-sm-9 { width: percentage((9 / $grid-columns)); } + .col-sm-10 { width: percentage((10/ $grid-columns)); } + .col-sm-11 { width: percentage((11/ $grid-columns)); } + .col-sm-12 { width: 100%; } + + // Push and pull columns for source order changes + .col-sm-push-1 { left: percentage((1 / $grid-columns)); } + .col-sm-push-2 { left: percentage((2 / $grid-columns)); } + .col-sm-push-3 { left: percentage((3 / $grid-columns)); } + .col-sm-push-4 { left: percentage((4 / $grid-columns)); } + .col-sm-push-5 { left: percentage((5 / $grid-columns)); } + .col-sm-push-6 { left: percentage((6 / $grid-columns)); } + .col-sm-push-7 { left: percentage((7 / $grid-columns)); } + .col-sm-push-8 { left: percentage((8 / $grid-columns)); } + .col-sm-push-9 { left: percentage((9 / $grid-columns)); } + .col-sm-push-10 { left: percentage((10/ $grid-columns)); } + .col-sm-push-11 { left: percentage((11/ $grid-columns)); } + + .col-sm-pull-1 { right: percentage((1 / $grid-columns)); } + .col-sm-pull-2 { right: percentage((2 / $grid-columns)); } + .col-sm-pull-3 { right: percentage((3 / $grid-columns)); } + .col-sm-pull-4 { right: percentage((4 / $grid-columns)); } + .col-sm-pull-5 { right: percentage((5 / $grid-columns)); } + .col-sm-pull-6 { right: percentage((6 / $grid-columns)); } + .col-sm-pull-7 { right: percentage((7 / $grid-columns)); } + .col-sm-pull-8 { right: percentage((8 / $grid-columns)); } + .col-sm-pull-9 { right: percentage((9 / $grid-columns)); } + .col-sm-pull-10 { right: percentage((10/ $grid-columns)); } + .col-sm-pull-11 { right: percentage((11/ $grid-columns)); } + + // Offsets + .col-sm-offset-1 { margin-left: percentage((1 / $grid-columns)); } + .col-sm-offset-2 { margin-left: percentage((2 / $grid-columns)); } + .col-sm-offset-3 { margin-left: percentage((3 / $grid-columns)); } + .col-sm-offset-4 { margin-left: percentage((4 / $grid-columns)); } + .col-sm-offset-5 { margin-left: percentage((5 / $grid-columns)); } + .col-sm-offset-6 { margin-left: percentage((6 / $grid-columns)); } + .col-sm-offset-7 { margin-left: percentage((7 / $grid-columns)); } + .col-sm-offset-8 { margin-left: percentage((8 / $grid-columns)); } + .col-sm-offset-9 { margin-left: percentage((9 / $grid-columns)); } + .col-sm-offset-10 { margin-left: percentage((10/ $grid-columns)); } + .col-sm-offset-11 { margin-left: percentage((11/ $grid-columns)); } +} + + +// Medium grid +// +// Columns, offsets, pushes, and pulls for the desktop device range. +// +// Note that `.col-md-12` doesn't get floated on purpose-there's no need since +// it's full-width. + +@media (min-width: $screen-desktop) { + .container { + max-width: $container-desktop; + } + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11 { + float: left; + } + .col-md-1 { width: percentage((1 / $grid-columns)); } + .col-md-2 { width: percentage((2 / $grid-columns)); } + .col-md-3 { width: percentage((3 / $grid-columns)); } + .col-md-4 { width: percentage((4 / $grid-columns)); } + .col-md-5 { width: percentage((5 / $grid-columns)); } + .col-md-6 { width: percentage((6 / $grid-columns)); } + .col-md-7 { width: percentage((7 / $grid-columns)); } + .col-md-8 { width: percentage((8 / $grid-columns)); } + .col-md-9 { width: percentage((9 / $grid-columns)); } + .col-md-10 { width: percentage((10/ $grid-columns)); } + .col-md-11 { width: percentage((11/ $grid-columns)); } + .col-md-12 { width: 100%; } + + // Push and pull columns for source order changes + .col-md-push-0 { left: auto; } + .col-md-push-1 { left: percentage((1 / $grid-columns)); } + .col-md-push-2 { left: percentage((2 / $grid-columns)); } + .col-md-push-3 { left: percentage((3 / $grid-columns)); } + .col-md-push-4 { left: percentage((4 / $grid-columns)); } + .col-md-push-5 { left: percentage((5 / $grid-columns)); } + .col-md-push-6 { left: percentage((6 / $grid-columns)); } + .col-md-push-7 { left: percentage((7 / $grid-columns)); } + .col-md-push-8 { left: percentage((8 / $grid-columns)); } + .col-md-push-9 { left: percentage((9 / $grid-columns)); } + .col-md-push-10 { left: percentage((10/ $grid-columns)); } + .col-md-push-11 { left: percentage((11/ $grid-columns)); } + + .col-md-pull-0 { right: auto; } + .col-md-pull-1 { right: percentage((1 / $grid-columns)); } + .col-md-pull-2 { right: percentage((2 / $grid-columns)); } + .col-md-pull-3 { right: percentage((3 / $grid-columns)); } + .col-md-pull-4 { right: percentage((4 / $grid-columns)); } + .col-md-pull-5 { right: percentage((5 / $grid-columns)); } + .col-md-pull-6 { right: percentage((6 / $grid-columns)); } + .col-md-pull-7 { right: percentage((7 / $grid-columns)); } + .col-md-pull-8 { right: percentage((8 / $grid-columns)); } + .col-md-pull-9 { right: percentage((9 / $grid-columns)); } + .col-md-pull-10 { right: percentage((10/ $grid-columns)); } + .col-md-pull-11 { right: percentage((11/ $grid-columns)); } + + // Offsets + .col-md-offset-0 { margin-left: 0; } + .col-md-offset-1 { margin-left: percentage((1 / $grid-columns)); } + .col-md-offset-2 { margin-left: percentage((2 / $grid-columns)); } + .col-md-offset-3 { margin-left: percentage((3 / $grid-columns)); } + .col-md-offset-4 { margin-left: percentage((4 / $grid-columns)); } + .col-md-offset-5 { margin-left: percentage((5 / $grid-columns)); } + .col-md-offset-6 { margin-left: percentage((6 / $grid-columns)); } + .col-md-offset-7 { margin-left: percentage((7 / $grid-columns)); } + .col-md-offset-8 { margin-left: percentage((8 / $grid-columns)); } + .col-md-offset-9 { margin-left: percentage((9 / $grid-columns)); } + .col-md-offset-10 { margin-left: percentage((10/ $grid-columns)); } + .col-md-offset-11 { margin-left: percentage((11/ $grid-columns)); } +} + + +// Large grid +// +// Columns, offsets, pushes, and pulls for the large desktop device range. +// +// Note that `.col-lg-12` doesn't get floated on purpose-there's no need since +// it's full-width. + +@media (min-width: $screen-lg-desktop) { + .container { + max-width: $container-lg-desktop; + } + + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11 { + float: left; + } + .col-lg-1 { width: percentage((1 / $grid-columns)); } + .col-lg-2 { width: percentage((2 / $grid-columns)); } + .col-lg-3 { width: percentage((3 / $grid-columns)); } + .col-lg-4 { width: percentage((4 / $grid-columns)); } + .col-lg-5 { width: percentage((5 / $grid-columns)); } + .col-lg-6 { width: percentage((6 / $grid-columns)); } + .col-lg-7 { width: percentage((7 / $grid-columns)); } + .col-lg-8 { width: percentage((8 / $grid-columns)); } + .col-lg-9 { width: percentage((9 / $grid-columns)); } + .col-lg-10 { width: percentage((10/ $grid-columns)); } + .col-lg-11 { width: percentage((11/ $grid-columns)); } + .col-lg-12 { width: 100%; } + + // Push and pull columns for source order changes + .col-lg-push-0 { left: auto; } + .col-lg-push-1 { left: percentage((1 / $grid-columns)); } + .col-lg-push-2 { left: percentage((2 / $grid-columns)); } + .col-lg-push-3 { left: percentage((3 / $grid-columns)); } + .col-lg-push-4 { left: percentage((4 / $grid-columns)); } + .col-lg-push-5 { left: percentage((5 / $grid-columns)); } + .col-lg-push-6 { left: percentage((6 / $grid-columns)); } + .col-lg-push-7 { left: percentage((7 / $grid-columns)); } + .col-lg-push-8 { left: percentage((8 / $grid-columns)); } + .col-lg-push-9 { left: percentage((9 / $grid-columns)); } + .col-lg-push-10 { left: percentage((10/ $grid-columns)); } + .col-lg-push-11 { left: percentage((11/ $grid-columns)); } + + .col-lg-pull-0 { right: auto; } + .col-lg-pull-1 { right: percentage((1 / $grid-columns)); } + .col-lg-pull-2 { right: percentage((2 / $grid-columns)); } + .col-lg-pull-3 { right: percentage((3 / $grid-columns)); } + .col-lg-pull-4 { right: percentage((4 / $grid-columns)); } + .col-lg-pull-5 { right: percentage((5 / $grid-columns)); } + .col-lg-pull-6 { right: percentage((6 / $grid-columns)); } + .col-lg-pull-7 { right: percentage((7 / $grid-columns)); } + .col-lg-pull-8 { right: percentage((8 / $grid-columns)); } + .col-lg-pull-9 { right: percentage((9 / $grid-columns)); } + .col-lg-pull-10 { right: percentage((10/ $grid-columns)); } + .col-lg-pull-11 { right: percentage((11/ $grid-columns)); } + + // Offsets + .col-lg-offset-0 { margin-left: 0; } + .col-lg-offset-1 { margin-left: percentage((1 / $grid-columns)); } + .col-lg-offset-2 { margin-left: percentage((2 / $grid-columns)); } + .col-lg-offset-3 { margin-left: percentage((3 / $grid-columns)); } + .col-lg-offset-4 { margin-left: percentage((4 / $grid-columns)); } + .col-lg-offset-5 { margin-left: percentage((5 / $grid-columns)); } + .col-lg-offset-6 { margin-left: percentage((6 / $grid-columns)); } + .col-lg-offset-7 { margin-left: percentage((7 / $grid-columns)); } + .col-lg-offset-8 { margin-left: percentage((8 / $grid-columns)); } + .col-lg-offset-9 { margin-left: percentage((9 / $grid-columns)); } + .col-lg-offset-10 { margin-left: percentage((10/ $grid-columns)); } + .col-lg-offset-11 { margin-left: percentage((11/ $grid-columns)); } +} diff --git a/_sass/bootstrap/_input-groups.scss b/_sass/bootstrap/_input-groups.scss new file mode 100644 index 0000000..563c067 --- /dev/null +++ b/_sass/bootstrap/_input-groups.scss @@ -0,0 +1,127 @@ +// +// Input groups +// -------------------------------------------------- + +// Base styles +// ------------------------- +.input-group { + position: relative; // For dropdowns + display: table; + border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table + + // Undo padding and float of grid classes + &.col { + float: none; + padding-left: 0; + padding-right: 0; + } + + .form-control { + width: 100%; + margin-bottom: 0; + } +} + +// Sizing options +// +// Remix the default form control sizing classes into new ones for easier +// manipulation. + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { @extend .input-lg; } +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { @extend .input-sm; } + + +// Display as table-cell +// ------------------------- +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; + + &:not(:first-child):not(:last-child) { + border-radius: 0; + } +} +// Addon and addon wrapper for buttons +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; // Match the inputs +} + +// Text input groups +// ------------------------- +.input-group-addon { + padding: $padding-base-vertical $padding-base-horizontal; + font-size: $font-size-base; + font-weight: normal; + line-height: 1; + text-align: center; + background-color: $input-group-addon-bg; + border: 1px solid $input-group-addon-border-color; + border-radius: $border-radius-base; + + // Sizing + &.input-sm { + padding: $padding-small-vertical $padding-small-horizontal; + font-size: $font-size-small; + border-radius: $border-radius-small; + } + &.input-lg { + padding: $padding-large-vertical $padding-large-horizontal; + font-size: $font-size-large; + border-radius: $border-radius-large; + } + + // Nuke default margins from checkboxes and radios to vertically center within. + input[type="radio"], + input[type="checkbox"] { + margin-top: 0; + } +} + +// Reset rounded corners +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + @include border-right-radius(0); +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { + @include border-left-radius(0); +} +.input-group-addon:last-child { + border-left: 0; +} + +// Button input groups +// ------------------------- +.input-group-btn { + position: relative; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; + // Jankily prevent input button groups from wrapping + + .btn { + margin-left: -4px; + } + // Bring the "active" button to the front + &:hover, + &:active { + z-index: 2; + } +} diff --git a/_sass/bootstrap/_jumbotron.scss b/_sass/bootstrap/_jumbotron.scss new file mode 100644 index 0000000..cd796be --- /dev/null +++ b/_sass/bootstrap/_jumbotron.scss @@ -0,0 +1,40 @@ +// +// Jumbotron +// -------------------------------------------------- + + +.jumbotron { + padding: $jumbotron-padding; + margin-bottom: $jumbotron-padding; + font-size: ($font-size-base * 1.5); + font-weight: 200; + line-height: ($line-height-base * 1.5); + color: $jumbotron-color; + background-color: $jumbotron-bg; + + h1 { + line-height: 1; + color: $jumbotron-heading-color; + } + p { + line-height: 1.4; + } + + .container & { + border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container + } + + @media screen and (min-width: $screen-tablet) { + padding-top: ($jumbotron-padding * 1.6); + padding-bottom: ($jumbotron-padding * 1.6); + + .container & { + padding-left: ($jumbotron-padding * 2); + padding-right: ($jumbotron-padding * 2); + } + + h1 { + font-size: ($font-size-base * 4.5); + } + } +} diff --git a/_sass/bootstrap/_labels.scss b/_sass/bootstrap/_labels.scss new file mode 100644 index 0000000..bc6af1d --- /dev/null +++ b/_sass/bootstrap/_labels.scss @@ -0,0 +1,58 @@ +// +// Labels +// -------------------------------------------------- + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: $label-color; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; + + // Add hover effects, but only for links + &[href] { + &:hover, + &:focus { + color: $label-link-hover-color; + text-decoration: none; + cursor: pointer; + } + } + + // Empty labels collapse automatically (not available in IE8) + &:empty { + display: none; + } +} + +// Colors +// Contextual variations (linked labels get darker on :hover) + +.label-default { + @include label-variant($label-default-bg); +} + +.label-primary { + @include label-variant($label-primary-bg); +} + +.label-success { + @include label-variant($label-success-bg); +} + +.label-info { + @include label-variant($label-info-bg); +} + +.label-warning { + @include label-variant($label-warning-bg); +} + +.label-danger { + @include label-variant($label-danger-bg); +} diff --git a/_sass/bootstrap/_list-group.scss b/_sass/bootstrap/_list-group.scss new file mode 100644 index 0000000..b3c116d --- /dev/null +++ b/_sass/bootstrap/_list-group.scss @@ -0,0 +1,90 @@ +// +// List groups +// -------------------------------------------------- + +// Base class +// +// Easily usable on