5 |
6 |
--------------------------------------------------------------------------------
/config/boot.rb:
--------------------------------------------------------------------------------
1 | # Set up gems listed in the Gemfile.
2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3 |
4 | require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
5 |
--------------------------------------------------------------------------------
/test/controllers/casks_controller_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class CasksControllerTest < ActionController::TestCase
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/test/controllers/drinks_controller_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class DrinksControllerTest < ActionController::TestCase
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/bin/rake:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | begin
3 | load File.expand_path("../spring", __FILE__)
4 | rescue LoadError
5 | end
6 | require_relative '../config/boot'
7 | require 'rake'
8 | Rake.application.run
9 |
--------------------------------------------------------------------------------
/config/initializers/mime_types.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Add new mime types for use in respond_to blocks:
4 | # Mime::Type.register "text/richtext", :rtf
5 |
--------------------------------------------------------------------------------
/test/controllers/welcome_controller_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class WelcomeControllerTest < ActionController::TestCase
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/config/initializers/session_store.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | Rails.application.config.session_store :cookie_store, key: '_cask-list_session', expire_after: 2.weeks
4 |
--------------------------------------------------------------------------------
/app/models/festival.rb:
--------------------------------------------------------------------------------
1 | class Festival < ActiveRecord::Base
2 | has_one :location
3 |
4 | validates :name, :website, presence: true
5 | validates :starts_at, numericality: { greater_than: Time.now.to_i }
6 | end
7 |
--------------------------------------------------------------------------------
/app/views/casks/_add_cask.html.erb:
--------------------------------------------------------------------------------
1 | <%= form_tag drinks_path(return: true), method: 'post' do %>
2 | <%= hidden_field_tag 'drink[cask_id]', cask.id %>
3 | <%= submit_tag 'Add', class: 'button tiny' %>
4 | <% end %>
5 |
--------------------------------------------------------------------------------
/test/controllers/admin/importer_controller_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class Admin::ImporterControllerTest < ActionController::TestCase
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/casks.css.scss:
--------------------------------------------------------------------------------
1 | // Place all the styles related to the Casks controller here.
2 | // They will automatically be included in application.css.
3 | // You can use Sass (SCSS) here: http://sass-lang.com/
4 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/drinks.css.scss:
--------------------------------------------------------------------------------
1 | // Place all the styles related to the Drinks controller here.
2 | // They will automatically be included in application.css.
3 | // You can use Sass (SCSS) here: http://sass-lang.com/
4 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/welcome.css.scss:
--------------------------------------------------------------------------------
1 | // Place all the styles related to the welcome controller here.
2 | // They will automatically be included in application.css.
3 | // You can use Sass (SCSS) here: http://sass-lang.com/
4 |
--------------------------------------------------------------------------------
/app/views/drinks/_drinks_slice.html.erb:
--------------------------------------------------------------------------------
1 |
10 |
11 |
--------------------------------------------------------------------------------
/config/initializers/assets.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Version of your assets, change this if you want to expire all your assets.
4 | Rails.application.config.assets.version = '1.0'
5 |
6 | # Precompile additional assets.
7 | # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
8 | # Rails.application.config.assets.precompile += %w( search.js )
9 |
--------------------------------------------------------------------------------
/test/fixtures/attendees.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/beers.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/breweries.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/casks.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/drinks.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/festivals.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/imports.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/locations.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/roles.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/users.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/wishlists.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/beer_styles.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/tasting_notes.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/db/migrate/20141024013449_create_drinks.rb:
--------------------------------------------------------------------------------
1 | class CreateDrinks < ActiveRecord::Migration
2 | def change
3 | create_table :drinks do |t|
4 | t.integer :attendee_id
5 | t.integer :cask_id
6 | t.boolean :done
7 | t.boolean :favourite
8 |
9 | t.timestamps
10 | end
11 |
12 | add_index(:drinks, [:attendee_id, :done])
13 | add_index(:drinks, [:attendee_id, :favourite])
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/test/fixtures/festival_entries.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/test/fixtures/wishlist_entries.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | # This model initially had no columns defined. If you add columns to the
4 | # model remove the '{}' from the fixture names and add the columns immediately
5 | # below each fixture, per the syntax in the comments below
6 | #
7 | one: {}
8 | # column: value
9 | #
10 | two: {}
11 | # column: value
12 |
--------------------------------------------------------------------------------
/db/migrate/20150722123012_create_users.rb:
--------------------------------------------------------------------------------
1 | class CreateUsers < ActiveRecord::Migration
2 | def change
3 | create_table :users do |t|
4 | t.string :name
5 | t.string :identifier, unique: true
6 | t.string :authenticated_by, null: false
7 | t.string :password_digest, null: false
8 |
9 | t.timestamps null: false
10 | t.index :authenticated_by
11 | t.index :identifier
12 | end
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/config/initializers/backtrace_silencers.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5 |
6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7 | # Rails.backtrace_cleaner.remove_silencers!
8 |
--------------------------------------------------------------------------------
/db/migrate/20150819210659_create_wishlist_entries.rb:
--------------------------------------------------------------------------------
1 | class CreateWishlistEntries < ActiveRecord::Migration
2 | def change
3 | create_table :wishlist_entries do |t|
4 | t.integer :beer_id, null: false
5 | t.integer :wishlist_id, null: false
6 | t.boolean :done, default: false
7 |
8 | t.timestamps null: false
9 | t.index :wishlist_id
10 | end
11 | add_foreign_key :wishlist_entries, :wishlists, on_delete: :cascade
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/db/migrate/20150821190440_create_imports.rb:
--------------------------------------------------------------------------------
1 | class CreateImports < ActiveRecord::Migration
2 | def change
3 | create_table :imports do |t|
4 | t.string :name, null: false
5 | t.string :processor, null: false
6 | t.text :raw_data, null: false
7 | t.text :processed_data
8 | t.timestamps null: false
9 | end
10 |
11 | change_table :festivals do |t|
12 | t.boolean :published, default: false, null: false
13 | end
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/app/views/welcome/ghetto.html.erb:
--------------------------------------------------------------------------------
1 | <% if logged_in? %>
2 |
16 | <% end %>
17 |
--------------------------------------------------------------------------------
/app/views/kaminari/_last_page.html.erb:
--------------------------------------------------------------------------------
1 | <%# Link to the "Last" page
2 | - available local variables
3 | url: url to the last page
4 | current_page: a page object for the currently displayed page
5 | total_pages: total number of pages
6 | per_page: number of items to fetch per page
7 | remote: data-remote
8 | -%>
9 |
12 |
--------------------------------------------------------------------------------
/app/views/kaminari/_next_page.html.erb:
--------------------------------------------------------------------------------
1 | <%# Link to the "Next" page
2 | - available local variables
3 | url: url to the next page
4 | current_page: a page object for the currently displayed page
5 | total_pages: total number of pages
6 | per_page: number of items to fetch per page
7 | remote: data-remote
8 | -%>
9 |
5 | If you log out all the drinks you added to your list
6 | will be destroyed. Is that alright?
7 |
8 | <%= link_to 'No, I want to keep my list', drinks_path, class: 'button' %>
9 | <%= link_to 'Yes, please destroy all my data', logout_path(confirm: true), method: 'delete', class: 'button alert' %>
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/views/kaminari/_prev_page.html.erb:
--------------------------------------------------------------------------------
1 | <%# Link to the "Previous" page
2 | - available local variables
3 | url: url to the previous page
4 | current_page: a page object for the currently displayed page
5 | total_pages: total number of pages
6 | per_page: number of items to fetch per page
7 | remote: data-remote
8 | -%>
9 |
12 |
--------------------------------------------------------------------------------
/db/seeds.rb:
--------------------------------------------------------------------------------
1 | # This file should contain all the record creation needed to seed the database with its default values.
2 | # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3 | #
4 | # Examples:
5 | #
6 | # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
7 | # Mayor.create(name: 'Emanuel', city: cities.first)
8 |
9 | source = File.join(Rails.root, 'db/data/casks.yml')
10 | casks = YAML::load_file(source)
11 | casks.each do |cask|
12 | Cask.create(cask)
13 | end
14 |
--------------------------------------------------------------------------------
/app/views/kaminari/_first_page.html.erb:
--------------------------------------------------------------------------------
1 | <%# Link to the "First" page
2 | - available local variables
3 | url: url to the first page
4 | current_page: a page object for the currently displayed page
5 | total_pages: total number of pages
6 | per_page: number of items to fetch per page
7 | remote: data-remote
8 | -%>
9 |
9 | <%# I know this is shitty %>
10 | <%= toggle_favourite(drink.cask) %>
11 | <%= toggle_consumed(drink.cask) %>
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/views/kaminari/_page.html.erb:
--------------------------------------------------------------------------------
1 | <%# Link showing page number
2 | - available local variables
3 | page: a page object for "this" page
4 | url: url to this page
5 | current_page: a page object for the currently displayed page
6 | total_pages: total number of pages
7 | per_page: number of items to fetch per page
8 | remote: data-remote
9 | -%>
10 |
18 |
--------------------------------------------------------------------------------
/app/helpers/casks_helper.rb:
--------------------------------------------------------------------------------
1 | module CasksHelper
2 | def drinklist(cask)
3 | list = []
4 | list << {class: 'warning label', title: 'Favourite'} if attendee.favourite?(cask)
5 | list << {class: 'success label', title: 'Completed'} if attendee.consumed?(cask)
6 | list << {class: 'secondary label', title: 'To Drink'} if attendee.to_consume?(cask)
7 | list
8 | end
9 |
10 | def cache_key_for_cask(cask)
11 | drink = attendee.find_drink_for(cask)
12 | key_attributes = {
13 | attendee: attendee.id,
14 | cask: cask.id,
15 | drink: drink.id,
16 | state: drink.state
17 | }
18 | key_attributes.reduce(""){ |memo, (k, v)| memo + "#{k}:#{v}" }
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/app/controllers/auth_controller.rb:
--------------------------------------------------------------------------------
1 | class AuthController < ApplicationController
2 | def signup
3 | end
4 |
5 | def login
6 | manager = UserManager.new(
7 | User::EMAIL,
8 | params.requre(:user).permit(:name, :email, :password, :confirmation),
9 | current_user
10 | )
11 | manager.activate
12 | self.current_user = manager.user
13 | redirect_to root_path
14 | end
15 |
16 | def logout
17 | reset_session
18 | redirect_to root_path
19 | end
20 |
21 | def callback
22 | manager = UserManager.new(params[:provider], request.env['omniauth.auth'], current_user)
23 | manager.activate
24 | self.current_user = manager.user
25 | redirect_to root_path
26 | end
27 | end
28 |
--------------------------------------------------------------------------------
/config/initializers/inflections.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Add new inflection rules using the following format. Inflections
4 | # are locale specific, and you may define rules for as many different
5 | # locales as you wish. All of these examples are active by default:
6 | # ActiveSupport::Inflector.inflections(:en) do |inflect|
7 | # inflect.plural /^(ox)$/i, '\1en'
8 | # inflect.singular /^(ox)en/i, '\1'
9 | # inflect.irregular 'person', 'people'
10 | # inflect.uncountable %w( fish sheep )
11 | # end
12 |
13 | # These inflection rules are supported but not enabled by default:
14 | # ActiveSupport::Inflector.inflections(:en) do |inflect|
15 | # inflect.acronym 'RESTful'
16 | # end
17 |
--------------------------------------------------------------------------------
/config/database.yml:
--------------------------------------------------------------------------------
1 | # SQLite version 3.x
2 | # gem install sqlite3
3 | #
4 | # Ensure the SQLite 3 gem is defined in your Gemfile
5 | # gem 'sqlite3'
6 | #
7 | default: &default
8 | adapter: postgresql
9 | encoding: unicode
10 | user: csaunders
11 | host: localhost
12 | port: 5432
13 | pool: 5
14 | timeout: 5000
15 |
16 | development:
17 | <<: *default
18 | database: casklist_dev
19 |
20 | # Warning: The database defined as "test" will be erased and
21 | # re-generated from your development database when you run "rake".
22 | # Do not set this db to the same as development or production.
23 | test:
24 | <<: *default
25 | database: casklist_test
26 |
27 | production:
28 | <<: *default
29 | database: casklist_prod
30 |
--------------------------------------------------------------------------------
/config/locales/en.yml:
--------------------------------------------------------------------------------
1 | # Files in the config/locales directory are used for internationalization
2 | # and are automatically loaded by Rails. If you want to use locales other
3 | # than English, add the necessary files in this directory.
4 | #
5 | # To use the locales, use `I18n.t`:
6 | #
7 | # I18n.t 'hello'
8 | #
9 | # In views, this is aliased to just `t`:
10 | #
11 | # <%= t('hello') %>
12 | #
13 | # To use a different locale, set it with `I18n.locale`:
14 | #
15 | # I18n.locale = :es
16 | #
17 | # This would use the information in config/locales/es.yml.
18 | #
19 | # To learn more, please read the Rails Internationalization guide
20 | # available at http://guides.rubyonrails.org/i18n.html.
21 |
22 | en:
23 | hello: "Hello world"
24 |
--------------------------------------------------------------------------------
/app/models/attendee.rb:
--------------------------------------------------------------------------------
1 | class Attendee < ActiveRecord::Base
2 | has_many :drinks, dependent: :destroy
3 |
4 | def favourite?(cask)
5 | drink = find_drink_for(cask)
6 | drink.favourite?
7 | end
8 |
9 | def consumed?(cask)
10 | drink = find_drink_for(cask)
11 | drink.done?
12 | end
13 |
14 | def listed?(cask)
15 | find_drink_for(cask).persisted?
16 | end
17 |
18 | def to_consume?(cask)
19 | listed?(cask) && !consumed?(cask)
20 | end
21 |
22 | def find_drink_for(cask)
23 | drinks_cache[cask.id] || Drink.new
24 | end
25 |
26 | private
27 |
28 | def drinks_cache
29 | @drinks_cache ||= drinks.reduce({}) do |cache, drink|
30 | cache[drink.cask_id] = drink
31 | cache
32 | end
33 | end
34 | end
35 |
--------------------------------------------------------------------------------
/app/views/drinks/index.html.erb:
--------------------------------------------------------------------------------
1 | <% if @drinks.blank? %>
2 | <%= render partial: 'no_drinks' %>
3 | <% else %>
4 | <% if @incomplete.present? %>
5 |
6 |
7 |
To Do
8 |
9 |
10 | <% @incomplete.each_slice(2) do |slice| %>
11 | <%= render partial: 'drinks_slice', locals: {slice: slice} %>
12 | <% end %>
13 | <% end %>
14 |
15 | <% if @complete.present? %>
16 |
17 |
18 |
Completed
19 |
20 |
21 | <% @complete.each_slice(2) do |slice| %>
22 | <%= render partial: 'drinks_slice', locals: {slice: slice} %>
23 | <% end %>
24 | <% end %>
25 | <% end %>
26 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/application.css:
--------------------------------------------------------------------------------
1 | /*
2 | * This is a manifest file that'll be compiled into application.css, which will include all the files
3 | * listed below.
4 | *
5 | * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6 | * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7 | *
8 | * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9 | * compiled file so the styles you add here take precedence over styles defined in any styles
10 | * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11 | * file per style scope.
12 | *
13 | *= require_tree .
14 | *= require_self
15 | *= require foundation_and_overrides
16 | *= require font-awesome
17 |
18 | */
19 |
--------------------------------------------------------------------------------
/app/views/casks/_cask.html.erb:
--------------------------------------------------------------------------------
1 |
37 | <% if import.processed_data.present? %>
38 |
39 | <% end %>
40 |
41 |
42 |
43 | <% end %>
44 |
45 |
46 |
--------------------------------------------------------------------------------
/config/environments/development.rb:
--------------------------------------------------------------------------------
1 | Rails.application.configure do
2 | # Settings specified here will take precedence over those in config/application.rb.
3 |
4 | # In the development environment your application's code is reloaded on
5 | # every request. This slows down response time but is perfect for development
6 | # since you don't have to restart the web server when you make code changes.
7 | config.cache_classes = false
8 |
9 | # Do not eager load code on boot.
10 | config.eager_load = false
11 |
12 | # Show full error reports and disable caching.
13 | config.consider_all_requests_local = true
14 | config.action_controller.perform_caching = false
15 |
16 | # Don't care if the mailer can't send.
17 | config.action_mailer.raise_delivery_errors = false
18 |
19 | # Print deprecation notices to the Rails logger.
20 | config.active_support.deprecation = :log
21 |
22 | # Raise an error on page load if there are pending migrations.
23 | config.active_record.migration_error = :page_load
24 |
25 | # Debug mode disables concatenation and preprocessing of assets.
26 | # This option may cause significant delays in view rendering with a large
27 | # number of complex assets.
28 | config.assets.debug = true
29 |
30 | # Adds additional error checking when serving assets at runtime.
31 | # Checks for improperly declared sprockets dependencies.
32 | # Raises helpful error messages.
33 | config.assets.raise_runtime_errors = true
34 |
35 | # Raises error for missing translations
36 | # config.action_view.raise_on_missing_translations = true
37 | end
38 |
--------------------------------------------------------------------------------
/public/500.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | We're sorry, but something went wrong (500)
5 |
6 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
We're sorry, but something went wrong.
62 |
63 |
If you are the application owner check the logs for more information.
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/config/environments/test.rb:
--------------------------------------------------------------------------------
1 | Rails.application.configure do
2 | # Settings specified here will take precedence over those in config/application.rb.
3 |
4 | # The test environment is used exclusively to run your application's
5 | # test suite. You never need to work with it otherwise. Remember that
6 | # your test database is "scratch space" for the test suite and is wiped
7 | # and recreated between test runs. Don't rely on the data there!
8 | config.cache_classes = true
9 |
10 | # Do not eager load code on boot. This avoids loading your whole application
11 | # just for the purpose of running a single test. If you are using a tool that
12 | # preloads Rails for running tests, you may have to set it to true.
13 | config.eager_load = false
14 |
15 | # Configure static asset server for tests with Cache-Control for performance.
16 | config.serve_static_assets = true
17 | config.static_cache_control = 'public, max-age=3600'
18 |
19 | # Show full error reports and disable caching.
20 | config.consider_all_requests_local = true
21 | config.action_controller.perform_caching = false
22 |
23 | # Raise exceptions instead of rendering exception templates.
24 | config.action_dispatch.show_exceptions = false
25 |
26 | # Disable request forgery protection in test environment.
27 | config.action_controller.allow_forgery_protection = false
28 |
29 | # Tell Action Mailer not to deliver emails to the real world.
30 | # The :test delivery method accumulates sent emails in the
31 | # ActionMailer::Base.deliveries array.
32 | config.action_mailer.delivery_method = :test
33 |
34 | # Print deprecation notices to the stderr.
35 | config.active_support.deprecation = :stderr
36 |
37 | # Raises error for missing translations
38 | # config.action_view.raise_on_missing_translations = true
39 | end
40 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 | ruby "2.2.2"
3 |
4 | # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
5 | gem 'rails', '4.2.3'
6 | # Use sqlite3 as the database for Active Record
7 | gem 'pg'
8 | # Use SCSS for stylesheets
9 | gem 'sass-rails', '~> 4.0.3'
10 | # Use Uglifier as compressor for JavaScript assets
11 | gem 'uglifier', '>= 1.3.0'
12 | # Use CoffeeScript for .js.coffee assets and views
13 | gem 'coffee-rails', '~> 4.0.0'
14 | # See https://github.com/sstephenson/execjs#readme for more supported runtimes
15 | # gem 'therubyracer', platforms: :ruby
16 |
17 | # Use jquery as the JavaScript library
18 | gem 'jquery-rails'
19 | # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
20 | gem 'turbolinks'
21 | # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
22 | gem 'jbuilder', '~> 2.0'
23 | # bundle exec rake doc:rails generates the API under doc/api.
24 | gem 'sdoc', '~> 0.4.0', group: :doc
25 |
26 | # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
27 | gem 'spring', group: :development
28 | gem 'pry', group: :development
29 | gem 'pry-byebug', group: :development
30 |
31 | gem 'puma'
32 | gem 'kaminari'
33 | gem 'foundation-rails'
34 | gem "font-awesome-rails"
35 | gem 'rails_12factor', group: :production
36 | gem 'figaro'
37 | gem 'roo'
38 |
39 | gem 'omniauth-facebook'
40 | gem 'omniauth-google-oauth2'
41 |
42 | # Use ActiveModel has_secure_password
43 | gem 'bcrypt', '~> 3.1.7'
44 |
45 | # Use unicorn as the app server
46 | # gem 'unicorn'
47 |
48 | # Use Capistrano for deployment
49 | # gem 'capistrano-rails', group: :development
50 |
51 | # Use debugger
52 | # gem 'debugger', group: [:development, :test]
53 |
54 |
--------------------------------------------------------------------------------
/app/controllers/legacy/drinks_controller.rb:
--------------------------------------------------------------------------------
1 | module Legacy
2 | class DrinksController < LegacyApplicationController
3 | before_action { activate(:drinks) }
4 |
5 | def index
6 | @drinks = attendee.drinks
7 | @complete, @incomplete = @drinks.group_by{|d| d.done?}.map{|k, v| v}
8 | end
9 |
10 | def show
11 | if drink.blank?
12 | flash[:notice] = "Could not find entry"
13 | redirect_to drinks_path
14 | end
15 | end
16 |
17 | def create
18 | drink = attendee.drinks.where(cask_id: drink_params[:cask_id]).first_or_initialize
19 | drink.update_attributes(drink_params)
20 | flash[:notice] = "Added #{drink.name} by #{drink.brewery} to your list" if drink.save
21 | redirect_to(return_path || drink_path(drink))
22 | end
23 |
24 | def destroy
25 | drink.destroy if drink.present?
26 | flash[:notice] = "Removed #{drink.cask.name} from your drink list"
27 | redirect_to drinks_path
28 | end
29 |
30 | def toggle_favourite
31 | if drink.present?
32 | drink.favourite = !drink.favourite
33 | set_notice('favourite')
34 | end
35 | redirect_to(return_path || drink_path(drink))
36 | end
37 |
38 | def toggle_complete
39 | if drink.present?
40 | drink.done = !drink.done
41 | set_notice('completion')
42 | end
43 | redirect_to(return_path || drink_path(drink))
44 | end
45 |
46 | private
47 |
48 | def set_notice(type)
49 | flash[:notice] = "Updated #{type} status on #{drink.name} #{drink.style}" if drink.save
50 | end
51 |
52 | def drink_params
53 | params.require(:drink).permit(:cask_id, :favourite, :done)
54 | end
55 |
56 | def drink
57 | @drink ||= attendee.drinks.find_by(id: params[:id])
58 | end
59 | end
60 | end
61 |
--------------------------------------------------------------------------------
/public/422.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The change you wanted was rejected (422)
5 |
6 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
The change you wanted was rejected.
62 |
Maybe you tried to change something you didn't have access to.
63 |
64 |
If you are the application owner check the logs for more information.
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/public/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The page you were looking for doesn't exist (404)
5 |
6 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
The page you were looking for doesn't exist.
62 |
You may have mistyped the address or the page may have moved.
63 |
64 |
If you are the application owner check the logs for more information.
101 | <% end %>
102 |
--------------------------------------------------------------------------------
/app/processors/cask_days.rb:
--------------------------------------------------------------------------------
1 | require 'digest'
2 |
3 | class CaskDays
4 | attr_reader :festival, :beers, :breweries, :beer_styles, :locations
5 | def initialize(args)
6 | @cache ||= {}
7 | @festival = args.fetch(:festival, {})
8 | @beers = args.fetch(:beers, [])
9 | @breweries = args.fetch(:breweries, [])
10 | @beer_styles = args.fetch(:beer_styles, [])
11 | @locations = args.fetch(:locations, [])
12 | end
13 |
14 | def self.import(raw)
15 | importer = XLSXImporter.new(raw)
16 | self.new(
17 | beers: importer.beers,
18 | breweries: importer.breweries,
19 | beer_styles: importer.styles,
20 | locations: importer.locations,
21 | )
22 | end
23 |
24 | def finalize!
25 | create_locations
26 | create_breweries
27 | create_styles
28 | create_beers
29 | create_festival
30 | end
31 |
32 | def to_hash
33 | {
34 | festival: festival,
35 | beers: beers,
36 | breweries: breweries,
37 | beer_styles: beer_styles,
38 | locations: locations
39 | }
40 | end
41 |
42 | private
43 | attr_reader :cache
44 |
45 | def create_record(model, data)
46 | model.where(data).first_or_create!
47 | end
48 |
49 | def create_locations
50 | locations.each do |loc|
51 | record = create_record(Location, loc.select(:city, :state, :country))
52 | cache[loc[:signature]] = record.id
53 | end
54 | end
55 |
56 | def create_breweries
57 | breweries.each do |brewery|
58 | attributes = brewery.select(:name, :website, :tagline)
59 | attributes[:location_id] = cache[brewery[:location_signature]]
60 | record = create_record(Brewery, attributes)
61 | cache[brewery[:signature]] = record.id
62 | end
63 | end
64 |
65 | def create_styles
66 | beer_styles.each do |style|
67 | record = create_record(BeerStyle, style.select(:name))
68 | cache[style[:signature]] = record.id
69 | end
70 | end
71 |
72 | def create_beers
73 | beers.each do |beer|
74 | attributes = beer.select(:name, :details, :abv, :ibu, :srm, :fg)
75 | attributes[:brewery_id] = cache[beer[:brewery_signature]]
76 | attributes[:beer_style_id] = cache[beer[:beer_style_signature]]
77 | record = create_record(Beer, attributes)
78 | cache[:beers] ||= []
79 | cache[:beers] << {beer_id: record.id, festival_identifier: beer[:identifier]}
80 | end
81 | end
82 |
83 | def create_festival
84 | festival = Festival.create(festival)
85 | cache[:beers].each do |beer|
86 | festival.festival_entries.create(beer)
87 | end
88 | end
89 |
90 | class XLSXImporter
91 | EVENT_NUM = "#"
92 | BREWERY_NAME = "BREWERY"
93 | BEER_NAME = "NAME"
94 | BEER_STYLE = "STYLE"
95 | BEER_ABV = "ALC/VOL"
96 | SESSION_NUM = "SESSION"
97 |
98 | def initialize(raw_data)
99 | @xls = Roo::Spreadsheet.open(StringIO.new(raw_data), extension: :xlsx)
100 | end
101 |
102 | def locations
103 | xls.sheets.map do |sheet|
104 | {name: normalize(sheet).gsub(/\(.+\)/, ''), signature: signature(sheet)}
105 | end
106 | end
107 |
108 | def breweries
109 | breweries = {}
110 | xls.each_with_pagename do |location_name, sheet|
111 | sheet.each(name: BREWERY_NAME) do |row|
112 | next if row[:name] == BREWERY_NAME
113 | name = row[:name]
114 | brewery_signature = signature(name)
115 | breweries[brewery_signature] ||= {
116 | name: normalize(name),
117 | signature: brewery_signature,
118 | location_signature: signature(location_name)
119 | }
120 | end
121 | end
122 | breweries.values
123 | end
124 |
125 | def styles
126 | styles = {}
127 | xls.each_with_pagename do |_, sheet|
128 | sheet.each(style: BEER_STYLE) do |row|
129 | next if row[:style] == BEER_STYLE
130 | style = row[:style]
131 | style_signature = signature(style)
132 | styles[style_signature] ||= {
133 | name: normalize(style),
134 | signature: style_signature
135 | }
136 | end
137 | end
138 | styles.values
139 | end
140 |
141 | def beers
142 | beers = []
143 | xls.each_with_pagename do |location, sheet|
144 | sheet.each(event_num: EVENT_NUM, brewery: BREWERY_NAME, name: BEER_NAME, style: BEER_STYLE, abv: BEER_ABV, session: SESSION_NUM) do |row|
145 | next if row[:event_num].to_i == 0
146 | beers << {
147 | meta: {number: row[:event_num].to_i, session: row[:session]},
148 | name: normalize(row[:name]),
149 | abv: row[:abv],
150 | details: row[:style],
151 | style_signature: signature(row[:style]),
152 | brewery_signature: signature(row[:brewery]),
153 | location_signature: signature(location)
154 | }
155 | end
156 | end
157 | beers
158 | end
159 |
160 | private
161 | attr_reader :xls
162 | def signature(value)
163 | Digest::MD5.hexdigest(value)
164 | end
165 |
166 | def normalize(str)
167 | str.gsub(/\*/, '').titleize.strip.gsub(/\s+/, ' ')
168 | end
169 |
170 | end
171 | end
172 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | actionmailer (4.2.3)
5 | actionpack (= 4.2.3)
6 | actionview (= 4.2.3)
7 | activejob (= 4.2.3)
8 | mail (~> 2.5, >= 2.5.4)
9 | rails-dom-testing (~> 1.0, >= 1.0.5)
10 | actionpack (4.2.3)
11 | actionview (= 4.2.3)
12 | activesupport (= 4.2.3)
13 | rack (~> 1.6)
14 | rack-test (~> 0.6.2)
15 | rails-dom-testing (~> 1.0, >= 1.0.5)
16 | rails-html-sanitizer (~> 1.0, >= 1.0.2)
17 | actionview (4.2.3)
18 | activesupport (= 4.2.3)
19 | builder (~> 3.1)
20 | erubis (~> 2.7.0)
21 | rails-dom-testing (~> 1.0, >= 1.0.5)
22 | rails-html-sanitizer (~> 1.0, >= 1.0.2)
23 | activejob (4.2.3)
24 | activesupport (= 4.2.3)
25 | globalid (>= 0.3.0)
26 | activemodel (4.2.3)
27 | activesupport (= 4.2.3)
28 | builder (~> 3.1)
29 | activerecord (4.2.3)
30 | activemodel (= 4.2.3)
31 | activesupport (= 4.2.3)
32 | arel (~> 6.0)
33 | activesupport (4.2.3)
34 | i18n (~> 0.7)
35 | json (~> 1.7, >= 1.7.7)
36 | minitest (~> 5.1)
37 | thread_safe (~> 0.3, >= 0.3.4)
38 | tzinfo (~> 1.1)
39 | arel (6.0.2)
40 | bcrypt (3.1.10)
41 | builder (3.2.2)
42 | byebug (3.5.1)
43 | columnize (~> 0.8)
44 | debugger-linecache (~> 1.2)
45 | slop (~> 3.6)
46 | coderay (1.1.0)
47 | coffee-rails (4.0.1)
48 | coffee-script (>= 2.2.0)
49 | railties (>= 4.0.0, < 5.0)
50 | coffee-script (2.3.0)
51 | coffee-script-source
52 | execjs
53 | coffee-script-source (1.8.0)
54 | columnize (0.8.9)
55 | debugger-linecache (1.2.0)
56 | erubis (2.7.0)
57 | execjs (2.2.2)
58 | faraday (0.9.1)
59 | multipart-post (>= 1.2, < 3)
60 | figaro (1.1.1)
61 | thor (~> 0.14)
62 | font-awesome-rails (4.4.0.0)
63 | railties (>= 3.2, < 5.0)
64 | foundation-rails (5.4.5.0)
65 | railties (>= 3.1.0)
66 | sass (>= 3.2.0)
67 | globalid (0.3.5)
68 | activesupport (>= 4.1.0)
69 | hashie (3.4.2)
70 | hike (1.2.3)
71 | i18n (0.7.0)
72 | jbuilder (2.2.3)
73 | activesupport (>= 3.0.0, < 5)
74 | multi_json (~> 1.2)
75 | jquery-rails (3.1.2)
76 | railties (>= 3.0, < 5.0)
77 | thor (>= 0.14, < 2.0)
78 | json (1.8.3)
79 | jwt (1.5.1)
80 | kaminari (0.16.1)
81 | actionpack (>= 3.0.0)
82 | activesupport (>= 3.0.0)
83 | loofah (2.0.2)
84 | nokogiri (>= 1.5.9)
85 | mail (2.6.3)
86 | mime-types (>= 1.16, < 3)
87 | method_source (0.8.2)
88 | mime-types (2.6.1)
89 | mini_portile (0.6.2)
90 | minitest (5.7.0)
91 | multi_json (1.11.2)
92 | multi_xml (0.5.5)
93 | multipart-post (2.0.0)
94 | nokogiri (1.6.6.2)
95 | mini_portile (~> 0.6.0)
96 | oauth2 (1.0.0)
97 | faraday (>= 0.8, < 0.10)
98 | jwt (~> 1.0)
99 | multi_json (~> 1.3)
100 | multi_xml (~> 0.5)
101 | rack (~> 1.2)
102 | omniauth (1.2.2)
103 | hashie (>= 1.2, < 4)
104 | rack (~> 1.0)
105 | omniauth-facebook (2.0.1)
106 | omniauth-oauth2 (~> 1.2)
107 | omniauth-google-oauth2 (0.2.6)
108 | omniauth (> 1.0)
109 | omniauth-oauth2 (~> 1.1)
110 | omniauth-oauth2 (1.3.1)
111 | oauth2 (~> 1.0)
112 | omniauth (~> 1.2)
113 | pg (0.17.1)
114 | pry (0.10.1)
115 | coderay (~> 1.1.0)
116 | method_source (~> 0.8.1)
117 | slop (~> 3.4)
118 | pry-byebug (2.0.0)
119 | byebug (~> 3.4)
120 | pry (~> 0.10)
121 | puma (2.9.1)
122 | rack (>= 1.1, < 2.0)
123 | rack (1.6.4)
124 | rack-test (0.6.3)
125 | rack (>= 1.0)
126 | rails (4.2.3)
127 | actionmailer (= 4.2.3)
128 | actionpack (= 4.2.3)
129 | actionview (= 4.2.3)
130 | activejob (= 4.2.3)
131 | activemodel (= 4.2.3)
132 | activerecord (= 4.2.3)
133 | activesupport (= 4.2.3)
134 | bundler (>= 1.3.0, < 2.0)
135 | railties (= 4.2.3)
136 | sprockets-rails
137 | rails-deprecated_sanitizer (1.0.3)
138 | activesupport (>= 4.2.0.alpha)
139 | rails-dom-testing (1.0.6)
140 | activesupport (>= 4.2.0.beta, < 5.0)
141 | nokogiri (~> 1.6.0)
142 | rails-deprecated_sanitizer (>= 1.0.1)
143 | rails-html-sanitizer (1.0.2)
144 | loofah (~> 2.0)
145 | rails_12factor (0.0.3)
146 | rails_serve_static_assets
147 | rails_stdout_logging
148 | rails_serve_static_assets (0.0.2)
149 | rails_stdout_logging (0.0.3)
150 | railties (4.2.3)
151 | actionpack (= 4.2.3)
152 | activesupport (= 4.2.3)
153 | rake (>= 0.8.7)
154 | thor (>= 0.18.1, < 2.0)
155 | rake (10.4.2)
156 | rdoc (4.1.2)
157 | json (~> 1.4)
158 | roo (2.1.1)
159 | nokogiri (~> 1)
160 | rubyzip (~> 1.1, < 2.0.0)
161 | rubyzip (1.1.7)
162 | sass (3.2.19)
163 | sass-rails (4.0.3)
164 | railties (>= 4.0.0, < 5.0)
165 | sass (~> 3.2.0)
166 | sprockets (~> 2.8, <= 2.11.0)
167 | sprockets-rails (~> 2.0)
168 | sdoc (0.4.1)
169 | json (~> 1.7, >= 1.7.7)
170 | rdoc (~> 4.0)
171 | slop (3.6.0)
172 | spring (1.1.3)
173 | sprockets (2.11.0)
174 | hike (~> 1.2)
175 | multi_json (~> 1.0)
176 | rack (~> 1.0)
177 | tilt (~> 1.1, != 1.3.0)
178 | sprockets-rails (2.3.2)
179 | actionpack (>= 3.0)
180 | activesupport (>= 3.0)
181 | sprockets (>= 2.8, < 4.0)
182 | thor (0.19.1)
183 | thread_safe (0.3.5)
184 | tilt (1.4.1)
185 | turbolinks (2.4.0)
186 | coffee-rails
187 | tzinfo (1.2.2)
188 | thread_safe (~> 0.1)
189 | uglifier (2.5.3)
190 | execjs (>= 0.3.0)
191 | json (>= 1.8.0)
192 |
193 | PLATFORMS
194 | ruby
195 |
196 | DEPENDENCIES
197 | bcrypt (~> 3.1.7)
198 | coffee-rails (~> 4.0.0)
199 | figaro
200 | font-awesome-rails
201 | foundation-rails
202 | jbuilder (~> 2.0)
203 | jquery-rails
204 | kaminari
205 | omniauth-facebook
206 | omniauth-google-oauth2
207 | pg
208 | pry
209 | pry-byebug
210 | puma
211 | rails (= 4.2.3)
212 | rails_12factor
213 | roo
214 | sass-rails (~> 4.0.3)
215 | sdoc (~> 0.4.0)
216 | spring
217 | turbolinks
218 | uglifier (>= 1.3.0)
219 |
220 | BUNDLED WITH
221 | 1.10.5
222 |
--------------------------------------------------------------------------------
/db/schema.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 | # This file is auto-generated from the current state of the database. Instead
3 | # of editing this file, please use the migrations feature of Active Record to
4 | # incrementally modify your database, and then regenerate this schema definition.
5 | #
6 | # Note that this schema.rb definition is the authoritative source for your
7 | # database schema. If you need to create the application database on another
8 | # system, you should be using db:schema:load, not running all the migrations
9 | # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10 | # you'll amass, the slower it'll run and the greater likelihood for issues).
11 | #
12 | # It's strongly recommended that you check this file into your version control system.
13 |
14 | ActiveRecord::Schema.define(version: 20150821190440) do
15 |
16 | # These are extensions that must be enabled in order to support this database
17 | enable_extension "plpgsql"
18 |
19 | create_table "attendees", force: :cascade do |t|
20 | t.integer "session"
21 | t.datetime "created_at"
22 | t.datetime "updated_at"
23 | end
24 |
25 | create_table "beer_styles", force: :cascade do |t|
26 | t.string "name", null: false
27 | t.datetime "created_at", null: false
28 | t.datetime "updated_at", null: false
29 | end
30 |
31 | create_table "beers", force: :cascade do |t|
32 | t.string "name", null: false
33 | t.string "details"
34 | t.string "details_html"
35 | t.decimal "abv", null: false
36 | t.decimal "ibu", null: false
37 | t.decimal "srm"
38 | t.decimal "fg"
39 | t.integer "brewery_id", null: false
40 | t.integer "beer_style_id", null: false
41 | t.datetime "created_at", null: false
42 | t.datetime "updated_at", null: false
43 | end
44 |
45 | add_index "beers", ["beer_style_id"], name: "index_beers_on_beer_style_id", using: :btree
46 | add_index "beers", ["brewery_id"], name: "index_beers_on_brewery_id", using: :btree
47 |
48 | create_table "breweries", force: :cascade do |t|
49 | t.string "name", null: false
50 | t.string "tagline"
51 | t.string "website", null: false
52 | t.integer "location_id", null: false
53 | t.datetime "created_at", null: false
54 | t.datetime "updated_at", null: false
55 | end
56 |
57 | add_index "breweries", ["location_id"], name: "index_breweries_on_location_id", using: :btree
58 |
59 | create_table "casks", force: :cascade do |t|
60 | t.integer "cask", null: false
61 | t.string "region", null: false
62 | t.string "brewery", null: false
63 | t.string "name", null: false
64 | t.string "style", null: false
65 | t.decimal "abv", precision: 5, scale: 2, null: false
66 | t.integer "session", default: 0
67 | t.datetime "created_at"
68 | t.datetime "updated_at"
69 | end
70 |
71 | add_index "casks", ["cask"], name: "index_casks_on_cask", using: :btree
72 | add_index "casks", ["region"], name: "index_casks_on_region", using: :btree
73 | add_index "casks", ["session"], name: "index_casks_on_session", using: :btree
74 | add_index "casks", ["style"], name: "index_casks_on_style", using: :btree
75 |
76 | create_table "drinks", force: :cascade do |t|
77 | t.integer "attendee_id"
78 | t.integer "cask_id"
79 | t.boolean "done"
80 | t.boolean "favourite"
81 | t.datetime "created_at"
82 | t.datetime "updated_at"
83 | end
84 |
85 | add_index "drinks", ["attendee_id", "done"], name: "index_drinks_on_attendee_id_and_done", using: :btree
86 | add_index "drinks", ["attendee_id", "favourite"], name: "index_drinks_on_attendee_id_and_favourite", using: :btree
87 |
88 | create_table "festival_entries", force: :cascade do |t|
89 | t.integer "festival_id", null: false
90 | t.integer "beer_id", null: false
91 | t.integer "festival_identifier", null: false
92 | t.text "metadata"
93 | t.datetime "created_at", null: false
94 | t.datetime "updated_at", null: false
95 | end
96 |
97 | add_index "festival_entries", ["festival_id"], name: "index_festival_entries_on_festival_id", using: :btree
98 |
99 | create_table "festivals", force: :cascade do |t|
100 | t.string "name", null: false
101 | t.text "description"
102 | t.text "description_html"
103 | t.datetime "starts_at", null: false
104 | t.datetime "ends_at", null: false
105 | t.string "website", null: false
106 | t.decimal "latitude"
107 | t.decimal "longitude"
108 | t.decimal "address", null: false
109 | t.integer "location_id", null: false
110 | t.datetime "created_at", null: false
111 | t.datetime "updated_at", null: false
112 | t.boolean "published", default: false, null: false
113 | end
114 |
115 | add_index "festivals", ["location_id"], name: "index_festivals_on_location_id", using: :btree
116 | add_index "festivals", ["starts_at"], name: "index_festivals_on_starts_at", using: :btree
117 |
118 | create_table "imports", force: :cascade do |t|
119 | t.string "name", null: false
120 | t.string "processor", null: false
121 | t.text "raw_data", null: false
122 | t.text "processed_data"
123 | t.datetime "created_at", null: false
124 | t.datetime "updated_at", null: false
125 | end
126 |
127 | create_table "locations", force: :cascade do |t|
128 | t.string "city"
129 | t.string "state"
130 | t.string "country", null: false
131 | t.datetime "created_at", null: false
132 | t.datetime "updated_at", null: false
133 | end
134 |
135 | add_index "locations", ["city"], name: "index_locations_on_city", using: :btree
136 | add_index "locations", ["country"], name: "index_locations_on_country", using: :btree
137 |
138 | create_table "roles", force: :cascade do |t|
139 | t.integer "user_id", null: false
140 | t.string "name", null: false
141 | t.datetime "created_at", null: false
142 | t.datetime "updated_at", null: false
143 | end
144 |
145 | add_index "roles", ["user_id", "name"], name: "index_roles_on_user_id_and_name", unique: true, using: :btree
146 |
147 | create_table "tasting_notes", force: :cascade do |t|
148 | t.datetime "created_at", null: false
149 | t.datetime "updated_at", null: false
150 | end
151 |
152 | create_table "users", force: :cascade do |t|
153 | t.string "name"
154 | t.string "identifier"
155 | t.string "authenticated_by", null: false
156 | t.string "password_digest", null: false
157 | t.datetime "created_at", null: false
158 | t.datetime "updated_at", null: false
159 | end
160 |
161 | add_index "users", ["authenticated_by"], name: "index_users_on_authenticated_by", using: :btree
162 | add_index "users", ["identifier"], name: "index_users_on_identifier", using: :btree
163 |
164 | create_table "wishlist_entries", force: :cascade do |t|
165 | t.integer "beer_id", null: false
166 | t.integer "wishlist_id", null: false
167 | t.boolean "done", default: false
168 | t.datetime "created_at", null: false
169 | t.datetime "updated_at", null: false
170 | end
171 |
172 | add_index "wishlist_entries", ["wishlist_id"], name: "index_wishlist_entries_on_wishlist_id", using: :btree
173 |
174 | create_table "wishlists", force: :cascade do |t|
175 | t.string "name", null: false
176 | t.string "user_id", null: false
177 | t.integer "festival_id", null: false
178 | t.datetime "created_at", null: false
179 | t.datetime "updated_at", null: false
180 | end
181 |
182 | add_index "wishlists", ["user_id"], name: "index_wishlists_on_user_id", using: :btree
183 |
184 | add_foreign_key "festival_entries", "festivals", on_delete: :cascade
185 | add_foreign_key "roles", "users", on_delete: :cascade
186 | add_foreign_key "wishlist_entries", "wishlists", on_delete: :cascade
187 | end
188 |
--------------------------------------------------------------------------------
/AGPL:
--------------------------------------------------------------------------------
1 | GNU AFFERO GENERAL PUBLIC LICENSE
2 | Version 3, 19 November 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU Affero General Public License is a free, copyleft license for
11 | software and other kinds of works, specifically designed to ensure
12 | cooperation with the community in the case of network server software.
13 |
14 | The licenses for most software and other practical works are designed
15 | to take away your freedom to share and change the works. By contrast,
16 | our General Public Licenses are intended to guarantee your freedom to
17 | share and change all versions of a program--to make sure it remains free
18 | software for all its users.
19 |
20 | When we speak of free software, we are referring to freedom, not
21 | price. Our General Public Licenses are designed to make sure that you
22 | have the freedom to distribute copies of free software (and charge for
23 | them if you wish), that you receive source code or can get it if you
24 | want it, that you can change the software or use pieces of it in new
25 | free programs, and that you know you can do these things.
26 |
27 | Developers that use our General Public Licenses protect your rights
28 | with two steps: (1) assert copyright on the software, and (2) offer
29 | you this License which gives you legal permission to copy, distribute
30 | and/or modify the software.
31 |
32 | A secondary benefit of defending all users' freedom is that
33 | improvements made in alternate versions of the program, if they
34 | receive widespread use, become available for other developers to
35 | incorporate. Many developers of free software are heartened and
36 | encouraged by the resulting cooperation. However, in the case of
37 | software used on network servers, this result may fail to come about.
38 | The GNU General Public License permits making a modified version and
39 | letting the public access it on a server without ever releasing its
40 | source code to the public.
41 |
42 | The GNU Affero General Public License is designed specifically to
43 | ensure that, in such cases, the modified source code becomes available
44 | to the community. It requires the operator of a network server to
45 | provide the source code of the modified version running there to the
46 | users of that server. Therefore, public use of a modified version, on
47 | a publicly accessible server, gives the public access to the source
48 | code of the modified version.
49 |
50 | An older license, called the Affero General Public License and
51 | published by Affero, was designed to accomplish similar goals. This is
52 | a different license, not a version of the Affero GPL, but Affero has
53 | released a new version of the Affero GPL which permits relicensing under
54 | this license.
55 |
56 | The precise terms and conditions for copying, distribution and
57 | modification follow.
58 |
59 | TERMS AND CONDITIONS
60 |
61 | 0. Definitions.
62 |
63 | "This License" refers to version 3 of the GNU Affero General Public License.
64 |
65 | "Copyright" also means copyright-like laws that apply to other kinds of
66 | works, such as semiconductor masks.
67 |
68 | "The Program" refers to any copyrightable work licensed under this
69 | License. Each licensee is addressed as "you". "Licensees" and
70 | "recipients" may be individuals or organizations.
71 |
72 | To "modify" a work means to copy from or adapt all or part of the work
73 | in a fashion requiring copyright permission, other than the making of an
74 | exact copy. The resulting work is called a "modified version" of the
75 | earlier work or a work "based on" the earlier work.
76 |
77 | A "covered work" means either the unmodified Program or a work based
78 | on the Program.
79 |
80 | To "propagate" a work means to do anything with it that, without
81 | permission, would make you directly or secondarily liable for
82 | infringement under applicable copyright law, except executing it on a
83 | computer or modifying a private copy. Propagation includes copying,
84 | distribution (with or without modification), making available to the
85 | public, and in some countries other activities as well.
86 |
87 | To "convey" a work means any kind of propagation that enables other
88 | parties to make or receive copies. Mere interaction with a user through
89 | a computer network, with no transfer of a copy, is not conveying.
90 |
91 | An interactive user interface displays "Appropriate Legal Notices"
92 | to the extent that it includes a convenient and prominently visible
93 | feature that (1) displays an appropriate copyright notice, and (2)
94 | tells the user that there is no warranty for the work (except to the
95 | extent that warranties are provided), that licensees may convey the
96 | work under this License, and how to view a copy of this License. If
97 | the interface presents a list of user commands or options, such as a
98 | menu, a prominent item in the list meets this criterion.
99 |
100 | 1. Source Code.
101 |
102 | The "source code" for a work means the preferred form of the work
103 | for making modifications to it. "Object code" means any non-source
104 | form of a work.
105 |
106 | A "Standard Interface" means an interface that either is an official
107 | standard defined by a recognized standards body, or, in the case of
108 | interfaces specified for a particular programming language, one that
109 | is widely used among developers working in that language.
110 |
111 | The "System Libraries" of an executable work include anything, other
112 | than the work as a whole, that (a) is included in the normal form of
113 | packaging a Major Component, but which is not part of that Major
114 | Component, and (b) serves only to enable use of the work with that
115 | Major Component, or to implement a Standard Interface for which an
116 | implementation is available to the public in source code form. A
117 | "Major Component", in this context, means a major essential component
118 | (kernel, window system, and so on) of the specific operating system
119 | (if any) on which the executable work runs, or a compiler used to
120 | produce the work, or an object code interpreter used to run it.
121 |
122 | The "Corresponding Source" for a work in object code form means all
123 | the source code needed to generate, install, and (for an executable
124 | work) run the object code and to modify the work, including scripts to
125 | control those activities. However, it does not include the work's
126 | System Libraries, or general-purpose tools or generally available free
127 | programs which are used unmodified in performing those activities but
128 | which are not part of the work. For example, Corresponding Source
129 | includes interface definition files associated with source files for
130 | the work, and the source code for shared libraries and dynamically
131 | linked subprograms that the work is specifically designed to require,
132 | such as by intimate data communication or control flow between those
133 | subprograms and other parts of the work.
134 |
135 | The Corresponding Source need not include anything that users
136 | can regenerate automatically from other parts of the Corresponding
137 | Source.
138 |
139 | The Corresponding Source for a work in source code form is that
140 | same work.
141 |
142 | 2. Basic Permissions.
143 |
144 | All rights granted under this License are granted for the term of
145 | copyright on the Program, and are irrevocable provided the stated
146 | conditions are met. This License explicitly affirms your unlimited
147 | permission to run the unmodified Program. The output from running a
148 | covered work is covered by this License only if the output, given its
149 | content, constitutes a covered work. This License acknowledges your
150 | rights of fair use or other equivalent, as provided by copyright law.
151 |
152 | You may make, run and propagate covered works that you do not
153 | convey, without conditions so long as your license otherwise remains
154 | in force. You may convey covered works to others for the sole purpose
155 | of having them make modifications exclusively for you, or provide you
156 | with facilities for running those works, provided that you comply with
157 | the terms of this License in conveying all material for which you do
158 | not control copyright. Those thus making or running the covered works
159 | for you must do so exclusively on your behalf, under your direction
160 | and control, on terms that prohibit them from making any copies of
161 | your copyrighted material outside their relationship with you.
162 |
163 | Conveying under any other circumstances is permitted solely under
164 | the conditions stated below. Sublicensing is not allowed; section 10
165 | makes it unnecessary.
166 |
167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
168 |
169 | No covered work shall be deemed part of an effective technological
170 | measure under any applicable law fulfilling obligations under article
171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
172 | similar laws prohibiting or restricting circumvention of such
173 | measures.
174 |
175 | When you convey a covered work, you waive any legal power to forbid
176 | circumvention of technological measures to the extent such circumvention
177 | is effected by exercising rights under this License with respect to
178 | the covered work, and you disclaim any intention to limit operation or
179 | modification of the work as a means of enforcing, against the work's
180 | users, your or third parties' legal rights to forbid circumvention of
181 | technological measures.
182 |
183 | 4. Conveying Verbatim Copies.
184 |
185 | You may convey verbatim copies of the Program's source code as you
186 | receive it, in any medium, provided that you conspicuously and
187 | appropriately publish on each copy an appropriate copyright notice;
188 | keep intact all notices stating that this License and any
189 | non-permissive terms added in accord with section 7 apply to the code;
190 | keep intact all notices of the absence of any warranty; and give all
191 | recipients a copy of this License along with the Program.
192 |
193 | You may charge any price or no price for each copy that you convey,
194 | and you may offer support or warranty protection for a fee.
195 |
196 | 5. Conveying Modified Source Versions.
197 |
198 | You may convey a work based on the Program, or the modifications to
199 | produce it from the Program, in the form of source code under the
200 | terms of section 4, provided that you also meet all of these conditions:
201 |
202 | a) The work must carry prominent notices stating that you modified
203 | it, and giving a relevant date.
204 |
205 | b) The work must carry prominent notices stating that it is
206 | released under this License and any conditions added under section
207 | 7. This requirement modifies the requirement in section 4 to
208 | "keep intact all notices".
209 |
210 | c) You must license the entire work, as a whole, under this
211 | License to anyone who comes into possession of a copy. This
212 | License will therefore apply, along with any applicable section 7
213 | additional terms, to the whole of the work, and all its parts,
214 | regardless of how they are packaged. This License gives no
215 | permission to license the work in any other way, but it does not
216 | invalidate such permission if you have separately received it.
217 |
218 | d) If the work has interactive user interfaces, each must display
219 | Appropriate Legal Notices; however, if the Program has interactive
220 | interfaces that do not display Appropriate Legal Notices, your
221 | work need not make them do so.
222 |
223 | A compilation of a covered work with other separate and independent
224 | works, which are not by their nature extensions of the covered work,
225 | and which are not combined with it such as to form a larger program,
226 | in or on a volume of a storage or distribution medium, is called an
227 | "aggregate" if the compilation and its resulting copyright are not
228 | used to limit the access or legal rights of the compilation's users
229 | beyond what the individual works permit. Inclusion of a covered work
230 | in an aggregate does not cause this License to apply to the other
231 | parts of the aggregate.
232 |
233 | 6. Conveying Non-Source Forms.
234 |
235 | You may convey a covered work in object code form under the terms
236 | of sections 4 and 5, provided that you also convey the
237 | machine-readable Corresponding Source under the terms of this License,
238 | in one of these ways:
239 |
240 | a) Convey the object code in, or embodied in, a physical product
241 | (including a physical distribution medium), accompanied by the
242 | Corresponding Source fixed on a durable physical medium
243 | customarily used for software interchange.
244 |
245 | b) Convey the object code in, or embodied in, a physical product
246 | (including a physical distribution medium), accompanied by a
247 | written offer, valid for at least three years and valid for as
248 | long as you offer spare parts or customer support for that product
249 | model, to give anyone who possesses the object code either (1) a
250 | copy of the Corresponding Source for all the software in the
251 | product that is covered by this License, on a durable physical
252 | medium customarily used for software interchange, for a price no
253 | more than your reasonable cost of physically performing this
254 | conveying of source, or (2) access to copy the
255 | Corresponding Source from a network server at no charge.
256 |
257 | c) Convey individual copies of the object code with a copy of the
258 | written offer to provide the Corresponding Source. This
259 | alternative is allowed only occasionally and noncommercially, and
260 | only if you received the object code with such an offer, in accord
261 | with subsection 6b.
262 |
263 | d) Convey the object code by offering access from a designated
264 | place (gratis or for a charge), and offer equivalent access to the
265 | Corresponding Source in the same way through the same place at no
266 | further charge. You need not require recipients to copy the
267 | Corresponding Source along with the object code. If the place to
268 | copy the object code is a network server, the Corresponding Source
269 | may be on a different server (operated by you or a third party)
270 | that supports equivalent copying facilities, provided you maintain
271 | clear directions next to the object code saying where to find the
272 | Corresponding Source. Regardless of what server hosts the
273 | Corresponding Source, you remain obligated to ensure that it is
274 | available for as long as needed to satisfy these requirements.
275 |
276 | e) Convey the object code using peer-to-peer transmission, provided
277 | you inform other peers where the object code and Corresponding
278 | Source of the work are being offered to the general public at no
279 | charge under subsection 6d.
280 |
281 | A separable portion of the object code, whose source code is excluded
282 | from the Corresponding Source as a System Library, need not be
283 | included in conveying the object code work.
284 |
285 | A "User Product" is either (1) a "consumer product", which means any
286 | tangible personal property which is normally used for personal, family,
287 | or household purposes, or (2) anything designed or sold for incorporation
288 | into a dwelling. In determining whether a product is a consumer product,
289 | doubtful cases shall be resolved in favor of coverage. For a particular
290 | product received by a particular user, "normally used" refers to a
291 | typical or common use of that class of product, regardless of the status
292 | of the particular user or of the way in which the particular user
293 | actually uses, or expects or is expected to use, the product. A product
294 | is a consumer product regardless of whether the product has substantial
295 | commercial, industrial or non-consumer uses, unless such uses represent
296 | the only significant mode of use of the product.
297 |
298 | "Installation Information" for a User Product means any methods,
299 | procedures, authorization keys, or other information required to install
300 | and execute modified versions of a covered work in that User Product from
301 | a modified version of its Corresponding Source. The information must
302 | suffice to ensure that the continued functioning of the modified object
303 | code is in no case prevented or interfered with solely because
304 | modification has been made.
305 |
306 | If you convey an object code work under this section in, or with, or
307 | specifically for use in, a User Product, and the conveying occurs as
308 | part of a transaction in which the right of possession and use of the
309 | User Product is transferred to the recipient in perpetuity or for a
310 | fixed term (regardless of how the transaction is characterized), the
311 | Corresponding Source conveyed under this section must be accompanied
312 | by the Installation Information. But this requirement does not apply
313 | if neither you nor any third party retains the ability to install
314 | modified object code on the User Product (for example, the work has
315 | been installed in ROM).
316 |
317 | The requirement to provide Installation Information does not include a
318 | requirement to continue to provide support service, warranty, or updates
319 | for a work that has been modified or installed by the recipient, or for
320 | the User Product in which it has been modified or installed. Access to a
321 | network may be denied when the modification itself materially and
322 | adversely affects the operation of the network or violates the rules and
323 | protocols for communication across the network.
324 |
325 | Corresponding Source conveyed, and Installation Information provided,
326 | in accord with this section must be in a format that is publicly
327 | documented (and with an implementation available to the public in
328 | source code form), and must require no special password or key for
329 | unpacking, reading or copying.
330 |
331 | 7. Additional Terms.
332 |
333 | "Additional permissions" are terms that supplement the terms of this
334 | License by making exceptions from one or more of its conditions.
335 | Additional permissions that are applicable to the entire Program shall
336 | be treated as though they were included in this License, to the extent
337 | that they are valid under applicable law. If additional permissions
338 | apply only to part of the Program, that part may be used separately
339 | under those permissions, but the entire Program remains governed by
340 | this License without regard to the additional permissions.
341 |
342 | When you convey a copy of a covered work, you may at your option
343 | remove any additional permissions from that copy, or from any part of
344 | it. (Additional permissions may be written to require their own
345 | removal in certain cases when you modify the work.) You may place
346 | additional permissions on material, added by you to a covered work,
347 | for which you have or can give appropriate copyright permission.
348 |
349 | Notwithstanding any other provision of this License, for material you
350 | add to a covered work, you may (if authorized by the copyright holders of
351 | that material) supplement the terms of this License with terms:
352 |
353 | a) Disclaiming warranty or limiting liability differently from the
354 | terms of sections 15 and 16 of this License; or
355 |
356 | b) Requiring preservation of specified reasonable legal notices or
357 | author attributions in that material or in the Appropriate Legal
358 | Notices displayed by works containing it; or
359 |
360 | c) Prohibiting misrepresentation of the origin of that material, or
361 | requiring that modified versions of such material be marked in
362 | reasonable ways as different from the original version; or
363 |
364 | d) Limiting the use for publicity purposes of names of licensors or
365 | authors of the material; or
366 |
367 | e) Declining to grant rights under trademark law for use of some
368 | trade names, trademarks, or service marks; or
369 |
370 | f) Requiring indemnification of licensors and authors of that
371 | material by anyone who conveys the material (or modified versions of
372 | it) with contractual assumptions of liability to the recipient, for
373 | any liability that these contractual assumptions directly impose on
374 | those licensors and authors.
375 |
376 | All other non-permissive additional terms are considered "further
377 | restrictions" within the meaning of section 10. If the Program as you
378 | received it, or any part of it, contains a notice stating that it is
379 | governed by this License along with a term that is a further
380 | restriction, you may remove that term. If a license document contains
381 | a further restriction but permits relicensing or conveying under this
382 | License, you may add to a covered work material governed by the terms
383 | of that license document, provided that the further restriction does
384 | not survive such relicensing or conveying.
385 |
386 | If you add terms to a covered work in accord with this section, you
387 | must place, in the relevant source files, a statement of the
388 | additional terms that apply to those files, or a notice indicating
389 | where to find the applicable terms.
390 |
391 | Additional terms, permissive or non-permissive, may be stated in the
392 | form of a separately written license, or stated as exceptions;
393 | the above requirements apply either way.
394 |
395 | 8. Termination.
396 |
397 | You may not propagate or modify a covered work except as expressly
398 | provided under this License. Any attempt otherwise to propagate or
399 | modify it is void, and will automatically terminate your rights under
400 | this License (including any patent licenses granted under the third
401 | paragraph of section 11).
402 |
403 | However, if you cease all violation of this License, then your
404 | license from a particular copyright holder is reinstated (a)
405 | provisionally, unless and until the copyright holder explicitly and
406 | finally terminates your license, and (b) permanently, if the copyright
407 | holder fails to notify you of the violation by some reasonable means
408 | prior to 60 days after the cessation.
409 |
410 | Moreover, your license from a particular copyright holder is
411 | reinstated permanently if the copyright holder notifies you of the
412 | violation by some reasonable means, this is the first time you have
413 | received notice of violation of this License (for any work) from that
414 | copyright holder, and you cure the violation prior to 30 days after
415 | your receipt of the notice.
416 |
417 | Termination of your rights under this section does not terminate the
418 | licenses of parties who have received copies or rights from you under
419 | this License. If your rights have been terminated and not permanently
420 | reinstated, you do not qualify to receive new licenses for the same
421 | material under section 10.
422 |
423 | 9. Acceptance Not Required for Having Copies.
424 |
425 | You are not required to accept this License in order to receive or
426 | run a copy of the Program. Ancillary propagation of a covered work
427 | occurring solely as a consequence of using peer-to-peer transmission
428 | to receive a copy likewise does not require acceptance. However,
429 | nothing other than this License grants you permission to propagate or
430 | modify any covered work. These actions infringe copyright if you do
431 | not accept this License. Therefore, by modifying or propagating a
432 | covered work, you indicate your acceptance of this License to do so.
433 |
434 | 10. Automatic Licensing of Downstream Recipients.
435 |
436 | Each time you convey a covered work, the recipient automatically
437 | receives a license from the original licensors, to run, modify and
438 | propagate that work, subject to this License. You are not responsible
439 | for enforcing compliance by third parties with this License.
440 |
441 | An "entity transaction" is a transaction transferring control of an
442 | organization, or substantially all assets of one, or subdividing an
443 | organization, or merging organizations. If propagation of a covered
444 | work results from an entity transaction, each party to that
445 | transaction who receives a copy of the work also receives whatever
446 | licenses to the work the party's predecessor in interest had or could
447 | give under the previous paragraph, plus a right to possession of the
448 | Corresponding Source of the work from the predecessor in interest, if
449 | the predecessor has it or can get it with reasonable efforts.
450 |
451 | You may not impose any further restrictions on the exercise of the
452 | rights granted or affirmed under this License. For example, you may
453 | not impose a license fee, royalty, or other charge for exercise of
454 | rights granted under this License, and you may not initiate litigation
455 | (including a cross-claim or counterclaim in a lawsuit) alleging that
456 | any patent claim is infringed by making, using, selling, offering for
457 | sale, or importing the Program or any portion of it.
458 |
459 | 11. Patents.
460 |
461 | A "contributor" is a copyright holder who authorizes use under this
462 | License of the Program or a work on which the Program is based. The
463 | work thus licensed is called the contributor's "contributor version".
464 |
465 | A contributor's "essential patent claims" are all patent claims
466 | owned or controlled by the contributor, whether already acquired or
467 | hereafter acquired, that would be infringed by some manner, permitted
468 | by this License, of making, using, or selling its contributor version,
469 | but do not include claims that would be infringed only as a
470 | consequence of further modification of the contributor version. For
471 | purposes of this definition, "control" includes the right to grant
472 | patent sublicenses in a manner consistent with the requirements of
473 | this License.
474 |
475 | Each contributor grants you a non-exclusive, worldwide, royalty-free
476 | patent license under the contributor's essential patent claims, to
477 | make, use, sell, offer for sale, import and otherwise run, modify and
478 | propagate the contents of its contributor version.
479 |
480 | In the following three paragraphs, a "patent license" is any express
481 | agreement or commitment, however denominated, not to enforce a patent
482 | (such as an express permission to practice a patent or covenant not to
483 | sue for patent infringement). To "grant" such a patent license to a
484 | party means to make such an agreement or commitment not to enforce a
485 | patent against the party.
486 |
487 | If you convey a covered work, knowingly relying on a patent license,
488 | and the Corresponding Source of the work is not available for anyone
489 | to copy, free of charge and under the terms of this License, through a
490 | publicly available network server or other readily accessible means,
491 | then you must either (1) cause the Corresponding Source to be so
492 | available, or (2) arrange to deprive yourself of the benefit of the
493 | patent license for this particular work, or (3) arrange, in a manner
494 | consistent with the requirements of this License, to extend the patent
495 | license to downstream recipients. "Knowingly relying" means you have
496 | actual knowledge that, but for the patent license, your conveying the
497 | covered work in a country, or your recipient's use of the covered work
498 | in a country, would infringe one or more identifiable patents in that
499 | country that you have reason to believe are valid.
500 |
501 | If, pursuant to or in connection with a single transaction or
502 | arrangement, you convey, or propagate by procuring conveyance of, a
503 | covered work, and grant a patent license to some of the parties
504 | receiving the covered work authorizing them to use, propagate, modify
505 | or convey a specific copy of the covered work, then the patent license
506 | you grant is automatically extended to all recipients of the covered
507 | work and works based on it.
508 |
509 | A patent license is "discriminatory" if it does not include within
510 | the scope of its coverage, prohibits the exercise of, or is
511 | conditioned on the non-exercise of one or more of the rights that are
512 | specifically granted under this License. You may not convey a covered
513 | work if you are a party to an arrangement with a third party that is
514 | in the business of distributing software, under which you make payment
515 | to the third party based on the extent of your activity of conveying
516 | the work, and under which the third party grants, to any of the
517 | parties who would receive the covered work from you, a discriminatory
518 | patent license (a) in connection with copies of the covered work
519 | conveyed by you (or copies made from those copies), or (b) primarily
520 | for and in connection with specific products or compilations that
521 | contain the covered work, unless you entered into that arrangement,
522 | or that patent license was granted, prior to 28 March 2007.
523 |
524 | Nothing in this License shall be construed as excluding or limiting
525 | any implied license or other defenses to infringement that may
526 | otherwise be available to you under applicable patent law.
527 |
528 | 12. No Surrender of Others' Freedom.
529 |
530 | If conditions are imposed on you (whether by court order, agreement or
531 | otherwise) that contradict the conditions of this License, they do not
532 | excuse you from the conditions of this License. If you cannot convey a
533 | covered work so as to satisfy simultaneously your obligations under this
534 | License and any other pertinent obligations, then as a consequence you may
535 | not convey it at all. For example, if you agree to terms that obligate you
536 | to collect a royalty for further conveying from those to whom you convey
537 | the Program, the only way you could satisfy both those terms and this
538 | License would be to refrain entirely from conveying the Program.
539 |
540 | 13. Remote Network Interaction; Use with the GNU General Public License.
541 |
542 | Notwithstanding any other provision of this License, if you modify the
543 | Program, your modified version must prominently offer all users
544 | interacting with it remotely through a computer network (if your version
545 | supports such interaction) an opportunity to receive the Corresponding
546 | Source of your version by providing access to the Corresponding Source
547 | from a network server at no charge, through some standard or customary
548 | means of facilitating copying of software. This Corresponding Source
549 | shall include the Corresponding Source for any work covered by version 3
550 | of the GNU General Public License that is incorporated pursuant to the
551 | following paragraph.
552 |
553 | Notwithstanding any other provision of this License, you have
554 | permission to link or combine any covered work with a work licensed
555 | under version 3 of the GNU General Public License into a single
556 | combined work, and to convey the resulting work. The terms of this
557 | License will continue to apply to the part which is the covered work,
558 | but the work with which it is combined will remain governed by version
559 | 3 of the GNU General Public License.
560 |
561 | 14. Revised Versions of this License.
562 |
563 | The Free Software Foundation may publish revised and/or new versions of
564 | the GNU Affero General Public License from time to time. Such new versions
565 | will be similar in spirit to the present version, but may differ in detail to
566 | address new problems or concerns.
567 |
568 | Each version is given a distinguishing version number. If the
569 | Program specifies that a certain numbered version of the GNU Affero General
570 | Public License "or any later version" applies to it, you have the
571 | option of following the terms and conditions either of that numbered
572 | version or of any later version published by the Free Software
573 | Foundation. If the Program does not specify a version number of the
574 | GNU Affero General Public License, you may choose any version ever published
575 | by the Free Software Foundation.
576 |
577 | If the Program specifies that a proxy can decide which future
578 | versions of the GNU Affero General Public License can be used, that proxy's
579 | public statement of acceptance of a version permanently authorizes you
580 | to choose that version for the Program.
581 |
582 | Later license versions may give you additional or different
583 | permissions. However, no additional obligations are imposed on any
584 | author or copyright holder as a result of your choosing to follow a
585 | later version.
586 |
587 | 15. Disclaimer of Warranty.
588 |
589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
597 |
598 | 16. Limitation of Liability.
599 |
600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
608 | SUCH DAMAGES.
609 |
610 | 17. Interpretation of Sections 15 and 16.
611 |
612 | If the disclaimer of warranty and limitation of liability provided
613 | above cannot be given local legal effect according to their terms,
614 | reviewing courts shall apply local law that most closely approximates
615 | an absolute waiver of all civil liability in connection with the
616 | Program, unless a warranty or assumption of liability accompanies a
617 | copy of the Program in return for a fee.
618 |
619 | END OF TERMS AND CONDITIONS
620 |
621 | How to Apply These Terms to Your New Programs
622 |
623 | If you develop a new program, and you want it to be of the greatest
624 | possible use to the public, the best way to achieve this is to make it
625 | free software which everyone can redistribute and change under these terms.
626 |
627 | To do so, attach the following notices to the program. It is safest
628 | to attach them to the start of each source file to most effectively
629 | state the exclusion of warranty; and each file should have at least
630 | the "copyright" line and a pointer to where the full notice is found.
631 |
632 | Casker - Beer Tasting Notes and Festival Tool
633 | Copyright (C) 2014 - 2015
634 |
635 | This program is free software: you can redistribute it and/or modify
636 | it under the terms of the GNU Affero General Public License as published by
637 | the Free Software Foundation, either version 3 of the License, or
638 | (at your option) any later version.
639 |
640 | This program is distributed in the hope that it will be useful,
641 | but WITHOUT ANY WARRANTY; without even the implied warranty of
642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
643 | GNU Affero General Public License for more details.
644 |
645 | You should have received a copy of the GNU Affero General Public License
646 | along with this program. If not, see .
647 |
648 | Also add information on how to contact you by electronic and paper mail.
649 |
650 | If your software can interact with users remotely through a computer
651 | network, you should also make sure that it provides a way for users to
652 | get its source. For example, if your program is a web application, its
653 | interface could display a "Source" link that leads users to an archive
654 | of the code. There are many ways you could offer source, and different
655 | solutions will be better for different programs; see section 13 for the
656 | specific requirements.
657 |
658 | You should also get your employer (if you work as a programmer) or school,
659 | if any, to sign a "copyright disclaimer" for the program, if necessary.
660 | For more information on this, and how to apply and follow the GNU AGPL, see
661 | .
662 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/foundation_and_overrides.scss:
--------------------------------------------------------------------------------
1 | // Foundation by ZURB
2 | // foundation.zurb.com
3 | // Licensed under MIT Open Source
4 |
5 | //
6 |
7 | // Table of Contents
8 | // Foundation Settings
9 | //
10 | // a. Base
11 | // b. Grid
12 | // c. Global
13 | // d. Media Query Ranges
14 | // e. Typography
15 | // 01. Accordion
16 | // 02. Alert Boxes
17 | // 03. Block Grid
18 | // 04. Breadcrumbs
19 | // 05. Buttons
20 | // 06. Button Groups
21 | // 07. Clearing
22 | // 08. Dropdown
23 | // 09. Dropdown Buttons
24 | // 10. Flex Video
25 | // 11. Forms
26 | // 12. Icon Bar
27 | // 13. Inline Lists
28 | // 14. Joyride
29 | // 15. Keystrokes
30 | // 16. Labels
31 | // 17. Magellan
32 | // 18. Off-canvas
33 | // 19. Orbit
34 | // 20. Pagination
35 | // 21. Panels
36 | // 22. Pricing Tables
37 | // 23. Progress Bar
38 | // 24. Range Slider
39 | // 25. Reveal
40 | // 26. Side Nav
41 | // 27. Split Buttons
42 | // 28. Sub Nav
43 | // 29. Switch
44 | // 30. Tables
45 | // 31. Tabs
46 | // 32. Thumbnails
47 | // 33. Tooltips
48 | // 34. Top Bar
49 | // 36. Visibility Classes
50 |
51 | // a. Base
52 | // - - - - - - - - - - - - - - - - - - - - - - - - -
53 |
54 | // This is the default html and body font-size for the base rem value.
55 | // $rem-base: 16px;
56 |
57 | // Allows the use of rem-calc() or lower-bound() in your settings
58 | @import "foundation/functions";
59 |
60 | // The default font-size is set to 100% of the browser style sheet (usually 16px)
61 | // for compatibility with browser-based text zoom or user-set defaults.
62 |
63 | // Since the typical default browser font-size is 16px, that makes the calculation for grid size.
64 | // If you want your base font-size to be different and not have it affect the grid breakpoints,
65 | // set $rem-base to $base-font-size and make sure $base-font-size is a px value.
66 | // $base-font-size: 100%;
67 |
68 | // The $base-font-size is 100% while $base-line-height is 150%
69 | // $base-line-height: 150%;
70 |
71 | // We use this to control whether or not CSS classes come through in the gem files.
72 | $include-html-classes: true;
73 | // $include-print-styles: true;
74 | $include-html-global-classes: $include-html-classes;
75 |
76 | // b. Grid
77 | // - - - - - - - - - - - - - - - - - - - - - - - - -
78 |
79 | // $include-html-grid-classes: $include-html-classes;
80 | // $include-xl-html-grid-classes: false;
81 |
82 | // $row-width: rem-calc(1000);
83 | // $total-columns: 12;
84 | // $column-gutter: rem-calc(30);
85 |
86 | // c. Global
87 | // - - - - - - - - - - - - - - - - - - - - - - - - -
88 |
89 | // We use these to define default font stacks
90 | // $font-family-sans-serif: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
91 | // $font-family-serif: Georgia, Cambria, "Times New Roman", Times, serif;
92 | // $font-family-monospace: Consolas, "Liberation Mono", Courier, monospace;
93 |
94 | // We use these to define default font weights
95 | // $font-weight-normal: normal !default;
96 | // $font-weight-bold: bold !default;
97 |
98 | // We use these as default colors throughout
99 | // $primary-color: #008CBA;
100 | // $secondary-color: #e7e7e7;
101 | // $alert-color: #f04124;
102 | // $success-color: #43AC6A;
103 | // $warning-color: #f08a24;
104 | // $info-color: #a0d3e8;
105 |
106 | // $white : #FFFFFF;
107 | // $ghost : #FAFAFA;
108 | // $snow : #F9F9F9;
109 | // $vapor : #F6F6F6;
110 | // $white-smoke : #F5F5F5;
111 | // $silver : #EFEFEF;
112 | // $smoke : #EEEEEE;
113 | // $gainsboro : #DDDDDD;
114 | // $iron : #CCCCCC;
115 | // $base : #AAAAAA;
116 | // $aluminum : #999999;
117 | // $jumbo : #888888;
118 | // $monsoon : #777777;
119 | // $steel : #666666;
120 | // $charcoal : #555555;
121 | // $tuatara : #444444;
122 | // $oil : #333333;
123 | // $jet : #222222;
124 | // $black : #000000;
125 |
126 | // We use these to control various global styles
127 | // $body-bg: $white;
128 | // $body-font-color: $jet;
129 | // $body-font-family: $font-family-sans-serif;
130 | // $body-font-weight: $font-weight-normal;
131 | // $body-font-style: normal;
132 |
133 | // We use this to control font-smoothing
134 | // $font-smoothing: antialiased;
135 |
136 | // We use these to control text direction settings
137 | // $text-direction: ltr;
138 | // $opposite-direction: right;
139 | // $default-float: left;
140 | // $last-child-float: $opposite-direction;
141 |
142 | // We use these to make sure border radius matches unless we want it different.
143 | // $global-radius: 3px;
144 | // $global-rounded: 1000px;
145 |
146 | // We use these to control inset shadow shiny edges and depressions.
147 | // $shiny-edge-size: 0 1px 0;
148 | // $shiny-edge-color: rgba($white, .5);
149 | // $shiny-edge-active-color: rgba($black, .2);
150 |
151 | // d. Media Query Ranges
152 | // - - - - - - - - - - - - - - - - - - - - - - - - -
153 |
154 | // $small-range: (0em, 40em);
155 | // $medium-range: (40.063em, 64em);
156 | // $large-range: (64.063em, 90em);
157 | // $xlarge-range: (90.063em, 120em);
158 | // $xxlarge-range: (120.063em, 99999999em);
159 |
160 | // $screen: "only screen";
161 |
162 | // $landscape: "#{$screen} and (orientation: landscape)";
163 | // $portrait: "#{$screen} and (orientation: portrait)";
164 |
165 | // $small-up: $screen;
166 | // $small-only: "#{$screen} and (max-width: #{upper-bound($small-range)})";
167 |
168 | // $medium-up: "#{$screen} and (min-width:#{lower-bound($medium-range)})";
169 | // $medium-only: "#{$screen} and (min-width:#{lower-bound($medium-range)}) and (max-width:#{upper-bound($medium-range)})";
170 |
171 | // $large-up: "#{$screen} and (min-width:#{lower-bound($large-range)})";
172 | // $large-only: "#{$screen} and (min-width:#{lower-bound($large-range)}) and (max-width:#{upper-bound($large-range)})";
173 |
174 | // $xlarge-up: "#{$screen} and (min-width:#{lower-bound($xlarge-range)})";
175 | // $xlarge-only: "#{$screen} and (min-width:#{lower-bound($xlarge-range)}) and (max-width:#{upper-bound($xlarge-range)})";
176 |
177 | // $xxlarge-up: "#{$screen} and (min-width:#{lower-bound($xxlarge-range)})";
178 | // $xxlarge-only: "#{$screen} and (min-width:#{lower-bound($xxlarge-range)}) and (max-width:#{upper-bound($xxlarge-range)})";
179 |
180 | // Legacy
181 | // $small: $medium-up;
182 | // $medium: $medium-up;
183 | // $large: $large-up;
184 |
185 | // We use this as cursors values for enabling the option of having custom cursors in the whole site's stylesheet
186 | // $cursor-crosshair-value: crosshair;
187 | // $cursor-default-value: default;
188 | // $cursor-pointer-value: pointer;
189 | // $cursor-help-value: help;
190 | // $cursor-text-value: text;
191 |
192 | // e. Typography
193 | // - - - - - - - - - - - - - - - - - - - - - - - - -
194 |
195 | // $include-html-type-classes: $include-html-classes;
196 |
197 | // We use these to control header font styles
198 | // $header-font-family: $body-font-family;
199 | // $header-font-weight: $font-weight-normal;
200 | // $header-font-style: normal;
201 | // $header-font-color: $jet;
202 | // $header-line-height: 1.4;
203 | // $header-top-margin: .2rem;
204 | // $header-bottom-margin: .5rem;
205 | // $header-text-rendering: optimizeLegibility;
206 |
207 | // We use these to control header font sizes
208 | // $h1-font-size: rem-calc(44);
209 | // $h2-font-size: rem-calc(37);
210 | // $h3-font-size: rem-calc(27);
211 | // $h4-font-size: rem-calc(23);
212 | // $h5-font-size: rem-calc(18);
213 | // $h6-font-size: 1rem;
214 |
215 | // We use these to control header size reduction on small screens
216 | // $h1-font-reduction: rem-calc(10) !default;
217 | // $h2-font-reduction: rem-calc(10) !default;
218 | // $h3-font-reduction: rem-calc(5) !default;
219 | // $h4-font-reduction: rem-calc(5) !default;
220 | // $h5-font-reduction: 0 !default;
221 | // $h6-font-reduction: 0 !default;
222 |
223 | // These control how subheaders are styled.
224 | // $subheader-line-height: 1.4;
225 | // $subheader-font-color: scale-color($header-font-color, $lightness: 35%);
226 | // $subheader-font-weight: $font-weight-normal;
227 | // $subheader-top-margin: .2rem;
228 | // $subheader-bottom-margin: .5rem;
229 |
230 | // A general styling
231 | // $small-font-size: 60%;
232 | // $small-font-color: scale-color($header-font-color, $lightness: 35%);
233 |
234 | // We use these to style paragraphs
235 | // $paragraph-font-family: inherit;
236 | // $paragraph-font-weight: $font-weight-normal;
237 | // $paragraph-font-size: 1rem;
238 | // $paragraph-line-height: 1.6;
239 | // $paragraph-margin-bottom: rem-calc(20);
240 | // $paragraph-aside-font-size: rem-calc(14);
241 | // $paragraph-aside-line-height: 1.35;
242 | // $paragraph-aside-font-style: italic;
243 | // $paragraph-text-rendering: optimizeLegibility;
244 |
245 | // We use these to style tags
246 | // $code-color: $oil;
247 | // $code-font-family: $font-family-monospace;
248 | // $code-font-weight: $font-weight-normal;
249 | // $code-background-color: scale-color($secondary-color, $lightness: 70%);
250 | // $code-border-size: 1px;
251 | // $code-border-style: solid;
252 | // $code-border-color: scale-color($code-background-color, $lightness: -10%);
253 | // $code-padding: rem-calc(2) rem-calc(5) rem-calc(1);
254 |
255 | // We use these to style anchors
256 | // $anchor-text-decoration: none;
257 | // $anchor-text-decoration-hover: none;
258 | // $anchor-font-color: $primary-color;
259 | // $anchor-font-color-hover: scale-color($primary-color, $lightness: -14%);
260 |
261 | // We use these to style the element
262 | // $hr-border-width: 1px;
263 | // $hr-border-style: solid;
264 | // $hr-border-color: $gainsboro;
265 | // $hr-margin: rem-calc(20);
266 |
267 | // We use these to style lists
268 | // $list-font-family: $paragraph-font-family;
269 | // $list-font-size: $paragraph-font-size;
270 | // $list-line-height: $paragraph-line-height;
271 | // $list-margin-bottom: $paragraph-margin-bottom;
272 | // $list-style-position: outside;
273 | // $list-side-margin: 1.1rem;
274 | // $list-ordered-side-margin: 1.4rem;
275 | // $list-side-margin-no-bullet: 0;
276 | // $list-nested-margin: rem-calc(20);
277 | // $definition-list-header-weight: $font-weight-bold;
278 | // $definition-list-header-margin-bottom: .3rem;
279 | // $definition-list-margin-bottom: rem-calc(12);
280 |
281 | // We use these to style blockquotes
282 | // $blockquote-font-color: scale-color($header-font-color, $lightness: 35%);
283 | // $blockquote-padding: rem-calc(9 20 0 19);
284 | // $blockquote-border: 1px solid $gainsboro;
285 | // $blockquote-cite-font-size: rem-calc(13);
286 | // $blockquote-cite-font-color: scale-color($header-font-color, $lightness: 23%);
287 | // $blockquote-cite-link-color: $blockquote-cite-font-color;
288 |
289 | // Acronym styles
290 | // $acronym-underline: 1px dotted $gainsboro;
291 |
292 | // We use these to control padding and margin
293 | // $microformat-padding: rem-calc(10 12);
294 | // $microformat-margin: rem-calc(0 0 20 0);
295 |
296 | // We use these to control the border styles
297 | // $microformat-border-width: 1px;
298 | // $microformat-border-style: solid;
299 | // $microformat-border-color: $gainsboro;
300 |
301 | // We use these to control full name font styles
302 | // $microformat-fullname-font-weight: $font-weight-bold;
303 | // $microformat-fullname-font-size: rem-calc(15);
304 |
305 | // We use this to control the summary font styles
306 | // $microformat-summary-font-weight: $font-weight-bold;
307 |
308 | // We use this to control abbr padding
309 | // $microformat-abbr-padding: rem-calc(0 1);
310 |
311 | // We use this to control abbr font styles
312 | // $microformat-abbr-font-weight: $font-weight-bold;
313 | // $microformat-abbr-font-decoration: none;
314 |
315 | // 01. Accordion
316 | // - - - - - - - - - - - - - - - - - - - - - - - - -
317 |
318 | // $include-html-accordion-classes: $include-html-classes;
319 |
320 | // $accordion-navigation-padding: rem-calc(16);
321 | // $accordion-navigation-bg-color: $silver ;
322 | // $accordion-navigation-hover-bg-color: scale-color($accordion-navigation-bg-color, $lightness: -5%);
323 | // $accordion-navigation-active-bg-color: scale-color($accordion-navigation-bg-color, $lightness: -3%);
324 | // $accordion-navigation-font-color: $jet;
325 | // $accordion-navigation-font-size: rem-calc(16);
326 | // $accordion-navigation-font-family: $body-font-family;
327 |
328 | // $accordion-content-padding: $column-gutter/2;
329 | // $accordion-content-active-bg-color: $white;
330 |
331 | // 02. Alert Boxes
332 | // - - - - - - - - - - - - - - - - - - - - - - - - -
333 |
334 | // $include-html-alert-classes: $include-html-classes;
335 |
336 | // We use this to control alert padding.
337 | // $alert-padding-top: rem-calc(14);
338 | // $alert-padding-default-float: $alert-padding-top;
339 | // $alert-padding-opposite-direction: $alert-padding-top + rem-calc(10);
340 | // $alert-padding-bottom: $alert-padding-top;
341 |
342 | // We use these to control text style.
343 | // $alert-font-weight: $font-weight-normal;
344 | // $alert-font-size: rem-calc(13);
345 | // $alert-font-color: $white;
346 | // $alert-font-color-alt: scale-color($secondary-color, $lightness: -66%);
347 |
348 | // We use this for close hover effect.
349 | // $alert-function-factor: -14%;
350 |
351 | // We use these to control border styles.
352 | // $alert-border-style: solid;
353 | // $alert-border-width: 1px;
354 | // $alert-border-color: scale-color($primary-color, $lightness: $alert-function-factor);
355 | // $alert-bottom-margin: rem-calc(20);
356 |
357 | // We use these to style the close buttons
358 | // $alert-close-color: $oil;
359 | // $alert-close-top: 50%;
360 | // $alert-close-position: rem-calc(4);
361 | // $alert-close-font-size: rem-calc(22);
362 | // $alert-close-opacity: 0.3;
363 | // $alert-close-opacity-hover: 0.5;
364 | // $alert-close-padding: 9px 6px 4px;
365 |
366 | // We use this to control border radius
367 | // $alert-radius: $global-radius;
368 |
369 | // We use this to control transition effects
370 | // $alert-transition-speed: 300ms;
371 | // $alert-transition-ease: ease-out;
372 |
373 | // 03. Block Grid
374 | // - - - - - - - - - - - - - - - - - - - - - - - - -
375 |
376 | // $include-html-block-grid-classes: $include-html-classes;
377 | // $include-xl-html-block-grid-classes: false;
378 |
379 | // We use this to control the maximum number of block grid elements per row
380 | // $block-grid-elements: 12;
381 | // $block-grid-default-spacing: rem-calc(20);
382 | // $align-block-grid-to-grid: false;
383 |
384 | // Enables media queries for block-grid classes. Set to false if writing semantic HTML.
385 | // $block-grid-media-queries: true;
386 |
387 | // 04. Breadcrumbs
388 | // - - - - - - - - - - - - - - - - - - - - - - - - -
389 |
390 | // $include-html-nav-classes: $include-html-classes;
391 |
392 | // We use this to set the background color for the breadcrumb container.
393 | // $crumb-bg: scale-color($secondary-color, $lightness: 55%);
394 |
395 | // We use these to set the padding around the breadcrumbs.
396 | // $crumb-padding: rem-calc(9 14 9);
397 | // $crumb-side-padding: rem-calc(12);
398 |
399 | // We use these to control border styles.
400 | // $crumb-function-factor: -10%;
401 | // $crumb-border-size: 1px;
402 | // $crumb-border-style: solid;
403 | // $crumb-border-color: scale-color($crumb-bg, $lightness: $crumb-function-factor);
404 | // $crumb-radius: $global-radius;
405 |
406 | // We use these to set various text styles for breadcrumbs.
407 | // $crumb-font-size: rem-calc(11);
408 | // $crumb-font-color: $primary-color;
409 | // $crumb-font-color-current: $oil;
410 | // $crumb-font-color-unavailable: $aluminum;
411 | // $crumb-font-transform: uppercase;
412 | // $crumb-link-decor: underline;
413 |
414 | // We use these to control the slash between breadcrumbs
415 | // $crumb-slash-color: $base;
416 | // $crumb-slash: "/";
417 |
418 | // 05. Buttons
419 | // - - - - - - - - - - - - - - - - - - - - - - - - -
420 |
421 | // $include-html-button-classes: $include-html-classes;
422 |
423 | // We use these to build padding for buttons.
424 | // $button-tny: rem-calc(10);
425 | // $button-sml: rem-calc(14);
426 | // $button-med: rem-calc(16);
427 | // $button-lrg: rem-calc(18);
428 |
429 | // We use this to control the display property.
430 | // $button-display: inline-block;
431 | // $button-margin-bottom: rem-calc(20);
432 |
433 | // We use these to control button text styles.
434 | // $button-font-family: $body-font-family;
435 | // $button-font-color: $white;
436 | // $button-font-color-alt: $oil;
437 | // $button-font-tny: rem-calc(11);
438 | // $button-font-sml: rem-calc(13);
439 | // $button-font-med: rem-calc(16);
440 | // $button-font-lrg: rem-calc(20);
441 | // $button-font-weight: $font-weight-normal;
442 | // $button-font-align: center;
443 |
444 | // We use these to control various hover effects.
445 | // $button-function-factor: -20%;
446 |
447 | // We use these to control button border and hover styles.
448 | // $button-border-width: 0px;
449 | // $button-border-style: solid;
450 | // $button-bg-color: $primary-color;
451 | // $button-bg-hover: scale-color($button-bg-color, $lightness: $button-function-factor);
452 | // $button-border-color: $button-bg-hover;
453 | // $secondary-button-bg-hover: scale-color($secondary-color, $lightness: $button-function-factor);
454 | // $secondary-button-border-color: $secondary-button-bg-hover;
455 | // $success-button-bg-hover: scale-color($success-color, $lightness: $button-function-factor);
456 | // $success-button-border-color: $success-button-bg-hover;
457 | // $alert-button-bg-hover: scale-color($alert-color, $lightness: $button-function-factor);
458 | // $alert-button-border-color: $alert-button-bg-hover;
459 |
460 | // We use this to set the default radius used throughout the core.
461 | // $button-radius: $global-radius;
462 | // $button-round: $global-rounded;
463 |
464 | // We use this to set default opacity and cursor for disabled buttons.
465 | // $button-disabled-opacity: 0.7;
466 | // $button-disabled-cursor: $cursor-default-value;
467 |
468 | // 06. Button Groups
469 | // - - - - - - - - - - - - - - - - - - - - - - - - -
470 |
471 | // $include-html-button-classes: $include-html-classes;
472 |
473 | // Sets the margin for the right side by default, and the left margin if right-to-left direction is used
474 | // $button-bar-margin-opposite: rem-calc(10);
475 | // $button-group-border-width: 1px;
476 |
477 | // 07. Clearing
478 | // - - - - - - - - - - - - - - - - - - - - - - - - -
479 |
480 | // $include-html-clearing-classes: $include-html-classes;
481 |
482 | // We use these to set the background colors for parts of Clearing.
483 | // $clearing-bg: $oil;
484 | // $clearing-caption-bg: $clearing-bg;
485 | // $clearing-carousel-bg: rgba(51,51,51,0.8);
486 | // $clearing-img-bg: $clearing-bg;
487 |
488 | // We use these to style the close button
489 | // $clearing-close-color: $iron;
490 | // $clearing-close-size: 30px;
491 |
492 | // We use these to style the arrows
493 | // $clearing-arrow-size: 12px;
494 | // $clearing-arrow-color: $clearing-close-color;
495 |
496 | // We use these to style captions
497 | // $clearing-caption-font-color: $iron;
498 | // $clearing-caption-font-size: 0.875em;
499 | // $clearing-caption-padding: 10px 30px 20px;
500 |
501 | // We use these to make the image and carousel height and style
502 | // $clearing-active-img-height: 85%;
503 | // $clearing-carousel-height: 120px;
504 | // $clearing-carousel-thumb-width: 120px;
505 | // $clearing-carousel-thumb-active-border: 1px solid rgb(255,255,255);
506 |
507 | // 08. Dropdown
508 | // - - - - - - - - - - - - - - - - - - - - - - - - -
509 |
510 | // $include-html-dropdown-classes: $include-html-classes;
511 |
512 | // We use these to controls height and width styles.
513 | // $f-dropdown-max-width: 200px;
514 | // $f-dropdown-height: auto;
515 | // $f-dropdown-max-height: none;
516 |
517 | // Used for bottom position
518 | // $f-dropdown-margin-top: 2px;
519 |
520 | // Used for right position
521 | // $f-dropdown-margin-left: $f-dropdown-margin-top;
522 |
523 | // Used for left position
524 | // $f-dropdown-margin-right: $f-dropdown-margin-top;
525 |
526 | // Used for top position
527 | // $f-dropdown-margin-bottom: $f-dropdown-margin-top;
528 |
529 | // We use this to control the background color
530 | // $f-dropdown-bg: $white;
531 |
532 | // We use this to set the border styles for dropdowns.
533 | // $f-dropdown-border-style: solid;
534 | // $f-dropdown-border-width: 1px;
535 | // $f-dropdown-border-color: scale-color($white, $lightness: -20%);
536 |
537 | // We use these to style the triangle pip.
538 | // $f-dropdown-triangle-size: 6px;
539 | // $f-dropdown-triangle-color: $white;
540 | // $f-dropdown-triangle-side-offset: 10px;
541 |
542 | // We use these to control styles for the list elements.
543 | // $f-dropdown-list-style: none;
544 | // $f-dropdown-font-color: $charcoal;
545 | // $f-dropdown-font-size: rem-calc(14);
546 | // $f-dropdown-list-padding: rem-calc(5, 10);
547 | // $f-dropdown-line-height: rem-calc(18);
548 | // $f-dropdown-list-hover-bg: $smoke ;
549 | // $dropdown-mobile-default-float: 0;
550 |
551 | // We use this to control the styles for when the dropdown has custom content.
552 | // $f-dropdown-content-padding: rem-calc(20);
553 |
554 | // Default radius for dropdown.
555 | // $f-dropdown-radius: $global-radius;
556 |
557 |
558 | // 09. Dropdown Buttons
559 | // - - - - - - - - - - - - - - - - - - - - - - - - -
560 |
561 | // $include-html-button-classes: $include-html-classes;
562 |
563 | // We use these to set the color of the pip in dropdown buttons
564 | // $dropdown-button-pip-color: $white;
565 | // $dropdown-button-pip-color-alt: $oil;
566 |
567 | // $button-pip-tny: rem-calc(6);
568 | // $button-pip-sml: rem-calc(7);
569 | // $button-pip-med: rem-calc(9);
570 | // $button-pip-lrg: rem-calc(11);
571 |
572 | // We use these to style tiny dropdown buttons
573 | // $dropdown-button-padding-tny: $button-pip-tny * 7;
574 | // $dropdown-button-pip-size-tny: $button-pip-tny;
575 | // $dropdown-button-pip-opposite-tny: $button-pip-tny * 3;
576 | // $dropdown-button-pip-top-tny: -$button-pip-tny / 2 + rem-calc(1);
577 |
578 | // We use these to style small dropdown buttons
579 | // $dropdown-button-padding-sml: $button-pip-sml * 7;
580 | // $dropdown-button-pip-size-sml: $button-pip-sml;
581 | // $dropdown-button-pip-opposite-sml: $button-pip-sml * 3;
582 | // $dropdown-button-pip-top-sml: -$button-pip-sml / 2 + rem-calc(1);
583 |
584 | // We use these to style medium dropdown buttons
585 | // $dropdown-button-padding-med: $button-pip-med * 6 + rem-calc(3);
586 | // $dropdown-button-pip-size-med: $button-pip-med - rem-calc(3);
587 | // $dropdown-button-pip-opposite-med: $button-pip-med * 2.5;
588 | // $dropdown-button-pip-top-med: -$button-pip-med / 2 + rem-calc(2);
589 |
590 | // We use these to style large dropdown buttons
591 | // $dropdown-button-padding-lrg: $button-pip-lrg * 5 + rem-calc(3);
592 | // $dropdown-button-pip-size-lrg: $button-pip-lrg - rem-calc(6);
593 | // $dropdown-button-pip-opposite-lrg: $button-pip-lrg * 2.5;
594 | // $dropdown-button-pip-top-lrg: -$button-pip-lrg / 2 + rem-calc(3);
595 |
596 | // 10. Flex Video
597 | // - - - - - - - - - - - - - - - - - - - - - - - - -
598 |
599 | // $include-html-media-classes: $include-html-classes;
600 |
601 | // We use these to control video container padding and margins
602 | // $flex-video-padding-top: rem-calc(25);
603 | // $flex-video-padding-bottom: 67.5%;
604 | // $flex-video-margin-bottom: rem-calc(16);
605 |
606 | // We use this to control widescreen bottom padding
607 | // $flex-video-widescreen-padding-bottom: 56.34%;
608 |
609 | // 11. Forms
610 | // - - - - - - - - - - - - - - - - - - - - - - - - -
611 |
612 | // $include-html-form-classes: $include-html-classes;
613 |
614 | // We use this to set the base for lots of form spacing and positioning styles
615 | // $form-spacing: rem-calc(16);
616 |
617 | // We use these to style the labels in different ways
618 | // $form-label-pointer: pointer;
619 | // $form-label-font-size: rem-calc(14);
620 | // $form-label-font-weight: $font-weight-normal;
621 | // $form-label-line-height: 1.5;
622 | // $form-label-font-color: scale-color($black, $lightness: 30%);
623 | // $form-label-small-transform: capitalize;
624 | // $form-label-bottom-margin: 0;
625 | // $input-font-family: inherit;
626 | // $input-font-color: rgba(0,0,0,0.75);
627 | // $input-font-size: rem-calc(14);
628 | // $input-bg-color: $white;
629 | // $input-focus-bg-color: scale-color($white, $lightness: -2%);
630 | // $input-border-color: scale-color($white, $lightness: -20%);
631 | // $input-focus-border-color: scale-color($white, $lightness: -40%);
632 | // $input-border-style: solid;
633 | // $input-border-width: 1px;
634 | // $input-border-radius: $global-radius;
635 | // $input-disabled-bg: $gainsboro;
636 | // $input-disabled-cursor: $cursor-default-value;
637 | // $input-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
638 |
639 | // We use these to style the fieldset border and spacing.
640 | // $fieldset-border-style: solid;
641 | // $fieldset-border-width: 1px;
642 | // $fieldset-border-color: $gainsboro;
643 | // $fieldset-padding: rem-calc(20);
644 | // $fieldset-margin: rem-calc(18 0);
645 |
646 | // We use these to style the legends when you use them
647 | // $legend-bg: $white;
648 | // $legend-font-weight: $font-weight-bold;
649 | // $legend-padding: rem-calc(0 3);
650 |
651 | // We use these to style the prefix and postfix input elements
652 | // $input-prefix-bg: scale-color($white, $lightness: -5%);
653 | // $input-prefix-border-color: scale-color($white, $lightness: -20%);
654 | // $input-prefix-border-size: 1px;
655 | // $input-prefix-border-type: solid;
656 | // $input-prefix-overflow: hidden;
657 | // $input-prefix-font-color: $oil;
658 | // $input-prefix-font-color-alt: $white;
659 |
660 | // We use this setting to turn on/off HTML5 number spinners (the up/down arrows)
661 | // $input-number-spinners: true;
662 |
663 | // We use these to style the error states for inputs and labels
664 | // $input-error-message-padding: rem-calc(6 9 9);
665 | // $input-error-message-top: -1px;
666 | // $input-error-message-font-size: rem-calc(12);
667 | // $input-error-message-font-weight: $font-weight-normal;
668 | // $input-error-message-font-style: italic;
669 | // $input-error-message-font-color: $white;
670 | // $input-error-message-font-color-alt: $oil;
671 |
672 | // We use this to style the glowing effect of inputs when focused
673 | // $input-include-glowing-effect: true;
674 | // $glowing-effect-fade-time: 0.45s;
675 | // $glowing-effect-color: $input-focus-border-color;
676 |
677 | // Select variables
678 | // $select-bg-color: $ghost;
679 | // $select-hover-bg-color: scale-color($select-bg-color, $lightness: -3%);
680 |
681 | // 12. Icon Bar
682 | // - - - - - - - - - - - - - - - - - - - - - - - - -
683 |
684 | // We use these to style the icon-bar and items
685 | // $include-html-icon-bar-classes: $include-html-classes;
686 | // $icon-bar-bg: $oil;
687 | // $icon-bar-font-color: $white;
688 | // $icon-bar-font-size: 1rem;
689 | // $icon-bar-hover-color: $primary-color;
690 | // $icon-bar-icon-color: $white;
691 | // $icon-bar-icon-size: 1.875rem;
692 | // $icon-bar-image-width: 1.875rem;
693 | // $icon-bar-image-height: 1.875rem;
694 | // $icon-bar-active-color: $primary-color;
695 | // $icon-bar-item-padding: 1.25rem;
696 |
697 | // 13. Inline Lists
698 | // - - - - - - - - - - - - - - - - - - - - - - - - -
699 |
700 | // $include-html-inline-list-classes: $include-html-classes;
701 |
702 | // We use this to control the margins and padding of the inline list.
703 | // $inline-list-top-margin: 0;
704 | // $inline-list-opposite-margin: 0;
705 | // $inline-list-bottom-margin: rem-calc(17);
706 | // $inline-list-default-float-margin: rem-calc(-22);
707 | // $inline-list-default-float-list-margin: rem-calc(22);
708 |
709 | // $inline-list-padding: 0;
710 |
711 | // We use this to control the overflow of the inline list.
712 | // $inline-list-overflow: hidden;
713 |
714 | // We use this to control the list items
715 | // $inline-list-display: block;
716 |
717 | // We use this to control any elements within list items
718 | // $inline-list-children-display: block;
719 |
720 | // 14. Joyride
721 | // - - - - - - - - - - - - - - - - - - - - - - - - -
722 |
723 | // $include-html-joyride-classes: $include-html-classes;
724 |
725 | // Controlling default Joyride styles
726 | // $joyride-tip-bg: $oil;
727 | // $joyride-tip-default-width: 300px;
728 | // $joyride-tip-padding: rem-calc(18 20 24);
729 | // $joyride-tip-border: solid 1px $charcoal;
730 | // $joyride-tip-radius: 4px;
731 | // $joyride-tip-position-offset: 22px;
732 |
733 | // Here, we're setting the tip font styles
734 | // $joyride-tip-font-color: $white;
735 | // $joyride-tip-font-size: rem-calc(14);
736 | // $joyride-tip-header-weight: $font-weight-bold;
737 |
738 | // This changes the nub size
739 | // $joyride-tip-nub-size: 10px;
740 |
741 | // This adjusts the styles for the timer when its enabled
742 | // $joyride-tip-timer-width: 50px;
743 | // $joyride-tip-timer-height: 3px;
744 | // $joyride-tip-timer-color: $steel;
745 |
746 | // This changes up the styles for the close button
747 | // $joyride-tip-close-color: $monsoon;
748 | // $joyride-tip-close-size: 24px;
749 | // $joyride-tip-close-weight: $font-weight-normal;
750 |
751 | // When Joyride is filling the screen, we use this style for the bg
752 | // $joyride-screenfill: rgba(0,0,0,0.5);
753 |
754 | // 15. Keystrokes
755 | // - - - - - - - - - - - - - - - - - - - - - - - - -
756 |
757 | // $include-html-keystroke-classes: $include-html-classes;
758 |
759 | // We use these to control text styles.
760 | // $keystroke-font: "Consolas", "Menlo", "Courier", monospace;
761 | // $keystroke-font-size: inherit;
762 | // $keystroke-font-color: $jet;
763 | // $keystroke-font-color-alt: $white;
764 | // $keystroke-function-factor: -7%;
765 |
766 | // We use this to control keystroke padding.
767 | // $keystroke-padding: rem-calc(2 4 0);
768 |
769 | // We use these to control background and border styles.
770 | // $keystroke-bg: scale-color($white, $lightness: $keystroke-function-factor);
771 | // $keystroke-border-style: solid;
772 | // $keystroke-border-width: 1px;
773 | // $keystroke-border-color: scale-color($keystroke-bg, $lightness: $keystroke-function-factor);
774 | // $keystroke-radius: $global-radius;
775 |
776 | // 16. Labels
777 | // - - - - - - - - - - - - - - - - - - - - - - - - -
778 |
779 | // $include-html-label-classes: $include-html-classes;
780 |
781 | // We use these to style the labels
782 | // $label-padding: rem-calc(4 8 4);
783 | // $label-radius: $global-radius;
784 |
785 | // We use these to style the label text
786 | // $label-font-sizing: rem-calc(11);
787 | // $label-font-weight: $font-weight-normal;
788 | // $label-font-color: $oil;
789 | // $label-font-color-alt: $white;
790 | // $label-font-family: $body-font-family;
791 |
792 | // 17. Magellan
793 | // - - - - - - - - - - - - - - - - - - - - - - - - -
794 |
795 | // $include-html-magellan-classes: $include-html-classes;
796 |
797 | // $magellan-bg: $white;
798 | // $magellan-padding: 0 !important;
799 |
800 | // 18. Off-canvas
801 | // - - - - - - - - - - - - - - - - - - - - - - - - -
802 |
803 | // $include-html-off-canvas-classes: $include-html-classes;
804 |
805 | // $tabbar-bg: $oil;
806 | // $tabbar-height: rem-calc(45);
807 | // $tabbar-icon-width: $tabbar-height;
808 | // $tabbar-line-height: $tabbar-height;
809 | // $tabbar-color: $white;
810 | // $tabbar-middle-padding: 0 rem-calc(10);
811 |
812 | // Off Canvas Divider Styles
813 | // $tabbar-right-section-border: solid 1px scale-color($tabbar-bg, $lightness: 13%);
814 | // $tabbar-left-section-border: solid 1px scale-color($tabbar-bg, $lightness: -50%);
815 |
816 | // Off Canvas Tab Bar Headers
817 | // $tabbar-header-color: $white;
818 | // $tabbar-header-weight: $font-weight-bold;
819 | // $tabbar-header-line-height: $tabbar-height;
820 | // $tabbar-header-margin: 0;
821 |
822 | // Off Canvas Menu Variables
823 | // $off-canvas-width: rem-calc(250);
824 | // $off-canvas-bg: $oil;
825 | // $off-canvas-bg-hover: scale-color($tabbar-bg, $lightness: -30%);
826 |
827 | // Off Canvas Menu List Variables
828 | // $off-canvas-label-padding: 0.3rem rem-calc(15);
829 | // $off-canvas-label-color: $aluminum;
830 | // $off-canvas-label-text-transform: uppercase;
831 | // $off-canvas-label-font-size: rem-calc(12);
832 | // $off-canvas-label-font-weight: $font-weight-bold;
833 | // $off-canvas-label-bg: $tuatara;
834 | // $off-canvas-label-border-top: 1px solid scale-color($tuatara, $lightness: 14%);
835 | // $off-canvas-label-border-bottom: none;
836 | // $off-canvas-label-margin:0;
837 | // $off-canvas-link-padding: rem-calc(10, 15);
838 | // $off-canvas-link-color: rgba($white, 0.7);
839 | // $off-canvas-link-border-bottom: 1px solid scale-color($off-canvas-bg, $lightness: -25%);
840 | // $off-canvas-back-bg: $tuatara;
841 | // $off-canvas-back-border-top: $off-canvas-label-border-top;
842 | // $off-canvas-back-border-bottom: $off-canvas-label-border-bottom;
843 | // $off-canvas-back-hover-bg: scale-color($off-canvas-back-bg, $lightness: -30%);
844 | // $off-canvas-back-hover-border-top: 1px solid scale-color($off-canvas-label-bg, $lightness: 14%);
845 | // $off-canvas-back-hover-border-bottom: none;
846 |
847 | // Off Canvas Menu Icon Variables
848 | // $tabbar-menu-icon-color: $white;
849 | // $tabbar-menu-icon-hover: scale-color($tabbar-menu-icon-color, $lightness: -30%);
850 |
851 | // $tabbar-menu-icon-text-indent: rem-calc(35);
852 | // $tabbar-menu-icon-width: $tabbar-height;
853 | // $tabbar-menu-icon-height: $tabbar-height;
854 | // $tabbar-menu-icon-padding: 0;
855 |
856 | // $tabbar-hamburger-icon-width: rem-calc(16);
857 | // $tabbar-hamburger-icon-left: false;
858 | // $tabbar-hamburger-icon-top: false;
859 | // $tabbar-hamburger-icon-thickness: 1px;
860 | // $tabbar-hamburger-icon-gap: 6px;
861 |
862 | // Off Canvas Back-Link Overlay
863 | // $off-canvas-overlay-transition: background 300ms ease;
864 | // $off-canvas-overlay-cursor: pointer;
865 | // $off-canvas-overlay-box-shadow: -4px 0 4px rgba($black, 0.5), 4px 0 4px rgba($black, 0.5);
866 | // $off-canvas-overlay-background: rgba($white, 0.2);
867 | // $off-canvas-overlay-background-hover: rgba($white, 0.05);
868 |
869 | // Transition Variables
870 | // $menu-slide: "transform 500ms ease";
871 |
872 | // 19. Orbit
873 | // - - - - - - - - - - - - - - - - - - - - - - - - -
874 |
875 | // $include-html-orbit-classes: $include-html-classes;
876 |
877 | // We use these to control the caption styles
878 | // $orbit-container-bg: none;
879 | // $orbit-caption-bg: rgba(51,51,51, 0.8);
880 | // $orbit-caption-font-color: $white;
881 | // $orbit-caption-font-size: rem-calc(14);
882 | // $orbit-caption-position: "bottom"; // Supported values: "bottom", "under"
883 | // $orbit-caption-padding: rem-calc(10 14);
884 | // $orbit-caption-height: auto;
885 |
886 | // We use these to control the left/right nav styles
887 | // $orbit-nav-bg: transparent;
888 | // $orbit-nav-bg-hover: rgba(0,0,0,0.3);
889 | // $orbit-nav-arrow-color: $white;
890 | // $orbit-nav-arrow-color-hover: $white;
891 |
892 | // We use these to control the timer styles
893 | // $orbit-timer-bg: rgba(255,255,255,0.3);
894 | // $orbit-timer-show-progress-bar: true;
895 |
896 | // We use these to control the bullet nav styles
897 | // $orbit-bullet-nav-color: $iron;
898 | // $orbit-bullet-nav-color-active: $aluminum;
899 | // $orbit-bullet-radius: rem-calc(9);
900 |
901 | // We use these to controls the style of slide numbers
902 | // $orbit-slide-number-bg: rgba(0,0,0,0);
903 | // $orbit-slide-number-font-color: $white;
904 | // $orbit-slide-number-padding: rem-calc(5);
905 |
906 | // Hide controls on small
907 | // $orbit-nav-hide-for-small: true;
908 | // $orbit-bullet-hide-for-small: true;
909 | // $orbit-timer-hide-for-small: true;
910 |
911 | // Graceful Loading Wrapper and preloader
912 | // $wrapper-class: "slideshow-wrapper";
913 | // $preloader-class: "preloader";
914 |
915 | // 20. Pagination
916 | // - - - - - - - - - - - - - - - - - - - - - - - - -
917 |
918 | // $include-pagination-classes: $include-html-classes;
919 |
920 | // We use these to control the pagination container
921 | // $pagination-height: rem-calc(24);
922 | // $pagination-margin: rem-calc(-5);
923 |
924 | // We use these to set the list-item properties
925 | // $pagination-li-float: $default-float;
926 | // $pagination-li-height: rem-calc(24);
927 | // $pagination-li-font-color: $jet;
928 | // $pagination-li-font-size: rem-calc(14);
929 | // $pagination-li-margin: rem-calc(5);
930 |
931 | // We use these for the pagination anchor links
932 | // $pagination-link-pad: rem-calc(1 10 1);
933 | // $pagination-link-font-color: $aluminum;
934 | // $pagination-link-active-bg: scale-color($white, $lightness: -10%);
935 |
936 | // We use these for disabled anchor links
937 | // $pagination-link-unavailable-cursor: default;
938 | // $pagination-link-unavailable-font-color: $aluminum;
939 | // $pagination-link-unavailable-bg-active: transparent;
940 |
941 | // We use these for currently selected anchor links
942 | // $pagination-link-current-background: $primary-color;
943 | // $pagination-link-current-font-color: $white;
944 | // $pagination-link-current-font-weight: $font-weight-bold;
945 | // $pagination-link-current-cursor: default;
946 | // $pagination-link-current-active-bg: $primary-color;
947 |
948 | // 21. Panels
949 | // - - - - - - - - - - - - - - - - - - - - - - - - -
950 |
951 | // $include-html-panel-classes: $include-html-classes;
952 |
953 | // We use these to control the background and border styles
954 | // $panel-bg: scale-color($white, $lightness: -5%);
955 | // $panel-border-style: solid;
956 | // $panel-border-size: 1px;
957 |
958 | // We use this % to control how much we darken things on hover
959 | // $panel-function-factor: -11%;
960 | // $panel-border-color: scale-color($panel-bg, $lightness: $panel-function-factor);
961 |
962 | // We use these to set default inner padding and bottom margin
963 | // $panel-margin-bottom: rem-calc(20);
964 | // $panel-padding: rem-calc(20);
965 |
966 | // We use these to set default font colors
967 | // $panel-font-color: $oil;
968 | // $panel-font-color-alt: $white;
969 |
970 | // $panel-header-adjust: true;
971 | // $callout-panel-link-color: $primary-color;
972 |
973 | // 22. Pricing Tables
974 | // - - - - - - - - - - - - - - - - - - - - - - - - -
975 |
976 | // $include-html-pricing-classes: $include-html-classes;
977 |
978 | // We use this to control the border color
979 | // $price-table-border: solid 1px $gainsboro;
980 |
981 | // We use this to control the bottom margin of the pricing table
982 | // $price-table-margin-bottom: rem-calc(20);
983 |
984 | // We use these to control the title styles
985 | // $price-title-bg: $oil;
986 | // $price-title-padding: rem-calc(15 20);
987 | // $price-title-align: center;
988 | // $price-title-color: $smoke;
989 | // $price-title-weight: $font-weight-normal;
990 | // $price-title-size: rem-calc(16);
991 | // $price-title-font-family: $body-font-family;
992 |
993 | // We use these to control the price styles
994 | // $price-money-bg: $vapor ;
995 | // $price-money-padding: rem-calc(15 20);
996 | // $price-money-align: center;
997 | // $price-money-color: $oil;
998 | // $price-money-weight: $font-weight-normal;
999 | // $price-money-size: rem-calc(32);
1000 | // $price-money-font-family: $body-font-family;
1001 |
1002 | // We use these to control the description styles
1003 | // $price-bg: $white;
1004 | // $price-desc-color: $monsoon;
1005 | // $price-desc-padding: rem-calc(15);
1006 | // $price-desc-align: center;
1007 | // $price-desc-font-size: rem-calc(12);
1008 | // $price-desc-weight: $font-weight-normal;
1009 | // $price-desc-line-height: 1.4;
1010 | // $price-desc-bottom-border: dotted 1px $gainsboro;
1011 |
1012 | // We use these to control the list item styles
1013 | // $price-item-color: $oil;
1014 | // $price-item-padding: rem-calc(15);
1015 | // $price-item-align: center;
1016 | // $price-item-font-size: rem-calc(14);
1017 | // $price-item-weight: $font-weight-normal;
1018 | // $price-item-bottom-border: dotted 1px $gainsboro;
1019 |
1020 | // We use these to control the CTA area styles
1021 | // $price-cta-bg: $white;
1022 | // $price-cta-align: center;
1023 | // $price-cta-padding: rem-calc(20 20 0);
1024 |
1025 | // 23. Progress Bar
1026 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1027 |
1028 | // $include-html-media-classes: $include-html-classes;
1029 |
1030 | // We use this to set the progress bar height
1031 | // $progress-bar-height: rem-calc(25);
1032 | // $progress-bar-color: $vapor ;
1033 |
1034 | // We use these to control the border styles
1035 | // $progress-bar-border-color: scale-color($white, $lightness: 20%);
1036 | // $progress-bar-border-size: 1px;
1037 | // $progress-bar-border-style: solid;
1038 | // $progress-bar-border-radius: $global-radius;
1039 |
1040 | // We use these to control the margin & padding
1041 | // $progress-bar-pad: rem-calc(2);
1042 | // $progress-bar-margin-bottom: rem-calc(10);
1043 |
1044 | // We use these to set the meter colors
1045 | // $progress-meter-color: $primary-color;
1046 | // $progress-meter-secondary-color: $secondary-color;
1047 | // $progress-meter-success-color: $success-color;
1048 | // $progress-meter-alert-color: $alert-color;
1049 |
1050 | // 24. Range Slider
1051 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1052 |
1053 | // $include-html-range-slider-classes: $include-html-classes;
1054 |
1055 | // These variables define the slider bar styles
1056 | // $range-slider-bar-width: 100%;
1057 | // $range-slider-bar-height: rem-calc(16);
1058 |
1059 | // $range-slider-bar-border-width: 1px;
1060 | // $range-slider-bar-border-style: solid;
1061 | // $range-slider-bar-border-color: $gainsboro;
1062 | // $range-slider-radius: $global-radius;
1063 | // $range-slider-round: $global-rounded;
1064 | // $range-slider-bar-bg-color: $ghost;
1065 |
1066 | // Vertical bar styles
1067 | // $range-slider-vertical-bar-width: rem-calc(16);
1068 | // $range-slider-vertical-bar-height: rem-calc(200);
1069 |
1070 | // These variables define the slider handle styles
1071 | // $range-slider-handle-width: rem-calc(32);
1072 | // $range-slider-handle-height: rem-calc(22);
1073 | // $range-slider-handle-position-top: rem-calc(-5);
1074 | // $range-slider-handle-bg-color: $primary-color;
1075 | // $range-slider-handle-border-width: 1px;
1076 | // $range-slider-handle-border-style: solid;
1077 | // $range-slider-handle-border-color: none;
1078 | // $range-slider-handle-radius: $global-radius;
1079 | // $range-slider-handle-round: $global-rounded;
1080 | // $range-slider-handle-bg-hover-color: scale-color($primary-color, $lightness: -12%);
1081 | // $range-slider-handle-cursor: pointer;
1082 |
1083 | // 25. Reveal
1084 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1085 |
1086 | // $include-html-reveal-classes: $include-html-classes;
1087 |
1088 | // We use these to control the style of the reveal overlay.
1089 | // $reveal-overlay-bg: rgba($black, .45);
1090 | // $reveal-overlay-bg-old: $black;
1091 |
1092 | // We use these to control the style of the modal itself.
1093 | // $reveal-modal-bg: $white;
1094 | // $reveal-position-top: rem-calc(100);
1095 | // $reveal-default-width: 80%;
1096 | // $reveal-max-width: $row-width;
1097 | // $reveal-modal-padding: rem-calc(20);
1098 | // $reveal-box-shadow: 0 0 10px rgba($black,.4);
1099 |
1100 | // We use these to style the reveal close button
1101 | // $reveal-close-font-size: rem-calc(40);
1102 | // $reveal-close-top: rem-calc(8);
1103 | // $reveal-close-side: rem-calc(11);
1104 | // $reveal-close-color: $base;
1105 | // $reveal-close-weight: $font-weight-bold;
1106 |
1107 | // We use this to set the default radius used throughout the core.
1108 | // $reveal-radius: $global-radius;
1109 | // $reveal-round: $global-rounded;
1110 |
1111 | // We use these to control the modal border
1112 | // $reveal-border-style: solid;
1113 | // $reveal-border-width: 1px;
1114 | // $reveal-border-color: $steel;
1115 |
1116 | // $reveal-modal-class: "reveal-modal";
1117 | // $close-reveal-modal-class: "close-reveal-modal";
1118 |
1119 | // 26. Side Nav
1120 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1121 |
1122 | // $include-html-nav-classes: $include-html-classes;
1123 |
1124 | // We use this to control padding.
1125 | // $side-nav-padding: rem-calc(14 0);
1126 |
1127 | // We use these to control list styles.
1128 | // $side-nav-list-type: none;
1129 | // $side-nav-list-position: inside;
1130 | // $side-nav-list-margin: rem-calc(0 0 7 0);
1131 |
1132 | // We use these to control link styles.
1133 | // $side-nav-link-color: $primary-color;
1134 | // $side-nav-link-color-active: scale-color($side-nav-link-color, $lightness: 30%);
1135 | // $side-nav-link-color-hover: scale-color($side-nav-link-color, $lightness: 30%);
1136 | // $side-nav-link-bg-hover: hsla(0, 0, 0, 0.025);
1137 | // $side-nav-link-margin: 0;
1138 | // $side-nav-link-padding: rem-calc(7 14);
1139 | // $side-nav-font-size: rem-calc(14);
1140 | // $side-nav-font-weight: $font-weight-normal;
1141 | // $side-nav-font-weight-active: $side-nav-font-weight;
1142 | // $side-nav-font-family: $body-font-family;
1143 | // $side-nav-font-family-active: $side-nav-font-family;
1144 |
1145 | // We use these to control heading styles.
1146 | // $side-nav-heading-color: $side-nav-link-color;
1147 | // $side-nav-heading-font-size: $side-nav-font-size;
1148 | // $side-nav-heading-font-weight: bold;
1149 | // $side-nav-heading-text-transform: uppercase;
1150 |
1151 | // We use these to control border styles
1152 | // $side-nav-divider-size: 1px;
1153 | // $side-nav-divider-style: solid;
1154 | // $side-nav-divider-color: scale-color($white, $lightness: 10%);
1155 |
1156 | // 27. Split Buttons
1157 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1158 |
1159 | // $include-html-button-classes: $include-html-classes;
1160 |
1161 | // We use these to control different shared styles for Split Buttons
1162 | // $split-button-function-factor: 10%;
1163 | // $split-button-pip-color: $white;
1164 | // $split-button-pip-color-alt: $oil;
1165 | // $split-button-active-bg-tint: rgba(0,0,0,0.1);
1166 |
1167 | // We use these to control tiny split buttons
1168 | // $split-button-padding-tny: $button-pip-tny * 10;
1169 | // $split-button-span-width-tny: $button-pip-tny * 6;
1170 | // $split-button-pip-size-tny: $button-pip-tny;
1171 | // $split-button-pip-top-tny: $button-pip-tny * 2;
1172 | // $split-button-pip-default-float-tny: rem-calc(-6);
1173 |
1174 | // We use these to control small split buttons
1175 | // $split-button-padding-sml: $button-pip-sml * 10;
1176 | // $split-button-span-width-sml: $button-pip-sml * 6;
1177 | // $split-button-pip-size-sml: $button-pip-sml;
1178 | // $split-button-pip-top-sml: $button-pip-sml * 1.5;
1179 | // $split-button-pip-default-float-sml: rem-calc(-6);
1180 |
1181 | // We use these to control medium split buttons
1182 | // $split-button-padding-med: $button-pip-med * 9;
1183 | // $split-button-span-width-med: $button-pip-med * 5.5;
1184 | // $split-button-pip-size-med: $button-pip-med - rem-calc(3);
1185 | // $split-button-pip-top-med: $button-pip-med * 1.5;
1186 | // $split-button-pip-default-float-med: rem-calc(-6);
1187 |
1188 | // We use these to control large split buttons
1189 | // $split-button-padding-lrg: $button-pip-lrg * 8;
1190 | // $split-button-span-width-lrg: $button-pip-lrg * 5;
1191 | // $split-button-pip-size-lrg: $button-pip-lrg - rem-calc(6);
1192 | // $split-button-pip-top-lrg: $button-pip-lrg + rem-calc(5);
1193 | // $split-button-pip-default-float-lrg: rem-calc(-6);
1194 |
1195 | // 28. Sub Nav
1196 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1197 |
1198 | // $include-html-nav-classes: $include-html-classes;
1199 |
1200 | // We use these to control margin and padding
1201 | // $sub-nav-list-margin: rem-calc(-4 0 18);
1202 | // $sub-nav-list-padding-top: rem-calc(4);
1203 |
1204 | // We use this to control the definition
1205 | // $sub-nav-font-family: $body-font-family;
1206 | // $sub-nav-font-size: rem-calc(14);
1207 | // $sub-nav-font-color: $aluminum;
1208 | // $sub-nav-font-weight: $font-weight-normal;
1209 | // $sub-nav-text-decoration: none;
1210 | // $sub-nav-padding: rem-calc(3 16);
1211 | // $sub-nav-border-radius: 3px;
1212 | // $sub-nav-font-color-hover: scale-color($sub-nav-font-color, $lightness: -25%);
1213 |
1214 | // We use these to control the active item styles
1215 | // $sub-nav-active-font-weight: $font-weight-normal;
1216 | // $sub-nav-active-bg: $primary-color;
1217 | // $sub-nav-active-bg-hover: scale-color($sub-nav-active-bg, $lightness: -14%);
1218 | // $sub-nav-active-color: $white;
1219 | // $sub-nav-active-padding: $sub-nav-padding;
1220 | // $sub-nav-active-cursor: default;
1221 |
1222 | // $sub-nav-item-divider: "";
1223 | // $sub-nav-item-divider-margin: rem-calc(12);
1224 |
1225 | // 29. Switch
1226 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1227 |
1228 | // $include-html-form-classes: $include-html-classes;
1229 |
1230 | // Controlling border styles and background colors for the switch container
1231 | // $switch-border-color: scale-color($white, $lightness: -20%);
1232 | // $switch-border-style: solid;
1233 | // $switch-border-width: 1px;
1234 | // $switch-bg: $white;
1235 |
1236 | // We use these to control the switch heights for our default classes
1237 | // $switch-height-tny: rem-calc(22);
1238 | // $switch-height-sml: rem-calc(28);
1239 | // $switch-height-med: rem-calc(36);
1240 | // $switch-height-lrg: rem-calc(44);
1241 | // $switch-bottom-margin: rem-calc(20);
1242 |
1243 | // We use these to control default font sizes for our classes.
1244 | // $switch-font-size-tny: 11px;
1245 | // $switch-font-size-sml: 12px;
1246 | // $switch-font-size-med: 14px;
1247 | // $switch-font-size-lrg: 17px;
1248 | // $switch-label-side-padding: 6px;
1249 |
1250 | // We use these to style the switch-paddle
1251 | // $switch-paddle-bg: $white;
1252 | // $switch-paddle-fade-to-color: scale-color($switch-paddle-bg, $lightness: -10%);
1253 | // $switch-paddle-border-color: scale-color($switch-paddle-bg, $lightness: -35%);
1254 | // $switch-paddle-border-width: 1px;
1255 | // $switch-paddle-border-style: solid;
1256 | // $switch-paddle-transition-speed: .1s;
1257 | // $switch-paddle-transition-ease: ease-out;
1258 | // $switch-positive-color: scale-color($success-color, $lightness: 94%);
1259 | // $switch-negative-color: $white-smoke;
1260 |
1261 | // Outline Style for tabbing through switches
1262 | // $switch-label-outline: 1px dotted $jumbo;
1263 |
1264 | // 30. Tables
1265 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1266 |
1267 | // $include-html-table-classes: $include-html-classes;
1268 |
1269 | // These control the background color for the table and even rows
1270 | // $table-bg: $white;
1271 | // $table-even-row-bg: $snow ;
1272 |
1273 | // These control the table cell border style
1274 | // $table-border-style: solid;
1275 | // $table-border-size: 1px;
1276 | // $table-border-color: $gainsboro;
1277 |
1278 | // These control the table head styles
1279 | // $table-head-bg: $white-smoke ;
1280 | // $table-head-font-size: rem-calc(14);
1281 | // $table-head-font-color: $jet;
1282 | // $table-head-font-weight: $font-weight-bold;
1283 | // $table-head-padding: rem-calc(8 10 10);
1284 |
1285 | // These control the row padding and font styles
1286 | // $table-row-padding: rem-calc(9 10);
1287 | // $table-row-font-size: rem-calc(14);
1288 | // $table-row-font-color: $jet;
1289 | // $table-line-height: rem-calc(18);
1290 |
1291 | // These are for controlling the layout, display and margin of tables
1292 | // $table-layout: auto;
1293 | // $table-display: table-cell;
1294 | // $table-margin-bottom: rem-calc(20);
1295 |
1296 | // 31. Tabs
1297 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1298 |
1299 | // $include-html-tabs-classes: $include-html-classes;
1300 |
1301 | // $tabs-navigation-padding: rem-calc(16);
1302 | // $tabs-navigation-bg-color: $silver ;
1303 | // $tabs-navigation-active-bg-color: $white;
1304 | // $tabs-navigation-hover-bg-color: scale-color($tabs-navigation-bg-color, $lightness: -6%);
1305 | // $tabs-navigation-font-color: $jet;
1306 | // $tabs-navigation-active-font-color: $tabs-navigation-font-color;
1307 | // $tabs-navigation-font-size: rem-calc(16);
1308 | // $tabs-navigation-font-family: $body-font-family;
1309 |
1310 | // $tabs-content-margin-bottom: rem-calc(24);
1311 | // $tabs-content-padding: $column-gutter/2;
1312 |
1313 | // $tabs-vertical-navigation-margin-bottom: 1.25rem;
1314 |
1315 | // 32. Thumbnails
1316 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1317 |
1318 | // $include-html-media-classes: $include-html-classes;
1319 |
1320 | // We use these to control border styles
1321 | // $thumb-border-style: solid;
1322 | // $thumb-border-width: 4px;
1323 | // $thumb-border-color: $white;
1324 | // $thumb-box-shadow: 0 0 0 1px rgba($black,.2);
1325 | // $thumb-box-shadow-hover: 0 0 6px 1px rgba($primary-color,0.5);
1326 |
1327 | // Radius and transition speed for thumbs
1328 | // $thumb-radius: $global-radius;
1329 | // $thumb-transition-speed: 200ms;
1330 |
1331 | // 33. Tooltips
1332 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1333 |
1334 | // $include-html-tooltip-classes: $include-html-classes;
1335 |
1336 | // $has-tip-border-bottom: dotted 1px $iron;
1337 | // $has-tip-font-weight: $font-weight-bold;
1338 | // $has-tip-font-color: $oil;
1339 | // $has-tip-border-bottom-hover: dotted 1px scale-color($primary-color, $lightness: -55%);
1340 | // $has-tip-font-color-hover: $primary-color;
1341 | // $has-tip-cursor-type: help;
1342 |
1343 | // $tooltip-padding: rem-calc(12);
1344 | // $tooltip-bg: $oil;
1345 | // $tooltip-font-size: rem-calc(14);
1346 | // $tooltip-font-weight: $font-weight-normal;
1347 | // $tooltip-font-color: $white;
1348 | // $tooltip-line-height: 1.3;
1349 | // $tooltip-close-font-size: rem-calc(10);
1350 | // $tooltip-close-font-weight: $font-weight-normal;
1351 | // $tooltip-close-font-color: $monsoon;
1352 | // $tooltip-font-size-sml: rem-calc(14);
1353 | // $tooltip-radius: $global-radius;
1354 | // $tooltip-rounded: $global-rounded;
1355 | // $tooltip-pip-size: 5px;
1356 | // $tooltip-max-width: 300px;
1357 |
1358 | // 34. Top Bar
1359 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1360 |
1361 | // $include-html-top-bar-classes: $include-html-classes;
1362 |
1363 | // Background color for the top bar
1364 | // $topbar-bg-color: $oil;
1365 | // $topbar-bg: $topbar-bg-color;
1366 |
1367 | // Height and margin
1368 | // $topbar-height: 45px;
1369 | // $topbar-margin-bottom: 0;
1370 |
1371 | // Controlling the styles for the title in the top bar
1372 | // $topbar-title-weight: $font-weight-normal;
1373 | // $topbar-title-font-size: rem-calc(17);
1374 |
1375 | // Style the top bar dropdown elements
1376 | // $topbar-dropdown-bg: $oil;
1377 | // $topbar-dropdown-link-color: $white;
1378 | // $topbar-dropdown-link-bg: $oil;
1379 | // $topbar-dropdown-link-weight: $font-weight-normal;
1380 | // $topbar-dropdown-toggle-size: 5px;
1381 | // $topbar-dropdown-toggle-color: $white;
1382 | // $topbar-dropdown-toggle-alpha: 0.4;
1383 |
1384 | // Set the link colors and styles for top-level nav
1385 | // $topbar-link-color: $white;
1386 | // $topbar-link-color-hover: $white;
1387 | // $topbar-link-color-active: $white;
1388 | // $topbar-link-color-active-hover: $white;
1389 | // $topbar-link-weight: $font-weight-normal;
1390 | // $topbar-link-font-size: rem-calc(13);
1391 | // $topbar-link-hover-lightness: -10%; // Darken by 10%
1392 | // $topbar-link-bg: $topbar-bg;
1393 | // $topbar-link-bg-color-hover: $charcoal;
1394 | // $topbar-link-bg-hover: #272727;
1395 | // $topbar-link-bg-active: $primary-color;
1396 | // $topbar-link-bg-active-hover: scale-color($primary-color, $lightness: -14%);
1397 | // $topbar-link-font-family: $body-font-family;
1398 | // $topbar-link-text-transform: none;
1399 | // $topbar-link-padding: $topbar-height / 3;
1400 | // $topbar-back-link-size: $h5-font-size;
1401 | // $topbar-link-dropdown-padding: 20px;
1402 |
1403 | // $topbar-button-font-size: 0.75rem;
1404 | // $topbar-button-top: 7px;
1405 |
1406 | // $topbar-dropdown-label-color: $monsoon;
1407 | // $topbar-dropdown-label-text-transform: uppercase;
1408 | // $topbar-dropdown-label-font-weight: $font-weight-bold;
1409 | // $topbar-dropdown-label-font-size: rem-calc(10);
1410 | // $topbar-dropdown-label-bg: $oil;
1411 |
1412 | // Top menu icon styles
1413 | // $topbar-menu-link-transform: uppercase;
1414 | // $topbar-menu-link-font-size: rem-calc(13);
1415 | // $topbar-menu-link-weight: $font-weight-bold;
1416 | // $topbar-menu-link-color: $white;
1417 | // $topbar-menu-icon-color: $white;
1418 | // $topbar-menu-link-color-toggled: $jumbo;
1419 | // $topbar-menu-icon-color-toggled: $jumbo;
1420 |
1421 | // Transitions and breakpoint styles
1422 | // $topbar-transition-speed: 300ms;
1423 | // Using rem-calc for the below breakpoint causes issues with top bar
1424 | // $topbar-breakpoint: #{lower-bound($medium-range)}; // Change to 9999px for always mobile layout
1425 | // $topbar-media-query: $medium-up;
1426 |
1427 | // Divider Styles
1428 | // $topbar-divider-border-bottom: solid 1px scale-color($topbar-bg-color, $lightness: 13%);
1429 | // $topbar-divider-border-top: solid 1px scale-color($topbar-bg-color, $lightness: -50%);
1430 |
1431 | // Sticky Class
1432 | // $topbar-sticky-class: ".sticky";
1433 | // $topbar-arrows: true; //Set false to remove the triangle icon from the menu item
1434 |
1435 | // 36. Visibility Classes
1436 | // - - - - - - - - - - - - - - - - - - - - - - - - -
1437 |
1438 | // $include-html-visibility-classes: $include-html-classes;
1439 | // $include-table-visibility-classes: true;
1440 | // $include-legacy-visibility-classes: true;
1441 | // $include-accessibility-classes: true;
1442 |
1443 | @import 'foundation';
1444 |
--------------------------------------------------------------------------------