diff --git a/.gitignore b/.gitignore index 091c90f..62821e5 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ dist bower_components app/index.html .idea +_site +.jekyll-metadata diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index a80b6e0..0000000 --- a/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - '0.10' -before_script: - - 'npm install -g bower grunt-cli' - - 'bower install' diff --git a/404.html b/404.html new file mode 100644 index 0000000..a041c86 --- /dev/null +++ b/404.html @@ -0,0 +1,25 @@ +--- +layout: default +--- + + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..7f21fd4 --- /dev/null +++ b/Gemfile @@ -0,0 +1,27 @@ +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.5.2" + +# 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" +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] + diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..4af1259 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,58 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + colorator (1.1.0) + ffi (1.9.18) + forwardable-extended (2.6.0) + jekyll (3.5.2) + addressable (~> 2.4) + colorator (~> 1.0) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 1.1) + kramdown (~> 1.3) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (~> 1.7) + safe_yaml (~> 1.0) + jekyll-feed (0.9.2) + jekyll (~> 3.3) + jekyll-sass-converter (1.5.0) + sass (~> 3.4) + jekyll-watch (1.5.0) + listen (~> 3.0, < 3.1) + kramdown (1.15.0) + liquid (4.0.0) + listen (3.0.8) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + mercenary (0.3.6) + minima (2.1.1) + jekyll (~> 3.3) + pathutil (0.14.0) + forwardable-extended (~> 2.6) + public_suffix (3.0.0) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + rouge (1.11.1) + safe_yaml (1.0.4) + sass (3.5.1) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + +PLATFORMS + ruby + +DEPENDENCIES + jekyll (= 3.5.2) + jekyll-feed (~> 0.6) + minima (~> 2.0) + tzinfo-data + +BUNDLED WITH + 1.15.1 diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index d1dba3e..0000000 --- a/Gruntfile.js +++ /dev/null @@ -1,381 +0,0 @@ -// Generated on 2014-08-13 using generator-angular 0.9.5 -'use strict'; - -// # Globbing -// for performance reasons we're only matching one level down: -// 'test/spec/{,*/}*.js' -// use this if you want to recursively match all subfolders: -// 'test/spec/**/*.js' - -module.exports = function (grunt) { - - // Load grunt tasks automatically - require('load-grunt-tasks')(grunt); - - // Time how long tasks take. Can help when optimizing build times - require('time-grunt')(grunt); - - // Configurable paths for the application - var appConfig = { - app: require('./bower.json').appPath || 'app', - dist: 'dist' - }; - - // Define the configuration for all the tasks - grunt.initConfig({ - - // Project settings - yeoman: appConfig, - - // Watches files for changes and runs tasks based on the changed files - watch: { - ejs: { - files: ['pages/*.ejs', 'conference.json'], - tasks: ['build'] - }, - bower: { - files: ['bower.json'], - tasks: ['wiredep'] - }, - js: { - files: ['<%= yeoman.app %>/scripts/{,*/}*.js'], - tasks: ['newer:jshint:all'], - options: { - livereload: '<%= connect.options.livereload %>' - } - }, - compass: { - files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'], - tasks: ['compass:server', 'autoprefixer'] - }, - gruntfile: { - files: ['Gruntfile.js'] - }, - livereload: { - options: { - livereload: '<%= connect.options.livereload %>' - }, - files: [ - '<%= yeoman.app %>/{,*/}*.html', - '.tmp/styles/{,*/}*.css', - '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' - ] - } - }, - - // The actual grunt server settings - connect: { - options: { - port: 9000, - // Change this to '0.0.0.0' to access the server from outside. - hostname: 'localhost', - livereload: 35729 - }, - livereload: { - options: { - open: true, - middleware: function (connect) { - return [ - connect.static('.tmp'), - connect().use( - '/bower_components', - connect.static('./bower_components') - ), - connect.static(appConfig.app) - ]; - } - } - }, - dist: { - options: { - open: true, - base: '<%= yeoman.dist %>' - } - } - }, - - // Make sure code styles are up to par and there are no obvious mistakes - jshint: { - options: { - jshintrc: '.jshintrc', - reporter: require('jshint-stylish') - }, - all: { - src: [ - 'Gruntfile.js', - '<%= yeoman.app %>/scripts/{,*/}*.js' - ] - } - }, - - // Empties folders to start fresh - clean: { - dist: { - files: [{ - dot: true, - src: [ - '.tmp', - '<%= yeoman.dist %>/{,*/}*', - '!<%= yeoman.dist %>/.git*' - ] - }] - }, - server: '.tmp' - }, - - // Add vendor prefixed styles - autoprefixer: { - options: { - browsers: ['last 1 version'] - }, - dist: { - files: [{ - expand: true, - cwd: '.tmp/styles/', - src: '{,*/}*.css', - dest: '.tmp/styles/' - }] - } - }, - - // Automatically inject Bower components into the app - wiredep: { - options: { - cwd: '.' - }, - app: { - src: ['<%= yeoman.app %>/index.html'], - ignorePath: /\.\.\// - }, - sass: { - src: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'], - ignorePath: /(\.\.\/){1,2}bower_components\// - } - }, - - // Compiles Sass to CSS and generates necessary files if requested - compass: { - options: { - sassDir: '<%= yeoman.app %>/styles', - cssDir: '.tmp/styles', - generatedImagesDir: '.tmp/images/generated', - imagesDir: '<%= yeoman.app %>/images', - javascriptsDir: '<%= yeoman.app %>/scripts', - fontsDir: '<%= yeoman.app %>/styles/fonts', - importPath: './bower_components', - httpImagesPath: '/images', - httpGeneratedImagesPath: '/images/generated', - httpFontsPath: '/styles/fonts', - relativeAssets: false, - assetCacheBuster: false, - raw: 'Sass::Script::Number.precision = 10\n' - }, - dist: { - options: { - generatedImagesDir: '<%= yeoman.dist %>/images/generated' - } - }, - server: { - options: { - debugInfo: true - } - } - }, - - // Renames files for browser caching purposes - filerev: { - dist: { - src: [ - '<%= yeoman.dist %>/scripts/{,*/}*.js', - '<%= yeoman.dist %>/styles/{,*/}*.css', - '<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', - '<%= yeoman.dist %>/styles/fonts/*' - ] - } - }, - - // Reads HTML for usemin blocks to enable smart builds that automatically - // concat, minify and revision files. Creates configurations in memory so - // additional tasks can operate on them - useminPrepare: { - html: '<%= yeoman.app %>/index.html', - options: { - dest: '<%= yeoman.dist %>', - flow: { - html: { - steps: { - js: ['concat', 'uglifyjs'], - css: ['cssmin'] - }, - post: {} - } - } - } - }, - - // Performs rewrites based on filerev and the useminPrepare configuration - usemin: { - html: ['<%= yeoman.dist %>/{,*/}*.html'], - css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], - options: { - assetsDirs: ['<%= yeoman.dist %>', '<%= yeoman.dist %>/images'] - } - }, - - imagemin: { - dist: { - files: [{ - expand: true, - cwd: '<%= yeoman.app %>/images', - src: '{,*/}*.{png,jpg,jpeg,gif}', - dest: '<%= yeoman.dist %>/images' - }] - } - }, - - svgmin: { - dist: { - files: [{ - expand: true, - cwd: '<%= yeoman.app %>/images', - src: '{,*/}*.svg', - dest: '<%= yeoman.dist %>/images' - }] - } - }, - - htmlmin: { - dist: { - options: { - collapseWhitespace: true, - conservativeCollapse: true, - collapseBooleanAttributes: true, - removeCommentsFromCDATA: true, - removeOptionalTags: true - }, - files: [{ - expand: true, - cwd: '<%= yeoman.dist %>', - src: ['*.html', 'views/{,*/}*.html'], - dest: '<%= yeoman.dist %>' - }] - } - }, - - // Replace Google CDN references - cdnify: { - dist: { - html: ['<%= yeoman.dist %>/*.html'] - } - }, - - // Copies remaining files to places other tasks can use - copy: { - dist: { - files: [{ - expand: true, - dot: true, - cwd: '<%= yeoman.app %>', - dest: '<%= yeoman.dist %>', - src: [ - '*.{ico,png,txt}', - '.htaccess', - '*.html', - 'views/{,*/}*.html', - 'images/{,*/}*.{webp}', - 'fonts/*' - ] - }, { - expand: true, - cwd: '.tmp/images', - dest: '<%= yeoman.dist %>/images', - src: ['generated/*'] - }, { - expand: true, - cwd: '.', - dest: '<%= yeoman.dist %>', - src: ['conference.json'] - }, { - expand: true, - cwd: '.', - src: 'bower_components/bootstrap-sass-official/assets/fonts/bootstrap/*', - dest: '<%= yeoman.dist %>' - }] - }, - styles: { - expand: true, - cwd: '<%= yeoman.app %>/styles', - dest: '.tmp/styles/', - src: '{,*/}*.css' - } - }, - - // Run some tasks in parallel to speed up the build process - concurrent: { - server: [ - 'compass:server' - ], - dist: [ - 'compass:dist', - 'imagemin', - 'svgmin' - ] - }, - - ejs: { - all: { - options: grunt.util._.merge(require('./conference.json'), { - _url: function (page) { - page = page || ''; - return require('./conference.json').url + page; - } - }), - src: 'pages/index.ejs', - dest: 'app/index.html' - } - } - }); - - - grunt.registerTask('serve', 'Compile then start a connect web server', function (target) { - if (target === 'dist') { - return grunt.task.run(['build', 'connect:dist:keepalive']); - } - - grunt.task.run([ - 'clean:server', - 'wiredep', - 'concurrent:server', - 'autoprefixer', - 'connect:livereload', - 'watch' - ]); - }); - - grunt.registerTask('server', 'DEPRECATED TASK. Use the "serve" task instead', function (target) { - grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.'); - grunt.task.run(['serve:' + target]); - }); - - grunt.registerTask('build', [ - 'ejs', - 'clean:dist', - 'wiredep', - 'useminPrepare', - 'concurrent:dist', - 'autoprefixer', - 'concat', - 'copy:dist', - 'cdnify', - 'cssmin', - 'uglify', - //'filerev', - 'usemin', - 'htmlmin' - ]); - - grunt.registerTask('default', [ - 'newer:jshint', - 'build' - ]); -}; diff --git a/Procfile b/Procfile deleted file mode 100644 index 5ec9cc2..0000000 --- a/Procfile +++ /dev/null @@ -1 +0,0 @@ -web: node index.js \ No newline at end of file diff --git a/README.md b/README.md index 4283ead..28e2860 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,26 @@ -Web Dev Summit 2015 -=================== +# RSV Dev Summit -Hello! This is the site of Web Dev Summit conference. You can see the online version clicking [here](http://webdevsummit.com.br) or by link at repo's description. +O site está dokerizado, ou seja, você pode rodar ele em sua máquina para testar +e implementar correções/melhorias sem precisar instalar nada além do Docker. -##Usage +## Ambiente de desenvolvimento -First of all, you need to clone it ;) +Faça um fork deste repositório, clone seu fork em seu computador em sua pasta de +preferência, vá para a página do projeto que deverá ser `devsummit` e execute o +seguinte comando: +```bash +docker-compose up ``` -git clone git@github.com:afonsof/web-dev-summit-2015.git -``` - -after that, just run: - -``` -npm install -````` - -and... - -``` -bower install -``` - -To run a local server, just run -``` -grunt serve -``` +Acesse no navegador a seguinte página: -if you want build it, just run - -``` -grunt build -``` +http://localhost:4000 +Pronto! Agora você já pode contribuir com melhorias para o nosso site! :D +Aguardamos seu pull request! +## URL de produção +http://riosulvalley.com.br/devsummit diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..1442187 --- /dev/null +++ b/_config.yml @@ -0,0 +1,39 @@ +# 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 edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +baseurl: "/devsummit" +url: "http://riosulvalley.com.br/devsummit" +twitter_username: jekyllrb +github_username: jekyll + +# Build settings +markdown: kramdown +theme: minima +plugins: + - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. Create a custom list +# to override the default setting. +exclude: + - docker-compose.yml + - bower.json +# - Gemfile +# - Gemfile.lock +# - node_modules +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/_data/conference.yml b/_data/conference.yml new file mode 100644 index 0000000..6e7991b --- /dev/null +++ b/_data/conference.yml @@ -0,0 +1,150 @@ +--- +released: true +url: http://riosulvalley.com/devconf +eventick: https://www.sympla.com.br/rio-sul-valley-devsummit__393629 +analytics: --- +name: Rio Sul Valley Dev Summit +slogan: Conferência de desenvolvimento no Sul Fluminense +description1: "Depois de 1 ano de meetups, vem aí a quarta edição do Dev Summit, agora sob o guarda-chuva do Rio Sul Valley. + Será um dia inteiro para interagir, discutir, conhecer pessoas e + nos divertir. O RSV DEV SUMMIT é um evento da comunidade feito para a comunidade." + +description2: "O objetivo é disseminar o conhecimento e atualizar os desenvolvedores com novidades tecnológicas.. +Esperamos neste evento estudantes, empresários, profissionais +da área, curiosos e apaixonados por tecnologia em geral. Inscreva-se!" + +edition: Quarta +date: 24 de Novembro de 2018 +place: + name: UGB + city: Volta Redonda - RJ + map: https://goo.gl/maps/m52dn7NmGxN2 +callforpapers: + enabled: false + title: Seja um palestrante! + url: https://docs.google.com/forms/d/e/1FAIpQLScqoMEhMEIONCZR6KAG22Ddo2Cvx-zZz-Lx9LdAgh4IzjV-ig/viewform + +show_speakers: true + +speakers: +- name: Cadunico + photo: palestrantes/cadunico.jpg + title: Designer há mais de 15 anos e a mais de 7 anos utiliza somente software livre em suas criações. + bio: "Membro dos grupos LINUERJ, Debian-RJ e SL-RJ. Ministrou palestras, minicursos e cursos sobre recursos de softwares gráficos e produção gráfica em diversas instituições e eventos de renome no software livre como: UNESP, CONSEGI, LATINOWARE, FÓRUM DE SOFTWARE LIVRE DE DUQUE DE CAXIAS, PONTÃO DA ECO – UFRJ, MARATONA DE SOFTWARE LIVRE DE VOLTA REDONDA, RIO +20, entre outros." + +- name: Daiane Alves + photo: palestrantes/daiane-alves.jpeg + title: Diretora financeira na Lyseon Tech + bio: Organizadora da comunidade PHPRio e fundadora da comunidade PHPWomenRJ e apaixonada pela filosofia do software livre. + Estudante de Sistemas de Informação na UFF, trabalho dando aulas de informática desde 2003 e no momento estudo desenvolvimento de aplicações web com PHP. + +- name: Everton Muniz + photo: palestrantes/everton-muniz.jpeg + title: Engenheiro de Software na Portabilis + bio: Trabalho há 8 anos na área de TI, atualmente sou Engenheiro de Software na Portabilis, onde ajudo a melhorar a educação no Brasil através de Software Livre. + Sou apaixonado por desenvolvimento de software com código limpo e boas práticas + +- name: Igor Lopes + photo: palestrantes/igor-lopes.jpg + title: Fundador do site Boa Refeição + bio: Há mais de 5 anos trabalhando com PHP, atualmente possuo um guia gastronômico chamado Boa Refeição e, trabalho home office para uma empresa americana e sou freelancer para algumas empresas da região. + +- name: Vitor Mattos + photo: palestrantes/vitor-mattos.jpeg + title: CTO da Lyseon Tech + bio: Trabalho há mais de 15 anos na área de web e TI, empreendedor, sempre buscando novos desafios e conhecimentos. Grande incentivador do software livre, evangelista PHP, palestrante em eventos regionais e nacionais. Amante do conhecimento e apaixonado por compartilhá-lo com todos. + +sponsorship: + mediakit: https://docs.google.com/presentation/d/1ybwIuEkHgS7-iSmalASCExhGcUrOugOIEAcvObvg7Qc/present?includes_info_params=1#slide=id.p + +sponsorships: +- name: Realização + sponsors: + - name: Rio Sul Valley + website: http://riosulvalley.com.br + logo: sponsors/rsv2.jpg +- name: Silver + sponsors: + - name: UGB + website: http://www.ugb.edu.br + logo: sponsors/ugb.png +- name: Support + sponsors: + - name: Boa Refeição + website: https://www.boarefeicao.com.br/ + logo: sponsors/boa-refeicao.png + + - name: DEVNAESTRADA + website: https://devnaestrada.com.br/ + logo: sponsors/dne2.png + + - name: Gabriel Beraldo + website: https://www.behance.net/gabriel-be6ede + logo: sponsors/gabriel.jpg + + - name: Impacte + website: https://impactesolucoes.com.br/ + logo: sponsors/Impacte.png + + - name: K&F Audiovisual + website: https://www.facebook.com/kefaudiovisual/ + logo: sponsors/kes.png + + - name: Lyseon Tech + website: http://lt.coop.br + logo: sponsors/lt.png + + - name: Maior + website: https://www.agenciamaior.com.br/ + logo: sponsors/maior.png + +show_schedules: true + +schedules: + - time: 08h00 + talks: + - title: Credenciamento + + - time: 09h00 + talks: + - title: Em breve! + + - time: 09h40 + talks: + - title: Em breve! + + - time: 10h20 + talks: + - title: Case do i-Educar - Os desafios da migração de um software proprietário para software livre + + - time: 11h00 + talks: + - title: Videografismo com Software livre + + - time: 11h40 + talks: + - title: OpenCart - Criando um e-commerce de maneira rápida. + + - time: 12h20 + talks: + - title: Almoço + + - time: 13h20 + talks: + - title: Em breve! + + - time: 14h00 + talks: + - title: Contribuindo e criando software livre + + - time: 14h40 + talks: + - title: Em breve! + + - time: 15h20 + talks: + - title: Como ganhar dinheiro com Software Livre? + + - time: 16h00 + talks: + - title: Encerramento diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..dd3f119 --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,51 @@ +{% assign conference = site.data.conference %} + + + + {{conference.name}} - {{conference.slogan}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..d6c0321 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,18 @@ + + +{% include head.html %} + +{{ content }} + + + + + + + diff --git a/app/styles/base/_basic.scss b/_sass/base/_basic.scss similarity index 87% rename from app/styles/base/_basic.scss rename to _sass/base/_basic.scss index 912a0b6..add04fc 100644 --- a/app/styles/base/_basic.scss +++ b/_sass/base/_basic.scss @@ -9,7 +9,7 @@ } .invitation { - border: 2px dashed #3498db; + border: 2px dashed #7a2ab1; font-size: 20px; vertical-align: middle; line-height: 278px; diff --git a/app/styles/base/_fonts.scss b/_sass/base/_fonts.scss similarity index 100% rename from app/styles/base/_fonts.scss rename to _sass/base/_fonts.scss diff --git a/app/styles/base/_media.scss b/_sass/base/_media.scss similarity index 100% rename from app/styles/base/_media.scss rename to _sass/base/_media.scss diff --git a/app/styles/base/_reset.scss b/_sass/base/_reset.scss similarity index 96% rename from app/styles/base/_reset.scss rename to _sass/base/_reset.scss index e306f5f..c7d01fa 100644 --- a/app/styles/base/_reset.scss +++ b/_sass/base/_reset.scss @@ -18,7 +18,7 @@ html, body { } a { - color: #3498db; + color: #7a2ab1; text-decoration: none; } diff --git a/app/styles/base/_typography.scss b/_sass/base/_typography.scss similarity index 100% rename from app/styles/base/_typography.scss rename to _sass/base/_typography.scss diff --git a/app/styles/base/_variables.scss b/_sass/base/_variables.scss similarity index 100% rename from app/styles/base/_variables.scss rename to _sass/base/_variables.scss diff --git a/_sass/bootstrap-sass-official/.bower.json b/_sass/bootstrap-sass-official/.bower.json new file mode 100644 index 0000000..042102c --- /dev/null +++ b/_sass/bootstrap-sass-official/.bower.json @@ -0,0 +1,59 @@ +{ + "name": "bootstrap-sass", + "version": "3.2.0+2", + "homepage": "https://github.com/twbs/bootstrap-sass", + "authors": [ + "Thomas McDonald", + "Tristan Harward", + "Peter Gumeson", + "Gleb Mazovetskiy" + ], + "description": "bootstrap-sass is a Sass-powered version of Bootstrap, ready to drop right into your Sass powered applications.", + "main": [ + "assets/stylesheets/_bootstrap.scss", + "assets/fonts/bootstrap/glyphicons-halflings-regular.eot", + "assets/fonts/bootstrap/glyphicons-halflings-regular.svg", + "assets/fonts/bootstrap/glyphicons-halflings-regular.ttf", + "assets/fonts/bootstrap/glyphicons-halflings-regular.woff", + "assets/javascripts/bootstrap/affix.js", + "assets/javascripts/bootstrap/alert.js", + "assets/javascripts/bootstrap/button.js", + "assets/javascripts/bootstrap/carousel.js", + "assets/javascripts/bootstrap/collapse.js", + "assets/javascripts/bootstrap/dropdown.js", + "assets/javascripts/bootstrap/tab.js", + "assets/javascripts/bootstrap/transition.js", + "assets/javascripts/bootstrap/scrollspy.js", + "assets/javascripts/bootstrap/modal.js", + "assets/javascripts/bootstrap/tooltip.js", + "assets/javascripts/bootstrap/popover.js" + ], + "keywords": [ + "twbs", + "bootstrap", + "sass" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "lib", + "tasks", + "templates", + "test", + "*.gemspec", + "Rakefile", + "Gemfile" + ], + "dependencies": { + "jquery": ">= 1.9.0" + }, + "_release": "3.2.0+2", + "_resolution": { + "type": "version", + "tag": "v3.2.0+2", + "commit": "a0d67aaa4a365a41d0dc48305b1abe1422b5f6e5" + }, + "_source": "https://github.com/twbs/bootstrap-sass.git", + "_target": "~3.2.0", + "_originalSource": "bootstrap-sass-official" +} \ No newline at end of file diff --git a/_sass/bootstrap-sass-official/CHANGELOG.md b/_sass/bootstrap-sass-official/CHANGELOG.md new file mode 100644 index 0000000..faf5a30 --- /dev/null +++ b/_sass/bootstrap-sass-official/CHANGELOG.md @@ -0,0 +1,144 @@ +# Changelog + +## 3.2.0.2 + +Fixed a number of bugs. [Issues closed in v3.2.0.2](https://github.com/twbs/bootstrap-sass/issues?q=is%3Aissue+is%3Aclosed+milestone%3Av3.2.0.2). + +## 3.2.0.1 + +Fixed a number of bugs: [Issues closed in v3.2.0.1](https://github.com/twbs/bootstrap-sass/issues?q=is%3Aissue+is%3Aclosed+milestone%3Av3.2.0.1). + +## 3.2.0.0 + +- Assets (Sass, JS, fonts) moved from `vendor/assets` to `assets`. `bootstrap.js` now contains concatenated JS. +- Compass generator now copies JS and fonts, and provides a better default `styles.sass`. +- Compass, Sprockets, and Mincer asset path helpers are now provided in pure Sass: `bootstrap-compass`, `bootstrap-sprockets`, and `bootstrap-mincer`. +Asset path helpers must be imported before `bootstrap`, more in Readme. +- Sprockets / Mincer JS manifest has been moved to `bootstrap-sprockets.js`. +It can be required without adding Bootstrap JS directory to load path, as it now uses relative paths. +- Sprockets: `depend_on_asset` (`glyphicons.scss`) has been changed to `depend_on` to work around an issue with `depend_on_asset`. +[More information](https://github.com/twbs/bootstrap-sass/issues/592#issuecomment-46570286). + +## 3.1.1.0 + +- Updated Bower docs + +## 3.1.0.2 + +- #523: Rails 3.2 compatibility +- Bugfixes from upstream up to 7eb532262fbd1112215b5a547b9285794b5360ab. + +## 3.1.0.1 + +- #518: `scale` mixin Sass compatibility issue + +## 3.1.0.0 + +* compiles with libsass master + +## 3.0.2.1 + +* fix vendor paths for compass + +## 3.0.0.0 + +* Fully automated (lots of string juggling) LESS -> Sass conversion. - *Gleb Mazovetskiy* +* Ported rake task from vwall/compass-twitter-bootstrap to convert Bootstrap upstream - *Peter Gumeson* +* Moved javascripts to us `bootstrap-component.js` to `bootstrap/component.js` - *Peter Gumeson* + +## 2.3.2.2 + +* Allow sass-rails `>= 3.2` - *Thomas McDonald* + +## 2.3.2.1 + +## 2.3.2.0 + +* Update to Bootstrap 2.3.2 - *Dan Allen* + +## 2.3.1.3 + +* Find the correct Sprockets context for the `image_path` function - *Tristan Harward, Gleb Mazovetskiy* + +## 2.3.1.2 + +* Fix changes to image url - *Gleb Mazovetskiy* +* Copy _variables into project on Compass install - *Phil Thompson* +* Add `bootstrap-affix` to the Compass template file - *brief* + +## 2.3.1.1 (yanked) + +* Change how image_url is handled internally - *Tristan Harward* +* Fix some font variables not having `!default` - *Thomas McDonald* + +## 2.3.0.0 +* [#290] Update to Bootstrap 2.3.0 - *Tristan Harward* +* Fix `rake:debug` with new file locations - *Thomas McDonald* +* Add draft contributing document - *Thomas McDonald* +* [#260] Add our load path to the global Sass load path - *Tristan Harward* +* [#275] Use GitHub notation in Sass head testing gemfile - *Timo Schilling* +* [#279, #283] Readme improvements - *theverything, Philip Arndt* + +## 2.2.2.0 +* [#270] Update to Bootstrap 2.2.2 - *Tristan Harward* +* [#266] Add license to gemspec - *Peter Marsh* + +## 2.2.1.1 +* [#258] Use `bootstrap` prefix for `@import`ing files in `bootstrap/bootstrap.scss` - *Umair Siddique* + +## 2.2.1.0 +* [#246] Update to Bootstrap 2.2.1 - *Tristan Harward* +* [#246] Pull Bootstrap updates from jlong/sass-twitter-bootstrap - *Tristan Harward* + +## 2.1.1.0 +* Update to Bootstrap 2.1.1 +* [#222] Remove 100% multiplier in vertical-three-colours +* [#227] Fix IE component animation collapse +* [#228] Fix variables documentation link +* [#231] Made .input-block-level a class as well as mixin + +## 2.1.0.1 +* [#219] Fix expected a color. Got: transparent. +* [#207] Add missing warning style for table row highlighting +* [#208] Use grid-input-span for input spans + +## 2.1.0.0 +* Updated to Bootstrap 2.1 +* Changed some mixin names to be more consistent. Nested mixins in Less are separated by a `-` when they are flattened in Sass. + +## 2.0.4.1 +* Fix `.row-fluid > spanX` nesting +* Small Javascript fixes for those staying on the 2.0.4 release +* Add `!default` to z-index variables. + +## 2.0.4.0 +* Updated to Bootstrap 2.0.4 +* Switched to Bootstrap 2.0.3+'s method of separating responsive files +* [#149, #150] Fix off by one error introduced with manual revert of media query breakpoints +* `rake debug` and `rake test` both compile bootstrap & bootstrap-responsive + +## 2.0.3.1 +* [#145, #146] Fix button alignment in collapsing navbar as a result of an incorrect variable + +## 2.0.3 +* Updated to Bootstrap 2.0.3 +* [#106] Support for Rails < 3.1 through Compass +* [#132] Add CI testing +* [#106] Support Rails w/Compass +* [#134] Fix support for Rails w/Compass + +## 2.0.2 +* [#86] Updated to Bootstrap 2.0.2 +Things of note: static navbars now have full width. (to be fixed in 2.0.3) `.navbar-inner > .container { width:940px; }` seems to work in the meanwhile +* [#62] Fixed asset compilation taking a *very* long time. +* [#69, #79, #80] \(Hopefully) clarified README. Now with less cat humour. +* [#91] Removed doubled up Sass extensions for Rails. +* [#63, #73] Allow for overriding of image-path +* [[SO](http://stackoverflow.com/a/9909626/241212)] Added makeFluidColumn mixin for defining fluid columns. Fluid rows must use `@extend .row-fluid`, and any column inside it can use `@include makeFluidColumn(num)`, where `num` is the number of columns. Unfortunately, there is a rather major limitation to this: margins on first-child elements must be overriden. See the attached Stack Overflow answer for more information. + +## 2.0.1 +* Updated to Bootstrap 2.0.1 +* Modified `@mixin opacity()` to take an argument `0...1` rather than `0...100` to be consistent with Compass. + +## 2.0.0 +* Updated to Bootstrap 2.0.0 diff --git a/_sass/bootstrap-sass-official/CONTRIBUTING.md b/_sass/bootstrap-sass-official/CONTRIBUTING.md new file mode 100644 index 0000000..9eb7c2a --- /dev/null +++ b/_sass/bootstrap-sass-official/CONTRIBUTING.md @@ -0,0 +1,79 @@ +# Contributing to bootstrap-sass + +## Asset Changes + +Any changes to `bootstrap-sass` assets (scss, javascripts, fonts) should be checked against the `convert` rake task. +For usage instructions, see the [README](https://github.com/twbs/bootstrap-sass/blob/3/README.md). + +If something is broken in the converter, it's preferable to update the converter along with the asset itself. + + +## Bugs + +A bug is a _demonstrable problem_ that is caused by the code in the +repository. Good bug reports are extremely helpful - thank you! + +Guidelines for bug reports: + +1. **Does it belong here?** — is this a problem with bootstrap-sass, or + it an issue with [twbs/bootstrap](https://github.com/twbs/bootstrap)? + We only distribute a direct port and will not modify files if they're not + changed upstream. + +2. **Use the GitHub issue search** — check if the issue has already been + reported. + +3. **Isolate the problem** — ideally create a [reduced test + case](http://css-tricks.com/6263-reduced-test-cases/) and a live example. + +A good bug report shouldn't leave others needing to chase you up for more +information. Please try to be as detailed as possible in your report. What is +your environment? What steps will reproduce the issue? What browser(s) and OS +experience the problem? What would you expect to be the outcome? All these +details will help people to fix any potential bugs. + +Example: + +> Short and descriptive example bug report title +> +> A summary of the issue and the browser/OS environment in which it occurs. If +> suitable, include the steps required to reproduce the bug. +> +> 1. This is the first step +> 2. This is the second step +> 3. Further steps, etc. +> +> `` (a link to the reduced test case) +> +> Any other information you want to share that is relevant to the issue being +> reported. This might include the lines of code that you have identified as +> causing the bug, and potential solutions (and your opinions on their +> merits). + +**[File a bug report](https://github.com/twbs/bootstrap-sass/issues/)** + + +## Pull requests + +**We will not accept pull requests that modify the SCSS beyond fixing bugs caused by *our* code!** + +Most pull requests should go to [twbs/bootstrap](https://github.com/twbs/bootstrap) or [jlong/sass-twitter-bootstrap](https://github.com/jlong/sass-twitter-bootstrap) + +Good pull requests - patches, improvements, new features - are a fantastic +help. They should remain focused in scope and avoid containing unrelated +commits. If your contribution involves a significant amount of work or substantial +changes to any part of the project, please open an issue to discuss it first. + +Make sure to adhere to the coding conventions used throughout a project +(indentation, accurate comments, etc.). Please update any documentation that is +relevant to the change you're making. + +## Do not… + +Please **do not** use the issue tracker for personal support requests (use +[Stack Overflow](http://stackoverflow.com/)). + +Please **do not** derail or troll issues. Keep the +discussion on topic and respect the opinions of others. + +*props [html5-boilerplate](https://github.com/h5bp/html5-boilerplate/blob/master/CONTRIBUTING.md)* diff --git a/_sass/bootstrap-sass-official/LICENSE b/_sass/bootstrap-sass-official/LICENSE new file mode 100644 index 0000000..9a683e3 --- /dev/null +++ b/_sass/bootstrap-sass-official/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013 Twitter, Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/_sass/bootstrap-sass-official/README.md b/_sass/bootstrap-sass-official/README.md new file mode 100644 index 0000000..987740d --- /dev/null +++ b/_sass/bootstrap-sass-official/README.md @@ -0,0 +1,314 @@ +# Bootstrap for Sass [![Gem Version](https://badge.fury.io/rb/bootstrap-sass.svg)](http://badge.fury.io/rb/bootstrap-sass) [![Bower Version](https://badge.fury.io/bo/bootstrap-sass-official.svg)](http://badge.fury.io/bo/bootstrap-sass-official) [![Build Status](http://img.shields.io/travis/twbs/bootstrap-sass.svg)](http://travis-ci.org/twbs/bootstrap-sass) + +`bootstrap-sass` is a Sass-powered version of [Bootstrap](http://github.com/twbs/bootstrap), ready to drop right into your Sass powered applications. + +## Installation + +Please see the appropriate guide for your environment of choice: + +* [Ruby on Rails](#a-ruby-on-rails). +* [Compass](#b-compass-without-rails) not on Rails. +* [Bower](#c-bower). + +### a. Ruby on Rails + +`bootstrap-sass` is easy to drop into Rails with the asset pipeline. + +In your Gemfile you need to add the `bootstrap-sass` gem, and ensure that the `sass-rails` gem is present - it is added to new Rails applications by default. + +```ruby +gem 'bootstrap-sass', '~> 3.2.0' +gem 'sass-rails', '>= 3.2' +``` + +It is also recommended to use [Autoprefixer](https://github.com/ai/autoprefixer-rails) with Bootstrap +to add browser vendor prefixes automatically. Simply add the gem: + +```ruby +gem 'autoprefixer-rails' +``` + +`bundle install` and restart your server to make the files available through the pipeline. + +Import Bootstrap styles in `app/assets/stylesheets/application.css.scss`: + +```scss +@import "bootstrap-sprockets"; +@import "bootstrap"; +``` + +Make sure the file has `.css.scss` extension (or `.css.sass` for Sass syntax). If you have just generated a new Rails app, +it may come with a `.css` file instead. If this file exists, it will be served instead of Sass, so remove it: + +```console +$ rm app/assets/stylesheets/application.css +``` + +Do not use `//= require` in Sass or your other stylesheets will not be [able to access][antirequire] the Bootstrap mixins or variables. + +Require Bootstrap Javascripts in `app/assets/javascripts/application.js`: + +```js +//= require jquery +//= require bootstrap-sprockets +``` + +#### Bower with Rails + +When using [bootstrap-sass Bower package](#c-bower) in Rails, ensure [minimum Sass number precision](#sass-number-precision): + +```ruby +# e.g. config/initializers/sass.rb +::Sass::Script::Number.precision = [10, ::Sass::Script::Number.precision].max +``` + +`bootstrap-sprockets` must be imported before `bootstrap` for the icon fonts to work. + +#### Rails 3.2.x + +Rails 3.2 is [no longer maintained for bugfixes](http://guides.rubyonrails.org/maintenance_policy.html), and you should upgrade as soon as possible. + +Starting with bootstrap-sass v3.1.1.1, due to the structural changes from upstream you will need these +backported asset pipeline gems on Rails 3.2. There is more on why this is necessary in +https://github.com/twbs/bootstrap-sass/issues/523 and https://github.com/twbs/bootstrap-sass/issues/578. + +```ruby +gem 'sprockets-rails', '=2.0.0.backport1' +gem 'sprockets', '=2.2.2.backport2' +gem 'sass-rails', github: 'guilleiguaran/sass-rails', branch: 'backport' +``` + +### b. Compass without Rails + +Install the gem +```sh +gem install bootstrap-sass +``` + +If you have an existing Compass project: + +```ruby +# config.rb: +require 'bootstrap-sass' +``` + +```console +$ bundle exec compass install bootstrap +``` + +If you are creating a new Compass project, you can generate it with bootstrap-sass support: + +```console +$ bundle exec compass create my-new-project -r bootstrap-sass --using bootstrap +``` + +or, alternatively, if you're not using a Gemfile for your dependencies: + +```console +$ compass create my-new-project -r bootstrap-sass --using bootstrap +``` + +This will create a new Compass project with the following files in it: + +* [styles.sass](/templates/project/styles.sass) - main project Sass file, imports Bootstrap and variables. +* [_bootstrap-variables.sass](/templates/project/_bootstrap-variables.sass.erb) - all of Bootstrap variables, override them here. + +Some bootstrap-sass mixins may conflict with the Compass ones. +If this happens, change the import order so that Compass mixins are loaded later. + +### c. Bower + +Using bootstrap-sass as a Bower package is still being tested. It is compatible with node-sass 0.8.3+. You can install it with: + +```console +$ bower install bootstrap-sass-official +``` + +`bootstrap-sass` is taken so make sure you use the command above. + +Sass, JS, and all other assets are located at [assets](/assets). + +By default, `bower.json` main field list only the main `bootstrap.scss` and all the static assets (fonts and JS). +This is compatible by default with asset managers such as [wiredep](https://github.com/taptapship/wiredep). + +#### Node.js Mincer + +If you use [mincer][mincer] with node-sass, import bootstrap into like so: + +In `application.css.ejs.scss` (NB **.css.ejs.css**): + +```scss +// Import mincer asset paths helper integration +@import "bootstrap-mincer"; +@import "bootstrap"; +``` + +In `application.js`: + +```js +//= require bootstrap-sprockets +``` + +See also this [example manifest.js](/test/dummy_node_mincer/manifest.js) for mincer. + + +### Configuration + +#### Sass + +By default all of Bootstrap is imported. + +You can also import components explicitly. To start with a full list of modules copy +[`bootstrap.scss`](assets/stylesheets/bootstrap.scss) file into your assets as `bootstrap-custom.scss`. +Then comment out components you do not want from `bootstrap-custom`. +In the application Sass file, replace `@import 'bootstrap'` with: + +```scss +@import 'bootstrap-custom'; +``` + +#### Sass: Number Precision + +bootstrap-sass [requires](https://github.com/twbs/bootstrap-sass/issues/409) minimum [Sass number precision][sass-precision] of 10 (default is 5). + +Precision is set for Rails and Compass automatically. +When using ruby Sass compiler standalone or with the Bower version you can set it with: + +```ruby +::Sass::Script::Number.precision = [10, ::Sass::Script::Number.precision].max +``` + +Note that libsass and node-sass do not currently support the precision option, due to an open bug ([bug #364](https://github.com/sass/libsass/issues/364)) in libsass. + + +#### Sass: Autoprefixer + +Using [Autoprefixer][autoprefixer] with Bootstrap is recommended. +[Autoprefixer][autoprefixer] adds vendor prefixes to CSS rules using values from [Can I Use](http://caniuse.com/). + +#### JavaScript + +[`assets/javascripts/bootstrap.js`](/assets/javascripts/bootstrap.js) contains all of Bootstrap JavaScript, +concatenated in the [correct order](/assets/javascripts/bootstrap-sprockets.js). + + +#### JavaScript with Sprockets or Mincer + +If you use Sprockets or Mincer, you can require `bootstrap-sprockets` instead to load the individual modules: + +```js +// Load all Bootstrap JavaScript +//= require bootstrap-sprockets +``` + +You can also load individual modules, provided you also require any dependencies. +You can check dependencies in the [Bootstrap JS documentation][jsdocs]. + +```js +//= require bootstrap/scrollspy +//= require bootstrap/modal +//= require bootstrap/dropdown +``` + +#### Fonts + +The fonts are referenced as: + +```scss +"#{$icon-font-path}#{$icon-font-name}.eot" +``` + +`$icon-font-path` defaults to `bootstrap/` if asset path helpers are used, and `../fonts/bootstrap/` otherwise. + +When using bootstrap-sass with Compass, Sprockets, or Mincer, you **must** import the relevant path helpers before Bootstrap itself, for example: + +```scss +@import "bootstrap-compass"; +@import "bootstrap"; +``` + +## Usage + +### Sass + +Import Bootstrap into a Sass file (for example, application.css.scss) to get all of Bootstrap's styles, mixins and variables! + +```scss +@import "bootstrap"; +``` + +You can also include optional bootstrap theme: + +```scss +@import "bootstrap/theme"; +``` + +The full list of bootstrap variables can be found [here](http://getbootstrap.com/customize/#less-variables). You can override these by simply redefining the variable before the `@import` directive, e.g.: + +```scss +$navbar-default-bg: #312312; +$light-orange: #ff8c00; +$navbar-default-color: $light-orange; + +@import "bootstrap"; +``` + +--- + +## Development and Contributing + +If you'd like to help with the development of bootstrap-sass itself, read this section. + +### Upstream Converter + +Keeping bootstrap-sass in sync with upstream changes from Bootstrap used to be an error prone and time consuming manual process. With Bootstrap 3 we have introduced a converter that automates this. + +**Note: if you're just looking to *use* Bootstrap 3, see the [installation](#installation) section above.** + +Upstream changes to the Bootstrap project can now be pulled in using the `convert` rake task. + +Here's an example run that would pull down the master branch from the main [twbs/bootstrap](https://github.com/twbs/bootstrap) repo: + + rake convert + +This will convert the latest LESS to Sass and update to the latest JS. +To convert a specific branch or version, pass the branch name or the commit hash as the first task argument: + + rake convert[e8a1df5f060bf7e6631554648e0abde150aedbe4] + +The latest converter script is located [here][converter] and does the following: + +* Converts upstream bootstrap LESS files to its matching SCSS file. +* Copies all upstream JavaScript into `assets/javascripts/bootstrap`, an Sprockets manifest at `assets/javascripts/bootstrap-sprockets.js`, and a concatenation at `assets/javascripts/bootstrap.js`. +* Copies all upstream font files into `assets/fonts/bootstrap`. +* Sets `Bootstrap::BOOTSTRAP_SHA` in [version.rb][version] to the branch sha. + +This converter fully converts original LESS to SCSS. Conversion is automatic but requires instructions for certain transformations (see converter output). +Please submit GitHub issues tagged with `conversion`. + +## Credits + +bootstrap-sass has a number of major contributors: + + +* [Thomas McDonald](https://twitter.com/thomasmcdonald_) +* [Tristan Harward](http://www.trisweb.com) +* Peter Gumeson +* [Gleb Mazovetskiy](https://github.com/glebm) + +and a [significant number of other contributors][contrib]. + +## You're in good company +bootstrap-sass is used to build some awesome projects all over the web, including +[Diaspora](http://diasporaproject.org/), [rails_admin](https://github.com/sferik/rails_admin), +Michael Hartl's [Rails Tutorial](http://railstutorial.org/), [gitlabhq](http://gitlabhq.com/) and +[kandan](http://kandanapp.com/). + +[converter]: https://github.com/twbs/bootstrap-sass/blob/master/tasks/converter/less_conversion.rb +[version]: https://github.com/twbs/bootstrap-sass/blob/master/lib/bootstrap-sass/version.rb +[contrib]: https://github.com/twbs/bootstrap-sass/graphs/contributors +[antirequire]: https://github.com/twbs/bootstrap-sass/issues/79#issuecomment-4428595 +[jsdocs]: http://getbootstrap.com/javascript/#transitions +[sass-precision]: http://sass-lang.com/documentation/Sass/Script/Number.html#precision-class_method +[mincer]: https://github.com/nodeca/mincer +[autoprefixer]: https://github.com/ai/autoprefixer diff --git a/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.eot b/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..4a4ca86 Binary files /dev/null and b/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.eot differ diff --git a/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.svg b/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..e3e2dc7 --- /dev/null +++ b/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf b/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..67fa00b Binary files /dev/null and b/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf differ diff --git a/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.woff b/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..8c54182 Binary files /dev/null and b/_sass/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.woff differ diff --git a/_sass/bootstrap-sass-official/assets/javascripts/bootstrap-sprockets.js b/_sass/bootstrap-sass-official/assets/javascripts/bootstrap-sprockets.js new file mode 100644 index 0000000..1abde49 --- /dev/null +++ b/_sass/bootstrap-sass-official/assets/javascripts/bootstrap-sprockets.js @@ -0,0 +1,12 @@ +//= require ./bootstrap/affix +//= require ./bootstrap/alert +//= require ./bootstrap/button +//= require ./bootstrap/carousel +//= require ./bootstrap/collapse +//= require ./bootstrap/dropdown +//= require ./bootstrap/tab +//= require ./bootstrap/transition +//= require ./bootstrap/scrollspy +//= require ./bootstrap/modal +//= require ./bootstrap/tooltip +//= require ./bootstrap/popover diff --git a/_sass/bootstrap-sass-official/assets/javascripts/bootstrap.js b/_sass/bootstrap-sass-official/assets/javascripts/bootstrap.js new file mode 100644 index 0000000..30409f4 --- /dev/null +++ b/_sass/bootstrap-sass-official/assets/javascripts/bootstrap.js @@ -0,0 +1,2107 @@ +/* ======================================================================== + * Bootstrap: affix.js v3.2.0 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2014 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 = + this.unpin = + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.2.0' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + 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 scrollHeight = $(document).height() + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + + 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.unpin != null && (scrollTop + this.unpin <= position.top) ? false : + offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' : + offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false + + if (this.affixed === affix) return + 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($.Event(affixType.replace('affix', 'affixed'))) + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - this.$element.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) data.offset.bottom = data.offsetBottom + if (data.offsetTop) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.2.0 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2014 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.2.0' + + 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.hasClass('alert') ? $this : $this.parent() + } + + $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(150) : + 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.2.0 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2014 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.2.0' + + 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 = state + 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + $el[val](data[state] == null ? this.options[state] : data[state]) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + 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') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } + + if (changed) 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') + e.preventDefault() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.2.0 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2014 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).on('keydown.bs.carousel', $.proxy(this.keydown, this)) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.2.0' + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true + } + + Carousel.prototype.keydown = function (e) { + 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.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[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 || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + 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($active.css('transition-duration').slice(0, -1) * 1000) + } 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 + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', 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() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.2.0 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2014 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.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.2.0' + + 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 startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + Plugin.call(actives, 'hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + + 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(350)[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') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // 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 && option == 'show') option = !option + 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 href + var $this = $(this) + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.2.0 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2014 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.2.0' + + 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 + $('