From 595a67b1e05a7dc07207391fd5893bd4f9b05a71 Mon Sep 17 00:00:00 2001 From: Dan Elbert Date: Mon, 18 Jan 2016 12:58:54 -0600 Subject: [PATCH] Style; recipe editor --- app/assets/images/grey_wash_wall.png | Bin 0 -> 47433 bytes app/assets/images/old_map.png | Bin 0 -> 32184 bytes app/assets/images/old_mathematics.png | Bin 0 -> 48689 bytes app/assets/javascripts/application.js | 1 + app/assets/javascripts/recipes.js | 74 +- app/assets/stylesheets/application.scss | 5 + app/assets/stylesheets/recipes.scss | 33 + app/controllers/ingredients_controller.rb | 16 +- app/models/conversion.rb | 35 + app/models/unit_conversion.rb | 4 +- app/views/ingredients/convert.json.jbuilder | 4 + app/views/ingredients/index.html.erb | 2 +- app/views/layouts/application.html.erb | 2 +- app/views/recipes/_form.html.erb | 46 +- app/views/recipes/editor/_conversion_form.erb | 48 + app/views/recipes/editor/_ingredient.html.erb | 50 +- app/views/recipes/editor/_step.html.erb | 16 +- app/views/recipes/index.html.erb | 2 +- config/routes.rb | 1 + spec/models/unit_conversion_spec.rb | 8 +- vendor/assets/javascripts/autosize.js | 243 +++++ .../assets/stylesheets/paper/_bootswatch.scss | 611 ++++++++++++ .../assets/stylesheets/paper/_variables.scss | 870 ++++++++++++++++++ 23 files changed, 2019 insertions(+), 52 deletions(-) create mode 100644 app/assets/images/grey_wash_wall.png create mode 100644 app/assets/images/old_map.png create mode 100644 app/assets/images/old_mathematics.png create mode 100644 app/models/conversion.rb create mode 100644 app/views/ingredients/convert.json.jbuilder create mode 100644 app/views/recipes/editor/_conversion_form.erb create mode 100644 vendor/assets/javascripts/autosize.js create mode 100644 vendor/assets/stylesheets/paper/_bootswatch.scss create mode 100644 vendor/assets/stylesheets/paper/_variables.scss diff --git a/app/assets/images/grey_wash_wall.png b/app/assets/images/grey_wash_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..d54e8899498d67c0367db2096c8f7c371c41461c GIT binary patch literal 47433 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/old_map.png b/app/assets/images/old_map.png new file mode 100644 index 0000000000000000000000000000000000000000..eb2373bf2436f57da04c3e3154de12d95210814f GIT binary patch literal 32184 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 literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index d7256d2..e5258fa 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -16,4 +16,5 @@ //= require bootstrap-sprockets //= require cocoon //= require typeahead +//= require autosize //= require_tree . diff --git a/app/assets/javascripts/recipes.js b/app/assets/javascripts/recipes.js index cad7acf..308ea00 100644 --- a/app/assets/javascripts/recipes.js +++ b/app/assets/javascripts/recipes.js @@ -1,13 +1,26 @@ (function($) { function reorder($container) { - console.log($container); $container.find("div.nested-fields").each(function(idx, editor) { var $editor = $(editor); $editor.find('input.sort_order').val(idx + 1).trigger("changed"); }) } + function initializeStepEditor($container) { + // $container is either an element that contains many editors, or a single editor. + var $editors = $container.find("textarea.step").closest(".step-editor"); + + $editors.each(function(idx, elem) { + console.log('doing stuff!!!'); + var $editor = $(elem); + var $step = $editor.find("textarea.step"); + autosize($step); + + setTimeout(function() { autosize.update($step); }, 250); + }); + } + function initializeIngredientEditor($container, ingredientSearchEngine) { // $container is either an element that contains many editors, or a single editor. var $editors = $container.find(".ingredient-typeahead").closest(".nested-fields"); @@ -94,14 +107,19 @@ } }); - $("#step-list") + var $stepList = $("#step-list"); + + initializeStepEditor($stepList); + + $stepList .on("cocoon:after-insert", function(e, item) { reorder($(this)); + initializeStepEditor(item); }) .on("cocoon:after-remove", function(e, item) { reorder($(this)); }) - .on('changed', 'input.sort-order', function() { + .on('changed', 'input.sort_order', function() { var $this = $(this); var $span = $this.closest(".nested-fields").find(".sort-order-display"); $span.html($this.val()); @@ -120,17 +138,61 @@ reorder($ingredientList); }) .on("typeahead:change", function(evt, value) { - console.log("changed"); ingredientNameChange($(evt.target), ingredientSearchEngine); }) .on("typeahead:select", function(evt, value) { - console.log("selected"); ingredientItemPicked($(evt.target), value); }) .on("typeahead:autocomplete", function(evt, value) { - console.log("autocomplete"); ingredientItemPicked($(evt.target), value); + }) + .on("click", "button.ingredient_convert_btn", function(evt) { + }); + + $('#convert_modal') + .on('show.bs.modal', function (event) { + var $button = $(event.relatedTarget); + var $modal = $(this); + + var $editor = $button.closest(".ingredient-editor"); + + $modal.data('ingredient-editor', $editor); + + var $quantity = $editor.find("input.quantity"); + var $units = $editor.find("input.units"); + var $density = $editor.find("input.custom_density"); + + var $modalQuantity = $modal.find("input.quantity"); + var $modalUnits = $modal.find("input.units"); + var $modalDensity = $modal.find("input.density"); + + $modalQuantity.val($quantity.val()); + $modalUnits.val($units.val()); + $modalDensity.val($density.val()); + }) + .on("ajax:success", "form", function(evt, data, status, xhr) { + var $modal = $("#convert_modal"); + var $editor = $modal.data('ingredient-editor'); + + if (data.success) { + var $quantity = $editor.find("input.quantity"); + var $units = $editor.find("input.units"); + + var $modalOutUnits = $modal.find("input.output_units"); + + $quantity.val(data.output_quantity); + if ($modalOutUnits.val().length) { + $units.val($modalOutUnits.val()); + } + + $modal.modal('hide'); + } else { + + } + + $("#modal_form_container").replaceWith($(data.form_html)); + }); }); diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index dc3b10f..58c5e3e 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -30,6 +30,11 @@ html { body { /* Margin bottom by footer height */ margin-bottom: $footer_height; + background: image_url("old_mathematics.png"); +} + +#main_container { + background: white; } .footer { diff --git a/app/assets/stylesheets/recipes.scss b/app/assets/stylesheets/recipes.scss index 55878ba..8294782 100644 --- a/app/assets/stylesheets/recipes.scss +++ b/app/assets/stylesheets/recipes.scss @@ -3,6 +3,26 @@ // You can use Sass (SCSS) here: http://sass-lang.com/ @mixin editor { + + @extend .well; + @extend .well-sm; + + margin-bottom: 10px; + padding-top: 4px; + + .form-group { + margin-bottom: 10px; + } + + .remove-button { + @extend .btn; + @extend .btn-danger; + @extend .btn-sm; + + position: absolute; + top: 0; + right: 9px; + } } div.ingredient-editor { @@ -11,6 +31,19 @@ div.ingredient-editor { div.step-editor { @include editor; + + padding-bottom: 4px; + + .form-group { + margin-bottom: 0; + } + + .sort-order-display { + font-size: 120%; + font-weight: normal; + line-height: 50px; + padding-left: 15px; + } } div#ingredient-list, div#step-list { diff --git a/app/controllers/ingredients_controller.rb b/app/controllers/ingredients_controller.rb index 788deeb..7722edf 100644 --- a/app/controllers/ingredients_controller.rb +++ b/app/controllers/ingredients_controller.rb @@ -67,10 +67,14 @@ class IngredientsController < ApplicationController end def convert - quantity = params[:quantity] - unit = params[:unit] - factor = params[:factor] - output_unit = params[:output_unit] + @conversion = Conversion.new(conversion_params) + + if @conversion.valid? + @output_quantity = @conversion.output_quantity + @conversion = Conversion.new + else + @output_quantity = '' + end end private @@ -83,4 +87,8 @@ class IngredientsController < ApplicationController def ingredient_params params.require(:ingredient).permit(:name, :density, :notes) end + + def conversion_params + params.require(:conversion).permit(:input_quantity, :input_units, :scale, :output_units, :density) + end end diff --git a/app/models/conversion.rb b/app/models/conversion.rb new file mode 100644 index 0000000..4e99d99 --- /dev/null +++ b/app/models/conversion.rb @@ -0,0 +1,35 @@ +class Conversion + include ActiveModel::Validations + include ActiveModel::Conversion + extend ActiveModel::Naming + + attr_accessor :input_quantity, :input_units, :scale, :output_units, :density + attr_reader :output_quantity + + validates :input_quantity, presence: true + validate :check_conversion, :if => Proc.new { |object| object.errors.empty? } + + def initialize(attrs = nil) + if attrs + attrs.each do |k, v| + send("#{k}=", v) + end + end + + @output_quantity = nil + end + + def check_conversion + begin + scale = self.scale.blank? ? '1' : self.scale + density = self.density.blank? ? nil : self.density + @output_quantity = UnitConversion.convert(input_quantity, scale, input_units, output_units, density) + rescue UnitConversion::UnparseableUnitError => err + errors[:base] << "Invalid Data: #{err.message}" + end + end + + def persisted? + false + end +end \ No newline at end of file diff --git a/app/models/unit_conversion.rb b/app/models/unit_conversion.rb index 3e2b1f1..57e66b5 100644 --- a/app/models/unit_conversion.rb +++ b/app/models/unit_conversion.rb @@ -99,7 +99,7 @@ module UnitConversion input_unit = normalize_unit_names(input_unit) unless input_unit.nil? output_unit = normalize_unit_names(output_unit) unless output_unit.nil? - if input_unit && output_unit && input_unit != output_unit + if input_unit.present? && output_unit.present? && input_unit != output_unit in_unit = Unitwise(1, input_unit) out_unit = Unitwise(1, output_unit) unit = Unitwise(converted, input_unit) @@ -116,7 +116,7 @@ module UnitConversion end if value.is_a? Rational - rational_val = converted.to_r.rationalize(0.001) + rational_val = converted.to_r.rationalize(0.01) if rational_val.denominator == 1 rational_val.to_i.to_s elsif rational_val.denominator < rational_val.numerator.abs diff --git a/app/views/ingredients/convert.json.jbuilder b/app/views/ingredients/convert.json.jbuilder new file mode 100644 index 0000000..a8ed4ba --- /dev/null +++ b/app/views/ingredients/convert.json.jbuilder @@ -0,0 +1,4 @@ + +json.success !@output_quantity.blank? +json.output_quantity @output_quantity +json.form_html render(partial: 'recipes/editor/conversion_form', formats: [:html]) \ No newline at end of file diff --git a/app/views/ingredients/index.html.erb b/app/views/ingredients/index.html.erb index f1811cb..ece143f 100644 --- a/app/views/ingredients/index.html.erb +++ b/app/views/ingredients/index.html.erb @@ -1,7 +1,7 @@
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 34e8dc5..82d51ee 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -35,7 +35,7 @@ <%= render partial: 'layouts/flash_messages' %> -
+
<%= yield %> diff --git a/app/views/recipes/_form.html.erb b/app/views/recipes/_form.html.erb index cb36117..753bb65 100644 --- a/app/views/recipes/_form.html.erb +++ b/app/views/recipes/_form.html.erb @@ -2,21 +2,28 @@ <%= render partial: 'shared/error_list', locals: {model: @recipe} %> -
- <%= f.label :name, class: "control-label" %> - <%= f.text_field :name, class: 'form-control' %> +
+
+
+ <%= f.label :name, class: "control-label" %> + <%= f.text_field :name, class: 'form-control' %> +
+
+ +
+
+ <%= f.label :source, class: "control-label" %> + <%= f.text_field :source, class: 'form-control' %> +
+
+
<%= f.label :description, class: "control-label" %> <%= f.text_area :description, class: 'form-control' %>
-
- <%= f.label :source, class: "control-label" %> - <%= f.text_field :source, class: 'form-control' %> -
-
@@ -63,3 +70,26 @@ <%= f.submit class: 'btn btn-primary' %>
<% end %> + + + \ No newline at end of file diff --git a/app/views/recipes/editor/_conversion_form.erb b/app/views/recipes/editor/_conversion_form.erb new file mode 100644 index 0000000..9a232d5 --- /dev/null +++ b/app/views/recipes/editor/_conversion_form.erb @@ -0,0 +1,48 @@ + + + + diff --git a/app/views/recipes/editor/_ingredient.html.erb b/app/views/recipes/editor/_ingredient.html.erb index 1493b6e..47829fd 100644 --- a/app/views/recipes/editor/_ingredient.html.erb +++ b/app/views/recipes/editor/_ingredient.html.erb @@ -1,40 +1,50 @@ -
-
+
+
-
- -
- <%= f.label :custom_name, "Name" %> - <%= f.text_field :custom_name, class: 'form-control ingredient-typeahead custom_name' %> -
+
-
-
- <%= f.label :quantity %> - <%= f.text_field :quantity, class: 'form-control' %> + +
+
+ <%= f.label :custom_name, "Name", class: "control-label" %> +
+ <%= f.text_field :custom_name, class: 'form-control ingredient-typeahead custom_name' %> + + + +
-
+
- <%= f.label :units %> - <%= f.text_field :units, class: 'form-control' %> + <%= f.label :quantity, class: "control-label" %> + <%= f.text_field :quantity, class: 'form-control quantity' %>
-
+
- <%= f.label :custom_density, "Density" %> + <%= f.label :units, class: "control-label" %> + <%= f.text_field :units, class: 'form-control units' %> +
+
+ +
+
+ <%= f.label :custom_density, "Density", class: "control-label" %> <%= f.text_field :custom_density, class: 'form-control custom_density' %>
-
- <%= link_to_remove_association f, class: 'btn btn-danger' do %> +
+ <%= link_to_remove_association f, class: 'remove-button' do %> <% end %>
@@ -42,5 +52,5 @@ <%= f.hidden_field :ingredient_id, class: 'ingredient_id' %> <%= f.hidden_field :sort_order, class: 'sort_order' %> -
+
\ No newline at end of file diff --git a/app/views/recipes/editor/_step.html.erb b/app/views/recipes/editor/_step.html.erb index 9554c5b..533ff90 100644 --- a/app/views/recipes/editor/_step.html.erb +++ b/app/views/recipes/editor/_step.html.erb @@ -1,19 +1,19 @@ -
-
+
+
-
+
<%= f.object ? f.object.sort_order : '' %>
-
+
- <%= f.text_area :step, class: 'form-control' %> + <%= f.text_area :step, class: 'form-control step' %>
-
- <%= link_to_remove_association f, class: 'btn btn-danger' do %> +
+ <%= link_to_remove_association f, class: 'remove-button' do %> <% end %>
@@ -21,5 +21,5 @@ <%= f.hidden_field :sort_order, class: 'sort_order' %> -
+
\ No newline at end of file diff --git a/app/views/recipes/index.html.erb b/app/views/recipes/index.html.erb index 1d2f58b..ae21cbd 100644 --- a/app/views/recipes/index.html.erb +++ b/app/views/recipes/index.html.erb @@ -2,7 +2,7 @@
<% if @recipes.empty? %> diff --git a/config/routes.rb b/config/routes.rb index 35fcf0a..3f89dee 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,6 +7,7 @@ Rails.application.routes.draw do constraints format: 'json' do get :search get :prefetch + get :convert end end end diff --git a/spec/models/unit_conversion_spec.rb b/spec/models/unit_conversion_spec.rb index a84b726..a00f6cc 100644 --- a/spec/models/unit_conversion_spec.rb +++ b/spec/models/unit_conversion_spec.rb @@ -45,6 +45,10 @@ RSpec.describe UnitConversion do it 'scales odd units without conversion' do expect(UnitConversion.convert('1/2', '2', 'slices', 'slices')).to eq '1' expect(UnitConversion.convert('4', '1/8', nil, nil)).to eq '1/2' + expect(UnitConversion.convert('4', '1/8', 'slices', nil)).to eq '1/2' + expect(UnitConversion.convert('4', '1/8', nil, 'slices')).to eq '1/2' + expect(UnitConversion.convert('4', '1/8', 'slices', '')).to eq '1/2' + expect(UnitConversion.convert('4', '1/8', '', 'slices')).to eq '1/2' end it 'converts and scales' do @@ -148,7 +152,9 @@ RSpec.describe UnitConversion do 'cups' => 'cup', 'pints' => 'pint', 'g' => 'gram', - 'grams' => 'gram' + 'grams' => 'gram', + 'Grams' => 'gram', + 'Tbsp' => 'tablespoon' } data.each do |input, output| diff --git a/vendor/assets/javascripts/autosize.js b/vendor/assets/javascripts/autosize.js new file mode 100644 index 0000000..cfa49e7 --- /dev/null +++ b/vendor/assets/javascripts/autosize.js @@ -0,0 +1,243 @@ +/*! + Autosize 3.0.14 + license: MIT + http://www.jacklmoore.com/autosize +*/ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod); + global.autosize = mod.exports; + } +})(this, function (exports, module) { + 'use strict'; + + var set = typeof Set === 'function' ? new Set() : (function () { + var list = []; + + return { + has: function has(key) { + return Boolean(list.indexOf(key) > -1); + }, + add: function add(key) { + list.push(key); + }, + 'delete': function _delete(key) { + list.splice(list.indexOf(key), 1); + } }; + })(); + + function assign(ta) { + var _ref = arguments[1] === undefined ? {} : arguments[1]; + + var _ref$setOverflowX = _ref.setOverflowX; + var setOverflowX = _ref$setOverflowX === undefined ? true : _ref$setOverflowX; + var _ref$setOverflowY = _ref.setOverflowY; + var setOverflowY = _ref$setOverflowY === undefined ? true : _ref$setOverflowY; + + if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || set.has(ta)) return; + + var heightOffset = null; + var overflowY = null; + var clientWidth = ta.clientWidth; + + function init() { + var style = window.getComputedStyle(ta, null); + + overflowY = style.overflowY; + + if (style.resize === 'vertical') { + ta.style.resize = 'none'; + } else if (style.resize === 'both') { + ta.style.resize = 'horizontal'; + } + + if (style.boxSizing === 'content-box') { + heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); + } else { + heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); + } + // Fix when a textarea is not on document body and heightOffset is Not a Number + if (isNaN(heightOffset)) { + heightOffset = 0; + } + + update(); + } + + function changeOverflow(value) { + { + // Chrome/Safari-specific fix: + // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space + // made available by removing the scrollbar. The following forces the necessary text reflow. + var width = ta.style.width; + ta.style.width = '0px'; + // Force reflow: + /* jshint ignore:start */ + ta.offsetWidth; + /* jshint ignore:end */ + ta.style.width = width; + } + + overflowY = value; + + if (setOverflowY) { + ta.style.overflowY = value; + } + + resize(); + } + + function resize() { + var htmlTop = window.pageYOffset; + var bodyTop = document.body.scrollTop; + var originalHeight = ta.style.height; + + ta.style.height = 'auto'; + + var endHeight = ta.scrollHeight + heightOffset; + + if (ta.scrollHeight === 0) { + // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. + ta.style.height = originalHeight; + return; + } + + ta.style.height = endHeight + 'px'; + + // used to check if an update is actually necessary on window.resize + clientWidth = ta.clientWidth; + + // prevents scroll-position jumping + document.documentElement.scrollTop = htmlTop; + document.body.scrollTop = bodyTop; + } + + function update() { + var startHeight = ta.style.height; + + resize(); + + var style = window.getComputedStyle(ta, null); + + if (style.height !== ta.style.height) { + if (overflowY !== 'visible') { + changeOverflow('visible'); + } + } else { + if (overflowY !== 'hidden') { + changeOverflow('hidden'); + } + } + + if (startHeight !== ta.style.height) { + var evt = document.createEvent('Event'); + evt.initEvent('autosize:resized', true, false); + ta.dispatchEvent(evt); + } + } + + var pageResize = function pageResize() { + if (ta.clientWidth !== clientWidth) { + update(); + } + }; + + var destroy = (function (style) { + window.removeEventListener('resize', pageResize, false); + ta.removeEventListener('input', update, false); + ta.removeEventListener('keyup', update, false); + ta.removeEventListener('autosize:destroy', destroy, false); + ta.removeEventListener('autosize:update', update, false); + set['delete'](ta); + + Object.keys(style).forEach(function (key) { + ta.style[key] = style[key]; + }); + }).bind(ta, { + height: ta.style.height, + resize: ta.style.resize, + overflowY: ta.style.overflowY, + overflowX: ta.style.overflowX, + wordWrap: ta.style.wordWrap }); + + ta.addEventListener('autosize:destroy', destroy, false); + + // IE9 does not fire onpropertychange or oninput for deletions, + // so binding to onkeyup to catch most of those events. + // There is no way that I know of to detect something like 'cut' in IE9. + if ('onpropertychange' in ta && 'oninput' in ta) { + ta.addEventListener('keyup', update, false); + } + + window.addEventListener('resize', pageResize, false); + ta.addEventListener('input', update, false); + ta.addEventListener('autosize:update', update, false); + set.add(ta); + + if (setOverflowX) { + ta.style.overflowX = 'hidden'; + ta.style.wordWrap = 'break-word'; + } + + init(); + } + + function destroy(ta) { + if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return; + var evt = document.createEvent('Event'); + evt.initEvent('autosize:destroy', true, false); + ta.dispatchEvent(evt); + } + + function update(ta) { + if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return; + var evt = document.createEvent('Event'); + evt.initEvent('autosize:update', true, false); + ta.dispatchEvent(evt); + } + + var autosize = null; + + // Do nothing in Node.js environment and IE8 (or lower) + if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') { + autosize = function (el) { + return el; + }; + autosize.destroy = function (el) { + return el; + }; + autosize.update = function (el) { + return el; + }; + } else { + autosize = function (el, options) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], function (x) { + return assign(x, options); + }); + } + return el; + }; + autosize.destroy = function (el) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], destroy); + } + return el; + }; + autosize.update = function (el) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], update); + } + return el; + }; + } + + module.exports = autosize; +}); \ No newline at end of file diff --git a/vendor/assets/stylesheets/paper/_bootswatch.scss b/vendor/assets/stylesheets/paper/_bootswatch.scss new file mode 100644 index 0000000..e1cc544 --- /dev/null +++ b/vendor/assets/stylesheets/paper/_bootswatch.scss @@ -0,0 +1,611 @@ +// Paper 3.3.5 +// Bootswatch +// ----------------------------------------------------- + +$web-font-path: "https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" !default; +@import url($web-font-path); + +// Navbar ===================================================================== + +.navbar { + border: none; + @include box-shadow(0 1px 2px rgba(0,0,0,.3)); + + &-brand { + font-size: 24px; + } + + &-inverse { + .navbar-form { + + input[type=text], + input[type=password] { + color: #fff; + @include box-shadow(inset 0 -1px 0 $navbar-inverse-link-color); + @include placeholder($navbar-inverse-link-color); + + &:focus { + @include box-shadow(inset 0 -2px 0 #fff); + } + } + } + } +} + +// Buttons ==================================================================== + +@mixin btn($class,$bg){ + .btn-#{$class} { + background-size: 200%; + background-position: 50%; + + &:focus { + background-color: $bg; + } + + &:hover, + &:active:hover { + background-color: darken($bg, 6%); + } + + &:active { + background-color: darken($bg, 12%); + @include gradient-radial(darken($bg, 12%) 10%, $bg 11%); + background-size: 1000%; + @include box-shadow(2px 2px 4px rgba(0,0,0,.4)); + } + } +} + +@include btn(default,$btn-default-bg); +@include btn(primary,$btn-primary-bg); +@include btn(success,$btn-success-bg); +@include btn(info,$btn-info-bg); +@include btn(warning,$btn-warning-bg); +@include btn(danger,$btn-danger-bg); +@include btn(link,#fff); + +.btn { + text-transform: uppercase; + border: none; + @include box-shadow(1px 1px 4px rgba(0,0,0,.4)); + @include transition(all 0.4s); + + &-link { + border-radius: $btn-border-radius-base; + @include box-shadow(none); + color: $btn-default-color; + + &:hover, + &:focus { + @include box-shadow(none); + color: $btn-default-color; + text-decoration: none; + } + } + + &-default { + + &.disabled { + background-color: rgba(0, 0, 0, 0.1); + color: rgba(0, 0, 0, 0.4); + opacity: 1; + } + } +} + +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: 0; + } + + &-vertical { + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: 0; + } + } +} + +// Typography ================================================================= + +body { + -webkit-font-smoothing: antialiased; + letter-spacing: .1px; +} + +p { + margin: 0 0 1em; +} + +input, +button { + -webkit-font-smoothing: antialiased; + letter-spacing: .1px; +} + +a { + @include transition(all 0.2s); +} + +// Tables ===================================================================== + +.table-hover { + > tbody > tr, + > tbody > tr > th, + > tbody > tr > td { + @include transition(all 0.2s); + } +} + +// Forms ====================================================================== + +label { + font-weight: normal; +} + +textarea, +textarea.form-control, +input.form-control, +input[type=text], +input[type=password], +input[type=email], +input[type=number], +[type=text].form-control, +[type=password].form-control, +[type=email].form-control, +[type=tel].form-control, +[contenteditable].form-control { + padding: 0; + border: none; + border-radius: 0; + -webkit-appearance: none; + @include box-shadow(inset 0 -1px 0 #ddd); + font-size: 16px; + + &:focus { + @include box-shadow(inset 0 -2px 0 $brand-primary); + } + + &[disabled], + &[readonly] { + @include box-shadow(none); + border-bottom: 1px dotted #ddd; + } + + &.input { + &-sm { + font-size: $font-size-small; + } + + &-lg { + font-size: $font-size-large; + } + } +} + +select, +select.form-control { + border: 0; + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding-left: 0; + padding-right: 0\9; // remove padding for < ie9 since default arrow can't be removed + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEVmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmaP/QSjAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=); + background-size: 13px; + background-repeat: no-repeat; + background-position: right center; + @include box-shadow(inset 0 -1px 0 #ddd); + font-size: 16px; + line-height: 1.5; + + &::-ms-expand { + display: none; + } + + &.input { + &-sm { + font-size: $font-size-small; + } + + &-lg { + font-size: $font-size-large; + } + } + + &:focus { + @include box-shadow(inset 0 -2px 0 $brand-primary); + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEUhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF8S9ewAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=); + } + + &[multiple] { + background: none; + } +} + +.radio, +.radio-inline, +.checkbox, +.checkbox-inline { + label { + padding-left: 25px; + } + + input[type="radio"], + input[type="checkbox"] { + margin-left: -25px; + } +} + +input[type="radio"], +.radio input[type="radio"], +.radio-inline input[type="radio"] { + position: relative; + margin-top: 6px; + margin-right: 4px; + vertical-align: top; + border: none; + background-color: transparent; + -webkit-appearance: none; + appearance: none; + cursor: pointer; + + &:focus { + outline: none; + } + + &:before, + &:after { + content: ""; + display: block; + width: 18px; + height: 18px; + border-radius: 50%; + @include transition(240ms); + } + + &:before { + position: absolute; + left: 0; + top: -3px; + background-color: $brand-primary; + @include scale(0); + } + + &:after { + position: relative; + top: -3px; + border: 2px solid $gray; + } + + &:checked:before { + @include scale(0.5); + } + + &:disabled:checked:before { + background-color: $gray-light; + } + + &:checked:after { + border-color: $brand-primary; + } + + &:disabled:after, + &:disabled:checked:after { + border-color: $gray-light; + } +} + +input[type="checkbox"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: relative; + border: none; + margin-bottom: -4px; + -webkit-appearance: none; + appearance: none; + cursor: pointer; + + &:focus { + outline: none; + } + + &:focus:after { + border-color: $brand-primary; + } + + &:after { + content: ""; + display: block; + width: 18px; + height: 18px; + margin-top: -2px; + margin-right: 5px; + border: 2px solid $gray; + border-radius: 2px; + @include transition(240ms); + } + + &:checked:before { + content: ""; + position: absolute; + top: 0; + left: 6px; + display: table; + width: 6px; + height: 12px; + border: 2px solid #fff; + border-top-width: 0; + border-left-width: 0; + @include rotate(45deg); + } + + &:checked:after { + background-color: $brand-primary; + border-color: $brand-primary; + } + + &:disabled:after { + border-color: $gray-light; + } + + &:disabled:checked:after { + background-color: $gray-light; + border-color: transparent; + } +} + +.has-warning { + input:not([type=checkbox]), + .form-control, + input.form-control[readonly], + input[type=text][readonly], + [type=text].form-control[readonly], + input:not([type=checkbox]):focus, + .form-control:focus { + border-bottom: none; + @include box-shadow(inset 0 -2px 0 $brand-warning); + } +} + +.has-error { + input:not([type=checkbox]), + .form-control, + input.form-control[readonly], + input[type=text][readonly], + [type=text].form-control[readonly], + input:not([type=checkbox]):focus, + .form-control:focus { + border-bottom: none; + @include box-shadow(inset 0 -2px 0 $brand-danger); + } +} + +.has-success { + input:not([type=checkbox]), + .form-control, + input.form-control[readonly], + input[type=text][readonly], + [type=text].form-control[readonly], + input:not([type=checkbox]):focus, + .form-control:focus { + border-bottom: none; + @include box-shadow(inset 0 -2px 0 $brand-success); + } +} + +// Remove the Bootstrap feedback styles for input addons +.input-group-addon { + .has-warning &, .has-error &, .has-success & { + color: $input-color; + border-color: $input-group-addon-border-color; + background-color: $input-group-addon-bg; + } +} + +// Navs ======================================================================= + +.nav-tabs { + > li > a, + > li > a:focus { + margin-right: 0; + background-color: transparent; + border: none; + color: $navbar-default-link-color; + @include box-shadow(inset 0 -1px 0 #ddd); + @include transition(all 0.2s); + + &:hover { + background-color: transparent; + @include box-shadow(inset 0 -2px 0 $brand-primary); + color: $brand-primary; + } + } + + & > li.active > a, + & > li.active > a:focus { + border: none; + @include box-shadow(inset 0 -2px 0 $brand-primary); + color: $brand-primary; + + &:hover { + border: none; + color: $brand-primary; + } + } + + & > li.disabled > a { + @include box-shadow(inset 0 -1px 0 #ddd); + } + + &.nav-justified { + + & > li > a, + & > li > a:hover, + & > li > a:focus, + & > .active > a, + & > .active > a:hover, + & > .active > a:focus { + border: none; + } + } + + .dropdown-menu { + margin-top: 0; + } +} + +.dropdown-menu { + margin-top: 0; + border: none; + @include box-shadow(0 1px 4px rgba(0,0,0,.3)); +} + +// Indicators ================================================================= + +.alert { + border: none; + color: #fff; + + &-success { + background-color: $brand-success; + } + + &-info { + background-color: $brand-info; + } + + &-warning { + background-color: $brand-warning; + } + + &-danger { + background-color: $brand-danger; + } + + a:not(.close), + .alert-link { + color: #fff; + font-weight: bold; + } + + .close { + color: #fff; + } +} + +.badge { + padding: 4px 6px 4px; +} + +.progress { + position: relative; + z-index: 1; + height: 6px; + border-radius: 0; + + @include box-shadow(none); + + &-bar { + @include box-shadow(none); + + &:last-child { + border-radius: 0 3px 3px 0; + } + + &:last-child { + &:before { + display: block; + content: ""; + position: absolute; + width: 100%; + height: 100%; + left: 0; + right: 0; + z-index: -1; + background-color: lighten($progress-bar-bg, 35%); + } + } + + &-success:last-child.progress-bar:before { + background-color: lighten($brand-success, 35%); + } + + &-info:last-child.progress-bar:before { + background-color: lighten($brand-info, 45%); + } + &-warning:last-child.progress-bar:before { + background-color: lighten($brand-warning, 35%); + } + + &-danger:last-child.progress-bar:before { + background-color: lighten($brand-danger, 25%); + } + } +} + +// Progress bars ============================================================== + +// Containers ================================================================= + +.close { + font-size: 34px; + font-weight: 300; + line-height: 24px; + opacity: 0.6; + @include transition(all 0.2s); + + &:hover { + opacity: 1; + } +} + +.list-group { + + &-item { + padding: 15px; + } + + &-item-text { + color: $gray-light; + } +} + +.well { + border-radius: 0; + @include box-shadow(none); +} + +.panel { + border: none; + border-radius: 2px; + @include box-shadow(0 1px 4px rgba(0,0,0,.3)); + + &-heading { + border-bottom: none; + } + + &-footer { + border-top: none; + } +} + +.popover { + border: none; + @include box-shadow(0 1px 4px rgba(0,0,0,.3)); +} + +.carousel { + &-caption { + h1, h2, h3, h4, h5, h6 { + color: inherit; + } + } +} diff --git a/vendor/assets/stylesheets/paper/_variables.scss b/vendor/assets/stylesheets/paper/_variables.scss new file mode 100644 index 0000000..337712d --- /dev/null +++ b/vendor/assets/stylesheets/paper/_variables.scss @@ -0,0 +1,870 @@ +$bootstrap-sass-asset-helper: false !default; +// Paper 3.3.6 +// Variables +// -------------------------------------------------- + + +//== Colors +// +//## Gray and brand colors for use across Bootstrap. + +$gray-base: #000 !default; +$gray-darker: lighten($gray-base, 13.5%) !default; // #222 +$gray-dark: #212121 !default; +$gray: #666 !default; +$gray-light: #bbb !default; +$gray-lighter: lighten($gray-base, 93.5%) !default; // #eee + +$brand-primary: #2196F3 !default; +$brand-success: #4CAF50 !default; +$brand-info: #9C27B0 !default; +$brand-warning: #ff9800 !default; +$brand-danger: #e51c23 !default; + + +//== Scaffolding +// +//## Settings for some of the most global styles. + +//** Background color for ``. +$body-bg: #fff !default; +//** Global text color on ``. +$text-color: $gray !default; + +//** Global textual link color. +$link-color: $brand-primary !default; +//** Link hover color set via `darken()` function. +$link-hover-color: darken($link-color, 15%) !default; +//** Link hover decoration. +$link-hover-decoration: underline !default; + + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. + +$font-family-sans-serif: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif !default; +$font-family-serif: Georgia, "Times New Roman", Times, serif !default; +//** Default monospace fonts for ``, ``, and `
`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          13px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            56px !default;
+$font-size-h2:            45px !default;
+$font-size-h3:            34px !default;
+$font-size-h4:            24px !default;
+$font-size-h5:            20px !default;
+$font-size-h6:            14px !default;
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.846 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the ``.
+$headings-font-family:    inherit !default;
+$headings-font-weight:    400 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          #444 !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     6px !default;
+$padding-base-horizontal:   16px !default;
+
+$padding-large-vertical:    10px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        3px !default;
+$border-radius-large:       3px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicator dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `
`s and ``s. +$table-cell-padding: 8px !default; +//** Padding for cells in `.table-condensed`. +$table-condensed-cell-padding: 5px !default; + +//** Default background color used for all tables. +$table-bg: transparent !default; +//** Background color used for `.table-striped`. +$table-bg-accent: #f9f9f9 !default; +//** Background color used for `.table-hover`. +$table-bg-hover: #f5f5f5 !default; +$table-bg-active: $table-bg-hover !default; + +//** Border color for table and cell borders. +$table-border-color: #ddd !default; + + +//== Buttons +// +//## For each of Bootstrap's buttons, define text, background and border color. + +$btn-font-weight: normal !default; + +$btn-default-color: #444 !default; +$btn-default-bg: #fff !default; +$btn-default-border: transparent !default; + +$btn-primary-color: #fff !default; +$btn-primary-bg: $brand-primary !default; +$btn-primary-border: transparent !default; + +$btn-success-color: #fff !default; +$btn-success-bg: $brand-success !default; +$btn-success-border: transparent !default; + +$btn-info-color: #fff !default; +$btn-info-bg: $brand-info !default; +$btn-info-border: transparent !default; + +$btn-warning-color: #fff !default; +$btn-warning-bg: $brand-warning !default; +$btn-warning-border: transparent !default; + +$btn-danger-color: #fff !default; +$btn-danger-bg: $brand-danger !default; +$btn-danger-border: transparent !default; + +$btn-link-disabled-color: $gray-light !default; + +// Allows for customizing button radius independently from global border radius +$btn-border-radius-base: $border-radius-base !default; +$btn-border-radius-large: $border-radius-large !default; +$btn-border-radius-small: $border-radius-small !default; + + +//== Forms +// +//## + +//** `` background color +$input-bg: transparent !default; +//** `` background color +$input-bg-disabled: transparent !default; + +//** Text color for ``s +$input-color: $gray !default; +//** `` border color +$input-border: transparent !default; + +// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4 +//** Default `.form-control` border radius +// This has no effect on ``s in CSS. +$input-border-radius: $border-radius-base !default; +//** Large `.form-control` border radius +$input-border-radius-large: $border-radius-large !default; +//** Small `.form-control` border radius +$input-border-radius-small: $border-radius-small !default; + +//** Border color for inputs on focus +$input-border-focus: #66afe9 !default; + +//** Placeholder text color +$input-color-placeholder: $gray-light !default; + +//** Default `.form-control` height +$input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default; +//** Large `.form-control` height +$input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default; +//** Small `.form-control` height +$input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default; + +//** `.form-group` margin +$form-group-margin-bottom: 15px !default; + +$legend-color: $gray-dark !default; +$legend-border-color: #e5e5e5 !default; + +//** Background color for textual input addons +$input-group-addon-bg: transparent !default; +//** Border color for textual input addons +$input-group-addon-border-color: $input-border !default; + +//** Disabled cursor for form controls and buttons. +$cursor-disabled: not-allowed !default; + + +//== Dropdowns +// +//## Dropdown menu container and contents. + +//** Background for the dropdown menu. +$dropdown-bg: #fff !default; +//** Dropdown menu `border-color`. +$dropdown-border: rgba(0,0,0,.15) !default; +//** Dropdown menu `border-color` **for IE8**. +$dropdown-fallback-border: #ccc !default; +//** Divider color for between dropdown items. +$dropdown-divider-bg: #e5e5e5 !default; + +//** Dropdown link text color. +$dropdown-link-color: $text-color !default; +//** Hover color for dropdown links. +$dropdown-link-hover-color: darken($gray-dark, 5%) !default; +//** Hover background for dropdown links. +$dropdown-link-hover-bg: $gray-lighter !default; + +//** Active dropdown menu item text color. +$dropdown-link-active-color: $component-active-color !default; +//** Active dropdown menu item background color. +$dropdown-link-active-bg: $component-active-bg !default; + +//** Disabled dropdown menu item background color. +$dropdown-link-disabled-color: $gray-light !default; + +//** Text color for headers within dropdown menus. +$dropdown-header-color: $gray-light !default; + +//** Deprecated `$dropdown-caret-color` as of v3.1.0 +$dropdown-caret-color: $gray-light !default; + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +$zindex-navbar: 1000 !default; +$zindex-dropdown: 1000 !default; +$zindex-popover: 1060 !default; +$zindex-tooltip: 1070 !default; +$zindex-navbar-fixed: 1030 !default; +$zindex-modal-background: 1040 !default; +$zindex-modal: 1050 !default; + + +//== Media queries breakpoints +// +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +// Extra small screen / phone +//** Deprecated `$screen-xs` as of v3.0.1 +$screen-xs: 480px !default; +//** Deprecated `$screen-xs-min` as of v3.2.0 +$screen-xs-min: $screen-xs !default; +//** Deprecated `$screen-phone` as of v3.0.1 +$screen-phone: $screen-xs-min !default; + +// Small screen / tablet +//** Deprecated `$screen-sm` as of v3.0.1 +$screen-sm: 768px !default; +$screen-sm-min: $screen-sm !default; +//** Deprecated `$screen-tablet` as of v3.0.1 +$screen-tablet: $screen-sm-min !default; + +// Medium screen / desktop +//** Deprecated `$screen-md` as of v3.0.1 +$screen-md: 992px !default; +$screen-md-min: $screen-md !default; +//** Deprecated `$screen-desktop` as of v3.0.1 +$screen-desktop: $screen-md-min !default; + +// Large screen / wide desktop +//** Deprecated `$screen-lg` as of v3.0.1 +$screen-lg: 1200px !default; +$screen-lg-min: $screen-lg !default; +//** Deprecated `$screen-lg-desktop` as of v3.0.1 +$screen-lg-desktop: $screen-lg-min !default; + +// So media queries don't overlap when required, provide a maximum +$screen-xs-max: ($screen-sm-min - 1) !default; +$screen-sm-max: ($screen-md-min - 1) !default; +$screen-md-max: ($screen-lg-min - 1) !default; + + +//== Grid system +// +//## Define your custom responsive grid. + +//** Number of columns in the grid. +$grid-columns: 12 !default; +//** Padding between columns. Gets divided in half for the left and right. +$grid-gutter-width: 30px !default; +// Navbar collapse +//** Point at which the navbar becomes uncollapsed. +$grid-float-breakpoint: $screen-sm-min !default; +//** Point at which the navbar begins collapsing. +$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default; + + +//== Container sizes +// +//## Define the maximum width of `.container` for different screen sizes. + +// Small screen / tablet +$container-tablet: (720px + $grid-gutter-width) !default; +//** For `$screen-sm-min` and up. +$container-sm: $container-tablet !default; + +// Medium screen / desktop +$container-desktop: (940px + $grid-gutter-width) !default; +//** For `$screen-md-min` and up. +$container-md: $container-desktop !default; + +// Large screen / wide desktop +$container-large-desktop: (1140px + $grid-gutter-width) !default; +//** For `$screen-lg-min` and up. +$container-lg: $container-large-desktop !default; + + +//== Navbar +// +//## + +// Basics of a navbar +$navbar-height: 64px !default; +$navbar-margin-bottom: $line-height-computed !default; +$navbar-border-radius: $border-radius-base !default; +$navbar-padding-horizontal: floor(($grid-gutter-width / 2)) !default; +$navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) !default; +$navbar-collapse-max-height: 340px !default; + +$navbar-default-color: $gray-light !default; +$navbar-default-bg: #fff !default; +$navbar-default-border: transparent !default; + +// Navbar links +$navbar-default-link-color: $gray !default; +$navbar-default-link-hover-color: $gray-dark !default; +$navbar-default-link-hover-bg: transparent !default; +$navbar-default-link-active-color: $gray-dark !default; +$navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) !default; +$navbar-default-link-disabled-color: #ccc !default; +$navbar-default-link-disabled-bg: transparent !default; + +// Navbar brand label +$navbar-default-brand-color: $navbar-default-link-color !default; +$navbar-default-brand-hover-color: $navbar-default-link-hover-color !default; +$navbar-default-brand-hover-bg: transparent !default; + +// Navbar toggle +$navbar-default-toggle-hover-bg: transparent !default; +$navbar-default-toggle-icon-bar-bg: rgba(0,0,0,0.5) !default; +$navbar-default-toggle-border-color: transparent !default; + + +//=== Inverted navbar +// Reset inverted navbar basics +$navbar-inverse-color: $gray-light !default; +$navbar-inverse-bg: $brand-primary !default; +$navbar-inverse-border: transparent !default; + +// Inverted navbar links +$navbar-inverse-link-color: lighten($brand-primary, 30%) !default; +$navbar-inverse-link-hover-color: #fff !default; +$navbar-inverse-link-hover-bg: transparent !default; +$navbar-inverse-link-active-color: $navbar-inverse-link-hover-color !default; +$navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) !default; +$navbar-inverse-link-disabled-color: #444 !default; +$navbar-inverse-link-disabled-bg: transparent !default; + +// Inverted navbar brand label +$navbar-inverse-brand-color: $navbar-inverse-link-color !default; +$navbar-inverse-brand-hover-color: #fff !default; +$navbar-inverse-brand-hover-bg: transparent !default; + +// Inverted navbar toggle\ +$navbar-inverse-toggle-hover-bg: transparent !default; +$navbar-inverse-toggle-icon-bar-bg: rgba(0,0,0,0.5) !default; +$navbar-inverse-toggle-border-color: transparent !default; + + +//== Navs +// +//## + +//=== Shared nav styles +$nav-link-padding: 10px 15px !default; +$nav-link-hover-bg: $gray-lighter !default; + +$nav-disabled-link-color: $gray-light !default; +$nav-disabled-link-hover-color: $gray-light !default; + +//== Tabs +$nav-tabs-border-color: transparent !default; + +$nav-tabs-link-hover-border-color: $gray-lighter !default; + +$nav-tabs-active-link-hover-bg: transparent !default; +$nav-tabs-active-link-hover-color: $gray !default; +$nav-tabs-active-link-hover-border-color: transparent !default; + +$nav-tabs-justified-link-border-color: $nav-tabs-border-color !default; +$nav-tabs-justified-active-link-border-color: $body-bg !default; + +//== Pills +$nav-pills-border-radius: $border-radius-base !default; +$nav-pills-active-link-hover-bg: $component-active-bg !default; +$nav-pills-active-link-hover-color: $component-active-color !default; + + +//== Pagination +// +//## + +$pagination-color: $link-color !default; +$pagination-bg: #fff !default; +$pagination-border: #ddd !default; + +$pagination-hover-color: $link-hover-color !default; +$pagination-hover-bg: $gray-lighter !default; +$pagination-hover-border: #ddd !default; + +$pagination-active-color: #fff !default; +$pagination-active-bg: $brand-primary !default; +$pagination-active-border: $brand-primary !default; + +$pagination-disabled-color: $gray-light !default; +$pagination-disabled-bg: #fff !default; +$pagination-disabled-border: #ddd !default; + + +//== Pager +// +//## + +$pager-bg: $pagination-bg !default; +$pager-border: $pagination-border !default; +$pager-border-radius: 15px !default; + +$pager-hover-bg: $pagination-hover-bg !default; + +$pager-active-bg: $pagination-active-bg !default; +$pager-active-color: $pagination-active-color !default; + +$pager-disabled-color: $pagination-disabled-color !default; + + +//== Jumbotron +// +//## + +$jumbotron-padding: 30px !default; +$jumbotron-color: inherit !default; +$jumbotron-bg: #f9f9f9 !default; +$jumbotron-heading-color: $headings-color !default; +$jumbotron-font-size: ceil(($font-size-base * 1.5)) !default; +$jumbotron-heading-font-size: ceil(($font-size-base * 4.5)) !default; + + +//== Form states and alerts +// +//## Define colors for form feedback states and, by default, alerts. + +$state-success-text: $brand-success !default; +$state-success-bg: #dff0d8 !default; +$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) !default; + +$state-info-text: $brand-info !default; +$state-info-bg: #e1bee7 !default; +$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) !default; + +$state-warning-text: $brand-warning !default; +$state-warning-bg: #ffe0b2 !default; +$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) !default; + +$state-danger-text: $brand-danger !default; +$state-danger-bg: #f9bdbb !default; +$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) !default; + + +//== Tooltips +// +//## + +//** Tooltip max width +$tooltip-max-width: 200px !default; +//** Tooltip text color +$tooltip-color: #fff !default; +//** Tooltip background color +$tooltip-bg: #727272 !default; +$tooltip-opacity: .9 !default; + +//** Tooltip arrow width +$tooltip-arrow-width: 5px !default; +//** Tooltip arrow color +$tooltip-arrow-color: $tooltip-bg !default; + + +//== Popovers +// +//## + +//** Popover body background color +$popover-bg: #fff !default; +//** Popover maximum width +$popover-max-width: 276px !default; +//** Popover border color +$popover-border-color: transparent !default; +//** Popover fallback border color +$popover-fallback-border-color: transparent !default; + +//** Popover title background color +$popover-title-bg: darken($popover-bg, 3%) !default; + +//** Popover arrow width +$popover-arrow-width: 10px !default; +//** Popover arrow color +$popover-arrow-color: $popover-bg !default; + +//** Popover outer arrow width +$popover-arrow-outer-width: ($popover-arrow-width + 1) !default; +//** Popover outer arrow color +$popover-arrow-outer-color: fadein($popover-border-color, 7.5%) !default; +//** Popover outer arrow fallback color +$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) !default; + + +//== Labels +// +//## + +//** Default label background color +$label-default-bg: $gray-light !default; +//** Primary label background color +$label-primary-bg: $brand-primary !default; +//** Success label background color +$label-success-bg: $brand-success !default; +//** Info label background color +$label-info-bg: $brand-info !default; +//** Warning label background color +$label-warning-bg: $brand-warning !default; +//** Danger label background color +$label-danger-bg: $brand-danger !default; + +//** Default label text color +$label-color: #fff !default; +//** Default text color of a linked label +$label-link-hover-color: #fff !default; + + +//== Modals +// +//## + +//** Padding applied to the modal body +$modal-inner-padding: 15px !default; + +//** Padding applied to the modal title +$modal-title-padding: 15px !default; +//** Modal title line-height +$modal-title-line-height: $line-height-base !default; + +//** Background color of modal content area +$modal-content-bg: #fff !default; +//** Modal content border color +$modal-content-border-color: transparent !default; +//** Modal content border color **for IE8** +$modal-content-fallback-border-color: #999 !default; + +//** Modal backdrop background color +$modal-backdrop-bg: #000 !default; +//** Modal backdrop opacity +$modal-backdrop-opacity: .5 !default; +//** Modal header border color +$modal-header-border-color: transparent !default; +//** Modal footer border color +$modal-footer-border-color: $modal-header-border-color !default; + +$modal-lg: 900px !default; +$modal-md: 600px !default; +$modal-sm: 300px !default; + + +//== Alerts +// +//## Define alert colors, border radius, and padding. + +$alert-padding: 15px !default; +$alert-border-radius: $border-radius-base !default; +$alert-link-font-weight: bold !default; + +$alert-success-bg: $state-success-bg !default; +$alert-success-text: $state-success-text !default; +$alert-success-border: $state-success-border !default; + +$alert-info-bg: $state-info-bg !default; +$alert-info-text: $state-info-text !default; +$alert-info-border: $state-info-border !default; + +$alert-warning-bg: $state-warning-bg !default; +$alert-warning-text: $state-warning-text !default; +$alert-warning-border: $state-warning-border !default; + +$alert-danger-bg: $state-danger-bg !default; +$alert-danger-text: $state-danger-text !default; +$alert-danger-border: $state-danger-border !default; + + +//== Progress bars +// +//## + +//** Background color of the whole progress component +$progress-bg: #f5f5f5 !default; +//** Progress bar text color +$progress-bar-color: #fff !default; +//** Variable for setting rounded corners on progress bar. +$progress-border-radius: $border-radius-base !default; + +//** Default progress bar color +$progress-bar-bg: $brand-primary !default; +//** Success progress bar color +$progress-bar-success-bg: $brand-success !default; +//** Warning progress bar color +$progress-bar-warning-bg: $brand-warning !default; +//** Danger progress bar color +$progress-bar-danger-bg: $brand-danger !default; +//** Info progress bar color +$progress-bar-info-bg: $brand-info !default; + + +//== List group +// +//## + +//** Background color on `.list-group-item` +$list-group-bg: #fff !default; +//** `.list-group-item` border color +$list-group-border: #ddd !default; +//** List group border radius +$list-group-border-radius: $border-radius-base !default; + +//** Background color of single list items on hover +$list-group-hover-bg: #f5f5f5 !default; +//** Text color of active list items +$list-group-active-color: $component-active-color !default; +//** Background color of active list items +$list-group-active-bg: $component-active-bg !default; +//** Border color of active list elements +$list-group-active-border: $list-group-active-bg !default; +//** Text color for content within active list items +$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default; + +//** Text color of disabled list items +$list-group-disabled-color: $gray-light !default; +//** Background color of disabled list items +$list-group-disabled-bg: $gray-lighter !default; +//** Text color for content within disabled list items +$list-group-disabled-text-color: $list-group-disabled-color !default; + +$list-group-link-color: #555 !default; +$list-group-link-hover-color: $list-group-link-color !default; +$list-group-link-heading-color: #333 !default; + + +//== Panels +// +//## + +$panel-bg: #fff !default; +$panel-body-padding: 15px !default; +$panel-heading-padding: 10px 15px !default; +$panel-footer-padding: $panel-heading-padding !default; +$panel-border-radius: $border-radius-base !default; + +//** Border color for elements within panels +$panel-inner-border: #ddd !default; +$panel-footer-bg: #f5f5f5 !default; + +$panel-default-text: $gray-dark !default; +$panel-default-border: #ddd !default; +$panel-default-heading-bg: #f5f5f5 !default; + +$panel-primary-text: #fff !default; +$panel-primary-border: $brand-primary !default; +$panel-primary-heading-bg: $brand-primary !default; + +$panel-success-text: #fff !default; +$panel-success-border: $state-success-border !default; +$panel-success-heading-bg: $brand-success !default; + +$panel-info-text: #fff !default; +$panel-info-border: $state-info-border !default; +$panel-info-heading-bg: $brand-info !default; + +$panel-warning-text: #fff !default; +$panel-warning-border: $state-warning-border !default; +$panel-warning-heading-bg: $brand-warning !default; + +$panel-danger-text: #fff !default; +$panel-danger-border: $state-danger-border !default; +$panel-danger-heading-bg: $brand-danger !default; + + +//== Thumbnails +// +//## + +//** Padding around the thumbnail image +$thumbnail-padding: 4px !default; +//** Thumbnail background color +$thumbnail-bg: $body-bg !default; +//** Thumbnail border color +$thumbnail-border: #ddd !default; +//** Thumbnail border radius +$thumbnail-border-radius: $border-radius-base !default; + +//** Custom text color for thumbnail captions +$thumbnail-caption-color: $text-color !default; +//** Padding around the thumbnail caption +$thumbnail-caption-padding: 9px !default; + + +//== Wells +// +//## + +$well-bg: #f9f9f9 !default; +$well-border: transparent !default; + + +//== Badges +// +//## + +$badge-color: #fff !default; +//** Linked badge text color on hover +$badge-link-hover-color: #fff !default; +$badge-bg: $gray-light !default; + +//** Badge text color in active nav link +$badge-active-color: $link-color !default; +//** Badge background color in active nav link +$badge-active-bg: #fff !default; + +$badge-font-weight: normal !default; +$badge-line-height: 1 !default; +$badge-border-radius: 10px !default; + + +//== Breadcrumbs +// +//## + +$breadcrumb-padding-vertical: 8px !default; +$breadcrumb-padding-horizontal: 15px !default; +//** Breadcrumb background color +$breadcrumb-bg: #f5f5f5 !default; +//** Breadcrumb text color +$breadcrumb-color: #ccc !default; +//** Text color of current page in the breadcrumb +$breadcrumb-active-color: $gray-light !default; +//** Textual separator for between breadcrumb elements +$breadcrumb-separator: "/" !default; + + +//== Carousel +// +//## + +$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default; + +$carousel-control-color: #fff !default; +$carousel-control-width: 15% !default; +$carousel-control-opacity: .5 !default; +$carousel-control-font-size: 20px !default; + +$carousel-indicator-active-bg: #fff !default; +$carousel-indicator-border-color: #fff !default; + +$carousel-caption-color: #fff !default; + + +//== Close +// +//## + +$close-font-weight: normal !default; +$close-color: #000 !default; +$close-text-shadow: none !default; + + +//== Code +// +//## + +$code-color: #c7254e !default; +$code-bg: #f9f2f4 !default; + +$kbd-color: #fff !default; +$kbd-bg: #333 !default; + +$pre-bg: #f5f5f5 !default; +$pre-color: $gray-dark !default; +$pre-border-color: #ccc !default; +$pre-scrollable-max-height: 340px !default; + + +//== Type +// +//## + +//** Horizontal offset for forms and lists. +$component-offset-horizontal: 180px !default; +//** Text muted color +$text-muted: $gray-light !default; +//** Abbreviations and acronyms border color +$abbr-border-color: $gray-light !default; +//** Headings small color +$headings-small-color: $gray-light !default; +//** Blockquote small color +$blockquote-small-color: $gray-light !default; +//** Blockquote font size +$blockquote-font-size: ($font-size-base * 1.25) !default; +//** Blockquote border color +$blockquote-border-color: $gray-lighter !default; +//** Page header border color +$page-header-border-color: $gray-lighter !default; +//** Width of horizontal description list titles +$dl-horizontal-offset: $component-offset-horizontal !default; +//** Point at which .dl-horizontal becomes horizontal +$dl-horizontal-breakpoint: $grid-float-breakpoint !default; +//** Horizontal line color. +$hr-border: $gray-lighter !default; \ No newline at end of file