├── .ruby-version
├── vendor
└── assets
│ ├── scss
│ ├── components
│ │ ├── _flex-video.scss
│ │ ├── _menu-icon.scss
│ │ ├── _float.scss
│ │ ├── _sticky.scss
│ │ ├── _progress-bar.scss
│ │ ├── _badge.scss
│ │ ├── _responsive-embed.scss
│ │ ├── _label.scss
│ │ ├── _thumbnail.scss
│ │ ├── _dropdown.scss
│ │ ├── _title-bar.scss
│ │ ├── _media-object.scss
│ │ ├── _callout.scss
│ │ ├── _card.scss
│ │ ├── _flex.scss
│ │ ├── _slider.scss
│ │ ├── _breadcrumbs.scss
│ │ ├── _tooltip.scss
│ │ └── _drilldown.scss
│ ├── util
│ │ ├── _util.scss
│ │ ├── _direction.scss
│ │ ├── _selector.scss
│ │ ├── _typography.scss
│ │ └── _flex.scss
│ ├── motion-ui
│ │ ├── util
│ │ │ ├── _animation.scss
│ │ │ ├── _args.scss
│ │ │ ├── _selector.scss
│ │ │ ├── _string.scss
│ │ │ ├── _transition.scss
│ │ │ ├── _unit.scss
│ │ │ ├── _series.scss
│ │ │ └── _function.scss
│ │ ├── effects
│ │ │ ├── _zoom.scss
│ │ │ ├── _wiggle.scss
│ │ │ ├── _shake.scss
│ │ │ ├── _fade.scss
│ │ │ ├── _spin.scss
│ │ │ ├── _slide.scss
│ │ │ └── _hinge.scss
│ │ ├── motion-ui.scss
│ │ ├── transitions
│ │ │ ├── _fade.scss
│ │ │ ├── _spin.scss
│ │ │ ├── _slide.scss
│ │ │ ├── _zoom.scss
│ │ │ └── _hinge.scss
│ │ ├── _settings.scss
│ │ └── _classes.scss
│ ├── typography
│ │ ├── _alignment.scss
│ │ ├── _typography.scss
│ │ └── _print.scss
│ ├── prototype
│ │ ├── _box.scss
│ │ ├── _arrow.scss
│ │ ├── _border-box.scss
│ │ ├── _border-none.scss
│ │ ├── _rotate.scss
│ │ ├── _shadow.scss
│ │ ├── _display.scss
│ │ ├── _text-decoration.scss
│ │ ├── _text-transformation.scss
│ │ ├── _bordered.scss
│ │ ├── _rounded.scss
│ │ ├── _sizing.scss
│ │ ├── _prototype.scss
│ │ ├── _text-utilities.scss
│ │ ├── _overflow.scss
│ │ ├── _font-styling.scss
│ │ ├── _separator.scss
│ │ ├── _list-style-type.scss
│ │ └── _position.scss
│ ├── grid
│ │ ├── _size.scss
│ │ ├── _grid.scss
│ │ ├── _layout.scss
│ │ ├── _gutter.scss
│ │ ├── _column.scss
│ │ ├── _position.scss
│ │ └── _row.scss
│ ├── forms
│ │ ├── _help-text.scss
│ │ ├── _forms.scss
│ │ ├── _checkbox.scss
│ │ ├── _fieldset.scss
│ │ ├── _label.scss
│ │ ├── _progress.scss
│ │ ├── _select.scss
│ │ ├── _error.scss
│ │ ├── _meter.scss
│ │ └── _input-group.scss
│ └── xy-grid
│ │ ├── _grid.scss
│ │ ├── _xy-grid.scss
│ │ ├── _gutters.scss
│ │ ├── _layout.scss
│ │ ├── _collapse.scss
│ │ ├── _position.scss
│ │ └── _frame.scss
│ ├── _vendor
│ └── sassy-lists
│ │ └── stylesheets
│ │ ├── helpers
│ │ ├── _true.scss
│ │ └── _missing-dependencies.scss
│ │ └── functions
│ │ ├── _to-list.scss
│ │ ├── _contain.scss
│ │ ├── _remove.scss
│ │ ├── _purge.scss
│ │ └── _replace.scss
│ └── js
│ └── plugins
│ ├── foundation.util.imageLoader.min.js
│ ├── foundation.util.timer.min.js
│ ├── foundation.util.nest.min.js
│ ├── foundation.util.motion.min.js
│ ├── foundation.util.box.min.js
│ └── foundation.util.keyboard.min.js
├── lib
├── foundation-rails.rb
├── foundation
│ ├── rails.rb
│ └── rails
│ │ ├── version.rb
│ │ └── engine.rb
└── generators
│ └── foundation
│ ├── templates
│ ├── browserslist
│ ├── application.html.slim
│ ├── application.html.haml
│ ├── application.html.erb
│ └── foundation_and_overrides.scss
│ └── install_generator.rb
├── config
└── routes.rb
├── Gemfile
├── bower.json
├── gemfiles
├── rails_4.1.gemfile
├── rails_4.2.gemfile
├── rails_5.0.gemfile
├── rails_5.1.gemfile
├── rails_5.2.gemfile
└── rails_7.1.gemfile
├── .gitignore
├── app
└── controllers
│ └── foundation
│ └── rails
│ └── styleguide_controller.rb
├── Appraisals
├── spec
├── spec_helper.rb
├── support
│ └── helpers.rb
└── features
│ └── generator_spec.rb
├── .travis.yml
├── LICENSE.txt
├── foundation-rails.gemspec
├── Rakefile
└── README.md
/.ruby-version:
--------------------------------------------------------------------------------
1 | 3.2.2
2 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_flex-video.scss:
--------------------------------------------------------------------------------
1 | @import 'responsive-embed';
2 |
--------------------------------------------------------------------------------
/lib/foundation-rails.rb:
--------------------------------------------------------------------------------
1 | require 'foundation/rails'
2 | require 'sprockets/es6'
3 |
--------------------------------------------------------------------------------
/config/routes.rb:
--------------------------------------------------------------------------------
1 | Foundation::Rails::Engine.routes.draw do
2 | root :to => "styleguide#show"
3 | end
--------------------------------------------------------------------------------
/lib/foundation/rails.rb:
--------------------------------------------------------------------------------
1 | require 'foundation/rails/engine'
2 | require 'foundation/rails/version'
3 |
--------------------------------------------------------------------------------
/lib/generators/foundation/templates/browserslist:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | ie >= 9
3 | Android >= 2.3
4 | ios >= 7
5 |
--------------------------------------------------------------------------------
/lib/foundation/rails/version.rb:
--------------------------------------------------------------------------------
1 | module Foundation
2 | module Rails
3 | VERSION = "6.9.0.0"
4 | end
5 | end
6 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 | gemspec
3 |
4 | gem 'rails'
5 | gem 'sassc'
6 | gem 'railties'
7 | gem 'sprockets-es6'
8 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "foundation-rails",
3 | "version": "6.9.0.0",
4 | "dependencies": {
5 | "foundation-sites": "6.9.0",
6 | "motion-ui": "2.0.8"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/lib/foundation/rails/engine.rb:
--------------------------------------------------------------------------------
1 | require 'rails'
2 |
3 | module Foundation
4 | module Rails
5 | class Engine < ::Rails::Engine
6 | isolate_namespace Foundation::Rails
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/gemfiles/rails_4.1.gemfile:
--------------------------------------------------------------------------------
1 | # This file was generated by Appraisal
2 |
3 | source "https://rubygems.org"
4 |
5 | gem "rails", "~> 4.1"
6 | gem "sass"
7 | gem "railties"
8 | gem "sprockets-es6"
9 |
10 | gemspec path: "../"
11 |
--------------------------------------------------------------------------------
/gemfiles/rails_4.2.gemfile:
--------------------------------------------------------------------------------
1 | # This file was generated by Appraisal
2 |
3 | source "https://rubygems.org"
4 |
5 | gem "rails", "~> 4.2"
6 | gem "sass"
7 | gem "railties"
8 | gem "sprockets-es6"
9 |
10 | gemspec path: "../"
11 |
--------------------------------------------------------------------------------
/gemfiles/rails_5.0.gemfile:
--------------------------------------------------------------------------------
1 | # This file was generated by Appraisal
2 |
3 | source "https://rubygems.org"
4 |
5 | gem "rails", "~> 5.0"
6 | gem "sass"
7 | gem "railties"
8 | gem "sprockets-es6"
9 |
10 | gemspec path: "../"
11 |
--------------------------------------------------------------------------------
/gemfiles/rails_5.1.gemfile:
--------------------------------------------------------------------------------
1 | # This file was generated by Appraisal
2 |
3 | source "https://rubygems.org"
4 |
5 | gem "rails", "~> 5.1"
6 | gem "sass"
7 | gem "railties"
8 | gem "sprockets-es6"
9 |
10 | gemspec path: "../"
11 |
--------------------------------------------------------------------------------
/gemfiles/rails_5.2.gemfile:
--------------------------------------------------------------------------------
1 | # This file was generated by Appraisal
2 |
3 | source "https://rubygems.org"
4 |
5 | gem "rails", "~> 5.2"
6 | gem "sass"
7 | gem "railties"
8 | gem "sprockets-es6"
9 |
10 | gemspec path: "../"
11 |
--------------------------------------------------------------------------------
/gemfiles/rails_7.1.gemfile:
--------------------------------------------------------------------------------
1 | # This file was generated by Appraisal
2 |
3 | source "https://rubygems.org"
4 |
5 | gem "rails", "~> 7.1"
6 | gem "sassc"
7 | gem "railties"
8 | gem "sprockets-es6"
9 |
10 | gemspec path: "../"
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.gem
2 | *.rbc
3 | .bundle
4 | .config
5 | .yardoc
6 | InstalledFiles
7 | _yardoc
8 | coverage
9 | doc/
10 | lib/bundler/man
11 | pkg
12 | rdoc
13 | spec/reports
14 | test/tmp
15 | test/version_tmp
16 | tmp
17 | /bower_components/*
18 | *.swp
19 |
--------------------------------------------------------------------------------
/app/controllers/foundation/rails/styleguide_controller.rb:
--------------------------------------------------------------------------------
1 | module Foundation
2 | module Rails
3 | class StyleguideController < ::ActionController::Base
4 | layout false
5 | def show
6 |
7 | end
8 | end
9 | end
10 | end
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_menu-icon.scss:
--------------------------------------------------------------------------------
1 | @mixin foundation-menu-icon {
2 | .menu-icon {
3 | @include hamburger($color: $titlebar-icon-color, $color-hover: $titlebar-icon-color-hover);
4 | }
5 |
6 | .menu-icon.dark {
7 | @include hamburger;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/vendor/assets/scss/util/_util.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | @import 'math';
6 | @import 'unit';
7 | @import 'value';
8 | @import 'direction';
9 | @import 'color';
10 | @import 'selector';
11 | @import 'flex';
12 | @import 'breakpoint';
13 | @import 'mixins';
14 | @import 'typography';
15 |
--------------------------------------------------------------------------------
/vendor/assets/_vendor/sassy-lists/stylesheets/helpers/_true.scss:
--------------------------------------------------------------------------------
1 | ///
2 | /// Returns truthiness of `$value`.
3 | ///
4 | /// @access private
5 | ///
6 | /// @param {*} $value - value to check
7 | ///
8 | /// @return {Bool}
9 | ///
10 |
11 | @function sl-is-true($value) {
12 | @return if($value == null, false, $value and $value != null and $value != '' and $value != ());
13 | }
14 |
--------------------------------------------------------------------------------
/Appraisals:
--------------------------------------------------------------------------------
1 | appraise 'rails_4.1' do
2 | gem 'rails', '~> 4.1'
3 | end
4 |
5 | appraise 'rails_4.2' do
6 | gem 'rails', '~> 4.2'
7 | end
8 |
9 | appraise 'rails_5.0' do
10 | gem 'rails', '~> 5.0'
11 | end
12 |
13 | appraise 'rails_5.1' do
14 | gem 'rails', '~> 5.1'
15 | end
16 |
17 | appraise 'rails_5.2' do
18 | gem 'rails', '~> 5.2'
19 | end
20 |
21 | appraise 'rails_7.1' do
22 | gem 'rails', '~> 7.1'
23 | end
24 |
--------------------------------------------------------------------------------
/spec/spec_helper.rb:
--------------------------------------------------------------------------------
1 | require 'capybara/rspec'
2 | require 'bundler/setup'
3 |
4 | Bundler.require(:default, :test)
5 |
6 | Dir['./spec/support/**/*.rb'].each { |file| require file }
7 |
8 | RSpec.configure do |config|
9 | config.include FoundationRailsTestHelpers
10 |
11 | config.before(:all) do
12 | create_dummy_app
13 | install_foundation
14 | end
15 |
16 | config.after(:all) do
17 | remove_dummy_app
18 | end
19 | end
20 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/util/_animation.scss:
--------------------------------------------------------------------------------
1 | /// Creates a keyframe from one or more effect functions and assigns it to the element by adding the `animation-name` property.
2 | /// @param {Arglist} $effects... - One or more effect functions to build the keyframe with.
3 | @mixin mui-animation($args...) {
4 | $name: map-get(-mui-process-args($args...), name);
5 | animation-name: unquote($name);
6 | @include mui-keyframes($name, $args...);
7 | }
8 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/util/_args.scss:
--------------------------------------------------------------------------------
1 | /// Processes a series of keyframe function arguments.
2 | /// @access private
3 | @function -mui-process-args($args...) {
4 | @if length($args) == 1 {
5 | $arg: nth($args, 1);
6 |
7 | @if -mui-is-function($arg) {
8 | @return -mui-safe-call($arg);
9 | } @else if type-of($arg) == 'map' {
10 | @return $arg;
11 | }
12 | }
13 |
14 | @return -mui-keyframe-combine($args...);
15 | }
16 |
--------------------------------------------------------------------------------
/lib/generators/foundation/templates/application.html.slim:
--------------------------------------------------------------------------------
1 | doctype html
2 | html lang="en"
3 | head
4 | meta charset="utf-8"
5 | meta name="viewport" content="width=device-width, initial-scale=1.0"
6 |
7 | title == content_for?(:title) ? yield(:title) : "Untitled"
8 |
9 | = stylesheet_link_tag "application"
10 | = javascript_include_tag "application", "data-turbolinks-track" => true
11 | = csrf_meta_tag
12 |
13 | body
14 |
15 | == yield
16 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: ruby
2 | sudo: false
3 | cache: bundler
4 |
5 | rvm:
6 | - 2.3.8
7 | - 2.4.5
8 | - 2.5.3
9 | - 3.2.2
10 |
11 | gemfile:
12 | - gemfiles/rails_4.1.gemfile
13 | - gemfiles/rails_4.2.gemfile
14 | - gemfiles/rails_5.0.gemfile
15 | - gemfiles/rails_5.1.gemfile
16 | - gemfiles/rails_5.2.gemfile
17 | - gemfiles/rails_7.1.gemfile
18 |
19 | before_install:
20 | - gem update --system --no-doc
21 | - gem install bundler
22 |
23 | notifications:
24 | email: false
25 |
--------------------------------------------------------------------------------
/lib/generators/foundation/templates/application.html.haml:
--------------------------------------------------------------------------------
1 | !!! 5
2 | %html{ :lang => "en" }
3 | %head
4 | %meta{ :charset => "utf-8" }
5 |
6 | %meta{ :name => "viewport", :content => "width=device-width, initial-scale=1.0" }
7 |
8 | %title= content_for?(:title) ? yield(:title) : "Untitled"
9 |
10 | = stylesheet_link_tag "application"
11 | = javascript_include_tag "application", "data-turbolinks-track" => true
12 | = csrf_meta_tag
13 |
14 | %body
15 |
16 | = yield
17 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_float.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group float
7 | ////
8 |
9 | @mixin foundation-float-classes {
10 | .float-left {
11 | float: left !important;
12 | }
13 |
14 | .float-right {
15 | float: right !important;
16 | }
17 |
18 | .float-center {
19 | display: block;
20 | margin-right: auto;
21 | margin-left: auto;
22 | }
23 |
24 | .clearfix {
25 | @include clearfix;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/generators/foundation/templates/application.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | <%%= content_for?(:title) ? yield(:title) : "Untitled" %>
8 |
9 | <%%= stylesheet_link_tag "application" %>
10 | <%%= javascript_include_tag "application", 'data-turbolinks-track' => true %>
11 | <%%= csrf_meta_tags %>
12 |
13 |
14 |
15 |
16 | <%%= yield %>
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/effects/_zoom.scss:
--------------------------------------------------------------------------------
1 | /// Creates a scaling transition. A scale of `1` means the element is the same size. Larger numbers make the element bigger, while numbers less than 1 make the element smaller.
2 | /// @param {Number} $from [0] - Size to start at.
3 | /// @param {Number} $to [1] - Size to end at.
4 | @function zoom(
5 | $from: 0,
6 | $to: 1
7 | ) {
8 | $keyframes: (
9 | name: -mui-string-safe('scale-#{$to}-to-#{$from}'),
10 | 0: (transform: scale($from)),
11 | 100: (transform: scale($to)),
12 | );
13 |
14 | @return $keyframes;
15 | }
16 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/effects/_wiggle.scss:
--------------------------------------------------------------------------------
1 | /// Creates a wiggling animation.
2 | /// @param {Number} $intensity [7deg] - Intensity of the wiggle. Can be any CSS angle unit.
3 | /// @return {Map} A keyframes map that can be used with the `generate-keyframes()` mixin.
4 | @function wiggle($intensity: 7deg) {
5 | $keyframes: (
6 | name: -mui-string-safe('wiggle-#{$intensity}'),
7 | (40, 50, 60): (transform: rotate($intensity)),
8 | (35, 45, 55, 65): (transform: rotate(-$intensity)),
9 | (0, 30, 70, 100): (transform: rotate(0)),
10 | );
11 |
12 | @return $keyframes;
13 | }
14 |
--------------------------------------------------------------------------------
/vendor/assets/scss/typography/_alignment.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | @mixin foundation-text-alignment {
6 | @each $size in $breakpoint-classes {
7 | @include breakpoint($size) {
8 | @each $align in (left, right, center, justify) {
9 | @if $size != $-zf-zero-breakpoint {
10 | .#{$size}-text-#{$align} {
11 | text-align: $align;
12 | }
13 | }
14 | @else {
15 | .text-#{$align} {
16 | text-align: $align;
17 | }
18 | }
19 | }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/effects/_shake.scss:
--------------------------------------------------------------------------------
1 | /// Creates a shaking animation.
2 | /// @param {Percentage} $intensity [7%] - Intensity of the shake, as a percentage value.
3 | /// @return {Map} A keyframes map that can be used with the `generate-keyframes()` mixin.
4 | @function shake($intensity: 7%) {
5 | $right: (0, 10, 20, 30, 40, 50, 60, 70, 80, 90);
6 | $left: (5, 15, 25, 35, 45, 55, 65, 75, 85, 95);
7 |
8 | $keyframes: (
9 | name: -mui-string-safe('shake-#{$intensity}'),
10 | $right: (transform: translateX($intensity)),
11 | $left: (transform: translateX(-$intensity)),
12 | );
13 |
14 | @return $keyframes;
15 | }
16 |
--------------------------------------------------------------------------------
/vendor/assets/scss/typography/_typography.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group typography
7 | ////
8 |
9 | // Base typography styles (tags only)
10 | @import 'base';
11 |
12 | // Typography helper classes (classes only)
13 | @import 'helpers';
14 |
15 | // Text alignment classes
16 | @import 'alignment';
17 |
18 | // Print styles
19 | @import 'print';
20 |
21 | @mixin foundation-typography {
22 | @include foundation-typography-base;
23 | @include foundation-typography-helpers;
24 | @include foundation-text-alignment;
25 | @include foundation-print-styles;
26 | }
27 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_box.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-box
7 | ////
8 |
9 | /// Box Mixin: Easily create a square, rectangle or a circle
10 | /// @param {Number} $width[] Width of the box
11 | /// @param {Number} $height[$width] Height of the box, defaults to `$width` to easily make a square
12 | /// @param {Boolean} $circle[false] Makes the box a circle, by default `false`.
13 | @mixin box(
14 | $width,
15 | $height: $width,
16 | $circle: false
17 | ) {
18 | width: $width;
19 | height: $height;
20 | @if $circle {
21 | border-radius: 50% !important;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/vendor/assets/scss/grid/_size.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group grid
7 | ////
8 |
9 | /// Set the width of a grid column.
10 | ///
11 | /// @param {Number|List} $width [$grid-column-count] - Width to make the column. You can pass in any value accepted by the `grid-column()` function, such as `6`, `50%`, or `1 of 2`.
12 | @mixin grid-column-size(
13 | $columns: $grid-column-count
14 | ) {
15 | width: grid-column($columns);
16 | }
17 |
18 | /// Shorthand for `grid-column-size()`.
19 | /// @alias grid-column-size
20 | @mixin grid-col-size(
21 | $columns: $grid-column-count
22 | ) {
23 | @include grid-column-size($columns);
24 | }
25 |
--------------------------------------------------------------------------------
/vendor/assets/_vendor/sassy-lists/stylesheets/functions/_to-list.scss:
--------------------------------------------------------------------------------
1 | ///
2 | /// Casts `$value` into a list.
3 | ///
4 | /// @ignore Documentation: http://at-import.github.io/SassyLists/documentation/#function-sl-to-list
5 | ///
6 | /// @param {*} $value - value to cast to list
7 | /// @param {String} $separator [space] - separator to use
8 | ///
9 | /// @example
10 | /// sl-to-list(a b c, comma)
11 | /// // a, b, c
12 | ///
13 | /// @return {List}
14 | ///
15 |
16 | @function sl-to-list($value, $separator: list-separator($value)) {
17 | @return join((), $value, $separator);
18 | }
19 |
20 | ///
21 | /// @requires sl-to-list
22 | /// @alias sl-to-list
23 | ///
24 |
25 | @function sl-listify($value) {
26 | @return sl-to-list($value);
27 | }
28 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_sticky.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | @mixin foundation-sticky {
6 | .sticky-container {
7 | position: relative;
8 | }
9 |
10 | .sticky {
11 | position: relative;
12 | z-index: 0;
13 | transform: translate3d(0, 0, 0);
14 | }
15 |
16 | .sticky.is-stuck {
17 | position: fixed;
18 | z-index: 5;
19 | width: 100%;
20 |
21 | &.is-at-top {
22 | top: 0;
23 | }
24 |
25 | &.is-at-bottom {
26 | bottom: 0;
27 | }
28 | }
29 |
30 | .sticky.is-anchored {
31 | position: relative;
32 | right: auto;
33 | left: auto;
34 |
35 | &.is-at-bottom {
36 | bottom: 0;
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/effects/_fade.scss:
--------------------------------------------------------------------------------
1 | /// Creates a fading animation.
2 | /// @param {Number} $from [0] - Opacity to start at.
3 | /// @param {Number} $to [1] - Opacity to end at.
4 | /// @return {Map} A keyframes map that can be used with the `generate-keyframes()` mixin.
5 | @function fade(
6 | $from: 0,
7 | $to: 1
8 | ) {
9 | $type: type-of($from);
10 | $keyframes: ();
11 |
12 | @if $type == 'string' {
13 | @if $from == in {
14 | $from: 0;
15 | $to: 1;
16 | } @else if $from == out {
17 | $from: 1;
18 | $to: 0;
19 | }
20 | }
21 |
22 | $keyframes: (
23 | name: -mui-string-safe('fade-#{$from}-to-#{$to}'),
24 | 0: (opacity: $from),
25 | 100: (opacity: $to),
26 | );
27 |
28 | @return $keyframes;
29 | }
30 |
--------------------------------------------------------------------------------
/vendor/assets/scss/forms/_help-text.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group forms
7 | ////
8 |
9 | /// Default color for help text.
10 | /// @type Color
11 | $helptext-color: $black !default;
12 |
13 | /// Default font size for help text.
14 | /// @type Number
15 | $helptext-font-size: rem-calc(13) !default;
16 |
17 | /// Default font style for help text.
18 | /// @type Keyword
19 | $helptext-font-style: italic !default;
20 |
21 | @mixin foundation-form-helptext {
22 | .help-text {
23 | $margin-top: ($form-spacing * 0.5) * -1;
24 |
25 | margin-top: $margin-top;
26 | font-size: $helptext-font-size;
27 | font-style: $helptext-font-style;
28 | color: $helptext-color;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/assets/_vendor/sassy-lists/stylesheets/functions/_contain.scss:
--------------------------------------------------------------------------------
1 | ///
2 | /// Returns whether `$list` contains `$value`.
3 | ///
4 | /// @ignore Documentation: http://at-import.github.io/SassyLists/documentation/#function-sl-contain
5 | ///
6 | /// @param {List} $list - list to check
7 | /// @param {*} $value - value to look for
8 | ///
9 | /// @example
10 | /// sl-contain(a b c, a)
11 | /// // true
12 | ///
13 | /// @example
14 | /// sl-contain(a b c, z)
15 | /// // false
16 | ///
17 | /// @return {Bool}
18 | ///
19 |
20 | @function sl-contain($list, $value) {
21 | @return not not index($list, $value);
22 | }
23 |
24 | ///
25 | /// @requires sl-contain
26 | /// @alias sl-contain
27 | ///
28 |
29 | @function sl-include($list, $value) {
30 | @return sl-contain($list, $value);
31 | }
32 |
--------------------------------------------------------------------------------
/vendor/assets/_vendor/sassy-lists/stylesheets/functions/_remove.scss:
--------------------------------------------------------------------------------
1 | ///
2 | /// Removes value(s) `$value` from `$list`.
3 | ///
4 | /// @ignore Documentation: http://at-import.github.io/SassyLists/documentation/#function-sl-remove
5 | ///
6 | /// @requires sl-replace
7 | ///
8 | /// @param {List} $list - list to update
9 | /// @param {*} $value - value to remove
10 | ///
11 | /// @example
12 | /// sl-remove(a b c, a)
13 | /// // b c
14 | ///
15 | /// @return {List}
16 | ///
17 |
18 | @function sl-remove($list, $value) {
19 | $_: sl-missing-dependencies('sl-replace');
20 |
21 | @return sl-replace($list, $value, null);
22 | }
23 |
24 | ///
25 | /// @requires sl-remove
26 | /// @alias sl-remove
27 | ///
28 |
29 | @function sl-without($list, $value) {
30 | @return sl-remove($list, $value);
31 | }
32 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/motion-ui.scss:
--------------------------------------------------------------------------------
1 | // Motion UI by ZURB
2 | // foundation.zurb.com/motion-ui
3 | // Licensed under MIT Open Source
4 |
5 | @import 'settings';
6 |
7 | @import 'util/animation';
8 | @import 'util/args';
9 | @import 'util/function';
10 | @import 'util/keyframe';
11 | @import 'util/selector';
12 | @import 'util/series';
13 | @import 'util/transition';
14 | @import 'util/unit';
15 | @import 'util/string';
16 |
17 | @import 'effects/fade';
18 | @import 'effects/hinge';
19 | @import 'effects/spin';
20 | @import 'effects/zoom';
21 | @import 'effects/shake';
22 | @import 'effects/slide';
23 | @import 'effects/wiggle';
24 |
25 | @import 'transitions/fade';
26 | @import 'transitions/hinge';
27 | @import 'transitions/zoom';
28 | @import 'transitions/slide';
29 | @import 'transitions/spin';
30 |
31 | @import 'classes';
32 |
--------------------------------------------------------------------------------
/vendor/assets/_vendor/sassy-lists/stylesheets/helpers/_missing-dependencies.scss:
--------------------------------------------------------------------------------
1 | ///
2 | /// Checks whether `$functions` exist in global scope.
3 | ///
4 | /// @access private
5 | ///
6 | /// @param {ArgList} $functions - list of functions to check for
7 | ///
8 | /// @return {Bool} Whether or not there are missing dependencies
9 | ///
10 |
11 | @function sl-missing-dependencies($functions...) {
12 | $missing-dependencies: ();
13 |
14 | @each $function in $functions {
15 | @if not function-exists($function) {
16 | $missing-dependencies: append($missing-dependencies, $function, comma);
17 | }
18 | }
19 |
20 | @if length($missing-dependencies) > 0 {
21 | @error 'Unmet dependencies! The following functions are required: #{$missing-dependencies}.';
22 | }
23 |
24 | @return length($missing-dependencies) > 0;
25 | }
26 |
--------------------------------------------------------------------------------
/vendor/assets/scss/forms/_forms.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group forms
7 | ////
8 |
9 | /// Global spacing for form elements.
10 | /// @type Number
11 | $form-spacing: rem-calc(16) !default;
12 |
13 | @import 'text';
14 | @import 'checkbox';
15 | @import 'label';
16 | @import 'help-text';
17 | @import 'input-group';
18 | @import 'fieldset';
19 | @import 'select';
20 | @import 'range';
21 | @import 'progress';
22 | @import 'meter';
23 | @import 'error';
24 |
25 | @mixin foundation-forms {
26 | @include foundation-form-text;
27 | @include foundation-form-checkbox;
28 | @include foundation-form-label;
29 | @include foundation-form-helptext;
30 | @include foundation-form-prepostfix;
31 | @include foundation-form-fieldset;
32 | @include foundation-form-select;
33 | @include foundation-form-error;
34 | }
35 |
--------------------------------------------------------------------------------
/spec/support/helpers.rb:
--------------------------------------------------------------------------------
1 | module FoundationRailsTestHelpers
2 | def create_dummy_app
3 | FileUtils.cd(tmp_path) do
4 | %x(rails new dummy --skip-active-record --skip-test-unit --skip-spring --skip-bundle)
5 | File.open(dummy_app_path + '/Gemfile', 'a') do |f|
6 | f.puts "gem 'foundation-rails', path: '#{File.join(File.dirname(__FILE__), '..', '..')}'"
7 | end
8 | end
9 | FileUtils.cd(dummy_app_path) do
10 | %x(bundle install)
11 | end
12 | end
13 |
14 | def remove_dummy_app
15 | FileUtils.rm_rf(dummy_app_path)
16 | end
17 |
18 | def install_foundation
19 | FileUtils.cd(dummy_app_path) do
20 | puts %x(rails g foundation:install -f 2>&1)
21 | end
22 | end
23 |
24 | def dummy_app_path
25 | File.join(tmp_path, 'dummy')
26 | end
27 |
28 | def tmp_path
29 | @tmp_path ||= File.join(File.dirname(__FILE__), '..')
30 | end
31 | end
32 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_arrow.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-arrow
7 | ////
8 |
9 | /// Map containing all the `arrow` direction
10 | /// @type Map
11 | $prototype-arrow-directions: (
12 | down,
13 | up,
14 | right,
15 | left
16 | ) !default;
17 |
18 | /// Width of the Arrow, `0.4375rem` by default.
19 | /// @type Number
20 | $prototype-arrow-size: 0.4375rem;
21 |
22 | /// Color of the Arrow, `$black` by default.
23 | /// @type Color
24 | $prototype-arrow-color: $black;
25 |
26 | @mixin foundation-prototype-arrow {
27 | @each $prototype-arrow-direction in $prototype-arrow-directions {
28 | .arrow-#{$prototype-arrow-direction} {
29 | @include css-triangle(
30 | $prototype-arrow-size,
31 | $prototype-arrow-color,
32 | $prototype-arrow-direction
33 | );
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/assets/_vendor/sassy-lists/stylesheets/functions/_purge.scss:
--------------------------------------------------------------------------------
1 | /// Removes all false and null values from `$list`.
2 | ///
3 | /// @ignore Documentation: http://at-import.github.io/SassyLists/documentation/#function-sl-purge
4 | ///
5 | /// @requires sl-is-true
6 | /// @requires sl-to-list
7 | ///
8 | /// @param {List} $list - list to purge
9 | ///
10 | /// @example
11 | /// sl-purge(null a false b)
12 | /// // a b
13 | ///
14 | /// @return {List}
15 | ///
16 |
17 | @function sl-purge($list) {
18 | $_: sl-missing-dependencies('sl-is-true', 'sl-to-list');
19 |
20 | $result: ();
21 |
22 | @each $item in $list {
23 | @if sl-is-true($item) {
24 | $result: append($result, $item, list-separator($list));
25 | }
26 | }
27 |
28 | @return sl-to-list($result);
29 | }
30 |
31 | ///
32 | /// @requires sl-purge
33 | /// @alias sl-purge
34 | ///
35 |
36 | @function sl-clean($list) {
37 | @return sl-purge($list);
38 | }
39 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_border-box.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-border-box
7 | ////
8 |
9 | /// Responsive breakpoints for border box.
10 | /// @type Boolean
11 | $prototype-border-box-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Border box utility
14 | @mixin border-box {
15 | box-sizing: border-box !important;
16 | }
17 |
18 | @mixin foundation-prototype-border-box {
19 | .border-box {
20 | @include border-box;
21 | }
22 |
23 | @if ($prototype-border-box-breakpoints) {
24 | // Loop through Responsive Breakpoints
25 | @each $size in $breakpoint-classes {
26 | @include breakpoint($size) {
27 | @if $size != $-zf-zero-breakpoint {
28 | .#{$size}-border-box {
29 | @include border-box;
30 | }
31 | }
32 | }
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_border-none.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-border-none
7 | ////
8 |
9 | /// Responsive breakpoints for border none.
10 | /// @type Boolean
11 | $prototype-border-none-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Border none utility
14 | @mixin border-none {
15 | border: 0 !important;
16 | }
17 |
18 | @mixin foundation-prototype-border-none {
19 | .border-none {
20 | @include border-none;
21 | }
22 |
23 | @if ($prototype-border-none-breakpoints) {
24 | // Loop through Responsive Breakpoints
25 | @each $size in $breakpoint-classes {
26 | @include breakpoint($size) {
27 | @if $size != $-zf-zero-breakpoint {
28 | .#{$size}-border-none {
29 | @include border-none;
30 | }
31 | }
32 | }
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/vendor/assets/scss/util/_direction.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group functions
7 | ////
8 |
9 | /// Returns the opposite direction of $dir
10 | ///
11 | /// @param {Keyword} $dir - Used direction between "top", "right", "bottom" and "left".
12 | /// @return {Keyword} Opposite direction of $dir
13 | @function direction-opposite(
14 | $dir
15 | ) {
16 | $dirs: (top, right, bottom, left);
17 | $place: index($dirs, $dir);
18 |
19 | @if $place == null {
20 | @error 'direction-opposite: Invalid $dir parameter, expected a value from "#{$dirs}", found "#{$dir}".';
21 | @return null;
22 | }
23 |
24 | // Calculate the opposite place in a circle, with a starting index of 1
25 | $length: length($dirs);
26 | $demi: $length * 0.5;
27 | $opposite-place: (($place + $demi - 1) % $length) + 1;
28 |
29 | @return nth($dirs, $opposite-place);
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/vendor/assets/scss/forms/_checkbox.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group forms
7 | ////
8 |
9 | @mixin foundation-form-checkbox {
10 | [type='file'],
11 | [type='checkbox'],
12 | [type='radio'] {
13 | margin: 0 0 $form-spacing;
14 | }
15 |
16 | // Styles for input/label siblings
17 | [type='checkbox'] + label,
18 | [type='radio'] + label {
19 | display: inline-block;
20 | vertical-align: baseline;
21 |
22 | margin-#{$global-left}: $form-spacing * 0.5;
23 | margin-#{$global-right}: $form-spacing;
24 | margin-bottom: 0;
25 |
26 | &[for] {
27 | cursor: pointer;
28 | }
29 | }
30 |
31 | // Styles for inputs inside labels
32 | label > [type='checkbox'],
33 | label > [type='radio'] {
34 | margin-#{$global-right}: $form-spacing * 0.5;
35 | }
36 |
37 | // Normalize file input width
38 | [type='file'] {
39 | width: 100%;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_rotate.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | // sass-lint:disable mixin-name-format
6 |
7 | ////
8 | /// @group prototype-rotate
9 | ////
10 |
11 | /// Rotate Mixin: Rotate an element to a certain deg
12 | /// @param {Number} $deg[] Degree of rotation
13 | @mixin rotate($deg) {
14 | transform: rotate($deg + deg);
15 | }
16 |
17 | /// RotateX Mixin: Rotate an element to a certain deg on X-Axis
18 | /// @param {Number} $deg[] Degree of rotation
19 | @mixin rotateX($deg) {
20 | transform: rotateX($deg + deg);
21 | }
22 |
23 | /// RotateY Mixin: Rotate an element to a certain deg on Y-Axis
24 | /// @param {Number} $deg[] Degree of rotation
25 | @mixin rotateY($deg) {
26 | transform: rotateY($deg + deg);
27 | }
28 |
29 | /// RotateZ Mixin: Rotate an element to a certain deg on Z-Axis
30 | /// @param {Number} $deg[] Degree of rotation
31 | @mixin rotateZ($deg) {
32 | transform: rotateZ($deg + deg);
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/assets/scss/util/_selector.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group functions
7 | ////
8 |
9 | /// Generates a selector with every text input type. You can also filter the list to only output a subset of those selectors.
10 | ///
11 | /// @param {List|Keyword} $types [()] - A list of text input types to use. Leave blank to use all of them.
12 | /// @param {Keyword} $modifier [''] - A modifier to be applied to each text input type (e.g. a class or a pseudo-class). Leave blank to ignore.
13 | @function text-inputs($types: (), $modifier: '') {
14 | $return: ();
15 |
16 | $all-types: text password date datetime datetime-local month week email number search tel time url color;
17 |
18 | @if not has-value($types) {
19 | $types: $all-types;
20 | }
21 |
22 | @each $type in $types {
23 | $return: append($return, unquote('[type=\'#{$type}\']#{$modifier}'), comma);
24 | }
25 |
26 | @return $return;
27 | }
28 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/util/_selector.scss:
--------------------------------------------------------------------------------
1 | /// Builds a selector for a motion class, using the settings defined in the `$motion-ui-classes` and `$motion-ui-states` maps.
2 | /// @param {String|List} $states - One or more strings that correlate to a state.
3 | /// @param {Boolean} $active - Defines if the selector is for the setup or active class.
4 | /// @return {String} A selector that can be interpolated into your Sass code.
5 | /// @access private
6 | @function -mui-build-selector($states, $active: false) {
7 | $return: '';
8 | $chain: map-get($motion-ui-classes, chain);
9 | $prefix: map-get($motion-ui-classes, prefix);
10 | $suffix: map-get($motion-ui-classes, active);
11 |
12 | @each $sel in $states {
13 | $return: $return + if($chain, '&.', '#{&}-') + $prefix + $sel;
14 |
15 | @if $active {
16 | $return: $return + if($chain, '.', '#{&}-') + $prefix + $sel + $suffix;
17 | }
18 |
19 | $return: $return + ', ';
20 | }
21 |
22 | @return str-slice($return, 1, -3);
23 | }
24 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/effects/_spin.scss:
--------------------------------------------------------------------------------
1 | /// Creates a spinning animation.
2 | /// @param {Keyword} $direction [null] - Direction to spin. Should be `cw` (clockwise) or `ccw` (counterclockwise). By default `cw` and `ccw` for `in` and `out` states respectively.
3 | /// @param {Number} $amount [360deg] - Amount to spin. Can be any CSS angle unit.
4 | /// @return {Map} A keyframes map that can be used with the `generate-keyframes()` mixin.
5 | @function spin(
6 | $state: in,
7 | $direction: null,
8 | $amount: 1turn
9 | ) {
10 | $start: 0;
11 | $end: 0;
12 | $direction: if($direction != null, $direction, if($state == in, cw, ccw));
13 |
14 | @if $state == in {
15 | $start: if($direction == ccw, $amount, $amount * -1);
16 | $end: 0;
17 | } @else {
18 | $start: 0;
19 | $end: if($direction == ccw, $amount * -1, $amount);
20 | }
21 |
22 | $keyframes: (
23 | name: -mui-string-safe('spin-#{$direction}-#{$amount}'),
24 | 0: (transform: rotate($start)),
25 | 100: (transform: rotate($end)),
26 | );
27 |
28 | @return $keyframes;
29 | }
30 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2017 ZURB Inc.
2 |
3 | MIT License
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | "Software"), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/vendor/assets/scss/util/_typography.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group functions
7 | ////
8 |
9 | $-zf-font-stack: (
10 | 'georgia': (Georgia, 'URW Bookman L', serif),
11 | 'helvetica': (Helvetica, Arial, 'Nimbus Sans L', sans-serif),
12 | 'lucida-grande': ('Lucida Grande', 'Lucida Sans Unicode', 'Bitstream Vera Sans', sans-serif),
13 | 'monospace': ('Courier New', Courier, 'Nimbus Sans L', monospace),
14 | 'system': (-apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif),
15 | 'verdana': (Verdana, Geneva, 'DejaVu Sans', sans-serif),
16 | );
17 |
18 | /// Return a font stack list from a map. Equivalent to `map-safe-get($name, $-zf-font-stack)`.
19 | ///
20 | /// @param {String} $stack - Name of the font stack.
21 | /// @param {Map} $map [$-zf-font-stack] - Map of font stacks to retrieve a list from.
22 | ///
23 | /// @returns {List} Found font stack.
24 | @function font-stack($stack, $map: $-zf-font-stack) {
25 | @return map-safe-get($map, $stack);
26 | }
27 |
--------------------------------------------------------------------------------
/vendor/assets/_vendor/sassy-lists/stylesheets/functions/_replace.scss:
--------------------------------------------------------------------------------
1 | ///
2 | /// Replaces `$old` by `$new` in `$list`.
3 | ///
4 | /// @ignore Documentation: http://at-import.github.io/SassyLists/documentation/#function-sl-replace
5 | ///
6 | /// @requires sl-is-true
7 | /// @requires sl-purge
8 | /// @requires sl-to-list
9 | ///
10 | /// @param {List} $list - list to update
11 | /// @param {*} $old - value to replace
12 | /// @param {*} $value - new value for $old
13 | ///
14 | /// @example
15 | /// sl-replace(a b c, b, z)
16 | /// // a z c
17 | ///
18 | /// @example
19 | /// sl-replace(a b c, y, z)
20 | /// // a b c
21 | ///
22 | /// @return {List}
23 | ///
24 |
25 | @function sl-replace($list, $old, $value) {
26 | $_: sl-missing-dependencies('sl-is-true', 'sl-purge', 'sl-to-list');
27 |
28 | $running: true;
29 |
30 | @while $running {
31 | $index: index($list, $old);
32 |
33 | @if not $index {
34 | $running: false;
35 | }
36 |
37 | @else {
38 | $list: set-nth($list, $index, $value);
39 | }
40 |
41 | }
42 |
43 | $list: if(sl-is-true($value), $list, sl-purge($list));
44 |
45 | @return sl-to-list($list);
46 | }
47 |
--------------------------------------------------------------------------------
/vendor/assets/scss/xy-grid/_grid.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group xy-grid
7 | ////
8 |
9 | /// Creates a max width container, designed to house your grid content.
10 | ///
11 | /// @param {Number} $width [$grid-container] - a width to limit the container to.
12 | /// @param {Number} $padding [$grid-container-padding] - paddings of the container.
13 | @mixin xy-grid-container(
14 | $width: $grid-container,
15 | $padding: $grid-container-padding
16 | ) {
17 | max-width: $width;
18 | margin-left: auto;
19 | margin-right: auto;
20 |
21 | @include xy-gutters($gutters: $padding, $gutter-type: padding);
22 | }
23 |
24 | /// Creates a container for your flex cells.
25 | ///
26 | /// @param {Keyword} $direction [horizontal] - Either horizontal or vertical direction of cells within.
27 | /// @param {Boolean} $wrap [true] - If the cells within should wrap or not.
28 | @mixin xy-grid(
29 | $direction: horizontal,
30 | $wrap: true
31 | ) {
32 | $direction: if($direction == 'horizontal', row, column);
33 | $wrap: if($wrap, wrap, nowrap);
34 |
35 | display: flex;
36 | flex-flow: $direction $wrap;
37 | }
38 |
--------------------------------------------------------------------------------
/spec/features/generator_spec.rb:
--------------------------------------------------------------------------------
1 | require 'spec_helper'
2 |
3 | feature 'Foundation install succeeds' do
4 | scenario 'stylesheets assets files are added' do
5 | application_css_file = IO.read("#{dummy_app_path}/app/assets/stylesheets/application.css")
6 |
7 | expect(File).to exist("#{dummy_app_path}/app/assets/stylesheets/_settings.scss")
8 | expect(File).to exist("#{dummy_app_path}/app/assets/stylesheets/foundation_and_overrides.scss")
9 | expect(application_css_file).to match(/require foundation_and_overrides/)
10 | end
11 |
12 | scenario 'javascripts assets files are added' do
13 | application_js_file = IO.read("#{dummy_app_path}/app/assets/javascripts/application.js")
14 |
15 | expect(application_js_file).to match(/require foundation/)
16 | expect(application_js_file).to match(Regexp.new(Regexp.escape('$(function(){ $(document).foundation(); });')))
17 | end
18 |
19 | scenario 'layout file loads assets' do
20 | layout_file = IO.read("#{dummy_app_path}/app/views/layouts/application.html.erb")
21 |
22 | expect(layout_file).to match(/stylesheet_link_tag "application"/)
23 | expect(layout_file).to match(/javascript_include_tag "application/)
24 | end
25 | end
26 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_shadow.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-shadow
7 | ////
8 |
9 | /// Responsive breakpoints for shadow utility.
10 | /// @type Boolean
11 | $prototype-shadow-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Default value for `prototype-box-shadow`
14 | /// @type Number
15 | $prototype-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12) !default;
16 |
17 | /// Shadow Utility: Adds a light box shadow to an element by default.
18 | /// @param {Number} $shadow [$prototype-box-shadow] Box Shadow of a component
19 | @mixin shadow(
20 | $shadow: $prototype-box-shadow
21 | ) {
22 | box-shadow: $shadow;
23 | }
24 |
25 | @mixin foundation-prototype-shadow {
26 | .shadow {
27 | @include shadow;
28 | }
29 |
30 | @if ($prototype-shadow-breakpoints) {
31 | // Loop through Responsive Breakpoints
32 | @each $size in $breakpoint-classes {
33 | @include breakpoint($size) {
34 | @if $size != $-zf-zero-breakpoint {
35 | .#{$size}-shadow {
36 | @include shadow;
37 | }
38 | }
39 | }
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/util/_string.scss:
--------------------------------------------------------------------------------
1 | /// Convert any string to a "safe" string that can be used anywhere in CSS (as class or keyframe name for example).
2 | /// Unsupported characters are replaced by the given `$delimiter` ("-").
3 | /// Several unsupported characters following each others are replaced by a single delimiter.
4 | ///
5 | /// @param {*} $str - String to convert. If not a string, it will be converted to with `quote()`.
6 | /// @param {String} $delimiter ['-'] - Character to use instead of unsupported characters.
7 | /// @return {String} - Safe string usable everywhere in CSS.
8 | @function -mui-string-safe(
9 | $str,
10 | $delimiter: '-'
11 | ) {
12 | $str: quote($str);
13 | $length: str_length($str);
14 | $safe-chars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
15 |
16 | $ret: '';
17 | $delimited: false;
18 |
19 | @for $i from 1 through $length {
20 | $c: str_slice($str, $i, $i);
21 |
22 | @if (str_index($safe-chars, $c) != null) {
23 | $ret: '#{$ret}#{$c}';
24 | $delimited: false;
25 | }
26 | @else if (($delimited == false)
27 | and (str_length($ret) > 0)
28 | and ($i < $length))
29 | {
30 | $ret: '#{$ret}#{$delimiter}';
31 | $delimited: true;
32 | }
33 | }
34 |
35 | @return $ret;
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/assets/scss/forms/_fieldset.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group forms
7 | ////
8 |
9 | /// Default border around custom fieldsets.
10 | /// @type Border
11 | $fieldset-border: 1px solid $medium-gray !default;
12 |
13 | /// Default padding inside custom fieldsets.
14 | /// @type Number
15 | $fieldset-padding: rem-calc(20) !default;
16 |
17 | /// Default margin around custom fieldsets.
18 | /// @type Number
19 | $fieldset-margin: rem-calc(18 0) !default;
20 |
21 | /// Default padding between the legend text and fieldset border.
22 | /// @type Number
23 | $legend-padding: rem-calc(0 3) !default;
24 |
25 | @mixin fieldset {
26 | margin: $fieldset-margin;
27 | padding: $fieldset-padding;
28 | border: $fieldset-border;
29 |
30 | legend {
31 | // Covers up the fieldset's border to create artificial padding
32 | margin: 0;
33 | margin-#{$global-left}: rem-calc(-3);
34 | padding: $legend-padding;
35 | }
36 | }
37 |
38 | @mixin foundation-form-fieldset {
39 | fieldset {
40 | margin: 0;
41 | padding: 0;
42 | border: 0;
43 | }
44 |
45 | legend {
46 | max-width: 100%;
47 | margin-bottom: $form-spacing * 0.5;
48 | }
49 |
50 | .fieldset {
51 | @include fieldset;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/transitions/_fade.scss:
--------------------------------------------------------------------------------
1 | /// Creates a fade transition by adjusting the opacity of the element.
2 | /// @param {Keyword} $state [in] - State to transition to.
3 | /// @param {Number} $from [null] - Opacity to start at. Must be a number between 0 and 1. By default `0` and `1` for `in` and `out` states respectively.
4 | /// @param {Number} $to [null] - Opacity to end on. By default `1` and `0` for `in` and `out` states respectively.
5 | /// @param {Keyword} $duration [null] - Length (speed) of the transition.
6 | /// @param {Keyword|Function} $timing [null] - Easing of the transition.
7 | /// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.
8 | @mixin mui-fade(
9 | $state: in,
10 | $from: null,
11 | $to: null,
12 | $duration: null,
13 | $timing: null,
14 | $delay: null
15 | ) {
16 | $from: if($from != null, $from, if($state == in, 0, 1));
17 | $to: if($to != null, $to, if($state == in, 1, 0));
18 | $fade: fade($from, $to);
19 |
20 | @include transition-start($state) {
21 | @include transition-basics($duration, $timing, $delay);
22 | @include -mui-keyframe-get($fade, 0);
23 |
24 | transition-property: opacity;
25 | }
26 |
27 | @include transition-end($state) {
28 | @include -mui-keyframe-get($fade, 100);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/assets/scss/forms/_label.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group forms
7 | ////
8 |
9 | /// Color for form labels.
10 | /// @type Color
11 | $form-label-color: $black !default;
12 |
13 | /// Font size for form labels.
14 | /// @type Number
15 | $form-label-font-size: rem-calc(14) !default;
16 |
17 | /// Font weight for form labels.
18 | /// @type Keyword
19 | $form-label-font-weight: $global-weight-normal !default;
20 |
21 | /// Line height for form labels. The higher the number, the more space between the label and its input field.
22 | /// @type Number
23 | $form-label-line-height: 1.8 !default;
24 |
25 | @mixin form-label {
26 | display: block;
27 | margin: 0;
28 |
29 | font-size: $form-label-font-size;
30 | font-weight: $form-label-font-weight;
31 | line-height: $form-label-line-height;
32 | color: $form-label-color;
33 | }
34 |
35 | @mixin form-label-middle {
36 | $input-border-width: get-border-value($input-border, width);
37 |
38 | margin: 0 0 $form-spacing;
39 | line-height: $global-lineheight;
40 | padding: ($form-spacing * 0.5 + rem-calc($input-border-width)) 0;
41 | }
42 |
43 | @mixin foundation-form-label {
44 | label {
45 | @include form-label;
46 |
47 | &.middle {
48 | @include form-label-middle;
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/foundation-rails.gemspec:
--------------------------------------------------------------------------------
1 | # coding: utf-8
2 | lib = File.expand_path('../lib', __FILE__)
3 | $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4 | require 'foundation/rails/version'
5 |
6 | Gem::Specification.new do |spec|
7 | spec.name = "foundation-rails"
8 | spec.version = Foundation::Rails::VERSION
9 | spec.authors = ["Yetinauts"]
10 | spec.email = ["contact@get.foundation"]
11 | spec.description = %q{Foundation on Sass/Compass}
12 | spec.summary = %q{Foundation on Sass/Compass}
13 | spec.homepage = "https://get.foundation"
14 | spec.license = "MIT"
15 |
16 | spec.files = `git ls-files`.split($/)
17 | spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18 | spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19 | spec.require_paths = ["lib"]
20 |
21 | spec.add_dependency "sassc"
22 | spec.add_dependency "railties", [">= 3.1.0"]
23 | spec.add_dependency "sprockets-es6"
24 |
25 | spec.add_development_dependency "bundler"
26 | spec.add_development_dependency "capybara"
27 | spec.add_development_dependency "rake"
28 | spec.add_development_dependency "rspec"
29 | spec.add_development_dependency "appraisal"
30 |
31 | # Required by dummy app
32 | spec.add_development_dependency "bootsnap"
33 | spec.add_development_dependency "listen"
34 | end
35 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_display.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-display
7 | ////
8 |
9 | /// Responsive breakpoints for display classes
10 | /// @type Boolean
11 | $prototype-display-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Map containing all the `display` classes
14 | /// @type Map
15 | $prototype-display: (
16 | inline,
17 | inline-block,
18 | block,
19 | table,
20 | table-cell
21 | ) !default;
22 |
23 | /// Display classes, by default coming through a map `$prototype-display`
24 | /// @param {String} $display [] Display classes
25 | @mixin display($display) {
26 | display: $display !important;
27 | }
28 |
29 | @mixin foundation-prototype-display {
30 | @each $display in $prototype-display {
31 | .display-#{$display} {
32 | @include display($display);
33 | }
34 | }
35 |
36 | @if ($prototype-display-breakpoints) {
37 | // Loop through Responsive Breakpoints
38 | @each $size in $breakpoint-classes {
39 | @include breakpoint($size) {
40 | @each $display in $prototype-display {
41 | @if $size != $-zf-zero-breakpoint {
42 | .#{$size}-display-#{$display} {
43 | @include display($display);
44 | }
45 | }
46 | }
47 | }
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/effects/_slide.scss:
--------------------------------------------------------------------------------
1 | /// Creates a sliding animation.
2 | /// @param {Keyword} $state [in] - Whether to move to (`in`) or from (`out`) the element's default position.
3 | /// @param {Keyword} $direction [null] - Direction to move. Can be `up`, `right`, `down`, or `left`. By default `left` and `right` for `in` and `out` states respectively.
4 | /// @param {Number} $amount [100%] - Distance to move. Can be any CSS length unit.
5 | /// @return {Map} A keyframes map that can be used with the `generate-keyframes()` mixin.
6 | @function slide(
7 | $state: in,
8 | $direction: null,
9 | $amount: 100%
10 | ) {
11 | $from: $amount;
12 | $to: 0;
13 | $func: 'translateY';
14 | $direction: if($direction != null, $direction, if($state == in, left, right));
15 |
16 | @if $direction == left or $direction == right {
17 | $func: 'translateX';
18 | }
19 |
20 | @if $state == out {
21 | $from: 0;
22 | $to: $amount;
23 | }
24 |
25 | @if $direction == down or $direction == right {
26 | @if $state == in {
27 | $from: -$from;
28 | }
29 | } @else {
30 | @if $state == out {
31 | $to: -$to;
32 | }
33 | }
34 |
35 | $keyframes: (
36 | name: -mui-string-safe('slide-#{$state}-#{$direction}-#{$amount}'),
37 | 0: (transform: '#{$func}(#{$from})'),
38 | 100: (transform: '#{$func}(#{$to})'),
39 | );
40 |
41 | @return $keyframes;
42 | }
43 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_text-decoration.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-text-decoration
7 | ////
8 |
9 | /// Responsive breakpoints for text decoration classes
10 | /// @type Boolean
11 | $prototype-decoration-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Map containing all the `text-decoration` classes
14 | /// @type Map
15 | $prototype-text-decoration: (
16 | overline,
17 | underline,
18 | line-through,
19 | ) !default;
20 |
21 | /// Text Decoration, by default coming through a map `$prototype-text-decoration`
22 | /// @param {String} $decoration [] Text Decoration
23 | @mixin text-decoration($decoration) {
24 | text-decoration: $decoration !important;
25 | }
26 |
27 | @mixin foundation-prototype-text-decoration {
28 | @each $decoration in $prototype-text-decoration {
29 | .text-#{$decoration} {
30 | @include text-decoration($decoration);
31 | }
32 | }
33 |
34 | @if ($prototype-decoration-breakpoints) {
35 | // Loop through Responsive Breakpoints
36 | @each $size in $breakpoint-classes {
37 | @include breakpoint($size) {
38 | @each $decoration in $prototype-text-decoration {
39 | @if $size != $-zf-zero-breakpoint {
40 | .#{$size}-text-#{$decoration} {
41 | @include text-decoration($decoration);
42 | }
43 | }
44 | }
45 | }
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/vendor/assets/scss/grid/_grid.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group grid
7 | ////
8 |
9 | /// The maximum width of a row.
10 | /// @type Number
11 | $grid-row-width: $global-width !default;
12 |
13 | /// The default column count of a grid. Changing this value affects the logic of the grid mixins, and the number of CSS classes output.
14 | /// @type Number
15 | $grid-column-count: 12 !default;
16 |
17 | /// The amount of space between columns at different screen sizes. To use just one size, set the variable to a number instead of a map.
18 | /// @type Map | Length
19 | /// @since 6.1.0
20 | $grid-column-gutter: (
21 | small: 20px,
22 | medium: 30px,
23 | ) !default;
24 |
25 | /// If `true`, the last column in a row will align to the opposite edge of the row.
26 | /// @type Boolean
27 | $grid-column-align-edge: true !default;
28 |
29 | /// Selector used for an alias of column (with @extend). If `false`, no alias is created.
30 | /// @type String
31 | $grid-column-alias: 'columns' !default;
32 |
33 | /// The highest number of `.x-up` classes available when using the block grid CSS.
34 | /// @type Number
35 | $block-grid-max: 8 !default;
36 |
37 | // Internal value to store the end column float direction
38 | $-zf-end-float: if($grid-column-align-edge, $global-right, $global-left);
39 |
40 | @import 'row';
41 | @import 'column';
42 | @import 'size';
43 | @import 'position';
44 | @import 'gutter';
45 | @import 'classes';
46 | @import 'layout';
47 |
48 | @import 'flex-grid';
49 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_text-transformation.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-text-transformation
7 | ////
8 |
9 | /// Responsive breakpoints for text transformation classes
10 | /// @type Boolean
11 | $prototype-transformation-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Map containing all the `text-transformation` classes
14 | /// @type Map
15 | $prototype-text-transformation: (
16 | lowercase,
17 | uppercase,
18 | capitalize
19 | ) !default;
20 |
21 | /// Text Transformation, by default coming through a map `$prototype-text-transformation`
22 | /// @param {String} $transformation [] Text Transformation
23 | @mixin text-transform($transformation) {
24 | text-transform: $transformation !important;
25 | }
26 |
27 | @mixin foundation-prototype-text-transformation {
28 | @each $transformation in $prototype-text-transformation {
29 | .text-#{$transformation} {
30 | @include text-transform($transformation);
31 | }
32 | }
33 |
34 | @if ($prototype-transformation-breakpoints) {
35 | // Loop through Responsive Breakpoints
36 | @each $size in $breakpoint-classes {
37 | @include breakpoint($size) {
38 | @each $transformation in $prototype-text-transformation {
39 | @if $size != $-zf-zero-breakpoint {
40 | .#{$size}-text-#{$transformation} {
41 | @include text-transform($transformation);
42 | }
43 | }
44 | }
45 | }
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_progress-bar.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | /// Adds styles for a progress bar container.
6 | @mixin progress-container {
7 | height: $progress-height;
8 | margin-bottom: $progress-margin-bottom;
9 | border-radius: $progress-radius;
10 | background-color: $progress-background;
11 | }
12 |
13 | /// Adds styles for the inner meter of a progress bar.
14 | @mixin progress-meter {
15 | position: relative;
16 | display: block;
17 | width: 0%;
18 | height: 100%;
19 | background-color: $progress-meter-background;
20 |
21 | @if has-value($progress-radius) {
22 | border-radius: $global-radius;
23 | }
24 | }
25 |
26 | /// Adds styles for text in the progress meter.
27 | @mixin progress-meter-text {
28 | @include absolute-center;
29 | margin: 0;
30 | font-size: 0.75rem;
31 | font-weight: bold;
32 | color: $white;
33 | white-space: nowrap;
34 |
35 | @if has-value($progress-radius) {
36 | border-radius: $progress-radius;
37 | }
38 | }
39 |
40 | @mixin foundation-progress-bar {
41 | // Progress bar
42 | .progress {
43 | @include progress-container;
44 |
45 | @each $name, $color in $foundation-palette {
46 | &.#{"" + $name} {
47 | .progress-meter {
48 | background-color: $color;
49 | }
50 | }
51 | }
52 | }
53 |
54 | // Inner meter
55 | .progress-meter {
56 | @include progress-meter;
57 | }
58 |
59 | // Inner meter text
60 | .progress-meter-text {
61 | @include progress-meter-text;
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/vendor/assets/scss/xy-grid/_xy-grid.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group xy-grid
7 | ////
8 |
9 | /// Enables the XY grid.
10 | /// @type Boolean
11 | $xy-grid: true !default;
12 |
13 | /// The maximum width of a grid container.
14 | /// @type Number
15 | $grid-container: $global-width !default;
16 |
17 | /// The number of columns used in the grid.
18 | /// @type Number
19 | $grid-columns: 12 !default;
20 |
21 | /// The amount of margin between cells at different screen sizes when using the margin grid. To use just one size, set the variable to a number instead of a map.
22 | /// @type Map | Length
23 | $grid-margin-gutters: (
24 | "small": 20px,
25 | "medium": 30px
26 | ) !default;
27 |
28 | /// The amount of padding in cells at different screen sizes when using the padding grid. To use just one size, set the variable to a number instead of a map.
29 | /// @type Map | Length
30 | $grid-padding-gutters: $grid-margin-gutters !default;
31 |
32 | /// The amount of padding to use when padding the grid-container.
33 | /// @type Map | Length
34 | $grid-container-padding: $grid-padding-gutters !default;
35 |
36 | /// The maximum width to apply to a grid container
37 | /// @type Number
38 | $grid-container-max: $global-width !default;
39 |
40 | /// The maximum number of cells in an XY block grid.
41 | /// @type Number
42 | $xy-block-grid-max: 8 !default;
43 |
44 | @import 'gutters';
45 | @import 'grid';
46 | @import 'cell';
47 | @import 'frame';
48 | @import 'position';
49 | @import 'layout';
50 | @import 'collapse';
51 | @import 'classes';
52 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_badge.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group badge
7 | ////
8 |
9 | /// Default background color for badges.
10 | /// @type Color
11 | $badge-background: $primary-color !default;
12 |
13 | /// Default text color for badges.
14 | /// @type Color
15 | $badge-color: $white !default;
16 |
17 | /// Alternate text color for badges.
18 | /// @type Color
19 | $badge-color-alt: $black !default;
20 |
21 | /// Coloring classes. A map of classes to output in your CSS, like `.secondary`, `.success`, and so on.
22 | /// @type Map
23 | $badge-palette: $foundation-palette !default;
24 |
25 | /// Default padding inside badges.
26 | /// @type Number
27 | $badge-padding: 0.3em !default;
28 |
29 | /// Minimum width of a badge.
30 | /// @type Number
31 | $badge-minwidth: 2.1em !default;
32 |
33 | /// Default font size for badges.
34 | /// @type Number
35 | $badge-font-size: 0.6rem !default;
36 |
37 | /// Generates the base styles for a badge.
38 | @mixin badge {
39 | display: inline-block;
40 | min-width: $badge-minwidth;
41 | padding: $badge-padding;
42 |
43 | border-radius: 50%;
44 |
45 | font-size: $badge-font-size;
46 | text-align: center;
47 | }
48 |
49 | @mixin foundation-badge {
50 | .badge {
51 | @include badge;
52 |
53 | background: $badge-background;
54 | color: $badge-color;
55 |
56 | @each $name, $color in $badge-palette {
57 | &.#{"" + $name} {
58 | background: $color;
59 | color: color-pick-contrast($color, ($badge-color, $badge-color-alt));
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/util/_transition.scss:
--------------------------------------------------------------------------------
1 | /// Applies basic transition settings to an element.
2 | /// @param {Duration} $duration [null] - Length (speed) of the transition.
3 | /// @param {Keyword|Function} $timing [null] - Easing of the transition.
4 | /// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.
5 | @mixin transition-basics(
6 | $duration: null,
7 | $timing: null,
8 | $delay: null
9 | ) {
10 | @include -motion-ui-defaults;
11 | transition-duration: $duration;
12 | transition-timing-function: $timing;
13 | transition-delay: $delay;
14 | }
15 |
16 | /// Wraps the content in the setup class for a transition.
17 | /// @param {Keyword} $dir - State to setup for transition.
18 | @mixin transition-start($dir) {
19 | $selector: -mui-build-selector(map-get($motion-ui-states, $dir));
20 |
21 | @at-root {
22 | #{$selector} {
23 | @content;
24 | }
25 | }
26 | }
27 |
28 | /// Wraps the content in the active class for a transition.
29 | /// @param {Keyword} $dir - State to activate a transition on.
30 | @mixin transition-end($dir) {
31 | $selector: -mui-build-selector(map-get($motion-ui-states, $dir), true);
32 |
33 | @at-root {
34 | #{$selector} {
35 | @content;
36 | }
37 | }
38 | }
39 |
40 | /// Adds styles for a stagger animation, which can be used with Angular's `ng-repeat`.
41 | /// @param {Duration} $delay-amount - Amount of time in seconds or milliseconds to add between each item's animation.
42 | @mixin stagger($delay-amount) {
43 | transition-delay: $delay-amount;
44 | transition-duration: 0; // Prevent accidental CSS inheritance
45 | }
46 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_responsive-embed.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group responsive-embed
7 | ////
8 |
9 | /// Margin below a responsive embed container.
10 | /// @type Number
11 | $responsive-embed-margin-bottom: rem-calc(16) !default;
12 |
13 | /// Aspect ratios used to determine padding-bottom of responsive embed containers.
14 | /// @type Map
15 | $responsive-embed-ratios: (
16 | default: 4 by 3,
17 | widescreen: 16 by 9,
18 | ) !default;
19 |
20 | /// Creates a responsive embed container.
21 | /// @param {String|List} $ratio [default] - Ratio of the container. Can be a key from the `$responsive-embed-ratios` map or a list formatted as `x by y`.
22 | @mixin responsive-embed($ratio: default) {
23 | @if type-of($ratio) == 'string' {
24 | $ratio: map-get($responsive-embed-ratios, $ratio);
25 | }
26 | position: relative;
27 | height: 0;
28 | margin-bottom: $responsive-embed-margin-bottom;
29 | padding-bottom: ratio-to-percentage($ratio);
30 | overflow: hidden;
31 |
32 | iframe,
33 | object,
34 | embed,
35 | video {
36 | position: absolute;
37 | top: 0;
38 | #{$global-left}: 0;
39 | width: 100%;
40 | height: 100%;
41 | }
42 | }
43 |
44 | @mixin foundation-responsive-embed {
45 | .responsive-embed,
46 | .flex-video {
47 | @include responsive-embed($ratio: default);
48 |
49 | $ratios: map-remove($responsive-embed-ratios, default);
50 |
51 | @each $name, $ratio in $ratios {
52 | &.#{$name} {
53 | padding-bottom: ratio-to-percentage($ratio);
54 | }
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_label.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group label
7 | ////
8 |
9 | /// Default background color for labels.
10 | /// @type Color
11 | $label-background: $primary-color !default;
12 |
13 | /// Default text color for labels.
14 | /// @type Color
15 | $label-color: $white !default;
16 |
17 | /// Alternate text color for labels.
18 | /// @type Color
19 | $label-color-alt: $black !default;
20 |
21 | /// Coloring classes. A map of classes to output in your CSS, like `.secondary`, `.success`, and so on.
22 | /// @type Map
23 | $label-palette: $foundation-palette !default;
24 |
25 | /// Default font size for labels.
26 | /// @type Number
27 | $label-font-size: 0.8rem !default;
28 |
29 | /// Default padding inside labels.
30 | /// @type Number
31 | $label-padding: 0.33333rem 0.5rem !default;
32 |
33 | /// Default radius of labels.
34 | /// @type Number
35 | $label-radius: $global-radius !default;
36 |
37 | /// Generates base styles for a label.
38 | @mixin label {
39 | display: inline-block;
40 | padding: $label-padding;
41 |
42 | border-radius: $label-radius;
43 |
44 | font-size: $label-font-size;
45 | line-height: 1;
46 | white-space: nowrap;
47 | cursor: default;
48 | }
49 |
50 | @mixin foundation-label {
51 | .label {
52 | @include label;
53 |
54 | background: $label-background;
55 | color: $label-color;
56 |
57 | @each $name, $color in $label-palette {
58 | &.#{"" + $name} {
59 | background: $color;
60 | color: color-pick-contrast($color, ($label-color, $label-color-alt));
61 | }
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_thumbnail.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group thumbnail
7 | ////
8 |
9 | /// Border around thumbnail images.
10 | /// @type Border
11 | $thumbnail-border: 4px solid $white !default;
12 |
13 | /// Bottom margin for thumbnail images.
14 | /// @type Length
15 | $thumbnail-margin-bottom: $global-margin !default;
16 |
17 | /// Box shadow under thumbnail images.
18 | /// @type Shadow
19 | $thumbnail-shadow: 0 0 0 1px rgba($black, 0.2) !default;
20 |
21 | /// Box shadow under thumbnail images.
22 | /// @type Shadow
23 | $thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5) !default;
24 |
25 | /// Transition proprties for thumbnail images.
26 | /// @type Transition
27 | $thumbnail-transition: box-shadow 200ms ease-out !default;
28 |
29 | /// Default radius for thumbnail images.
30 | /// @type Number
31 | $thumbnail-radius: $global-radius !default;
32 |
33 | /// Adds thumbnail styles to an element.
34 | @mixin thumbnail {
35 | display: inline-block;
36 | max-width: 100%;
37 | margin-bottom: $thumbnail-margin-bottom;
38 |
39 | border: $thumbnail-border;
40 | border-radius: $thumbnail-radius;
41 | box-shadow: $thumbnail-shadow;
42 |
43 | line-height: 0;
44 | }
45 |
46 | @mixin thumbnail-link {
47 | transition: $thumbnail-transition;
48 |
49 | &:hover,
50 | &:focus {
51 | box-shadow: $thumbnail-shadow-hover;
52 | }
53 |
54 | image {
55 | box-shadow: none;
56 | }
57 | }
58 |
59 | @mixin foundation-thumbnail {
60 | .thumbnail {
61 | @include thumbnail;
62 | }
63 |
64 | a.thumbnail {
65 | @include thumbnail-link;
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_bordered.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-bordered
7 | ////
8 |
9 | /// Responsive breakpoints for bordered utility.
10 | /// @type Boolean
11 | $prototype-bordered-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Default value for `prototype-border-width`
14 | /// @type Number
15 | $prototype-border-width: rem-calc(1) !default;
16 |
17 | /// Default value for `prototype-border-type`
18 | /// @type String
19 | $prototype-border-type: solid !default;
20 |
21 | /// Default value for `prototype-border-color` defaulted to `medium-gray`
22 | /// @type Color
23 | $prototype-border-color: $medium-gray !default;
24 |
25 | /// Bordered Utility: Adds a light border to an element by default.
26 | /// @param {Number} $width [$prototype-border-width] Width of the border
27 | /// @param {String} $type [$prototype-border-type] Type of the border
28 | /// @param {Color} $color [$prototype-border-color] Color of the border
29 | @mixin bordered(
30 | $width: $prototype-border-width,
31 | $type: $prototype-border-type,
32 | $color: $prototype-border-color
33 | ) {
34 | border: $width $type $color;
35 | }
36 |
37 | @mixin foundation-prototype-bordered {
38 | .bordered {
39 | @include bordered;
40 | }
41 |
42 | @if ($prototype-bordered-breakpoints) {
43 | // Loop through Responsive Breakpoints
44 | @each $size in $breakpoint-classes {
45 | @include breakpoint($size) {
46 | @if $size != $-zf-zero-breakpoint {
47 | .#{$size}-bordered {
48 | @include bordered;
49 | }
50 | }
51 | }
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/vendor/assets/scss/xy-grid/_gutters.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group xy-grid
7 | ////
8 |
9 | /// Create gutters for a cell/container.
10 | ///
11 | /// @param {Number|Map} $gutters [$grid-margin-gutters] - Map or single value for gutters.
12 | /// @param {Keyword} $gutter-type [margin] - Type of gutter to output. Accepts either margin or padding.
13 | /// @param {List} $gutter-position [right left] - The position to apply gutters to. Accepts `top`, `bottom`, `left`, `right` in any combination.
14 | /// @param {Boolean} $negative [false] - Whether to apply the gutter as a negative value. Commonly used for nested grids.
15 | @mixin xy-gutters(
16 | $gutters: $grid-margin-gutters,
17 | $gutter-type: margin,
18 | $gutter-position: right left,
19 | $negative: false
20 | ) {
21 | $operator: if($negative, '-', '');
22 |
23 | // If we have declared negative gutters, force type to `margin.
24 | $gutter-type: if($negative, 'margin', $gutter-type);
25 |
26 | // Output our margin gutters.
27 | @if (type-of($gutters) == 'map') {
28 | @include -zf-breakpoint-value(auto, $gutters) {
29 | $gutter: rem-calc($-zf-bp-value) * 0.5;
30 |
31 | // Loop through each gutter position
32 | @each $value in $gutter-position {
33 | #{$gutter-type}-#{$value}: unquote("#{$operator}#{$gutter}");
34 | }
35 | }
36 | }
37 | @else if (type-of($gutters) == 'number') {
38 | $gutter: rem-calc($gutters) * 0.5;
39 |
40 | // Loop through each gutter position
41 | @each $value in $gutter-position {
42 | #{$gutter-type}-#{$value}: unquote("#{$operator}#{$gutter}");
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Rakefile:
--------------------------------------------------------------------------------
1 | require 'bundler/setup'
2 | require 'bundler/gem_tasks'
3 | require 'rspec/core/rake_task'
4 |
5 | RSpec::Core::RakeTask.new(:rspec)
6 |
7 | desc 'Run the test suite'
8 | task :default => :rspec
9 |
10 | namespace :assets do
11 | desc 'Update Foundation for Sites assets'
12 | task update: :clean do
13 | sh 'bower install'
14 | sh 'cp -R bower_components/foundation-sites/dist/js/* vendor/assets/js/'
15 | sh 'rm -f vendor/assets/js/foundation.d.ts'
16 | sh 'cp -R bower_components/foundation-sites/scss/* vendor/assets/scss/'
17 | sh 'cp -R bower_components/foundation-sites/scss/settings/_settings.scss lib/generators/foundation/templates'
18 | sh 'cp -R bower_components/foundation-sites/_vendor/* vendor/assets/_vendor/'
19 | sh 'cp -R bower_components/motion-ui/src/* vendor/assets/scss/motion-ui'
20 |
21 | puts ""
22 | puts "********************************************************************************"
23 | puts "** ASSETS UPDATED! **"
24 | puts "********************************************************************************"
25 | puts " "
26 | puts " You may need to update the list of plugins you "
27 | puts " want to import in \"foundation.sprockets.js\" "
28 | puts " "
29 |
30 | end
31 |
32 | desc 'Remove old Foundation for Sites assets'
33 | task :clean do
34 | sh 'rm -rf vendor'
35 | sh 'mkdir -p vendor/assets/js/ vendor/assets/scss vendor/assets/scss/motion-ui vendor/assets/_vendor'
36 | end
37 |
38 | end
39 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/transitions/_spin.scss:
--------------------------------------------------------------------------------
1 | /// Creates a spinning transition by rotating the element. The `turn` unit is used to specify how far to rotate. `1turn` is equal to a 360-degree spin.
2 | /// @param {Keyword} $state [in] - State to transition to.
3 | /// @param {Keyword} $direction [null] - Direction to spin. Should be `cw` (clockwise) or `ccw` (counterclockwise). By default `cw` and `ccw` for `in` and `out` states respectively.
4 | /// @param {Number} $amount [0.75turn] - Amount to element the element.
5 | /// @param {Boolean} $fade [false] - Set to `true` to fade the element in or out simultaneously.
6 | /// @param {Duration} $duration [null] - Length (speed) of the transition.
7 | /// @param {Keyword|Function} $timing [null] - Easing of the transition.
8 | /// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.
9 | @mixin mui-spin(
10 | $state: in,
11 | $direction: cw,
12 | $amount: 0.75turn,
13 | $fade: map-get($motion-ui-settings, spin-and-fade),
14 | $duration: null,
15 | $timing: null,
16 | $delay: null
17 | ) {
18 | $direction: if($direction != null, $direction, if($state == in, cw, ccw));
19 | $spin: spin($state, $direction, $amount);
20 |
21 | @include transition-start($state) {
22 | @include transition-basics($duration, $timing, $delay);
23 | @include -mui-keyframe-get($spin, 0);
24 |
25 | @if $fade {
26 | transition-property: transform, opacity;
27 | opacity: if($state == in, 0, 1);
28 | } @else {
29 | transition-property: transform, opacity;
30 | }
31 | }
32 |
33 | @include transition-end($state) {
34 | @include -mui-keyframe-get($spin, 100);
35 |
36 | @if $fade {
37 | opacity: if($state == in, 1, 0);
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_rounded.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-rounded
7 | ////
8 |
9 | /// Responsive breakpoints for rounded utility.
10 | /// @type Boolean
11 | $prototype-rounded-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Default value for `prototype-border-radius`
14 | /// @type Number
15 | $prototype-border-radius: rem-calc(3) !default;
16 |
17 | /// Rounded utility (all corners): Adds radius corners (all corners) to an element by default.
18 | /// @param {Number} $radius [$prototype-border-radius] Border radius (all corners)
19 | @mixin border-radius(
20 | $radius: $prototype-border-radius
21 | ) {
22 | border-radius: $radius;
23 | }
24 |
25 | /// Rounded square utility or rectangle utility (all corners): Rounds all corners to an element by default to make a pill shape.
26 | @mixin border-rounded {
27 | border-radius: 5000px !important;
28 | }
29 |
30 | @mixin foundation-prototype-rounded {
31 | .rounded {
32 | @include border-rounded;
33 |
34 | .switch-paddle {
35 | @include border-rounded;
36 | &:after {
37 | border-radius: 50%; // For switches
38 | }
39 | }
40 | }
41 |
42 | .radius {
43 | @include border-radius;
44 | }
45 |
46 | @if ($prototype-rounded-breakpoints) {
47 | // Loop through Responsive Breakpoints
48 | @each $size in $breakpoint-classes {
49 | @include breakpoint($size) {
50 | @if $size != $-zf-zero-breakpoint {
51 | .#{$size}-rounded {
52 | @include border-rounded;
53 | }
54 | .#{$size}-radius {
55 | @include border-radius;
56 | }
57 | }
58 | }
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/transitions/_slide.scss:
--------------------------------------------------------------------------------
1 | /// Creates a sliding transition by translating the element horizontally or vertically.
2 | /// @param {Keyword} $state [in] - State to transition to.
3 | /// @param {Keyword} $direction [null] - Direction to slide to. Can be `up`, `right`, `down`, or `left`. By default `left` and `right` for `in` and `out` states respectively.
4 | /// @param {Length} $amount [100%] - Length of the slide as a percentage value.
5 | /// @param {Boolean} $fade [false] - Set to `true` to fade the element in or out simultaneously.
6 | /// @param {Duration} $duration [null] - Length (speed) of the transition.
7 | /// @param {Keyword|Function} $timing [null] - Easing of the transition.
8 | /// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.
9 | @mixin mui-slide (
10 | $state: in,
11 | $direction: null,
12 | $amount: 100%,
13 | $fade: map-get($motion-ui-settings, slide-and-fade),
14 | $duration: null,
15 | $timing: null,
16 | $delay: null
17 | ) {
18 | $direction: if($direction != null, $direction, if($state == in, left, right));
19 | $slide: slide($state, $direction, $amount);
20 |
21 | // CSS Output
22 | @include transition-start($state) {
23 | @include transition-basics($duration, $timing, $delay);
24 | @include -mui-keyframe-get($slide, 0);
25 |
26 | @if $fade {
27 | transition-property: transform, opacity;
28 | opacity: if($state == in, 0, 1);
29 | } @else {
30 | transition-property: transform, opacity;
31 | }
32 |
33 | backface-visibility: hidden;
34 | }
35 |
36 | @include transition-end($state) {
37 | @include -mui-keyframe-get($slide, 100);
38 |
39 | @if $fade {
40 | opacity: if($state == in, 1, 0);
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/transitions/_zoom.scss:
--------------------------------------------------------------------------------
1 | /// Creates a scaling transition. A scale of `1` means the element is the same size. Larger numbers make the element bigger, while numbers less than 1 make the element smaller.
2 | /// @param {Keyword} $state [in] - State to transition to.
3 | /// @param {Number} $from [null] - Size to start at. By default `0` and `1` for `in` and `out` states respectively.
4 | /// @param {Number} $to [null] - Size to end at. By default `1` and `0` for `in` and `out` states respectively.
5 | /// @param {Boolean} $fade [true] - Set to `true` to fade the element in or out simultaneously.
6 | /// @param {Duration} $duration [null] - Length (speed) of the transition.
7 | /// @param {Keyword|Function} $timing [null] - Easing of the transition.
8 | /// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.
9 | @mixin mui-zoom(
10 | $state: in,
11 | $from: null,
12 | $to: null,
13 | $fade: map-get($motion-ui-settings, scale-and-fade),
14 | $duration: null,
15 | $timing: null,
16 | $delay: null
17 | ) {
18 | $from: if($from != null, $from, if($state == in, 0, 1));
19 | $to: if($to != null, $to, if($state == in, 1, 0));
20 | $scale: zoom($from, $to);
21 |
22 | @include transition-start($state) {
23 | @include transition-basics($duration, $timing, $delay);
24 | @include -mui-keyframe-get($scale, 0);
25 |
26 | @if $fade {
27 | transition-property: transform, opacity;
28 | opacity: if($state == in, 0, 1);
29 | } @else {
30 | transition-property: transform, opacity;
31 | }
32 | }
33 |
34 | @include transition-end($state) {
35 | @include -mui-keyframe-get($scale, 100);
36 |
37 | @if $fade {
38 | opacity: if($state == in, 1, 0);
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/vendor/assets/js/plugins/foundation.util.imageLoader.min.js:
--------------------------------------------------------------------------------
1 | ((e,o)=>{"object"==typeof exports&&"object"==typeof module?module.exports=o(require("./foundation.core"),require("jquery")):"function"==typeof define&&define.amd?define(["./foundation.core","jquery"],o):"object"==typeof exports?exports.__FOUNDATION_EXTERNAL__=o(require("./foundation.core"),require("jquery")):(e.__FOUNDATION_EXTERNAL__=e.__FOUNDATION_EXTERNAL__||{},e.__FOUNDATION_EXTERNAL__["foundation.util.imageLoader"]=o(e.__FOUNDATION_EXTERNAL__["foundation.core"],e.jQuery))})(self,function(o,n){return r={"./js/foundation.util.imageLoader.js":function(e,o,n){n.r(o),n.d(o,{onImagesLoaded:function(){return t}});var o=n("jquery"),r=n.n(o);function t(e,o){var n=e.length;function t(){0===--n&&o()}0===n&&o(),e.each(function(){var e,o;this.complete&&void 0!==this.naturalWidth?t():(e=new Image,o="load.zf.images error.zf.images",r()(e).one(o,function e(){r()(this).off(o,e),t()}),e.src=r()(this).attr("src"))})}},"./foundation.core":function(e){e.exports=o},jquery:function(e){e.exports=n}},u={},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,{a:o}),o},t.d=function(e,o){for(var n in o)t.o(o,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:o[n]})},t.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},a={},(t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})})(a),t.d(a,{Foundation:function(){return e.Foundation},onImagesLoaded:function(){return i.onImagesLoaded}}),e=t("./foundation.core"),i=t("./js/foundation.util.imageLoader.js"),e.Foundation.onImagesLoaded=i.onImagesLoaded,a;function t(e){var o=u[e];return void 0!==o||(o=u[e]={exports:{}},r[e](o,o.exports,t)),o.exports}var r,u,e,i,a});
2 | //# sourceMappingURL=foundation.util.imageLoader.min.js.map
3 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_sizing.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-sizing
7 | ////
8 |
9 | /// Responsive breakpoints for spacing classes (margin and padding)
10 | /// @type Boolean
11 | $prototype-sizing-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Map containing all the `sizing` classes
14 | /// @type Map
15 | $prototype-sizing: (
16 | width,
17 | height
18 | ) !default;
19 |
20 | /// Map containing all the sizes.
21 | /// @type Map
22 | $prototype-sizes: (
23 | 25: 25%,
24 | 50: 50%,
25 | 75: 75%,
26 | 100: 100%
27 | ) !default;
28 |
29 | /// Max Width 100 utility.
30 | @mixin max-width-100 {
31 | max-width: 100% !important;
32 | }
33 |
34 | /// Max Height 100 utility.
35 | @mixin max-height-100 {
36 | max-height: 100% !important;
37 | }
38 |
39 | @mixin foundation-prototype-sizing {
40 | // Element Sizing
41 | @each $sizing in $prototype-sizing {
42 | @each $length, $percentage in $prototype-sizes {
43 | .#{$sizing}-#{$length} {
44 | #{$sizing}: $percentage !important;
45 | }
46 | }
47 | }
48 |
49 | // Max width & height
50 | .max-width-100 {
51 | @include max-width-100;
52 | }
53 | .max-height-100 {
54 | @include max-height-100;
55 | }
56 |
57 | @if ($prototype-sizing-breakpoints) {
58 | // Loop through Responsive Breakpoints
59 | @each $size in $breakpoint-classes {
60 | @include breakpoint($size) {
61 | @if $size != $-zf-zero-breakpoint {
62 | @each $sizing in $prototype-sizing {
63 | @each $length, $percentage in $prototype-sizes {
64 | .#{$size}-#{$sizing}-#{$length} {
65 | #{$sizing}: $percentage !important;
66 | }
67 | }
68 | }
69 | }
70 | }
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/vendor/assets/scss/xy-grid/_layout.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group xy-grid
7 | ////
8 |
9 | /// Sizes child elements so that `$n` number of items appear on each row.
10 | ///
11 | /// @param {Number} $n - Number of elements to display per row.
12 | /// @param {String} $selector ['.cell'] - Selector(s) to use for child elements.
13 | /// @param {Boolean} $gutter-output [null] - [DEPRECATED] Whether or not to output gutters.
14 | /// @param {Number|Map} $gutters [$grid-margin-gutters] - Map or single value for gutters.
15 | /// @param {Keyword} $gutter-type [margin] - Type of gutter to output. Accepts `margin`, `padding` or `none`.
16 | /// @param {List} $gutter-position [null] - The position to apply gutters to. Accepts `top`, `bottom`, `left`, `right` in any combination. By default `right left` for horizontal cells and `top bottom` for vertical cells.
17 | /// @param {String} $breakpoint [null] - The breakpoint to use for the cell generation. If using with the `breakpoint()` mixin this will be set automatically unless manually entered.
18 | /// @param {Boolean} $vertical [false] - Set to true to output vertical (height) styles rather than widths.
19 | /// @param {List} $output [(base size gutters)] - Cell parts to output. You will need to generate others parts of the cell seperately, it may not work correctly otherwise.
20 | @mixin xy-grid-layout(
21 | $n,
22 | $selector: '.cell',
23 | $gutter-output: null,
24 | $gutters: $grid-margin-gutters,
25 | $gutter-type: margin,
26 | $gutter-position: null,
27 | $breakpoint: null,
28 | $vertical: false,
29 | $output: (base size gutters)
30 | ) {
31 | $size: percentage(divide(1, $n));
32 |
33 | & > #{$selector} {
34 | @include xy-cell($size, $gutter-output, $gutters, $gutter-type, $gutter-position, $breakpoint, $vertical, $output);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/assets/js/plugins/foundation.util.timer.min.js:
--------------------------------------------------------------------------------
1 | ((t,e)=>{"object"==typeof exports&&"object"==typeof module?module.exports=e(require("./foundation.core")):"function"==typeof define&&define.amd?define(["./foundation.core"],e):"object"==typeof exports?exports.__FOUNDATION_EXTERNAL__=e(require("./foundation.core")):(t.__FOUNDATION_EXTERNAL__=t.__FOUNDATION_EXTERNAL__||{},t.__FOUNDATION_EXTERNAL__["foundation.util.timer"]=e(t.__FOUNDATION_EXTERNAL__["foundation.core"]))})(self,function(e){return o={"./js/foundation.util.timer.js":function(t,e,o){function n(e,t,o){var n,r,i=this,u=t.duration,a=Object.keys(e.data())[0]||"timer",f=-1;this.isPaused=!1,this.restart=function(){f=-1,clearTimeout(r),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(r),f=f<=0?u:f,e.data("paused",!1),n=Date.now(),r=setTimeout(function(){t.infinite&&i.restart(),o&&"function"==typeof o&&o()},f),e.trigger("timerstart.zf.".concat(a))},this.pause=function(){this.isPaused=!0,clearTimeout(r),e.data("paused",!0);var t=Date.now();f-=t-n,e.trigger("timerpaused.zf.".concat(a))}}o.r(e),o.d(e,{Timer:function(){return n}})},"./foundation.core":function(t){t.exports=e}},r={},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,{a:e}),e},n.d=function(t,e){for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},u={},(n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})})(u),n.d(u,{Foundation:function(){return t.Foundation},Timer:function(){return i.Timer}}),t=n("./foundation.core"),i=n("./js/foundation.util.timer.js"),t.Foundation.Timer=i.Timer,u;function n(t){var e=r[t];return void 0!==e||(e=r[t]={exports:{}},o[t](e,e.exports,n)),e.exports}var o,r,t,i,u});
2 | //# sourceMappingURL=foundation.util.timer.min.js.map
3 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_dropdown.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group dropdown
7 | ////
8 |
9 | /// Padding for dropdown panes.
10 | /// @type List
11 | $dropdown-padding: 1rem !default;
12 |
13 | /// Background for dropdown panes.
14 | /// @type Color
15 | $dropdown-background: $body-background !default;
16 |
17 | /// Border for dropdown panes.
18 | /// @type List
19 | $dropdown-border: 1px solid $medium-gray !default;
20 |
21 | /// Font size for dropdown panes.
22 | /// @type List
23 | $dropdown-font-size: 1rem !default;
24 |
25 | /// Width for dropdown panes.
26 | /// @type Number
27 | $dropdown-width: 300px !default;
28 |
29 | /// Border radius dropdown panes.
30 | /// @type Number
31 | $dropdown-radius: $global-radius !default;
32 |
33 | /// Sizes for dropdown panes. Each size is a CSS class you can apply.
34 | /// @type Map
35 | $dropdown-sizes: (
36 | tiny: 100px,
37 | small: 200px,
38 | large: 400px,
39 | ) !default;
40 |
41 | /// Applies styles for a basic dropdown.
42 | @mixin dropdown-container {
43 | position: absolute;
44 | z-index: 10;
45 |
46 | display: none;
47 |
48 | width: $dropdown-width;
49 | padding: $dropdown-padding;
50 |
51 | visibility: hidden;
52 | border: $dropdown-border;
53 | border-radius: $dropdown-radius;
54 | background-color: $dropdown-background;
55 |
56 | font-size: $dropdown-font-size;
57 |
58 |
59 | // Allow an intermittent state to do positioning before making visible.
60 | &.is-opening {
61 | display: block;
62 | }
63 |
64 | &.is-open {
65 | display: block;
66 | visibility: visible;
67 | }
68 | }
69 |
70 | @mixin foundation-dropdown {
71 | .dropdown-pane {
72 | @include dropdown-container;
73 | }
74 |
75 | @each $name, $size in $dropdown-sizes {
76 | .dropdown-pane {
77 | &.#{$name} {
78 | width: $size;
79 | }
80 | }
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/util/_unit.scss:
--------------------------------------------------------------------------------
1 | @use "sass:math";
2 |
3 | /// Removes the unit (e.g. px, em, rem) from a value, returning the number only.
4 | /// @param {Number} $num - Number to strip unit from.
5 | /// @return {Number} The same number, sans unit.
6 | /// @access private
7 |
8 | /// Divide the given `$divident` by the given `$divisor`.
9 | ///
10 | /// @param {Number} $divident - The divident.
11 | /// @param {Number} $divisor - The divisor.
12 | /// @param {Number} $precision - The precision decimals for the division.
13 | ///
14 | /// @return {Number} The product of the division.
15 | @function divide($dividend, $divisor, $precision: 12) {
16 | $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
17 | $dividend: math.abs($dividend);
18 | $divisor: math.abs($divisor);
19 | @if $dividend == 0 {
20 | @return 0;
21 | }
22 | @if $divisor == 0 {
23 | @error 'Cannot divide by 0';
24 | }
25 | $remainder: $dividend;
26 | $result: 0;
27 | $factor: 10;
28 | @while ($remainder > 0 and $precision >= 0) {
29 | $quotient: 0;
30 | @while ($remainder >= $divisor) {
31 | $remainder: $remainder - $divisor;
32 | $quotient: $quotient + 1;
33 | }
34 | $result: $result * 10 + $quotient;
35 | $factor: $factor * 0.1;
36 | $remainder: $remainder * 10;
37 | $precision: $precision - 1;
38 | @if ($precision < 0 and $remainder >= $divisor * 5) {
39 | $result: $result + 1;
40 | }
41 | }
42 | $result: $result * $factor * $sign;
43 | $dividend-unit: unit($dividend);
44 | $divisor-unit: unit($divisor);
45 | $unit-map: (
46 | 'px': 1px,
47 | 'rem': 1rem,
48 | 'em': 1em,
49 | '%': 1%
50 | );
51 | @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
52 | $result: $result * map-get($unit-map, $dividend-unit);
53 | }
54 |
55 | @return $result;
56 | }
57 |
58 | @function strip-unit($num) {
59 | @return divide($num, $num * 0 + 1);
60 | }
61 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/transitions/_hinge.scss:
--------------------------------------------------------------------------------
1 | /// Creates a hinge transition by rotating the element.
2 | /// @param {Keyword} $state [in] - State to transition to.
3 | /// @param {Keyword} $from [left] - Edge of the element to rotate from. Can be `top`, `right`, `bottom`, or `left`.
4 | /// @param {Keyword} $axis [edge] - Axis of the element to rotate on. Can be `edge` or `center`.
5 | /// @param {Length} $perspective [2000px] - Perceived distance between the viewer and the element. A higher number will make the rotation effect more pronounced.
6 | /// @param {Keyword} $turn-origin [null] - Side of the element to start the rotation from. Can be `from-back` or `from-front`. By default `from-back` and `from-front` for `in` and `out` states respectively.
7 | /// @param {Boolean} $fade [true] - Set to `true` to fade the element in or out simultaneously.
8 | /// @param {Duration} $duration [null] - Length (speed) of the transition.
9 | /// @param {Keyword|Function} $timing [null] - Easing of the transition.
10 | /// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.
11 | @mixin mui-hinge (
12 | $state: in,
13 | $from: left,
14 | $axis: edge,
15 | $perspective: 2000px,
16 | $turn-origin: null,
17 | $fade: map-get($motion-ui-settings, hinge-and-fade),
18 | $duration: null,
19 | $timing: null,
20 | $delay: null
21 | ) {
22 | $turn-origin: if($turn-origin != null, $turn-origin, if($state == in, from-back, from-front));
23 | $hinge: hinge($state, $from, $axis, $perspective, $turn-origin);
24 |
25 | @include transition-start($state) {
26 | @include transition-basics($duration, $timing, $delay);
27 | @include -mui-keyframe-get($hinge, 0);
28 |
29 | @if $fade {
30 | transition-property: transform, opacity;
31 | opacity: if($state == in, 0, 1);
32 | } @else {
33 | transition-property: transform, opacity;
34 | }
35 | }
36 |
37 | @include transition-end($state) {
38 | @include -mui-keyframe-get($hinge, 100);
39 |
40 | @if $fade {
41 | opacity: if($state == in, 1, 0);
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/util/_series.scss:
--------------------------------------------------------------------------------
1 | $-mui-queue: ();
2 |
3 | /// Creates a new animation queue.
4 | /// @param {Duration} $delay [0s] - Delay in seconds or milliseconds to place at the front of the animation queue.
5 | @mixin mui-series($delay: 0s) {
6 | $-mui-queue: () !global;
7 |
8 | @if $delay > 0 {
9 | $item: ($delay, 0s);
10 | $-mui-queue: append($-mui-queue, $item) !global;
11 | }
12 |
13 | @content;
14 | }
15 |
16 | /// Adds an animation to an animation queue. Only use this mixin inside of `mui-series()`.
17 | /// @param {Duration} $duration [1s] - Length of the animation.
18 | /// @param {Duration} $gap [0s] - Amount of time to pause before playing the animation after this one. Use a negative value to make the next effect overlap with the current one.
19 | /// @param {Arglist} $keyframes... - One or more effect functions to build the keyframe with.
20 | @mixin mui-queue(
21 | $duration: 1s,
22 | $gap: 0s,
23 | $keyframes...
24 | ) {
25 | // Build the animation
26 | $kf: -mui-process-args($keyframes...);
27 |
28 | // Calculate the delay for this animation based on how long the previous ones take
29 | $actual-delay: 0s;
30 | @each $anim in $-mui-queue {
31 | $actual-delay: $actual-delay + nth($anim, 1) + nth($anim, 2);
32 | }
33 |
34 | // Append this animation's length and gap to the end of the queue
35 | $item: ($duration, $gap);
36 | $-mui-queue: append($-mui-queue, $item) !global;
37 |
38 | // --- CSS output ---
39 | // Initial properties
40 | @include -mui-keyframe-get($kf, 0);
41 | animation-fill-mode: both;
42 |
43 | // Start the animation
44 | .#{map-get($motion-ui-settings, activate-queue-class)} & {
45 | animation-delay: $actual-delay;
46 | animation-duration: $duration;
47 | @include mui-animation($kf);
48 | }
49 |
50 | // Pause the animation.
51 | // For macOS Safari to play it correctly, `animation-play-state`
52 | // must not be `paused` before the animation start.
53 | // See https://git.io/motion-ui-97
54 | .#{map-get($motion-ui-settings, pause-queue-class)} & {
55 | animation-play-state: paused;
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_title-bar.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group title-bar
7 | ////
8 |
9 | /// Background color of a title bar.
10 | /// @type Color
11 | $titlebar-background: $black !default;
12 |
13 | /// Color of text inside a title bar.
14 | /// @type Color
15 | $titlebar-color: $white !default;
16 |
17 | /// Padding inside a title bar.
18 | /// @type Length
19 | $titlebar-padding: 0.5rem !default;
20 |
21 | /// Font weight of text inside a title bar.
22 | /// @type Weight
23 | $titlebar-text-font-weight: bold !default;
24 |
25 | /// Color of menu icons inside a title bar.
26 | /// @type Color
27 | $titlebar-icon-color: $white !default;
28 |
29 | /// Color of menu icons inside a title bar on hover.
30 | /// @type Color
31 | $titlebar-icon-color-hover: $medium-gray !default;
32 |
33 | /// Spacing between the menu icon and text inside a title bar.
34 | /// @type Length
35 | $titlebar-icon-spacing: 0.25rem !default;
36 |
37 | @mixin foundation-title-bar {
38 | .title-bar {
39 | padding: $titlebar-padding;
40 | background: $titlebar-background;
41 | color: $titlebar-color;
42 |
43 | @if $global-flexbox {
44 | display: flex;
45 | justify-content: flex-start;
46 | align-items: center;
47 | }
48 | @else {
49 | @include clearfix;
50 | }
51 |
52 | .menu-icon {
53 | margin-#{$global-left}: $titlebar-icon-spacing;
54 | margin-#{$global-right}: $titlebar-icon-spacing;
55 | }
56 | }
57 |
58 | @if $global-flexbox {
59 | .title-bar-left,
60 | .title-bar-right {
61 | flex: 1 1 0px; // sass-lint:disable-line zero-unit
62 | }
63 |
64 | .title-bar-right {
65 | text-align: right;
66 | }
67 | }
68 | @else {
69 | .title-bar-left {
70 | float: left;
71 | }
72 |
73 | .title-bar-right {
74 | float: right;
75 | text-align: right;
76 | }
77 | }
78 |
79 | .title-bar-title {
80 | display: inline-block;
81 | vertical-align: middle;
82 | font-weight: $titlebar-text-font-weight;
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_prototype.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype
7 | ////
8 |
9 | // Relational Mixins
10 | @import 'relation';
11 |
12 | // Box Mixin
13 | @import 'box';
14 |
15 | // Rotate Mixin
16 | @import 'rotate';
17 |
18 | // Text utilities
19 | @import 'text-utilities';
20 |
21 | // Text transformation classes
22 | @import 'text-transformation';
23 |
24 | // Text Decoration classes
25 | @import 'text-decoration';
26 |
27 | // Font Styling
28 | @import 'font-styling';
29 |
30 | // List Style type
31 | @import 'list-style-type';
32 |
33 | // Rounded Utility
34 | @import 'rounded';
35 |
36 | // Bordered Utility
37 | @import 'bordered';
38 |
39 | // Shadow Utility
40 | @import 'shadow';
41 |
42 | // Arrow Utility
43 | @import 'arrow';
44 |
45 | // Separator Utility
46 | @import 'separator';
47 |
48 | // Overflow helper classes
49 | @import 'overflow';
50 |
51 | // Display classes
52 | @import 'display';
53 |
54 | // Position Helpers
55 | @import 'position';
56 |
57 | // Border box
58 | @import 'border-box';
59 |
60 | // Border none Utilty
61 | @import 'border-none';
62 |
63 | // Sizing Utilities
64 | @import 'sizing';
65 |
66 | // Spacing Utilities
67 | @import 'spacing';
68 |
69 | @mixin foundation-prototype-classes {
70 | @include foundation-prototype-text-utilities;
71 | @include foundation-prototype-text-transformation;
72 | @include foundation-prototype-text-decoration;
73 | @include foundation-prototype-font-styling;
74 | @include foundation-prototype-list-style-type;
75 | @include foundation-prototype-rounded;
76 | @include foundation-prototype-bordered;
77 | @include foundation-prototype-shadow;
78 | @include foundation-prototype-arrow;
79 | @include foundation-prototype-separator;
80 | @include foundation-prototype-overflow;
81 | @include foundation-prototype-display;
82 | @include foundation-prototype-position;
83 | @include foundation-prototype-border-box;
84 | @include foundation-prototype-border-none;
85 | @include foundation-prototype-sizing;
86 | @include foundation-prototype-spacing;
87 | }
88 |
--------------------------------------------------------------------------------
/lib/generators/foundation/templates/foundation_and_overrides.scss:
--------------------------------------------------------------------------------
1 | @charset 'utf-8';
2 |
3 | @import 'settings';
4 | @import 'foundation';
5 |
6 | // If you'd like to include motion-ui the foundation-rails gem comes prepackaged with it, uncomment the 3 @imports, if you are not using the gem you need to install the motion-ui sass package.
7 | //
8 | // @import 'motion-ui/motion-ui';
9 |
10 | // We include everything by default. To slim your CSS, remove components you don't use.
11 |
12 | @include foundation-global-styles;
13 | @include foundation-xy-grid-classes;
14 | //@include foundation-grid;
15 | //@include foundation-flex-grid;
16 | @include foundation-flex-classes;
17 | @include foundation-typography;
18 | @include foundation-forms;
19 | @include foundation-button;
20 | @include foundation-accordion;
21 | @include foundation-accordion-menu;
22 | @include foundation-badge;
23 | @include foundation-breadcrumbs;
24 | @include foundation-button-group;
25 | @include foundation-callout;
26 | @include foundation-card;
27 | @include foundation-close-button;
28 | @include foundation-menu;
29 | @include foundation-menu-icon;
30 | @include foundation-drilldown-menu;
31 | @include foundation-dropdown;
32 | @include foundation-dropdown-menu;
33 | @include foundation-responsive-embed;
34 | @include foundation-label;
35 | @include foundation-media-object;
36 | @include foundation-off-canvas;
37 | @include foundation-orbit;
38 | @include foundation-pagination;
39 | @include foundation-progress-bar;
40 | @include foundation-slider;
41 | @include foundation-sticky;
42 | @include foundation-reveal;
43 | @include foundation-switch;
44 | @include foundation-table;
45 | @include foundation-tabs;
46 | @include foundation-thumbnail;
47 | @include foundation-title-bar;
48 | @include foundation-tooltip;
49 | @include foundation-top-bar;
50 | @include foundation-visibility-classes;
51 | @include foundation-float-classes;
52 |
53 | // If you'd like to include motion-ui the foundation-rails gem comes prepackaged with it, uncomment the 3 @imports, if you are not using the gem you need to install the motion-ui sass package.
54 | //
55 | // @include motion-ui-transitions;
56 | // @include motion-ui-animations;
57 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_text-utilities.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-text-utilities
7 | ////
8 |
9 | /// Responsive breakpoints for text utilities
10 | /// @type Boolean
11 | $prototype-utilities-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Default Value for `text-overflow` variable
14 | /// @type String
15 | $prototype-text-overflow: ellipsis !default;
16 |
17 | /// Image Replacement utility. `text-hide`
18 | @mixin text-hide {
19 | font: 0/0 a !important;
20 | color: transparent !important;
21 | text-shadow: none !important;
22 | background-color: transparent !important;
23 | border: 0 !important;
24 | }
25 |
26 | /// Truncating the text, elipsis by default.
27 | /// @param {String} $overflow [$prototype-text-overflow] Text Truncate
28 | @mixin text-truncate(
29 | $overflow: $prototype-text-overflow
30 | ) {
31 | max-width: 100% !important;
32 | overflow: hidden !important;
33 | text-overflow: $overflow;
34 | white-space: nowrap !important;
35 | }
36 |
37 | /// No wrapping of the text. `text-nowrap`
38 | @mixin text-nowrap {
39 | white-space: nowrap !important;
40 | }
41 |
42 | /// Wrapping of the text. `text-wrap`
43 | @mixin text-wrap {
44 | word-wrap: break-word !important;
45 | }
46 |
47 | @mixin foundation-prototype-text-utilities {
48 | .text-hide {
49 | @include text-hide;
50 | }
51 |
52 | .text-truncate {
53 | @include text-truncate;
54 | }
55 |
56 | .text-nowrap {
57 | @include text-nowrap;
58 | }
59 |
60 | .text-wrap {
61 | @include text-wrap;
62 | }
63 |
64 | @if ($prototype-utilities-breakpoints) {
65 | // Loop through Responsive Breakpoints
66 | @each $size in $breakpoint-classes {
67 | @include breakpoint($size) {
68 | @if $size != $-zf-zero-breakpoint {
69 | .#{$size}-text-hide {
70 | @include text-hide;
71 | }
72 |
73 | .#{$size}-text-truncate {
74 | @include text-truncate;
75 | }
76 |
77 | .#{$size}-text-nowrap {
78 | @include text-nowrap;
79 | }
80 |
81 | .#{$size}-text-wrap {
82 | @include text-wrap;
83 | }
84 | }
85 | }
86 | }
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/vendor/assets/scss/grid/_layout.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group grid
7 | ////
8 |
9 | /// Sizes child elements so that `$n` number of items appear on each row.
10 | ///
11 | /// @param {Number} $n - Number of elements to display per row.
12 | /// @param {String} $selector ['.column'] - Selector(s) to use for child elements.
13 | /// @param {Number|List} $gutter
14 | /// The gutter to apply to child elements. Accepts multiple values:
15 | /// - $grid-column-gutter will use the values in the $grid-column-gutter map, including breakpoint sizes.
16 | /// - A fixed numeric value will apply this gutter to all breakpoints.
17 | @mixin grid-layout(
18 | $n,
19 | $selector: '.column',
20 | $gutter: null
21 | ) {
22 | & > #{$selector} {
23 | float: $global-left;
24 | width: percentage(divide(1, $n));
25 |
26 | // If a $gutter value is passed
27 | @if($gutter) {
28 | // Gutters
29 | @if type-of($gutter) == 'map' {
30 | @each $breakpoint, $value in $gutter {
31 | $padding: rem-calc($value) * 0.5;
32 |
33 | @include breakpoint($breakpoint) {
34 | padding-right: $padding;
35 | padding-left: $padding;
36 | }
37 | }
38 | }
39 | @else if type-of($gutter) == 'number' and strip-unit($gutter) > 0 {
40 | $padding: rem-calc($gutter) * 0.5;
41 | padding-right: $padding;
42 | padding-left: $padding;
43 | }
44 | }
45 |
46 | &:nth-of-type(1n) {
47 | clear: none;
48 | }
49 |
50 | &:nth-of-type(#{$n}n+1) {
51 | clear: both;
52 | }
53 |
54 | &:last-child {
55 | float: $global-left;
56 | }
57 | }
58 | }
59 |
60 | /// Adds extra CSS to block grid children so the last items in the row center automatically. Apply this to the columns, not the row.
61 | ///
62 | /// @param {Number} $n - Number of items that appear in each row.
63 | @mixin grid-layout-center-last($n) {
64 | @for $i from 1 to $n {
65 | @if $i == 1 {
66 | &:nth-child(#{$n}n+1):last-child {
67 | margin-left: (100 - divide(100, $n) * $i) * 0.5 * 1%;
68 | }
69 | }
70 | @else {
71 | &:nth-child(#{$n}n+1):nth-last-child(#{$i}) {
72 | margin-left: (100 - divide(100, $n) * $i) * 0.5 * 1%;
73 | }
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/vendor/assets/scss/xy-grid/_collapse.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group xy-grid
7 | ////
8 |
9 | /// Collapses the grid a cells within it.
10 | ///
11 | /// @param {String} $selector [.cell] - The child element to remove the gutter from.
12 | /// @param {Keyword} $gutter-type [margin] - The type of gutter to remove.
13 | /// @param {List} $gutter-position [right left] - The positions to remove gutters from. Accepts `top`, `bottom`, `left`, `right` in any combination.
14 | /// @param {Keyword} $min-breakpoint [$-zf-zero-breakpoint] - Minimum breakpoint in `$breakpoint-classes` for which to collapse the gutter.
15 | @mixin xy-grid-collapse(
16 | $selector: '.cell',
17 | $gutter-type: margin,
18 | $gutter-position: right left,
19 | $min-breakpoint: $-zf-zero-breakpoint
20 | ) {
21 | // First, lets negate any margins on the top level
22 | @if ($gutter-type == 'margin') {
23 |
24 | @include breakpoint($min-breakpoint) {
25 | @each $value in $gutter-position {
26 | margin-#{$value}: 0;
27 | }
28 |
29 | > #{$selector} {
30 | @each $value in $gutter-position {
31 | margin-#{$value}: 0;
32 | }
33 | }
34 | }
35 |
36 | $excluded-bps: -zf-breakpoints-less-than($min-breakpoint);
37 |
38 | // Output new widths to not include gutters
39 | @each $bp in $breakpoint-classes {
40 | @if(sl-contain($excluded-bps, $bp)) {
41 | @include breakpoint($min-breakpoint) {
42 | @for $i from 1 through $grid-columns {
43 | // Sizing (percentage)
44 | > .#{$bp}-#{$i} {
45 | @include xy-cell-size($i, $gutter-type: none);
46 | }
47 | }
48 | }
49 | } @else {
50 | @include breakpoint($bp) {
51 | @for $i from 1 through $grid-columns {
52 | // Sizing (percentage)
53 | > .#{$bp}-#{$i} {
54 | @include xy-cell-size($i, $gutter-type: none);
55 | }
56 | }
57 | }
58 | }
59 | }
60 | }
61 | @else {
62 |
63 | @include breakpoint($min-breakpoint) {
64 | @each $value in $gutter-position {
65 | margin-#{$value}: 0;
66 | }
67 |
68 | > #{$selector} {
69 | @each $value in $gutter-position {
70 | padding-#{$value}: 0;
71 | }
72 | }
73 | }
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/vendor/assets/scss/forms/_progress.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group progress-bar
7 | ////
8 |
9 | /// Height of a progress bar.
10 | /// @type Number
11 | $progress-height: 1rem !default;
12 |
13 | /// Background color of a progress bar.
14 | /// @type Color
15 | $progress-background: $medium-gray !default;
16 |
17 | /// Bottom margin of a progress bar.
18 | /// @type Number
19 | $progress-margin-bottom: $global-margin !default;
20 |
21 | /// Default color of a progress bar's meter.
22 | /// @type Color
23 | $progress-meter-background: $primary-color !default;
24 |
25 | /// Default radius of a progress bar.
26 | /// @type Number
27 | $progress-radius: $global-radius !default;
28 |
29 | @mixin foundation-progress-element {
30 | progress {
31 | display: block;
32 | width: 100%;
33 | height: $progress-height;
34 | margin-bottom: $progress-margin-bottom;
35 |
36 | appearance: none;
37 |
38 | @if has-value($progress-radius) {
39 | border-radius: $progress-radius;
40 | }
41 |
42 | // For Firefox
43 | border: 0;
44 | background: $progress-background;
45 |
46 | &::-webkit-progress-bar {
47 | background: $progress-background;
48 |
49 | @if has-value($progress-radius) {
50 | border-radius: $progress-radius;
51 | }
52 | }
53 |
54 | &::-webkit-progress-value {
55 | background: $progress-meter-background;
56 |
57 | @if has-value($progress-radius) {
58 | border-radius: $progress-radius;
59 | }
60 | }
61 |
62 | &::-moz-progress-bar {
63 | background: $progress-meter-background;
64 |
65 | @if has-value($progress-radius) {
66 | border-radius: $progress-radius;
67 | }
68 | }
69 |
70 | @each $name, $color in $foundation-palette {
71 | &.#{"" + $name} {
72 | // Internet Explorer sets the fill with color
73 | color: $color;
74 |
75 | &::-webkit-progress-value {
76 | background: $color;
77 | }
78 |
79 | &::-moz-progress-bar {
80 | background: $color;
81 | }
82 | }
83 | }
84 |
85 | // For IE and Edge
86 | &::-ms-fill { // sass-lint:disable-line no-vendor-prefixes
87 | @if has-value($progress-radius) {
88 | border-radius: $progress-radius;
89 | }
90 |
91 | border: 0;
92 | }
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/vendor/assets/scss/forms/_select.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group forms
7 | ////
8 |
9 | /// Background color for select menus.
10 | /// @type Color
11 | $select-background: $white !default;
12 |
13 | /// Color of the dropdown triangle inside select menus. Set to `transparent` to remove it entirely.
14 | /// @type Color
15 | $select-triangle-color: $dark-gray !default;
16 |
17 | /// Default radius for select menus.
18 | /// @type Color
19 | $select-radius: $global-radius !default;
20 |
21 | @mixin form-select {
22 | $height: ($input-font-size * unitless-calc($input-line-height)) + (get-side($input-padding, 'top') + get-side($input-padding, 'bottom')) - rem-calc(1);
23 |
24 | height: $height;
25 | margin: 0 0 $form-spacing;
26 | padding: $input-padding;
27 |
28 | appearance: none;
29 | border: $input-border;
30 | border-radius: $select-radius;
31 | background-color: $select-background;
32 |
33 | font-family: $input-font-family;
34 | font-size: $input-font-size;
35 | font-weight: $input-font-weight;
36 | line-height: $input-line-height;
37 | color: $input-color;
38 |
39 | @if has-value($input-transition) {
40 | transition: $input-transition;
41 | }
42 |
43 | @if $select-triangle-color != transparent {
44 | background-origin: content-box;
45 | background-position: $global-right (-$form-spacing) center;
46 | background-repeat: no-repeat;
47 | background-size: 9px 6px;
48 |
49 | padding-#{$global-right}: ($form-spacing * 1.5);
50 |
51 | @include background-triangle($select-triangle-color);
52 | }
53 |
54 | // Focus state
55 | &:focus {
56 | outline: none;
57 | border: $input-border-focus;
58 | background-color: $input-background-focus;
59 | box-shadow: $input-shadow-focus;
60 |
61 | @if has-value($input-transition) {
62 | transition: $input-transition;
63 | }
64 | }
65 |
66 | // Disabled state
67 | &:disabled {
68 | background-color: $input-background-disabled;
69 | cursor: $input-cursor-disabled;
70 | }
71 |
72 | // Hide the dropdown arrow shown in newer IE versions
73 | &::-ms-expand {
74 | display: none;
75 | }
76 |
77 | &[multiple] {
78 | height: auto;
79 | background-image: none;
80 | }
81 | &:not([multiple]) {
82 | padding-top: 0;
83 | padding-bottom: 0;
84 | }
85 | }
86 |
87 | @mixin foundation-form-select {
88 | select {
89 | @include form-select;
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/_settings.scss:
--------------------------------------------------------------------------------
1 | /// Format for CSS classes created with Motion UI.
2 | /// @type Map
3 | /// @prop {Boolean} append [true] - Defines if selectors are chained to the selector (`.class.enter`), or appended as a new class (`.class-enter`).
4 | /// @prop {String} prefix ['mui-'] - Prefix to add before the state of a class. Enter an empty string to use no prefix.
5 | /// @prop {String} prefix ['-active'] - Suffix to add to the active state class.
6 | $motion-ui-classes: (
7 | chain: true,
8 | prefix: 'mui-',
9 | active: '-active',
10 | ) !default;
11 |
12 | /// State names to reference when writing motion classes. To use multiple class names for one state, enter a list of strings instead of one string.
13 | /// @type Map
14 | $motion-ui-states: (
15 | in: 'enter',
16 | out: 'leave',
17 | ) !default;
18 |
19 | /// Default speed that transitions and animations play at, along with values for modifier classes to change the speed.
20 | /// @type Map
21 | $motion-ui-speeds: (
22 | default: 500ms,
23 | slow: 750ms,
24 | fast: 250ms,
25 | ) !default;
26 |
27 | /// Default delay to add before motion, along with values for modifier classes to change the delay.
28 | /// @type Map
29 | $motion-ui-delays: (
30 | default: 0,
31 | short: 300ms,
32 | long: 700ms,
33 | ) !default;
34 |
35 | /// Default easing for transitions and animations, along with values for modifier classes to change the easing.
36 | /// @type Map
37 | $motion-ui-easings: (
38 | default: linear,
39 | linear: linear,
40 | ease: ease,
41 | ease-in: ease-in,
42 | ease-out: ease-out,
43 | ease-in-out: ease-in-out,
44 | bounce-in: cubic-bezier(0.485, 0.155, 0.24, 1.245),
45 | bounce-out: cubic-bezier(0.485, 0.155, 0.515, 0.845),
46 | bounce-in-out: cubic-bezier(0.76, -0.245, 0.24, 1.245),
47 | ) !default;
48 |
49 | /// Miscellaneous settings related to Motion UI.
50 | /// @type Map
51 | /// @prop {Boolean} slide-and-fade [false] - Defines if slide motions should also fade in/out.
52 | /// @prop {Boolean} slide-and-fade [true] - Defines if hinge motions should also fade in/out.
53 | /// @prop {Boolean} slide-and-fade [true] - Defines if scale motions should also fade in/out.
54 | /// @prop {Boolean} slide-and-fade [true] - Defines if spin motions should also fade in/out.
55 | $motion-ui-settings: (
56 | slide-and-fade: false,
57 | hinge-and-fade: true,
58 | scale-and-fade: true,
59 | spin-and-fade: true,
60 | pause-queue-class: 'is-paused',
61 | activate-queue-class: 'is-animating',
62 | ) !default;
63 |
--------------------------------------------------------------------------------
/vendor/assets/js/plugins/foundation.util.nest.min.js:
--------------------------------------------------------------------------------
1 | ((e,n)=>{"object"==typeof exports&&"object"==typeof module?module.exports=n(require("./foundation.core"),require("jquery")):"function"==typeof define&&define.amd?define(["./foundation.core","jquery"],n):"object"==typeof exports?exports.__FOUNDATION_EXTERNAL__=n(require("./foundation.core"),require("jquery")):(e.__FOUNDATION_EXTERNAL__=e.__FOUNDATION_EXTERNAL__||{},e.__FOUNDATION_EXTERNAL__["foundation.util.nest"]=n(e.__FOUNDATION_EXTERNAL__["foundation.core"],e.jQuery))})(self,function(n,t){return r={"./js/foundation.util.nest.js":function(e,n,t){t.r(n),t.d(n,{Nest:function(){return o}});var n=t("jquery"),c=t.n(n),o={Feather:function(e){var o=1li, > li > ul, .menu, .menu > li, [data-submenu] > li").removeClass("".concat(t," ").concat(o," ").concat(n," is-submenu-item submenu is-active")).removeAttr("data-submenu").css("display","")}}},"./foundation.core":function(e){e.exports=n},jquery:function(e){e.exports=t}},u={},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,{a:n}),n},o.d=function(e,n){for(var t in n)o.o(n,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i={},(o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})})(i),o.d(i,{Foundation:function(){return e.Foundation},Nest:function(){return a.Nest}}),e=o("./foundation.core"),a=o("./js/foundation.util.nest.js"),e.Foundation.Nest=a.Nest,i;function o(e){var n=u[e];return void 0!==n||(n=u[e]={exports:{}},r[e](n,n.exports,o)),n.exports}var r,u,e,a,i});
2 | //# sourceMappingURL=foundation.util.nest.min.js.map
3 |
--------------------------------------------------------------------------------
/vendor/assets/scss/forms/_error.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group abide
7 | ////
8 |
9 | /// Sets if error styles should be added to inputs.
10 | /// @type Boolean
11 | $abide-inputs: true !default;
12 |
13 | /// Sets if error styles should be added to labels.
14 | /// @type Boolean
15 | $abide-labels: true !default;
16 |
17 | /// Background color to use for invalid text inputs.
18 | /// @type Color
19 | $input-background-invalid: get-color(alert) !default;
20 |
21 | /// Color to use for labels of invalid inputs.
22 | /// @type Color
23 | $form-label-color-invalid: get-color(alert) !default;
24 |
25 | /// Default font color for form error text.
26 | /// @type Color
27 | $input-error-color: get-color(alert) !default;
28 |
29 | /// Default font size for form error text.
30 | /// @type Number
31 | $input-error-font-size: rem-calc(12) !default;
32 |
33 | /// Default font weight for form error text.
34 | /// @type Keyword
35 | $input-error-font-weight: $global-weight-bold !default;
36 |
37 | /// Styles the background and border of an input field to have an error state.
38 | ///
39 | /// @param {Color} $background [$alert-color] - Color to use for the background and border.
40 | /// @param {Number} $background-lighten [10%] - Lightness level of the background color.
41 | @mixin form-input-error(
42 | $background: $input-background-invalid,
43 | $background-lighten: 10%
44 | ) {
45 | &:not(:focus) {
46 | border-color: $background;
47 | background-color: mix($background, $white, $background-lighten);
48 |
49 | &::placeholder {
50 | color: $background;
51 | }
52 | }
53 | }
54 |
55 | /// Adds error styles to a form element, using the values in the settings file.
56 | @mixin form-error {
57 | display: none;
58 | margin-top: $form-spacing * -0.5;
59 | margin-bottom: $form-spacing;
60 |
61 | font-size: $input-error-font-size;
62 | font-weight: $input-error-font-weight;
63 | color: $input-error-color;
64 | }
65 |
66 | @mixin foundation-form-error {
67 | @if $abide-inputs {
68 | // Error class for invalid inputs
69 | .is-invalid-input {
70 | @include form-input-error;
71 | }
72 | }
73 |
74 | @if $abide-labels {
75 | // Error class for labels of invalid outputs
76 | .is-invalid-label {
77 | color: $form-label-color-invalid;
78 | }
79 | }
80 |
81 | // Form error element
82 | .form-error {
83 | @include form-error;
84 |
85 | &.is-visible {
86 | display: block;
87 | }
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/effects/_hinge.scss:
--------------------------------------------------------------------------------
1 | /// Creates a hinge effect by rotating the element.
2 | /// @param {Keyword} $state [in] - State to transition to.
3 | /// @param {Keyword} $from [left] - Edge of the element to rotate from. Can be `top`, `right`, `bottom`, or `left`.
4 | /// @param {Keyword} $axis [edge] - Axis of the element to rotate on. Can be `edge` or `center`.
5 | /// @param {Number} $perspective [2000px] - Perceived distance between the viewer and the element. A higher number will make the rotation effect more pronounced.
6 | /// @param {Keyword} $turn-origin [null] - Side of the element to start the rotation from. Can be `from-back` or `from-front`. By default `from-back` and `from-front` for `in` and `out` states respectively.
7 | @function hinge (
8 | $state: in,
9 | $from: left,
10 | $axis: edge,
11 | $perspective: 2000px,
12 | $turn-origin: null
13 | ) {
14 | // Rotation directions when hinging from back vs. front
15 | $rotation-amount: 90deg;
16 | $rotations-back: (
17 | top: rotateX($rotation-amount * -1),
18 | right: rotateY($rotation-amount * -1),
19 | bottom: rotateX($rotation-amount),
20 | left: rotateY($rotation-amount),
21 | );
22 | $rotations-from: (
23 | top: rotateX($rotation-amount),
24 | right: rotateY($rotation-amount),
25 | bottom: rotateX($rotation-amount * -1),
26 | left: rotateY($rotation-amount * -1),
27 | );
28 |
29 | // Rotation origin
30 | $turn-origin: if($turn-origin != null, $turn-origin, if($state == in, from-back, from-front));
31 | $rotation: '';
32 | @if $turn-origin == from-front {
33 | $rotation: map-get($rotations-from, $from);
34 | } @else if $turn-origin == from-back {
35 | $rotation: map-get($rotations-back, $from);
36 | } @else {
37 | @warn '$turn-origin must be either "from-back" or "from-front"';
38 | }
39 |
40 | // Start and end state
41 | $start: '';
42 | $end: '';
43 | @if $state == in {
44 | $start: perspective($perspective) $rotation;
45 | $end: perspective($perspective) rotate(0deg);
46 | } @else {
47 | $start: perspective($perspective) rotate(0deg);
48 | $end: perspective($perspective) $rotation;
49 | }
50 |
51 | // Turn axis
52 | $origin: '';
53 | @if $axis == edge {
54 | $origin: $from;
55 | } @else {
56 | $origin: center;
57 | }
58 |
59 | $keyframes: (
60 | name: -mui-string-safe('hinge-#{$state}-#{$from}-#{$axis}-#{$turn-origin}'),
61 | 0: (transform: $start, transform-origin: $origin),
62 | 100: (transform: $end),
63 | );
64 |
65 | @return $keyframes;
66 | }
67 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_overflow.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-overflow
7 | ////
8 |
9 | /// Responsive breakpoints for overflow helper classes
10 | /// @type Boolean
11 | $prototype-overflow-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Map containing all the `overflow` classes
14 | /// @type Map
15 | $prototype-overflow: (
16 | visible,
17 | hidden,
18 | scroll
19 | ) !default;
20 |
21 | /// Overflow classes, by default coming through a map `$prototype-overflow`
22 | /// @param {String} $overflow [] Overflow classes
23 | @mixin overflow($overflow) {
24 | overflow: $overflow !important;
25 | @if $overflow == 'scroll' {
26 | -webkit-overflow-scrolling: touch;
27 | }
28 | }
29 |
30 | /// Overflow classes on horizontal axis, by default coming through a map `$prototype-overflow`
31 | /// @param {String} $overflow [] Overflow classes (horizontal axis)
32 | @mixin overflow-x($overflow) {
33 | overflow-x: $overflow !important;
34 | @if $overflow == 'scroll' {
35 | -webkit-overflow-scrolling: touch;
36 | }
37 | }
38 |
39 | /// Overflow classes on vertical axis, by default coming through a map `$prototype-overflow`
40 | /// @param {String} $overflow [] Overflow classes (vertical axis)
41 | @mixin overflow-y($overflow) {
42 | overflow-y: $overflow !important;
43 | @if $overflow == 'scroll' {
44 | -webkit-overflow-scrolling: touch;
45 | }
46 | }
47 |
48 | @mixin foundation-prototype-overflow {
49 | @each $overflow in $prototype-overflow {
50 | .overflow-#{$overflow} {
51 | @include overflow($overflow);
52 | }
53 | .overflow-x-#{$overflow} {
54 | @include overflow-x($overflow);
55 | }
56 | .overflow-y-#{$overflow} {
57 | @include overflow-y($overflow);
58 | }
59 | }
60 |
61 | @if ($prototype-overflow-breakpoints) {
62 | // Loop through Responsive Breakpoints
63 | @each $size in $breakpoint-classes {
64 | @include breakpoint($size) {
65 | @each $overflow in $prototype-overflow {
66 | @if $size != $-zf-zero-breakpoint {
67 | .#{$size}-overflow-#{$overflow} {
68 | @include overflow($overflow);
69 | }
70 | .#{$size}-overflow-x-#{$overflow} {
71 | @include overflow-x($overflow);
72 | }
73 | .#{$size}-overflow-y-#{$overflow} {
74 | @include overflow-y($overflow);
75 | }
76 | }
77 | }
78 | }
79 | }
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/vendor/assets/scss/grid/_gutter.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group grid
7 | ////
8 |
9 | /// Set the gutters on a column
10 | /// @param {Number|Keyword} $gutter [auto]
11 | /// Spacing between columns, accepts multiple values:
12 | /// - A single value will make the gutter that exact size.
13 | /// - A breakpoint name will make the gutter the corresponding size in the $gutters map.
14 | /// - "auto" will make the gutter responsive, using the $gutters map values.
15 | /// @param {Number|Map} $gutters [$grid-column-gutter] - Gutter map or single value to use. Responsive gutter settings by default.
16 | @mixin grid-column-gutter(
17 | $gutter: auto,
18 | $gutters: $grid-column-gutter
19 | ) {
20 | @include -zf-breakpoint-value($gutter, $gutters) {
21 | $padding: rem-calc($-zf-bp-value) * 0.5;
22 |
23 | padding-right: $padding;
24 | padding-left: $padding;
25 | }
26 | }
27 |
28 | /// Collapse the gutters on a column by removing the padding. **Note:** only use this mixin within a breakpoint. To collapse a column's gutters on all screen sizes, use the `$gutter` parameter of the `grid-column()` mixin instead.
29 | @mixin grid-column-collapse {
30 | @include grid-column-gutter(0);
31 | }
32 |
33 | /// Shorthand for `grid-column-gutter()`.
34 | /// @alias grid-column-gutter
35 | @mixin grid-col-gutter(
36 | $gutter: auto,
37 | $gutters: $grid-column-gutter
38 | ) {
39 | @include grid-column-gutter($gutter, $gutters);
40 | }
41 |
42 | /// Shorthand for `grid-column-collapse()`.
43 | /// @alias grid-column-collapse
44 | @mixin grid-col-collapse {
45 | @include grid-column-collapse;
46 | }
47 |
48 | /// Sets bottom margin on grid columns to match gutters
49 | /// @param {Number|Keyword} $margin [auto]
50 | /// The bottom margin on grid columns, accepts multiple values:
51 | /// - A single value will make the margin that exact size.
52 | /// - A breakpoint name will make the margin the corresponding size in the $margins map.
53 | /// - "auto" will make the margin responsive, using the $margins map values.
54 | /// @param {Number|Map} $margins [$grid-column-gutter] - Map or single value to use. Responsive gutter settings by default.
55 | @mixin grid-column-margin (
56 | $margin: auto,
57 | $margins: $grid-column-gutter
58 | ) {
59 | @include -zf-breakpoint-value($margin, $margins) {
60 | $margin-bottom: rem-calc($-zf-bp-value);
61 | margin-bottom: $margin-bottom;
62 |
63 | > :last-child {
64 | margin-bottom: 0;
65 | }
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/vendor/assets/js/plugins/foundation.util.motion.min.js:
--------------------------------------------------------------------------------
1 | ((n,e)=>{"object"==typeof exports&&"object"==typeof module?module.exports=e(require("./foundation.core"),require("jquery")):"function"==typeof define&&define.amd?define(["./foundation.core","jquery"],e):"object"==typeof exports?exports.__FOUNDATION_EXTERNAL__=e(require("./foundation.core"),require("jquery")):(n.__FOUNDATION_EXTERNAL__=n.__FOUNDATION_EXTERNAL__||{},n.__FOUNDATION_EXTERNAL__["foundation.util.motion"]=e(n.__FOUNDATION_EXTERNAL__["foundation.core"],n.jQuery))})(self,function(e,o){return i={"./js/foundation.util.motion.js":function(n,e,o){o.r(e),o.d(e,{Motion:function(){return t},Move:function(){return i}});var e=o("jquery"),a=o.n(e),f=o("./foundation.core"),c=["mui-enter","mui-leave"],d=["mui-enter-active","mui-leave-active"],t={animateIn:function(n,e,o){r(!0,n,e,o)},animateOut:function(n,e,o){r(!1,n,e,o)}};function i(o,t,i){var r,u,a=null;0===o?(i.apply(t),t.trigger("finished.zf.animate",[t]).triggerHandler("finished.zf.animate",[t])):r=window.requestAnimationFrame(function n(e){u=e-(a=a||e),i.apply(t),u :last-child {
63 | margin-bottom: 0;
64 | }
65 |
66 | .stack-for-#{$-zf-zero-breakpoint} & {
67 | @include breakpoint($-zf-zero-breakpoint only) {
68 | @include media-object-stack;
69 | }
70 | }
71 |
72 | @if $global-flexbox {
73 | &.main-section {
74 | flex: 1 1 0px; // sass-lint:disable-line zero-unit
75 | }
76 | }
77 | @else {
78 | &.middle {
79 | vertical-align: middle;
80 | }
81 |
82 | &.bottom {
83 | vertical-align: bottom;
84 | }
85 | }
86 | }
87 |
88 | /// Adds styles to stack sections of a media object. Apply this to the section elements, not the container.
89 | @mixin media-object-stack {
90 | padding: 0;
91 | padding-bottom: $mediaobject-section-padding;
92 |
93 | @if $global-flexbox {
94 | flex-basis: 100%;
95 | max-width: 100%;
96 | }
97 | @else {
98 | display: block;
99 | }
100 |
101 | img {
102 | width: $mediaobject-image-width-stacked;
103 | }
104 | }
105 |
106 | @mixin foundation-media-object {
107 | .media-object {
108 | @include media-object-container;
109 | }
110 |
111 | .media-object-section {
112 | @include media-object-section;
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/vendor/assets/scss/typography/_print.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | /// If `true`, all elements will have transparent backgrounds when printed, to save on ink.
6 | /// @type Boolean
7 | /// @group global
8 | $print-transparent-backgrounds: true !default;
9 |
10 | /// If `true`, displays next to all links their "href" when printed.
11 | /// @type Boolean
12 | /// @group global
13 | $print-hrefs: true !default;
14 |
15 | // sass-lint:disable-all
16 |
17 | @mixin foundation-print-styles {
18 | .show-for-print { display: none !important; }
19 |
20 | @media print {
21 | * {
22 | // Ensure a "black-on-white" print by removing backgrounds,
23 | // using black text everywhere and forcing the browser to economize ink.
24 | @if $print-transparent-backgrounds {
25 | background: transparent !important;
26 | color: black !important; // Black prints faster: h5bp.com/s
27 | print-color-adjust: economy;
28 | }
29 | // Otherwise, prevent any economy by the browser.
30 | @else {
31 | print-color-adjust: exact;
32 | }
33 |
34 | box-shadow: none !important;
35 | text-shadow: none !important;
36 | }
37 |
38 | .show-for-print { display: block !important; }
39 | .hide-for-print { display: none !important; }
40 |
41 | table.show-for-print { display: table !important; }
42 | thead.show-for-print { display: table-header-group !important; }
43 | tbody.show-for-print { display: table-row-group !important; }
44 | tr.show-for-print { display: table-row !important; }
45 | td.show-for-print { display: table-cell !important; }
46 | th.show-for-print { display: table-cell !important; }
47 |
48 | // Display the URL of a link after the text
49 | a,
50 | a:visited { text-decoration: underline;}
51 | @if $print-hrefs {
52 | a[href]:after { content: ' (' attr(href) ')'; }
53 | }
54 |
55 | // Don't display the URL for images or JavaScript/internal links
56 | .ir a:after,
57 | a[href^='javascript:']:after,
58 | a[href^='#']:after { content: ''; }
59 |
60 | // Display what an abbreviation stands for after the text
61 | abbr[title]:after { content: ' (' attr(title) ')'; }
62 |
63 | // Prevent page breaks in the middle of a blockquote or preformatted text block
64 | pre,
65 | blockquote {
66 | border: 1px solid $dark-gray;
67 | page-break-inside: avoid;
68 | }
69 |
70 | // h5bp.com/t
71 | thead { display: table-header-group; }
72 |
73 | tr,
74 | img { page-break-inside: avoid; }
75 |
76 | img { max-width: 100% !important; }
77 |
78 | @page { margin: 0.5cm; }
79 |
80 | p,
81 | h2,
82 | h3 {
83 | orphans: 3;
84 | widows: 3;
85 | }
86 |
87 | // Avoid page breaks after a heading
88 | h2,
89 | h3 { page-break-after: avoid; }
90 |
91 | // Helper to re-allow page breaks in the middle of certain elements (e.g. pre, blockquote, tr)
92 | .print-break-inside {
93 | page-break-inside: auto;
94 | }
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/vendor/assets/js/plugins/foundation.util.box.min.js:
--------------------------------------------------------------------------------
1 | ((t,e)=>{"object"==typeof exports&&"object"==typeof module?module.exports=e(require("./foundation.core")):"function"==typeof define&&define.amd?define(["./foundation.core"],e):"object"==typeof exports?exports.__FOUNDATION_EXTERNAL__=e(require("./foundation.core")):(t.__FOUNDATION_EXTERNAL__=t.__FOUNDATION_EXTERNAL__||{},t.__FOUNDATION_EXTERNAL__["foundation.util.box"]=e(t.__FOUNDATION_EXTERNAL__["foundation.core"]))})(self,function(e){return o={"./js/foundation.util.box.js":function(t,e,o){o.r(e),o.d(e,{Box:function(){return f}});var f={ImNotTouchingYou:function(t,e,o,f,n){return 0===i(t,e,o,f,n)},OverlapArea:i,GetDimensions:h,GetExplicitOffsets:function(t,e,o,f,n,i,r){var s,a,u=h(t),d=e?h(e):null;if(null!==d){switch(o){case"top":s=d.offset.top-(u.height+n);break;case"bottom":s=d.offset.top+d.height+n;break;case"left":a=d.offset.left-(u.width+i);break;case"right":a=d.offset.left+d.width+i}switch(o){case"top":case"bottom":switch(f){case"left":a=d.offset.left+i;break;case"right":a=d.offset.left-u.width+d.width-i;break;case"center":a=r?i:d.offset.left+d.width/2-u.width/2+i}break;case"right":case"left":switch(f){case"bottom":s=d.offset.top-n+d.height-u.height;break;case"top":s=d.offset.top+n;break;case"center":s=d.offset.top+n+d.height/2-u.height/2}}}return{top:s,left:a}}};function i(t,e,o,f,n){var i,r,s,t=h(t);return e=e?(i=(e=h(e)).height+e.offset.top-(t.offset.top+t.height),r=t.offset.top-e.offset.top,s=t.offset.left-e.offset.left,e.width+e.offset.left-(t.offset.left+t.width)):(i=t.windowDims.height+t.windowDims.offset.top-(t.offset.top+t.height),r=t.offset.top-t.windowDims.offset.top,s=t.offset.left-t.windowDims.offset.left,t.windowDims.width-(t.offset.left+t.width)),i=n?0:Math.min(i,0),r=Math.min(r,0),s=Math.min(s,0),e=Math.min(e,0),o?s+e:f?r+i:Math.sqrt(r*r+i*i+s*s+e*e)}function h(t){if((t=t.length?t[0]:t)===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var e=t.getBoundingClientRect(),t=t.parentNode.getBoundingClientRect(),o=document.body.getBoundingClientRect(),f=window.pageYOffset,n=window.pageXOffset;return{width:e.width,height:e.height,offset:{top:e.top+f,left:e.left+n},parentDims:{width:t.width,height:t.height,offset:{top:t.top+f,left:t.left+n}},windowDims:{width:o.width,height:o.height,offset:{top:f,left:n}}}}},"./foundation.core":function(t){t.exports=e}},n={},f.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return f.d(e,{a:e}),e},f.d=function(t,e){for(var o in e)f.o(e,o)&&!f.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},f.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r={},(f.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})})(r),f.d(r,{Box:function(){return i.Box},Foundation:function(){return t.Foundation}}),t=f("./foundation.core"),i=f("./js/foundation.util.box.js"),t.Foundation.Box=i.Box,r;function f(t){var e=n[t];return void 0!==e||(e=n[t]={exports:{}},o[t](e,e.exports,f)),e.exports}var o,n,t,i,r});
2 | //# sourceMappingURL=foundation.util.box.min.js.map
3 |
--------------------------------------------------------------------------------
/vendor/assets/scss/grid/_position.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group grid
7 | ////
8 |
9 | /// Reposition a column.
10 | ///
11 | /// @param {Number|Keyword} $position - It can be:
12 | /// * A number: The column will move equal to the width of the column count
13 | /// specified. A positive number will push the column to the right, while
14 | /// a negative number will pull it to the left.
15 | /// * `center`: Column will be centered
16 | /// * `auto`: Column will be pushed to the left (or to the right for the last column).
17 | @mixin grid-column-position($position) {
18 | // Auto positioning
19 | @if $position == auto {
20 | &, &:last-child:not(:first-child) {
21 | float: $global-left;
22 | clear: none;
23 | }
24 |
25 | // Last column alignment
26 | @if $grid-column-align-edge {
27 | &:last-child:not(:first-child) {
28 | float: $global-right;
29 | }
30 | }
31 | }
32 |
33 | // Push/pull
34 | @else if type-of($position) == 'number' {
35 | $offset: percentage(divide($position, $grid-column-count));
36 |
37 | position: relative;
38 | #{$global-left}: $offset;
39 | }
40 |
41 | // Center positioning
42 | @else if $position == center {
43 | margin-left: auto;
44 | margin-right: auto;
45 | &, &:last-child:not(:first-child) {
46 | float: none;
47 | clear: both;
48 | }
49 | }
50 |
51 | @else {
52 | @warn 'Wrong syntax for grid-column-position(). Enter a positive or negative number, "center" or "auto".';
53 | }
54 | }
55 |
56 | /// Reset a position definition.
57 | @mixin grid-column-unposition {
58 | position: static;
59 | margin-right: 0;
60 | margin-left: 0;
61 | @include grid-column-position(auto);
62 | }
63 |
64 | /// Offsets a column to the right by `$n` columns.
65 | /// @param {Number|List} $n - Width to offset by. You can pass in any value accepted by the `grid-column()` mixin, such as `6`, `50%`, or `1 of 2`.
66 | @mixin grid-column-offset($n) {
67 | margin-#{$global-left}: grid-column($n);
68 | }
69 |
70 | /// Disable the default behavior of the last column in a row aligning to the opposite edge.
71 | @mixin grid-column-end {
72 | // This extra specificity is required for the property to be applied
73 | &:last-child:last-child {
74 | float: $global-left;
75 | }
76 | }
77 |
78 | /// Shorthand for `grid-column-position()`.
79 | /// @alias grid-column-position
80 | @mixin grid-col-pos($position) {
81 | @include grid-column-position($position);
82 | }
83 |
84 | /// Shorthand for `grid-column-unposition()`.
85 | /// @alias grid-column-unposition
86 | @mixin grid-col-unpos {
87 | @include grid-column-unposition;
88 | }
89 |
90 | /// Shorthand for `grid-column-offset()`.
91 | /// @alias grid-column-offset
92 | @mixin grid-col-off($n) {
93 | @include grid-column-offset($n);
94 | }
95 |
96 | /// Shorthand for `grid-column-end()`.
97 | /// @alias grid-column-end
98 | @mixin grid-col-end {
99 | @include grid-column-end;
100 | }
101 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_callout.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group callout
7 | ////
8 |
9 | /// Default background color.
10 | /// @type Color
11 | $callout-background: $white !default;
12 |
13 | /// Default fade value for callout backgrounds.
14 | /// @type Number
15 | $callout-background-fade: 85% !default;
16 |
17 | /// Default border style for callouts.
18 | /// @type List
19 | $callout-border: 1px solid rgba($black, 0.25) !default;
20 |
21 | /// Default bottom margin for callouts.
22 | /// @type Number
23 | $callout-margin: 0 0 1rem 0 !default;
24 |
25 | /// Sizes for Callout paddings.
26 | /// @type Map
27 | $callout-sizes: (
28 | small: 0.5rem,
29 | default: 1rem,
30 | large: 3rem,
31 | ) !default;
32 |
33 | /// Default font color for callouts.
34 | /// @type Color
35 | $callout-font-color: $body-font-color !default;
36 |
37 | /// Default font color for callouts, if the callout has a dark background.
38 | /// @type Color
39 | $callout-font-color-alt: $body-background !default;
40 |
41 | /// Default border radius for callouts.
42 | /// @type Color
43 | $callout-radius: $global-radius !default;
44 |
45 | /// Amount to tint links used within colored panels. Set to `false` to disable this feature.
46 | /// @type Number | Boolean
47 | $callout-link-tint: 30% !default;
48 |
49 | /// Adds basic styles for a callout, including padding and margin.
50 | @mixin callout-base() {
51 | position: relative;
52 | margin: $callout-margin;
53 | padding: map-get($callout-sizes, default);
54 |
55 | border: $callout-border;
56 | border-radius: $callout-radius;
57 |
58 | // Respect the padding, fool.
59 | > :first-child {
60 | margin-top: 0;
61 | }
62 |
63 | > :last-child {
64 | margin-bottom: 0;
65 | }
66 | }
67 |
68 | /// Generate quick styles for a callout using a single color as a baseline.
69 | /// @param {Color} $color [$callout-background] - Color to use.
70 | @mixin callout-style($color: $callout-background) {
71 | $background: scale-color($color, $lightness: $callout-background-fade);
72 |
73 | background-color: $background;
74 | color: color-pick-contrast($background, ($callout-font-color, $callout-font-color-alt));
75 | }
76 |
77 | @mixin callout-size($padding) {
78 | padding-top: $padding;
79 | padding-right: $padding;
80 | padding-bottom: $padding;
81 | padding-left: $padding;
82 | }
83 |
84 |
85 | /// Adds styles for a callout.
86 | /// @param {Color} $color [$callout-background] - Color to use.
87 | @mixin callout($color: $callout-background) {
88 | @include callout-style($color);
89 | @include callout-base;
90 | }
91 |
92 | @mixin foundation-callout {
93 | .callout {
94 | @include callout;
95 |
96 | @each $name, $color in $foundation-palette {
97 | &.#{"" + $name} {
98 | @include callout-style($color);
99 | }
100 | }
101 |
102 | @each $size, $padding in map-remove($callout-sizes, default) {
103 | &.#{$size} {
104 | @include callout-size($padding);
105 | }
106 | }
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_card.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group card
7 | ////
8 |
9 | /// Default background color.
10 | /// @type Color
11 | $card-background: $white !default;
12 |
13 | /// Default font color for cards.
14 | /// @type Color
15 | $card-font-color: $body-font-color !default;
16 |
17 | /// Default background.
18 | /// @type Color
19 | $card-divider-background: $light-gray !default;
20 |
21 | /// Default border style.
22 | /// @type List
23 | $card-border: 1px solid $light-gray !default;
24 |
25 | /// Default card shadow.
26 | /// @type List
27 | $card-shadow: none !default;
28 |
29 | /// Default border radius.
30 | /// @type List
31 | $card-border-radius: $global-radius !default;
32 |
33 | /// Default padding.
34 | /// @type Number
35 | $card-padding: $global-padding !default;
36 |
37 | /// Default bottom margin.
38 | /// @type number
39 | $card-margin-bottom: $global-margin !default;
40 |
41 | /// Adds styles for a card container.
42 | /// @param {Color} $background - Background color of the card.
43 | /// @param {Color} $color - font color of the card.
44 | /// @param {Number} $margin - Bottom margin of the card.
45 | /// @param {List} $border - Border around the card.
46 | /// @param {List} $radius - border radius of the card.
47 | /// @param {List} $shadow - box shadow of the card.
48 | @mixin card-container(
49 | $background: $card-background,
50 | $color: $card-font-color,
51 | $margin: $card-margin-bottom,
52 | $border: $card-border,
53 | $radius: $card-border-radius,
54 | $shadow: $card-shadow
55 | ) {
56 | @if $global-flexbox {
57 | display: flex;
58 | flex-direction: column;
59 | flex-grow: 1;
60 | }
61 |
62 | margin-bottom: $margin;
63 |
64 | border: $border;
65 | border-radius: $radius;
66 |
67 | background: $background;
68 | box-shadow: $shadow;
69 |
70 | overflow: hidden;
71 | color: $color;
72 |
73 | & > :last-child {
74 | margin-bottom: 0;
75 | }
76 | }
77 |
78 | /// Adds styles for a card divider.
79 | @mixin card-divider(
80 | $background: $card-divider-background,
81 | $padding: $card-padding
82 | ) {
83 | @if $global-flexbox {
84 | display: flex;
85 | flex: 0 1 auto;
86 | }
87 |
88 | padding: $padding;
89 | background: $background;
90 |
91 | & > :last-child {
92 | margin-bottom: 0;
93 | }
94 | }
95 |
96 | /// Adds styles for a card section.
97 | @mixin card-section(
98 | $padding: $card-padding
99 | ) {
100 | @if $global-flexbox {
101 | flex: 1 0 auto;
102 | }
103 |
104 | padding: $padding;
105 |
106 | & > :last-child {
107 | margin-bottom: 0;
108 | }
109 | }
110 |
111 | @mixin foundation-card {
112 | .card {
113 | @include card-container;
114 | }
115 |
116 | .card-divider {
117 | @include card-divider;
118 | }
119 |
120 | .card-section {
121 | @include card-section;
122 | }
123 |
124 | // For IE 11 - Flexbug
125 | // https://github.com/philipwalton/flexbugs/issues/75
126 | .card-image {
127 | min-height: 1px;
128 | }
129 | }
130 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_flex.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group Flexbox Utilities
7 | ////
8 | //
9 | /// Default value for the count of source ordering`
10 | /// @type Number
11 | $flex-source-ordering-count: 6 !default;
12 |
13 | /// Quickly disable/enable Responsive breakpoints for Vanilla Flex Helpers.
14 | /// @type Boolean
15 | $flexbox-responsive-breakpoints: true !default;
16 |
17 | @mixin flex-helpers {
18 | .flex-container {
19 | @include flex;
20 | }
21 |
22 | .flex-child-auto {
23 | flex: 1 1 auto;
24 | }
25 |
26 | .flex-child-grow {
27 | flex: 1 0 auto;
28 | }
29 |
30 | .flex-child-shrink {
31 | flex: 0 1 auto;
32 | }
33 |
34 | @each $dir, $prop in $-zf-flex-direction {
35 | .flex-dir-#{$dir} {
36 | @include flex-direction($prop);
37 | }
38 | }
39 |
40 | @if ($flexbox-responsive-breakpoints) {
41 | // Loop through Responsive Breakpoints
42 | @each $size in $breakpoint-classes {
43 | @include breakpoint($size) {
44 | @if $size != $-zf-zero-breakpoint {
45 | .#{$size}-flex-container {
46 | @include flex;
47 | }
48 |
49 | .#{$size}-flex-child-auto {
50 | flex: 1 1 auto;
51 | }
52 |
53 | .#{$size}-flex-child-grow {
54 | flex: 1 0 auto;
55 | }
56 |
57 | .#{$size}-flex-child-shrink {
58 | flex: 0 1 auto;
59 | }
60 |
61 | @each $dir, $prop in $-zf-flex-direction {
62 | .#{$size}-flex-dir-#{$dir} {
63 | @include flex-direction($prop);
64 | }
65 | }
66 | }
67 | }
68 | }
69 | }
70 | }
71 |
72 | @mixin foundation-flex-classes {
73 | // Horizontal alignment using justify-content
74 | @each $hdir, $prop in $-zf-flex-justify {
75 | .align-#{$hdir} {
76 | @include flex-align($x: $hdir);
77 | }
78 | }
79 |
80 | // Horizontal alignment Specifically for Vertical Menu
81 | @each $hdir, $prop in map-remove($-zf-flex-justify, 'justify', 'spaced') {
82 | .align-#{$hdir} {
83 | &.vertical {
84 | &.menu > li > a {
85 | @include flex-align($x: $hdir);
86 | }
87 | }
88 | }
89 | }
90 |
91 | // Vertical alignment using align-items and align-self
92 | @each $vdir, $prop in $-zf-flex-align {
93 | .align-#{$vdir} {
94 | @include flex-align($y: $vdir);
95 | }
96 |
97 | .align-self-#{$vdir} {
98 | @include flex-align-self($y: $vdir);
99 | }
100 | }
101 |
102 | // Central alignment of content
103 | .align-center-middle {
104 | @include flex-align($x: center, $y: middle);
105 | align-content: center;
106 | }
107 |
108 | // Source ordering
109 | @include -zf-each-breakpoint {
110 | @for $i from 1 through $flex-source-ordering-count {
111 | .#{$-zf-size}-order-#{$i} {
112 | @include flex-order($i);
113 | }
114 | }
115 | }
116 |
117 | // Vanilla Flexbox Helpers
118 | @include flex-helpers;
119 | }
120 |
--------------------------------------------------------------------------------
/vendor/assets/scss/util/_flex.scss:
--------------------------------------------------------------------------------
1 | @function -zf-flex-justify($text-direction) {
2 | $-zf-flex-justify: (
3 | 'left': if($text-direction == rtl, flex-end, flex-start),
4 | 'right': if($text-direction == rtl, flex-start, flex-end),
5 | 'center': center,
6 | 'justify': space-between,
7 | 'spaced': space-around,
8 | );
9 |
10 | @return $-zf-flex-justify;
11 | }
12 |
13 |
14 | $-zf-flex-align: (
15 | 'top': flex-start,
16 | 'bottom': flex-end,
17 | 'middle': center,
18 | 'stretch': stretch,
19 | );
20 |
21 | $-zf-flex-direction: (
22 | 'row': row,
23 | 'row-reverse': row-reverse,
24 | 'column': column,
25 | 'column-reverse': column-reverse,
26 | );
27 |
28 | /// Enables flexbox by adding `display: flex` to the element.
29 | @mixin flex {
30 | display: flex;
31 | }
32 |
33 | /// Horizontally or vertically aligns the items within a flex container.
34 | ///
35 | /// @param {Keyword} $x [null] - Horizontal alignment to use. Can be `left`, `right`, `center`, `justify`, or `spaced`. Or, set it to `null` (the default) to not set horizontal alignment.
36 | /// @param {Keyword} $y [null] - Vertical alignment to use. Can be `top`, `bottom`, `middle`, or `stretch`. Or, set it to `null` (the default) to not set vertical alignment.
37 | @mixin flex-align($x: null, $y: null) {
38 | @if $x {
39 | @if map-has-key($-zf-flex-justify, $x) {
40 | $x: map-get($-zf-flex-justify, $x);
41 | }
42 | @else {
43 | @warn 'flex-grid-row-align(): #{$x} is not a valid value for horizontal alignment. Use left, right, center, justify, or spaced.';
44 | }
45 | }
46 |
47 | @if $y {
48 | @if map-has-key($-zf-flex-align, $y) {
49 | $y: map-get($-zf-flex-align, $y);
50 | }
51 | @else {
52 | @warn 'flex-grid-row-align(): #{$y} is not a valid value for vertical alignment. Use top, bottom, middle, or stretch.';
53 | }
54 | }
55 |
56 | justify-content: $x;
57 | align-items: $y;
58 | }
59 |
60 | /// Vertically align a single column within a flex row. Apply this mixin to a flex column.
61 | ///
62 | /// @param {Keyword} $y [null] - Vertical alignment to use. Can be `top`, `bottom`, `middle`, or `stretch`. Or, set it to `null` (the default) to not set vertical alignment.
63 | @mixin flex-align-self($y: null) {
64 | @if $y {
65 | @if map-has-key($-zf-flex-align, $y) {
66 | $y: map-get($-zf-flex-align, $y);
67 | }
68 | @else {
69 | @warn 'flex-grid-column-align(): #{$y} is not a valid value for alignment. Use top, bottom, middle, or stretch.';
70 | }
71 | }
72 |
73 | align-self: $y;
74 | }
75 |
76 | /// Changes the source order of a flex child. Children with lower numbers appear first in the layout.
77 | /// @param {Number} $order [0] - Order number to apply.
78 | @mixin flex-order($order: 0) {
79 | order: $order;
80 | }
81 |
82 | /// Change flex-direction
83 | /// @param {Keyword} $direction [row] - Flex direction to use. Can be
84 | /// - row (default): same as text direction
85 | /// - row-reverse: opposite to text direction
86 | /// - column: same as row but top to bottom
87 | /// - column-reverse: same as row-reverse top to bottom
88 | @mixin flex-direction($direction: row) {
89 | flex-direction: $direction;
90 | }
91 |
--------------------------------------------------------------------------------
/vendor/assets/scss/forms/_meter.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group meter
7 | ////
8 |
9 | /// Height of a `` element.
10 | /// @type Length
11 | $meter-height: 1rem !default;
12 |
13 | /// Border radius of a `` element.
14 | /// @type Length
15 | $meter-radius: $global-radius !default;
16 |
17 | /// Background color of a `` element.
18 | /// @type Color
19 | $meter-background: $medium-gray !default;
20 |
21 | /// Meter fill for an optimal value in a `` element.
22 | /// @type Color
23 | $meter-fill-good: $success-color !default;
24 |
25 | /// Meter fill for an average value in a `` element.
26 | /// @type Color
27 | $meter-fill-medium: $warning-color !default;
28 |
29 | /// Meter fill for a suboptimal value in a `` element.
30 | /// @type Color
31 | $meter-fill-bad: $alert-color !default;
32 |
33 | @mixin foundation-meter-element {
34 | meter {
35 | display: block;
36 | width: 100%;
37 | height: $meter-height;
38 | margin-bottom: 1rem;
39 |
40 | // Disable `-webkit-appearance: none` from getting prefixed,
41 | // We have disabled autoprefixer first and are just only using
42 | // `-moz-appearance: none` as a prefix and neglecting the webkit.
43 |
44 | /*! autoprefixer: off */
45 | -moz-appearance: none; // sass-lint:disable-line no-vendor-prefixes
46 | appearance: none;
47 |
48 | @if has-value($meter-radius) {
49 | border-radius: $meter-radius;
50 | }
51 |
52 | // For Firefox
53 | border: 0;
54 | background: $meter-background;
55 |
56 | // Chrome/Safari/Edge
57 | &::-webkit-meter-bar {
58 | border: 0;
59 | @if has-value($meter-radius) {
60 | border-radius: $meter-radius;
61 | }
62 |
63 | background: $meter-background;
64 | }
65 |
66 | &::-webkit-meter-inner-element {
67 | @if has-value($meter-radius) {
68 | border-radius: $meter-radius;
69 | }
70 | }
71 |
72 | &::-webkit-meter-optimum-value {
73 | background: $meter-fill-good;
74 |
75 | @if has-value($meter-radius) {
76 | border-radius: $meter-radius;
77 | }
78 | }
79 |
80 | &::-webkit-meter-suboptimum-value {
81 | background: $meter-fill-medium;
82 |
83 | @if has-value($meter-radius) {
84 | border-radius: $meter-radius;
85 | }
86 | }
87 |
88 | &::-webkit-meter-even-less-good-value {
89 | background: $meter-fill-bad;
90 |
91 | @if has-value($meter-radius) {
92 | border-radius: $meter-radius;
93 | }
94 | }
95 |
96 | &::-moz-meter-bar {
97 | background: $primary-color;
98 |
99 | @if has-value($meter-radius) {
100 | border-radius: $meter-radius;
101 | }
102 | }
103 |
104 | &:-moz-meter-optimum::-moz-meter-bar {
105 | background: $meter-fill-good;
106 | }
107 |
108 | &:-moz-meter-sub-optimum::-moz-meter-bar {
109 | background: $meter-fill-medium;
110 | }
111 |
112 | &:-moz-meter-sub-sub-optimum::-moz-meter-bar {
113 | background: $meter-fill-bad;
114 | }
115 | }
116 | }
117 |
--------------------------------------------------------------------------------
/vendor/assets/js/plugins/foundation.util.keyboard.min.js:
--------------------------------------------------------------------------------
1 | ((e,t)=>{"object"==typeof exports&&"object"==typeof module?module.exports=t(require("./foundation.core"),require("jquery")):"function"==typeof define&&define.amd?define(["./foundation.core","jquery"],t):"object"==typeof exports?exports.__FOUNDATION_EXTERNAL__=t(require("./foundation.core"),require("jquery")):(e.__FOUNDATION_EXTERNAL__=e.__FOUNDATION_EXTERNAL__||{},e.__FOUNDATION_EXTERNAL__["foundation.util.keyboard"]=t(e.__FOUNDATION_EXTERNAL__["foundation.core"],e.jQuery))})(self,function(t,n){return r={"./js/foundation.util.keyboard.js":function(e,t,n){n.r(t),n.d(t,{Keyboard:function(){return f}});var t=n("jquery"),r=n.n(t),a=n("./foundation.core"),o={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",35:"END",36:"HOME",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},i={};function u(e){return!!e&&e.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter(function(){return!(!r()(this).is(":visible")||r()(this).attr("tabindex")<0)}).sort(function(e,t){var n,o;return r()(e).attr("tabindex")===r()(t).attr("tabindex")?0:(n=parseInt(r()(e).attr("tabindex"),10),o=parseInt(r()(t).attr("tabindex"),10),void 0===r()(e).attr("tabindex")&&0{var t,n={};for(t in e)e.hasOwnProperty(t)&&(n[e[t]]=e[t]);return n})(o),parseKey:d,handleKey:function(e,t,n){var t=i[t],o=this.parseKey(e);if(!t)return console.warn("Component not defined!");!0!==e.zfIsKeyHandled&&((t=n[(void 0===t.ltr?t:(0,a.rtl)()?r().extend({},t.ltr,t.rtl):r().extend({},t.rtl,t.ltr))[o]])&&"function"==typeof t?(o=t.apply(),e.zfIsKeyHandled=!0,!n.handled&&"function"!=typeof n.handled||n.handled(o)):!n.unhandled&&"function"!=typeof n.unhandled||n.unhandled())},findFocusable:u,register:function(e,t){i[e]=t},trapFocus:function(e){var t=u(e),n=t.eq(0),o=t.eq(-1);e.on("keydown.zf.trapfocus",function(e){e.target===o[0]&&"TAB"===d(e)?(e.preventDefault(),n.focus()):e.target===n[0]&&"SHIFT_TAB"===d(e)&&(e.preventDefault(),o.focus())})},releaseFocus:function(e){e.off("keydown.zf.trapfocus")}}},"./foundation.core":function(e){e.exports=t},jquery:function(e){e.exports=n}},a={},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,{a:t}),t},o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u={},(o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})})(u),o.d(u,{Foundation:function(){return e.Foundation},Keyboard:function(){return i.Keyboard}}),e=o("./foundation.core"),i=o("./js/foundation.util.keyboard.js"),e.Foundation.Keyboard=i.Keyboard,u;function o(e){var t=a[e];return void 0!==t||(t=a[e]={exports:{}},r[e](t,t.exports,o)),t.exports}var r,a,e,i,u});
2 | //# sourceMappingURL=foundation.util.keyboard.min.js.map
3 |
--------------------------------------------------------------------------------
/vendor/assets/scss/grid/_row.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group grid
7 | ////
8 |
9 | /// Change the behavior of columns defined inside this mixin to use a different column count.
10 | /// @content
11 | ///
12 | /// @param {Number} $columns - Number of columns to use.
13 | /// @param {Boolean} $root [false]
14 | /// If `false`, selectors inside this mixin will nest inside the parent selector.
15 | /// If `true`, selectors will not nest.
16 | @mixin grid-context(
17 | $columns,
18 | $root: false
19 | ) {
20 | // Store the current column count so it can be re-set later
21 | $old-grid-column-count: $grid-column-count;
22 | $grid-column-count: $columns !global;
23 |
24 | @if $root {
25 | @at-root { @content; }
26 | }
27 | @else {
28 | @content;
29 | }
30 |
31 | // Restore the old column count
32 | $grid-column-count: $old-grid-column-count !global;
33 | }
34 |
35 | /// Creates a grid row.
36 | /// @content
37 | ///
38 | /// @param {Number} $columns [null] - Column count for this row. `null` will use the default column count.
39 | /// @param {Keywords} $behavior [null]
40 | /// Modifications to the default grid styles. `nest` indicates the row will be placed inside another row. `collapse` indicates that the columns inside this row will not have padding. `nest collapse` combines both behaviors.
41 | /// @param {Keyword|Number} $size [$grid-row-width] Maximum size of the row. Set to `expand` to make the row taking the full width.
42 | /// @param {Boolean} $cf [true] - Whether or not to include a clearfix.
43 | /// @param {Number|Map} $gutters [$grid-column-gutter] - Gutter map or single value to use when inverting margins. Responsive gutter settings by default.
44 | @mixin grid-row(
45 | $columns: null,
46 | $behavior: null,
47 | $size: $grid-row-width,
48 | $cf: true,
49 | $gutters: $grid-column-gutter
50 | ) {
51 | $margin: auto;
52 |
53 | @if index($behavior, nest) != null {
54 | @include grid-row-nest($gutters);
55 |
56 | @if index($behavior, collapse) != null {
57 | margin-right: 0;
58 | margin-left: 0;
59 | }
60 | }
61 | @else {
62 | @include grid-row-size($size);
63 | margin-right: auto;
64 | margin-left: auto;
65 | }
66 |
67 | @if $cf {
68 | @include clearfix;
69 | }
70 |
71 | @if $columns != null {
72 | @include grid-context($columns) {
73 | @content;
74 | }
75 | }
76 | }
77 |
78 | /// Inverts the margins of a row to nest it inside of a column.
79 | ///
80 | /// @param {Number|Map} $gutters [$grid-column-gutter] - Gutter map or single value to use when inverting margins. Responsive gutter settings by default.
81 | @mixin grid-row-nest($gutters: $grid-column-gutter) {
82 | @include -zf-each-breakpoint {
83 | $margin: rem-calc(-zf-get-bp-val($gutters, $-zf-size)) * 0.5 * -1;
84 |
85 | margin-right: $margin;
86 | margin-left: $margin;
87 | }
88 | }
89 |
90 | /// Set a grid row size
91 | ///
92 | /// @param {Keyword|Number} $size [$grid-row-width] Maximum size of the row. Set to `expand` to make the row taking the full width.
93 | @mixin grid-row-size($size: $grid-row-width) {
94 | @if $size == expand {
95 | $size: none;
96 | }
97 |
98 | max-width: $size;
99 | }
100 |
--------------------------------------------------------------------------------
/vendor/assets/scss/xy-grid/_frame.scss:
--------------------------------------------------------------------------------
1 | // sass-lint:disable no-vendor-prefixes
2 |
3 | /// Modifies a grid to give it "frame" behavior (no overflow, no wrap, stretch behavior)
4 | ///
5 | /// @param {Boolean} $vertical [false] - Is grid vertical or horizontal. Should match grid.
6 | /// @param {Boolean} $nested [false] - Is grid nested or not. If nested is true this sets the frame to 100% height, otherwise will be 100vh.
7 | /// @param {Number|Map} $gutters [null] - Map or single value for gutters.
8 | /// @param {String} $breakpoint [null] - The name of the breakpoint size in your gutters map to get the size from.
9 | /// @param {Boolean} $include-base [true] - Include the base styles that don't vary per breakpoint.
10 | @mixin xy-grid-frame(
11 | $vertical: false,
12 | $nested: false,
13 | $gutters: null,
14 | $breakpoint: null,
15 | $include-base: true
16 | ) {
17 |
18 | @if $include-base {
19 | overflow: hidden;
20 | position: relative;
21 | flex-wrap: nowrap;
22 | align-items: stretch;
23 | }
24 |
25 | @if $breakpoint == null and type-of($gutters) == 'map' {
26 | @include -zf-each-breakpoint() {
27 | @include xy-grid-frame($vertical, $nested, $gutters, $-zf-size, false);
28 | }
29 | } @else {
30 | // Get our gutters if applicable
31 | $gutter: -zf-get-bp-val($gutters, $breakpoint);
32 |
33 | // If we have a gutter, add it to the width/height
34 | @if $gutter {
35 | @if $vertical == true {
36 | $unit: if($nested == true, 100%, 100vh);
37 | $gutter: rem-calc($gutter);
38 | // Make sure that 0 is translated in 0rem for calc()
39 | @if $gutter == 0 {
40 | // sass-lint:disable zero-unit
41 | $gutter: 0rem;
42 | }
43 | height: calc(#{$unit} + #{$gutter});
44 | } @else {
45 | $unit: if($nested == true, 100%, 100vw);
46 | $gutter: rem-calc($gutter);
47 | // Make sure that 0 is translated in 0rem for calc()
48 | @if $gutter == 0 {
49 | // sass-lint:disable zero-unit
50 | $gutter: 0rem;
51 | }
52 | width: calc(#{$unit} + #{$gutter});
53 | }
54 | }
55 | @else {
56 | @if $vertical == true {
57 | height: if($nested == true, 100%, 100vh);
58 | } @else {
59 | width: if($nested == true, 100%, 100vw);
60 | }
61 | }
62 | }
63 | }
64 |
65 | /// Modifies a cell to give it "block" behavior (overflow auto, inertial scrolling)
66 | ///
67 | /// @param {Boolean} $vertical [false] - Is grid vertical or horizontal. Should match grid.
68 | @mixin xy-cell-block(
69 | $vertical: false
70 | ) {
71 | $property: if($vertical == true, 'overflow-y', 'overflow-x');
72 |
73 | @if $vertical == true {
74 | overflow-y: auto;
75 | max-height: 100%;
76 | min-height: 100%;
77 | } @else {
78 | overflow-x: auto;
79 | max-width: 100%;
80 | }
81 |
82 | -webkit-overflow-scrolling: touch;
83 | -ms-overflow-style: -ms-autohiding-scrollbar;
84 | }
85 |
86 | /// Container for inside a grid frame containing multiple blocks. Typically used
87 | /// as a modifier for a `.cell` to allow the cell to pass along flex sizing
88 | /// constraints / from parents to children.
89 | @mixin xy-cell-block-container() {
90 | display: flex;
91 | flex-direction: column;
92 | max-height: 100%;
93 |
94 | > .grid-x {
95 | max-height: 100%;
96 | flex-wrap: nowrap;
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/util/_function.scss:
--------------------------------------------------------------------------------
1 | ////
2 | /// In order to improve modular namespacing, LibSass 4 only accepts first-class
3 | /// functions as argument so functions are called in their own context.
4 | /// In most case, `get-function()` must only be used by the user in its own
5 | /// context. It is used in this library to keep a maximum compatibility.
6 | /// End developer must be encouraged to use first-class functions.
7 | ///
8 | /// @link http://oddbird.net/2017/03/30/safe-get
9 | /// @link http://sass.logdown.com/posts/809572-sass-35-release-candidate
10 | ////
11 |
12 | ///
13 | /// Return if a given value is a function or a function name string.
14 | ///
15 | /// @access private
16 | ///
17 | /// @param {*} $value - Value to test
18 | /// @return {Boolean}
19 | ///
20 | @function -mui-is-function($value) {
21 | @return type-of($value) == 'function' or type-of($value) == 'string';
22 | }
23 |
24 | ///
25 | /// Return if a given value is callable.
26 | ///
27 | /// @access private
28 | ///
29 | /// @param {*} $value - Value to test
30 | /// @return {Boolean}
31 | ///
32 | @function -mui-is-callable($value) {
33 | @return type-of($value) == 'function' or (type-of($value) == 'string' and function-exists($value));
34 | }
35 |
36 | ///
37 | /// Check if a given value is callable and throw the appropriate error otherwise
38 | ///
39 | /// @access private
40 | ///
41 | /// @param {*} $value - Value to check
42 | /// @return {Boolean}
43 | ///
44 | @function -mui-assert-function($value) {
45 | @if -mui-is-callable($value) {
46 | @return true;
47 | } @else if (type-of($value) == 'string' and function-exists('get-function') == true) {
48 | @error 'Assertion Error: function name string "#{$value}" cannot be found. You may need to use `get-function()` and first-class functions instead. See http://oddbird.net/2017/03/30/safe-get';
49 | } @else if (type-of($value) == 'string' and function-exists('get-function') == false) {
50 | @error 'Assertion Error: function name string "#{$value}" cannot be found.';
51 | } @else {
52 | @error 'Assertion Error: #{$value} (#{type-of($value)}) is not a function.';
53 | }
54 | }
55 |
56 | ///
57 | /// Return a reference to the given function or function name string compatible
58 | /// with the current Sass version.
59 | ///
60 | /// * For Sass < 3.5, return the passed argument
61 | /// * For Sass >= 3.5, return a first-class function if a function name string
62 | /// was passed
63 | ///
64 | /// @access private
65 | ///
66 | /// @param {Function|String} - $func - Function or name of the function
67 | /// @return {Function|String} Function or name of the function following
68 | /// the support of first-class functions.
69 | ///
70 | @function -mui-safe-get-function($func) {
71 | @if -mui-assert-function($func) {
72 | @if function-exists('get-function') and type-of($func) == 'string' {
73 | @return get-function($func);
74 | } @else {
75 | @return $func;
76 | }
77 | }
78 | }
79 |
80 | ///
81 | /// Polyfill for the `call` function supporting both functions and strings.
82 | ///
83 | /// @access private
84 | ///
85 | /// @param {Function|String} $func - Function or name of the function to call
86 | /// @param {Arglist} $args... - Arguments to call the function with
87 | ///
88 | /// @return {*}
89 | ///
90 | @function -mui-safe-call($func, $args...) {
91 | @if -mui-assert-function($func) {
92 | @return call(-mui-safe-get-function($func), $args...);
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_slider.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | // [TODO] Check how plugin confirms disabled or vertical status
6 | // [TODO] Check if transition: all; is necessary
7 |
8 | ////
9 | /// @group slider
10 | ////
11 |
12 | /// Default slider width of a vertical slider. (Doesn't apply to the native slider.)
13 | /// @type Number
14 | $slider-width-vertical: 0.5rem !default;
15 |
16 | /// Transition properties to apply to the slider handle and fill. (Doesn't apply to the native slider.)
17 | /// @type Transition
18 | $slider-transition: all 0.2s ease-in-out !default;
19 |
20 | /// Adds the general styles for sliders.
21 | @mixin slider-container {
22 | position: relative;
23 | height: $slider-height;
24 | margin-top: 1.25rem;
25 | margin-bottom: 2.25rem;
26 |
27 | background-color: $slider-background;
28 | cursor: pointer;
29 | user-select: none;
30 | touch-action: none;
31 | }
32 |
33 | /// Adds the general styles for active fill for sliders.
34 | @mixin slider-fill {
35 | position: absolute;
36 | top: 0;
37 | left: 0;
38 |
39 | display: inline-block;
40 | max-width: 100%;
41 | height: $slider-height;
42 |
43 | background-color: $slider-fill-background;
44 | transition: $slider-transition;
45 |
46 | &.is-dragging {
47 | transition: all 0s linear;
48 | }
49 | }
50 |
51 | /// Adds the general styles for the slider handles.
52 | @mixin slider-handle {
53 | left: 0;
54 | z-index: 1;
55 | cursor: grab;
56 |
57 | display: inline-block;
58 | width: $slider-handle-width;
59 | height: $slider-handle-height;
60 |
61 | border-radius: $slider-radius;
62 | background-color: $slider-handle-background;
63 | transition: $slider-transition;
64 | touch-action: manipulation;
65 |
66 | @include vertical-center;
67 | @include disable-mouse-outline;
68 |
69 | &:hover {
70 | background-color: scale-color($slider-handle-background, $lightness: -15%);
71 | }
72 |
73 | &.is-dragging {
74 | transition: all 0s linear;
75 | cursor: grabbing;
76 | }
77 | }
78 |
79 | @mixin slider-disabled {
80 | opacity: $slider-opacity-disabled;
81 | cursor: not-allowed;
82 | }
83 |
84 | @mixin slider-vertical {
85 | display: inline-block;
86 | width: $slider-width-vertical;
87 | height: 12.5rem;
88 | margin: 0 1.25rem;
89 | transform: scale(1, -1);
90 |
91 | .slider-fill {
92 | top: 0;
93 | width: $slider-width-vertical;
94 | max-height: 100%;
95 | }
96 |
97 | .slider-handle {
98 | position: absolute;
99 | top: 0;
100 | left: 50%;
101 | width: $slider-handle-height;
102 | height: $slider-handle-width;
103 | transform: translateX(-50%);
104 | }
105 | }
106 |
107 | @mixin foundation-slider {
108 | // Container
109 | .slider {
110 | @include slider-container;
111 | }
112 |
113 | // Fill area
114 | .slider-fill {
115 | @include slider-fill;
116 | }
117 |
118 | // Draggable handle
119 | .slider-handle {
120 | @include slider-handle;
121 | }
122 |
123 | // Disabled state
124 | .slider.disabled,
125 | .slider[disabled] {
126 | @include slider-disabled;
127 | }
128 |
129 | // Vertical slider
130 | .slider.vertical {
131 | @include slider-vertical;
132 | }
133 |
134 | // RTL support
135 | @if $global-text-direction == rtl {
136 | .slider:not(.vertical) {
137 | transform: scale(-1, 1);
138 | }
139 | }
140 | }
141 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Foundation::Rails
2 |
3 | [](https://badge.fury.io/rb/foundation-rails)
4 |
5 | **Foundation::Rails** is a gem that makes it super easy to use Foundation in your upcoming Rails project.
6 |
7 | ## Installation
8 |
9 | Add these lines to your application's Gemfile:
10 |
11 | ```shell
12 | gem 'foundation-rails'
13 | gem 'autoprefixer-rails'
14 | ```
15 |
16 | And then execute:
17 |
18 | ```shell
19 | bundle
20 | ```
21 |
22 | Or install it yourself as:
23 |
24 | ```shell
25 | gem install foundation-rails
26 | ```
27 |
28 | ### Configuring Foundation
29 |
30 | You can run the following command to add Foundation:
31 |
32 | ```shell
33 | rails g foundation:install
34 | ```
35 |
36 | Generating Haml or Slim versions of the markup can be done by appending the `--haml` or `--slim` option to the above command.
37 |
38 | ### Motion UI
39 |
40 | [Motion UI](https://github.com/zurb/motion-ui) is a Sass library for creating flexible UI transitions and animations, and it comes packaged with the `foundation-rails` gem. To use Motion UI, uncomment the following lines from `foundation_and_overrides.scss`:
41 |
42 | ```scss
43 | // @import 'motion-ui/motion-ui';
44 | // @include motion-ui-transitions;
45 | // @include motion-ui-animations;
46 | ```
47 |
48 | ## Manual Installation
49 |
50 | ### Add Foundation to your CSS
51 |
52 | Append the following line to your `app/assets/stylesheets/application.css` file:
53 |
54 | ```scss
55 | /*= require foundation
56 | ```
57 |
58 | If you're planning on using Sass, then you'll want to rename `application.css` to `application.scss`. That file should then look like:
59 |
60 | ```scss
61 | @import "foundation_and_overrides";
62 | /* Add imports of custom sass/scss files here */
63 | ```
64 |
65 | ### Add Foundation to your JS
66 |
67 | Append the following lines to your `app/assets/javascripts/application.js` file:
68 |
69 | ```js
70 | //= require foundation
71 | $(function(){ $(document).foundation(); });
72 | ```
73 |
74 | Or if you use Turbolinks:
75 |
76 | ```js
77 | //= require foundation
78 | $(document).on('turbolinks:load', function() {
79 | $(function(){ $(document).foundation(); });
80 | });
81 | ```
82 |
83 | ### Set Viewport Width
84 |
85 | Add the following line to the `head` of your page layout:
86 |
87 | ```html
88 |
89 | ```
90 |
91 | ## Usage
92 |
93 | Run the generator to add foundation to the asset pipeline:
94 |
95 | ```shell
96 | rails g foundation:install [layout_name] [options]
97 |
98 | Options:
99 | [--haml] # Generate HAML layout instead of erb
100 | [--slim] # Generate Slim layout instead of erb
101 | Runtime options:
102 | -f, [--force] # Overwrite files that already exist
103 | -p, [--pretend] # Run but do not make any changes
104 | -q, [--quiet] # Suppress status output
105 | -s, [--skip] # Skip files that already exist
106 | ```
107 |
108 | ## Contributing
109 |
110 | 1. Fork it
111 | 2. Create your feature branch (`git checkout -b my-new-feature`)
112 | 3. Commit your changes (`git commit -am 'Add some feature'`)
113 | 4. Push to the branch (`git push origin my-new-feature`)
114 | 5. Create new Pull Request
115 |
116 | ## Resources
117 |
118 | * [Foundation Docs](http://foundation.zurb.com/docs)
119 | * [Foundation Forum](http://foundation.zurb.com/forum)
120 | * [Foundation Training](http://zurb.com/university/courses)
121 |
--------------------------------------------------------------------------------
/lib/generators/foundation/install_generator.rb:
--------------------------------------------------------------------------------
1 | require 'rails/generators'
2 |
3 | module Foundation
4 | module Generators
5 | class InstallGenerator < ::Rails::Generators::Base
6 | desc "Install Foundation within a Rails project"
7 | source_root File.join(File.dirname(__FILE__), "templates")
8 | argument :layout_name, :type => :string, :default => "application", :banner => "layout_name"
9 |
10 | class_option :haml, :desc => "Generate Haml layout instead of erb", :type => :boolean
11 | class_option :slim, :desc => "Generate Slim layout instead of erb", :type => :boolean
12 |
13 | def add_assets
14 | # rails_ujs breaks, need to incorporate rails-behavior plugin for this to work seamlessly
15 | # gsub_file "app/assets/javascripts/application#{detect_js_format[0]}", /\/\/= require jquery\n/, ""
16 | insert_into_file File.join(javascripts_base_dir, "application#{detect_js_format[0]}"), "#{detect_js_format[1]} require foundation\n", :before => "require_tree .\n"
17 | append_to_file File.join(javascripts_base_dir, "application#{detect_js_format[0]}"), "#{detect_js_format[2]}"
18 | create_app_scss
19 | insert_into_file File.join(stylesheets_base_dir, "application#{detect_css_format[0]}"), "\n#{detect_css_format[1]} require foundation_and_overrides\n", :after => "require_self"
20 | end
21 |
22 | def detect_js_format
23 | %w(.coffee .coffee.erb .js.coffee .js.coffee.erb .js .js.erb).each do |ext|
24 | if File.exist?(File.join(javascripts_base_dir, "application#{ext}"))
25 | if ext.include?(".coffee")
26 | return [ext, "#=", "\n() ->\n $(document).foundation()\n"]
27 | else
28 | return [ext, "//=", "\n$(function(){ $(document).foundation(); });\n"]
29 | end
30 | end
31 | end
32 | end
33 |
34 | def detect_css_format
35 | %w(.css .css.sass .sass .css.scss .scss).each do |ext|
36 | if File.exist?(File.join(stylesheets_base_dir, "application#{ext}"))
37 | if ext.include?(".sass") || ext.include?(".scss")
38 | return [ext, "//="]
39 | else
40 | return [ext, " *="]
41 | end
42 | end
43 | end
44 | end
45 |
46 | def create_layout
47 | if options.haml? || (defined?(Haml) && options.haml?)
48 | template "application.html.haml", File.join(layouts_base_dir, "#{file_name}.html.haml")
49 | elsif options.slim? || (defined?(Slim) && options.slim?)
50 | template "application.html.slim", File.join(layouts_base_dir, "#{file_name}.html.slim")
51 | else
52 | template "application.html.erb", File.join(layouts_base_dir, "#{file_name}.html.erb")
53 | end
54 | end
55 |
56 | def create_app_scss
57 | template "foundation_and_overrides.scss", File.join(stylesheets_base_dir, "foundation_and_overrides.scss")
58 | template "_settings.scss", File.join(stylesheets_base_dir, "_settings.scss")
59 | template "browserslist", File.join(stylesheets_base_dir, "browserslist")
60 | end
61 |
62 | private
63 |
64 | def file_name
65 | layout_name.underscore.downcase
66 | end
67 |
68 | def javascripts_base_dir
69 | File.join("app", "assets", "javascripts")
70 | end
71 |
72 | def stylesheets_base_dir
73 | File.join("app", "assets", "stylesheets")
74 | end
75 |
76 | def layouts_base_dir
77 | File.join("app", "views", "layouts")
78 | end
79 | end
80 | end
81 | end
82 |
--------------------------------------------------------------------------------
/vendor/assets/scss/prototype/_position.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group prototype-position
7 | ////
8 |
9 | /// Responsive breakpoints for position helpers
10 | /// @type Boolean
11 | $prototype-position-breakpoints: $global-prototype-breakpoints !default;
12 |
13 | /// Map containing all the `position` classes
14 | /// @type Map
15 | $prototype-position: (
16 | static,
17 | relative,
18 | absolute,
19 | fixed
20 | ) !default;
21 |
22 | /// z-index for fixed positioning
23 | /// @type Number
24 | $prototype-position-z-index: 975 !default;
25 |
26 | /// Position classes, by default coming through a map `$prototype-position`, whereas all the offset values are multiplied by `$global-position` which by default is equal to `1rem`.
27 | /// @param {String} $position [] Position classes, Either `static`, `relative`, `absolute` or `fixed`
28 | /// @param {Number} $top [null] - Top offset
29 | /// @param {Number} $right [null] - Right offset
30 | /// @param {Number} $bottom [null] - Bottom offset
31 | /// @param {Number} $left [null] - Left offset
32 | @mixin position(
33 | $position,
34 | $top: null,
35 | $right: null,
36 | $bottom: null,
37 | $left: null
38 | ) {
39 | position: $position !important;
40 | @if $top != null {
41 | top: $top * $global-position !important;
42 | }
43 | @if $right != null {
44 | right: $right * $global-position !important;
45 | }
46 | @if $bottom != null {
47 | bottom: $bottom * $global-position !important;
48 | }
49 | @if $left != null {
50 | left: $left * $global-position !important;
51 | }
52 | }
53 |
54 | /// Position Fixed on top corners
55 | /// @param {Number} $z-index [$prototype-position-z-index] z-index for `position-fixed-top`
56 | @mixin position-fixed-top(
57 | $z-index: $prototype-position-z-index
58 | ) {
59 | @include position(fixed, 0, 0, null, 0);
60 | z-index: $z-index;
61 | }
62 |
63 | /// Position Fixed on bottom corners
64 | /// @param {Number} $z-index [$prototype-position-z-index] z-index for `position-fixed-bottom`
65 | @mixin position-fixed-bottom(
66 | $z-index: $prototype-position-z-index
67 | ) {
68 | @include position(fixed, null, 0, 0, 0);
69 | z-index: $z-index;
70 | }
71 |
72 | @mixin foundation-prototype-position {
73 | // Position: Static, Relative, Fixed, Absolute
74 | @each $position in $prototype-position {
75 | .position-#{$position} {
76 | @include position($position);
77 | }
78 | }
79 |
80 | // Position: Fixed Top, Fixed Bottom
81 | .position-fixed-top {
82 | @include position-fixed-top;
83 | }
84 | .position-fixed-bottom {
85 | @include position-fixed-bottom;
86 | }
87 |
88 | @if ($prototype-position-breakpoints) {
89 | // Loop through Responsive Breakpoints
90 | @each $size in $breakpoint-classes {
91 | @include breakpoint($size) {
92 | // Position: Static, Relative, Fixed, Absolute
93 | @each $position in $prototype-position {
94 | @if $size != $-zf-zero-breakpoint {
95 | .#{$size}-position-#{$position} {
96 | @include position($position);
97 | }
98 | }
99 | }
100 |
101 | // Position: Fixed Top, Fixed Bottom
102 | @if $size != $-zf-zero-breakpoint {
103 | .#{$size}-position-fixed-top {
104 | @include position-fixed-top;
105 | }
106 |
107 | .#{$size}-position-fixed-bottom {
108 | @include position-fixed-bottom;
109 | }
110 | }
111 | }
112 | }
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_breadcrumbs.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group breadcrumbs
7 | ////
8 |
9 | /// Margin around a breadcrumbs container.
10 | /// @type Number
11 | $breadcrumbs-margin: 0 0 $global-margin 0 !default;
12 |
13 | /// Font size of breadcrumb links.
14 | /// @type Number
15 | $breadcrumbs-item-font-size: rem-calc(11) !default;
16 |
17 | /// Color of breadcrumb links.
18 | /// @type Color
19 | $breadcrumbs-item-color: $primary-color !default;
20 |
21 | /// Color of the active breadcrumb link.
22 | /// @type Color
23 | $breadcrumbs-item-color-current: $black !default;
24 |
25 | /// Opacity of disabled breadcrumb links.
26 | /// @type Number
27 | $breadcrumbs-item-color-disabled: $medium-gray !default;
28 |
29 | /// Margin between breadcrumb items.
30 | /// @type Number
31 | $breadcrumbs-item-margin: 0.75rem !default;
32 |
33 | /// If `true`, makes breadcrumb links uppercase.
34 | /// @type Boolean
35 | $breadcrumbs-item-uppercase: true !default;
36 |
37 | /// If `true`, adds a seperator between breadcrumb links.
38 | /// @type Boolean
39 | $breadcrumbs-item-separator: true !default;
40 |
41 | // If it exists $breadcrumbs-item-slash is used to build $breadcrumbs-item-separator. See the documentation.
42 | @if variable-exists(breadcrumbs-item-slash) {
43 | $breadcrumbs-item-separator: $breadcrumbs-item-slash;
44 | }
45 |
46 | /// Used character for the breadcrumb separator.
47 | /// @type Content
48 | $breadcrumbs-item-separator-item: '/' !default;
49 |
50 | /// Used character for the breadcrumb separator in rtl mode.
51 | /// @type Content
52 | $breadcrumbs-item-separator-item-rtl: '\\' !default;
53 |
54 | /// Color of breadcrumb item.
55 | /// @type Color
56 | $breadcrumbs-item-separator-color: $medium-gray !default;
57 |
58 | // If it exists $breadcrumbs-item-slash-color is used to build $breadcrumbs-item-separator-color. See the documentation.
59 | @if variable-exists(breadcrumbs-item-slash-color) {
60 | $breadcrumbs-item-separator-color: $breadcrumbs-item-slash-color;
61 | }
62 |
63 | /// Adds styles for a breadcrumbs container, along with the styles for the `` and `` elements inside of it.
64 | @mixin breadcrumbs-container {
65 | margin: $breadcrumbs-margin;
66 | list-style: none;
67 |
68 | @include clearfix;
69 |
70 | // Item wrapper
71 | li {
72 | float: #{$global-left};
73 |
74 | font-size: $breadcrumbs-item-font-size;
75 | color: $breadcrumbs-item-color-current;
76 | cursor: default;
77 |
78 | @if $breadcrumbs-item-uppercase {
79 | text-transform: uppercase;
80 | }
81 |
82 | @if $breadcrumbs-item-separator {
83 | // Need to escape the backslash
84 | $separator: if($global-text-direction == 'ltr', $breadcrumbs-item-separator-item, $breadcrumbs-item-separator-item-rtl);
85 |
86 | &:not(:last-child) {
87 | &::after {
88 | position: relative;
89 | margin: 0 $breadcrumbs-item-margin;
90 | opacity: 1;
91 | content: $separator;
92 | color: $breadcrumbs-item-separator-color;
93 | }
94 | }
95 | }
96 | @else {
97 | margin-#{$global-right}: $breadcrumbs-item-margin;
98 | }
99 | }
100 |
101 | // Page links
102 | a {
103 | color: $breadcrumbs-item-color;
104 |
105 | &:hover {
106 | text-decoration: underline;
107 | }
108 | }
109 | }
110 |
111 | @mixin foundation-breadcrumbs {
112 | .breadcrumbs {
113 | @include breadcrumbs-container;
114 |
115 | .disabled {
116 | color: $breadcrumbs-item-color-disabled;
117 | cursor: not-allowed;
118 | }
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/vendor/assets/scss/forms/_input-group.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group forms
7 | ////
8 |
9 | /// Color of labels prefixed to an input.
10 | /// @type Color
11 | $input-prefix-color: $black !default;
12 |
13 | /// Background color of labels prefixed to an input.
14 | /// @type Color
15 | $input-prefix-background: $light-gray !default;
16 |
17 | /// Border around labels prefixed to an input.
18 | /// @type Border
19 | $input-prefix-border: 1px solid $medium-gray !default;
20 |
21 | /// Left/right padding of an pre/postfixed input label
22 | $input-prefix-padding: 1rem !default;
23 |
24 | @mixin foundation-form-prepostfix {
25 | $height: ($input-font-size * $input-line-height) + (get-side($input-padding, 'top') + get-side($input-padding, 'bottom')) - rem-calc(1);
26 |
27 | .input-group {
28 | display: if($global-flexbox, flex, table);
29 | width: 100%;
30 | margin-bottom: $form-spacing;
31 |
32 | @if $global-flexbox {
33 | align-items: stretch;
34 | }
35 |
36 | > :first-child {
37 | &, &.input-group-button > * {
38 | border-radius: if($global-text-direction == rtl, 0 $input-radius $input-radius 0, $input-radius 0 0 $input-radius);
39 | }
40 | }
41 |
42 | > :last-child {
43 | &, &.input-group-button > * {
44 | border-radius: if($global-text-direction == rtl, $input-radius 0 0 $input-radius, 0 $input-radius $input-radius 0);
45 | }
46 | }
47 | }
48 |
49 | %input-group-child {
50 | margin: 0;
51 | white-space: nowrap;
52 |
53 | @if not $global-flexbox {
54 | display: table-cell;
55 | vertical-align: middle;
56 | }
57 | }
58 |
59 | .input-group-label {
60 | @extend %input-group-child;
61 | padding: 0 $input-prefix-padding;
62 | border: $input-prefix-border;
63 | background: $input-prefix-background;
64 |
65 | color: $input-prefix-color;
66 | text-align: center;
67 | white-space: nowrap;
68 |
69 | @if $global-flexbox {
70 | display: flex;
71 | flex: 0 0 auto;
72 | align-items: center;
73 | }
74 | @else {
75 | width: 1%;
76 | height: 100%;
77 | }
78 |
79 | @if has-value($input-prefix-border) {
80 | &:first-child {
81 | border-#{$global-right}: 0;
82 | }
83 |
84 | &:last-child {
85 | border-#{$global-left}: 0;
86 | }
87 | }
88 | }
89 |
90 | .input-group-field {
91 | @extend %input-group-child;
92 | border-radius: 0;
93 |
94 | @if $global-flexbox {
95 | flex: 1 1 0px; // sass-lint:disable-line zero-unit
96 | min-width: 0;
97 | }
98 | }
99 |
100 | .input-group-button {
101 | @extend %input-group-child;
102 | padding-top: 0;
103 | padding-bottom: 0;
104 | text-align: center;
105 |
106 | @if $global-flexbox {
107 | display: flex;
108 | flex: 0 0 auto;
109 | }
110 | @else {
111 | width: 1%;
112 | height: 100%;
113 | }
114 |
115 | a,
116 | input,
117 | button,
118 | label {
119 | @extend %input-group-child;
120 |
121 | @if $global-flexbox {
122 | align-self: stretch;
123 | height: auto;
124 | }
125 | @else {
126 | height: $height;
127 | }
128 | padding-top: 0;
129 | padding-bottom: 0;
130 | font-size: $input-font-size;
131 | }
132 | }
133 |
134 | // Specificity bump needed to prevent override by buttons
135 | @if not $global-flexbox {
136 | .input-group {
137 | .input-group-button {
138 | display: table-cell;
139 | }
140 | }
141 | }
142 | }
143 |
--------------------------------------------------------------------------------
/vendor/assets/scss/motion-ui/_classes.scss:
--------------------------------------------------------------------------------
1 | // scss-lint:disable ImportantRule, SpaceAfterComma, SingleLinePerProperty
2 |
3 | @mixin -motion-ui-defaults {
4 | transition-duration: map-get($motion-ui-speeds, default);
5 | transition-timing-function: map-get($motion-ui-easings, default);
6 | }
7 |
8 | // Transitions
9 | // - - - - - - - - - - - - - - -
10 | @mixin motion-ui-transitions {
11 | // Slide
12 | .slide-in-down { @include mui-slide(in, down); }
13 | .slide-in-left { @include mui-slide(in, right); }
14 | .slide-in-up { @include mui-slide(in, up); }
15 | .slide-in-right { @include mui-slide(in, left); }
16 | .slide-out-down { @include mui-slide(out, down); }
17 | .slide-out-right { @include mui-slide(out, right); }
18 | .slide-out-up { @include mui-slide(out, up); }
19 | .slide-out-left { @include mui-slide(out, left); }
20 |
21 | // Fade
22 | .fade-in { @include mui-fade(in, 0, 1); }
23 | .fade-out { @include mui-fade(out, 1, 0); }
24 |
25 | // Hinge
26 | .hinge-in-from-top { @include mui-hinge(in, top); }
27 | .hinge-in-from-right { @include mui-hinge(in, right); }
28 | .hinge-in-from-bottom { @include mui-hinge(in, bottom); }
29 | .hinge-in-from-left { @include mui-hinge(in, left); }
30 | .hinge-in-from-middle-x { @include mui-hinge(in, top, center); }
31 | .hinge-in-from-middle-y { @include mui-hinge(in, right, center); }
32 | .hinge-out-from-top { @include mui-hinge(out, top); }
33 | .hinge-out-from-right { @include mui-hinge(out, right); }
34 | .hinge-out-from-bottom { @include mui-hinge(out, bottom); }
35 | .hinge-out-from-left { @include mui-hinge(out, left); }
36 | .hinge-out-from-middle-x { @include mui-hinge(out, top, center); }
37 | .hinge-out-from-middle-y { @include mui-hinge(out, right, center); }
38 |
39 | // Scale
40 | .scale-in-up { @include mui-zoom(in, 0.5, 1); }
41 | .scale-in-down { @include mui-zoom(in, 1.5, 1); }
42 | .scale-out-up { @include mui-zoom(out, 1, 1.5); }
43 | .scale-out-down { @include mui-zoom(out, 1, 0.5); }
44 |
45 | // Spin
46 | .spin-in { @include mui-spin(in, cw); }
47 | .spin-out { @include mui-spin(out, cw); }
48 | .spin-in-ccw { @include mui-spin(in, ccw); }
49 | .spin-out-ccw { @include mui-spin(out, ccw); }
50 |
51 | // Transition Modifiers
52 | // - - - - - - - - - - - - - - -
53 |
54 | @each $name, $value in $motion-ui-speeds {
55 | @if $name != default {
56 | .#{$name} { transition-duration: $value !important; }
57 | }
58 | }
59 |
60 | @each $name, $value in $motion-ui-easings {
61 | @if $name != default {
62 | .#{$name} { transition-timing-function: $value !important; }
63 | }
64 | }
65 |
66 | @each $name, $value in $motion-ui-delays {
67 | @if $name != default {
68 | .#{$name}-delay { transition-delay: $value !important; }
69 | }
70 | }
71 | }
72 |
73 | // Animations
74 | // - - - - - - - - - - - - - - -
75 | @mixin motion-ui-animations {
76 | .shake { @include mui-animation(shake); }
77 | .spin-cw { @include mui-animation(spin); }
78 | .spin-ccw { @include mui-animation(spin(ccw)); }
79 | .wiggle { @include mui-animation(wiggle); }
80 |
81 | .shake,
82 | .spin-cw,
83 | .spin-ccw,
84 | .wiggle {
85 | animation-duration: map-get($motion-ui-speeds, default);
86 | }
87 |
88 | // Animation Modifiers
89 | // - - - - - - - - - - - - - - -
90 | .infinite { animation-iteration-count: infinite; }
91 |
92 | @each $name, $value in $motion-ui-speeds {
93 | @if $name != default {
94 | .#{$name} { animation-duration: $value !important; }
95 | }
96 | }
97 |
98 | @each $name, $value in $motion-ui-easings {
99 | @if $name != default {
100 | .#{$name} { animation-timing-function: $value !important; }
101 | }
102 | }
103 |
104 | @each $name, $value in $motion-ui-delays {
105 | @if $name != default {
106 | .#{$name}-delay { animation-delay: $value !important; }
107 | }
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_tooltip.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group tooltip
7 | ////
8 |
9 | /// Default cursor of the defined term.
10 | /// @type Keyword
11 | $has-tip-cursor: help !default;
12 |
13 | /// Default font weight of the defined term.
14 | /// @type Keyword | Number
15 | $has-tip-font-weight: $global-weight-bold !default;
16 |
17 | /// Default border bottom of the defined term.
18 | /// @type List
19 | $has-tip-border-bottom: dotted 1px $dark-gray !default;
20 |
21 | /// Default color of the tooltip background.
22 | /// @type Color
23 | $tooltip-background-color: $black !default;
24 |
25 | /// Default color of the tooltip font.
26 | /// @type Color
27 | $tooltip-color: $white !default;
28 |
29 | /// Default padding of the tooltip background.
30 | /// @type Number
31 | $tooltip-padding: 0.75rem !default;
32 |
33 | /// Default max width for tooltips.
34 | /// @type Number
35 | $tooltip-max-width: 10rem !default;
36 |
37 | /// Default font size of the tooltip text. By default, we recommend a smaller font size than the body copy.
38 | /// @type Number
39 | $tooltip-font-size: $small-font-size !default;
40 |
41 | /// Default pip width for tooltips.
42 | /// @type Number
43 | $tooltip-pip-width: 0.75rem !default;
44 |
45 | /// Default pip height for tooltips. This is helpful for calculating the distance of the tooltip from the tooltip word.
46 | /// @type Number
47 | $tooltip-pip-height: $tooltip-pip-width * 0.866 !default;
48 |
49 | /// Default radius for tooltips.
50 | /// @type Number
51 | $tooltip-radius: $global-radius !default;
52 |
53 | @mixin has-tip {
54 | position: relative;
55 | display: inline-block;
56 |
57 | border-bottom: $has-tip-border-bottom;
58 | font-weight: $has-tip-font-weight;
59 | cursor: $has-tip-cursor;
60 | }
61 |
62 | @mixin tooltip {
63 | position: absolute;
64 | top: calc(100% + #{$tooltip-pip-height});
65 | z-index: 1200;
66 |
67 | max-width: $tooltip-max-width;
68 | padding: $tooltip-padding;
69 |
70 | border-radius: $tooltip-radius;
71 | background-color: $tooltip-background-color;
72 | font-size: $tooltip-font-size;
73 | color: $tooltip-color;
74 |
75 | &::before {
76 | position: absolute;
77 | }
78 |
79 | &.bottom {
80 | &::before {
81 | @include css-triangle($tooltip-pip-width, $tooltip-background-color, up);
82 | bottom: 100%;
83 | }
84 |
85 | &.align-center::before {
86 | left: 50%;
87 | transform: translateX(-50%);
88 | }
89 | }
90 |
91 | &.top {
92 | &::before {
93 | @include css-triangle($tooltip-pip-width, $tooltip-background-color, down);
94 | top: 100%;
95 | bottom: auto;
96 | }
97 |
98 | &.align-center::before {
99 | left: 50%;
100 | transform: translateX(-50%);
101 | }
102 | }
103 |
104 | &.left {
105 | &::before {
106 | @include css-triangle($tooltip-pip-width, $tooltip-background-color, right);
107 | left: 100%;
108 | }
109 |
110 | &.align-center::before {
111 | bottom: auto;
112 | top: 50%;
113 | transform: translateY(-50%);
114 | }
115 | }
116 |
117 | &.right {
118 | &::before {
119 | @include css-triangle($tooltip-pip-width, $tooltip-background-color, left);
120 | right: 100%;
121 | left: auto;
122 | }
123 |
124 | &.align-center::before {
125 | bottom: auto;
126 | top: 50%;
127 | transform: translateY(-50%);
128 | }
129 | }
130 |
131 | &.align-top::before {
132 | bottom: auto;
133 | top: 10%;
134 | }
135 |
136 | &.align-bottom::before {
137 | bottom: 10%;
138 | top: auto;
139 | }
140 |
141 | &.align-left::before {
142 | left: 10%;
143 | right: auto;
144 | }
145 |
146 | &.align-right::before {
147 | left: auto;
148 | right: 10%;
149 | }
150 | }
151 |
152 | @mixin foundation-tooltip {
153 | .has-tip {
154 | @include has-tip;
155 | }
156 |
157 | .tooltip {
158 | @include tooltip;
159 | }
160 | }
161 |
--------------------------------------------------------------------------------
/vendor/assets/scss/components/_drilldown.scss:
--------------------------------------------------------------------------------
1 | // Foundation for Sites
2 | // https://get.foundation
3 | // Licensed under MIT Open Source
4 |
5 | ////
6 | /// @group drilldown
7 | ////
8 |
9 | /// Transition property to use for animating menus.
10 | /// @type Transition
11 | $drilldown-transition: transform 0.15s linear !default;
12 |
13 | /// Adds arrows to drilldown items with submenus, as well as the back button.
14 | /// @type Boolean
15 | $drilldown-arrows: true !default;
16 |
17 | /// Sets drilldown menu item padding.
18 | /// @type Number
19 | $drilldown-padding: $global-menu-padding !default;
20 |
21 | /// Sets drilldown menu nested margin
22 | /// @type Number
23 | $drilldown-nested-margin: 0 !default;
24 |
25 | /// Background color for drilldown top level items.
26 | /// @type Color
27 | $drilldown-background: $white !default;
28 |
29 | /// Sets drilldown menu item padding in the submenu.
30 | /// @type Number
31 | $drilldown-submenu-padding: $drilldown-padding !default;
32 |
33 | /// Background color for drilldown submenus.
34 | /// @type Color
35 | $drilldown-submenu-background: $white !default;
36 |
37 | /// Sets drilldown arrow color if arrow is used.
38 | /// @type Color
39 | $drilldown-arrow-color: $primary-color !default;
40 |
41 | /// Sets drilldown arrow size if arrow is used.
42 | /// @type Length
43 | $drilldown-arrow-size: 6px !default;
44 |
45 | @mixin zf-drilldown-left-right-arrows {
46 | .is-drilldown-submenu-parent > a {
47 | position: relative;
48 |
49 | &::after {
50 | @include css-triangle($drilldown-arrow-size, $drilldown-arrow-color, $global-right);
51 | position: absolute;
52 | top: 50%;
53 | margin-top: -1 * $drilldown-arrow-size;
54 | #{$global-right}: 1rem;
55 | }
56 | }
57 |
58 | &.align-left .is-drilldown-submenu-parent > a::after {
59 | @include css-triangle($dropdownmenu-arrow-size, $dropdownmenu-arrow-color, right);
60 | right: 1rem;
61 | left: auto;
62 | }
63 |
64 | &.align-right .is-drilldown-submenu-parent > a::after {
65 | @include css-triangle($dropdownmenu-arrow-size, $dropdownmenu-arrow-color, left);
66 | right: auto;
67 | left: 1rem;
68 | }
69 |
70 | }
71 |
72 | @mixin foundation-drilldown-menu {
73 | // Applied to the Menu container
74 | .is-drilldown {
75 | position: relative;
76 | overflow: hidden;
77 |
78 | li {
79 | display: block;
80 | }
81 |
82 | &.animate-height {
83 | transition: height 0.5s;
84 | }
85 | }
86 |
87 | // The top level
88 | .drilldown {
89 | a {
90 | padding: $drilldown-padding;
91 | background: $drilldown-background;
92 | }
93 |
94 | // Applied to submenu s
95 | .is-drilldown-submenu {
96 | position: absolute;
97 | top: 0;
98 | #{$global-left}: 100%;
99 | z-index: -1;
100 |
101 | width: 100%;
102 | background: $drilldown-submenu-background;
103 | transition: $drilldown-transition;
104 |
105 | &.is-active {
106 | z-index: 1;
107 | display: block;
108 | transform: translateX(if($global-text-direction == ltr, -100%, 100%));
109 | }
110 |
111 | &.is-closing {
112 | transform: translateX(if($global-text-direction == ltr, 100%, -100%));
113 | }
114 |
115 | // Submenu item padding
116 | a {
117 | padding: $drilldown-submenu-padding;
118 | }
119 | }
120 |
121 | .nested.is-drilldown-submenu {
122 | @include menu-nested($drilldown-nested-margin);
123 | }
124 |
125 | .drilldown-submenu-cover-previous {
126 | min-height: 100%;
127 | }
128 |
129 | @if $drilldown-arrows {
130 | @include zf-drilldown-left-right-arrows;
131 |
132 | .js-drilldown-back > a::before {
133 | @include css-triangle($drilldown-arrow-size, $drilldown-arrow-color, $global-left);
134 | display: inline-block;
135 | vertical-align: middle;
136 | margin-#{$global-right}: 0.75rem; // Creates space between the arrow and the text
137 | }
138 | }
139 | }
140 | }
141 |
--------------------------------------------------------------------------------