foundation-rails 5.5.3.2 → 6.1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +2 -8
  4. data/Rakefile +23 -0
  5. data/app/views/foundation/rails/styleguide/show.html.erb +2 -5
  6. data/bower.json +2 -2
  7. data/lib/foundation/rails/version.rb +1 -1
  8. data/lib/generators/foundation/install_generator.rb +6 -3
  9. data/lib/generators/foundation/templates/_settings.scss +546 -0
  10. data/lib/generators/foundation/templates/application.html.erb +0 -1
  11. data/lib/generators/foundation/templates/application.html.haml +0 -2
  12. data/lib/generators/foundation/templates/application.html.slim +0 -2
  13. data/lib/generators/foundation/templates/foundation_and_overrides.scss +51 -0
  14. data/vendor/assets/js/foundation.abide.js +418 -0
  15. data/vendor/assets/js/foundation.accordion.js +229 -0
  16. data/vendor/assets/js/foundation.accordionMenu.js +262 -0
  17. data/vendor/assets/js/foundation.core.js +378 -0
  18. data/vendor/assets/js/foundation.drilldown.js +321 -0
  19. data/vendor/assets/js/foundation.dropdown.js +390 -0
  20. data/vendor/assets/js/foundation.dropdownMenu.js +391 -0
  21. data/vendor/assets/js/foundation.equalizer.js +274 -0
  22. data/vendor/assets/js/foundation.interchange.js +184 -0
  23. data/vendor/assets/js/foundation.js +28 -0
  24. data/vendor/assets/js/foundation.magellan.js +212 -0
  25. data/vendor/assets/js/foundation.offcanvas.js +371 -0
  26. data/vendor/assets/js/foundation.orbit.js +419 -0
  27. data/vendor/assets/js/foundation.responsiveMenu.js +145 -0
  28. data/vendor/assets/js/foundation.responsiveToggle.js +106 -0
  29. data/vendor/assets/js/foundation.reveal.js +478 -0
  30. data/vendor/assets/js/foundation.slider.js +484 -0
  31. data/vendor/assets/js/foundation.sticky.js +436 -0
  32. data/vendor/assets/js/foundation.tabs.js +306 -0
  33. data/vendor/assets/js/foundation.toggler.js +147 -0
  34. data/vendor/assets/js/foundation.tooltip.js +429 -0
  35. data/vendor/assets/js/foundation.util.box.js +169 -0
  36. data/vendor/assets/js/foundation.util.keyboard.js +115 -0
  37. data/vendor/assets/js/foundation.util.mediaQuery.js +210 -0
  38. data/vendor/assets/js/foundation.util.motion.js +89 -0
  39. data/vendor/assets/js/foundation.util.nest.js +64 -0
  40. data/vendor/assets/js/foundation.util.timerAndImageLoader.js +78 -0
  41. data/vendor/assets/js/foundation.util.touch.js +339 -0
  42. data/vendor/assets/js/foundation.util.triggers.js +222 -0
  43. data/vendor/assets/scss/_global.scss +626 -0
  44. data/vendor/assets/scss/components/_accordion-menu.scss +32 -0
  45. data/vendor/assets/scss/components/_accordion.scss +113 -0
  46. data/vendor/assets/scss/components/_badge.scss +55 -0
  47. data/vendor/assets/scss/components/_breadcrumbs.scss +94 -0
  48. data/vendor/assets/scss/components/_button-group.scss +130 -0
  49. data/vendor/assets/scss/components/_button.scss +265 -0
  50. data/vendor/assets/scss/components/_callout.scss +105 -0
  51. data/vendor/assets/scss/components/_close-button.scss +61 -0
  52. data/vendor/assets/scss/components/_drilldown.scss +75 -0
  53. data/vendor/assets/scss/components/_dropdown-menu.scss +148 -0
  54. data/vendor/assets/scss/components/_dropdown.scss +64 -0
  55. data/vendor/assets/scss/components/_flex-video.scss +63 -0
  56. data/vendor/assets/scss/components/_float.scss +27 -0
  57. data/vendor/assets/scss/components/_label.scss +56 -0
  58. data/vendor/assets/scss/components/_media-object.scss +74 -0
  59. data/vendor/assets/scss/components/_menu.scss +209 -0
  60. data/vendor/assets/scss/components/_off-canvas.scss +180 -0
  61. data/vendor/assets/scss/components/_orbit.scss +193 -0
  62. data/vendor/assets/scss/components/_pagination.scss +158 -0
  63. data/vendor/assets/scss/components/_progress-bar.scss +83 -0
  64. data/vendor/assets/scss/components/_reveal.scss +156 -0
  65. data/vendor/assets/scss/components/_slider.scss +158 -0
  66. data/vendor/assets/scss/components/_sticky.scss +38 -0
  67. data/vendor/assets/scss/components/_switch.scss +232 -0
  68. data/vendor/assets/scss/components/_table.scss +213 -0
  69. data/vendor/assets/scss/components/_tabs.scss +170 -0
  70. data/vendor/assets/scss/components/_thumbnail.scss +54 -0
  71. data/vendor/assets/scss/components/_title-bar.scss +68 -0
  72. data/vendor/assets/scss/components/_tooltip.scss +100 -0
  73. data/vendor/assets/scss/components/_top-bar.scss +89 -0
  74. data/vendor/assets/scss/components/_visibility.scss +131 -0
  75. data/vendor/assets/scss/forms/_checkbox.scss +36 -0
  76. data/vendor/assets/scss/forms/_error.scss +82 -0
  77. data/vendor/assets/scss/forms/_fieldset.scss +53 -0
  78. data/vendor/assets/scss/forms/_forms.scss +32 -0
  79. data/vendor/assets/scss/forms/_help-text.scss +30 -0
  80. data/vendor/assets/scss/forms/_input-group.scss +91 -0
  81. data/vendor/assets/scss/forms/_label.scss +48 -0
  82. data/vendor/assets/scss/forms/_select.scss +63 -0
  83. data/vendor/assets/scss/forms/_text.scss +154 -0
  84. data/vendor/assets/scss/foundation.scss +91 -0
  85. data/vendor/assets/scss/grid/_classes.scss +153 -0
  86. data/vendor/assets/scss/grid/_column.scss +124 -0
  87. data/vendor/assets/scss/grid/_flex-grid.scss +281 -0
  88. data/vendor/assets/scss/grid/_grid.scss +48 -0
  89. data/vendor/assets/scss/grid/_gutter.scss +34 -0
  90. data/vendor/assets/scss/grid/_layout.scss +33 -0
  91. data/vendor/assets/scss/grid/_position.scss +72 -0
  92. data/vendor/assets/scss/grid/_row.scss +97 -0
  93. data/vendor/assets/scss/grid/_size.scss +24 -0
  94. data/vendor/assets/scss/settings/_settings.scss +547 -0
  95. data/vendor/assets/scss/typography/_alignment.scss +22 -0
  96. data/vendor/assets/scss/typography/_base.scss +439 -0
  97. data/vendor/assets/scss/typography/_helpers.scss +77 -0
  98. data/vendor/assets/scss/typography/_print.scss +73 -0
  99. data/vendor/assets/scss/typography/_typography.scss +28 -0
  100. data/vendor/assets/scss/util/_breakpoint.scss +266 -0
  101. data/vendor/assets/scss/util/_color.scss +41 -0
  102. data/vendor/assets/scss/util/_mixins.scss +223 -0
  103. data/vendor/assets/scss/util/_selector.scss +40 -0
  104. data/vendor/assets/scss/util/_unit.scss +90 -0
  105. data/vendor/assets/scss/util/_util.scss +15 -0
  106. data/vendor/assets/scss/util/_value.scss +126 -0
  107. metadata +97 -64
  108. data/update-gem.sh +0 -20
  109. data/vendor/assets/javascripts/foundation.js +0 -17
  110. data/vendor/assets/javascripts/foundation/foundation.abide.js +0 -426
  111. data/vendor/assets/javascripts/foundation/foundation.accordion.js +0 -125
  112. data/vendor/assets/javascripts/foundation/foundation.alert.js +0 -43
  113. data/vendor/assets/javascripts/foundation/foundation.clearing.js +0 -586
  114. data/vendor/assets/javascripts/foundation/foundation.dropdown.js +0 -468
  115. data/vendor/assets/javascripts/foundation/foundation.equalizer.js +0 -104
  116. data/vendor/assets/javascripts/foundation/foundation.interchange.js +0 -360
  117. data/vendor/assets/javascripts/foundation/foundation.joyride.js +0 -935
  118. data/vendor/assets/javascripts/foundation/foundation.js +0 -732
  119. data/vendor/assets/javascripts/foundation/foundation.magellan.js +0 -214
  120. data/vendor/assets/javascripts/foundation/foundation.offcanvas.js +0 -225
  121. data/vendor/assets/javascripts/foundation/foundation.orbit.js +0 -476
  122. data/vendor/assets/javascripts/foundation/foundation.reveal.js +0 -522
  123. data/vendor/assets/javascripts/foundation/foundation.slider.js +0 -296
  124. data/vendor/assets/javascripts/foundation/foundation.tab.js +0 -247
  125. data/vendor/assets/javascripts/foundation/foundation.tooltip.js +0 -348
  126. data/vendor/assets/javascripts/foundation/foundation.topbar.js +0 -458
  127. data/vendor/assets/javascripts/vendor/modernizr.js +0 -1406
  128. data/vendor/assets/stylesheets/foundation.scss +0 -42
  129. data/vendor/assets/stylesheets/foundation/_functions.scss +0 -156
  130. data/vendor/assets/stylesheets/foundation/_settings.scss +0 -1489
  131. data/vendor/assets/stylesheets/foundation/components/_accordion.scss +0 -161
  132. data/vendor/assets/stylesheets/foundation/components/_alert-boxes.scss +0 -128
  133. data/vendor/assets/stylesheets/foundation/components/_block-grid.scss +0 -133
  134. data/vendor/assets/stylesheets/foundation/components/_breadcrumbs.scss +0 -132
  135. data/vendor/assets/stylesheets/foundation/components/_button-groups.scss +0 -208
  136. data/vendor/assets/stylesheets/foundation/components/_buttons.scss +0 -261
  137. data/vendor/assets/stylesheets/foundation/components/_clearing.scss +0 -260
  138. data/vendor/assets/stylesheets/foundation/components/_dropdown-buttons.scss +0 -130
  139. data/vendor/assets/stylesheets/foundation/components/_dropdown.scss +0 -269
  140. data/vendor/assets/stylesheets/foundation/components/_flex-video.scss +0 -51
  141. data/vendor/assets/stylesheets/foundation/components/_forms.scss +0 -607
  142. data/vendor/assets/stylesheets/foundation/components/_global.scss +0 -566
  143. data/vendor/assets/stylesheets/foundation/components/_grid.scss +0 -292
  144. data/vendor/assets/stylesheets/foundation/components/_icon-bar.scss +0 -460
  145. data/vendor/assets/stylesheets/foundation/components/_inline-lists.scss +0 -58
  146. data/vendor/assets/stylesheets/foundation/components/_joyride.scss +0 -220
  147. data/vendor/assets/stylesheets/foundation/components/_keystrokes.scss +0 -60
  148. data/vendor/assets/stylesheets/foundation/components/_labels.scss +0 -106
  149. data/vendor/assets/stylesheets/foundation/components/_magellan.scss +0 -34
  150. data/vendor/assets/stylesheets/foundation/components/_offcanvas.scss +0 -606
  151. data/vendor/assets/stylesheets/foundation/components/_orbit.scss +0 -388
  152. data/vendor/assets/stylesheets/foundation/components/_pagination.scss +0 -163
  153. data/vendor/assets/stylesheets/foundation/components/_panels.scss +0 -107
  154. data/vendor/assets/stylesheets/foundation/components/_pricing-tables.scss +0 -150
  155. data/vendor/assets/stylesheets/foundation/components/_progress-bars.scss +0 -85
  156. data/vendor/assets/stylesheets/foundation/components/_range-slider.scss +0 -177
  157. data/vendor/assets/stylesheets/foundation/components/_reveal.scss +0 -212
  158. data/vendor/assets/stylesheets/foundation/components/_side-nav.scss +0 -120
  159. data/vendor/assets/stylesheets/foundation/components/_split-buttons.scss +0 -203
  160. data/vendor/assets/stylesheets/foundation/components/_sub-nav.scss +0 -125
  161. data/vendor/assets/stylesheets/foundation/components/_switches.scss +0 -241
  162. data/vendor/assets/stylesheets/foundation/components/_tables.scss +0 -135
  163. data/vendor/assets/stylesheets/foundation/components/_tabs.scss +0 -142
  164. data/vendor/assets/stylesheets/foundation/components/_thumbs.scss +0 -66
  165. data/vendor/assets/stylesheets/foundation/components/_tooltips.scss +0 -142
  166. data/vendor/assets/stylesheets/foundation/components/_top-bar.scss +0 -745
  167. data/vendor/assets/stylesheets/foundation/components/_type.scss +0 -525
  168. data/vendor/assets/stylesheets/foundation/components/_visibility.scss +0 -425
  169. data/vendor/assets/stylesheets/normalize.scss +0 -424
@@ -0,0 +1,32 @@
1
+ ////
2
+ /// @group accordion-menu
3
+ ////
4
+
5
+ /// Sets if accordion menus have the default arrow styles.
6
+ /// @type Boolean
7
+ $accordionmenu-arrows: true !default;
8
+
9
+ /// Sets accordion menu arrow color if arrow is used.
10
+ /// @type Color
11
+ $accordionmenu-arrow-color: $primary-color !default;
12
+
13
+ @mixin foundation-accordion-menu {
14
+ @if $accordionmenu-arrows {
15
+ .is-accordion-submenu-parent > a {
16
+ position: relative;
17
+
18
+ &::after {
19
+ @include css-triangle(6px, $accordionmenu-arrow-color, down);
20
+ position: absolute;
21
+ top: 50%;
22
+ margin-top: -4px;
23
+ right: 1rem;
24
+ }
25
+ }
26
+
27
+ .is-accordion-submenu-parent[aria-expanded='true'] > a::after {
28
+ transform-origin: 50% 50%;
29
+ transform: scaleY(-1);
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,113 @@
1
+ // Foundation for Sites by ZURB
2
+ // foundation.zurb.com
3
+ // Licensed under MIT Open Source
4
+
5
+ ////
6
+ /// @group accordion
7
+ ////
8
+
9
+ /// Default background color of an accordion group.
10
+ /// @type Color
11
+ $accordion-background: $white !default;
12
+
13
+ /// If `true`, adds plus and minus icons to the side of each accordion title.
14
+ /// @type Boolean
15
+ $accordion-plusminus: true !default;
16
+
17
+ /// Default text color for items in a Menu.
18
+ /// @type Color
19
+ $accordion-item-color: foreground($accordion-background, $primary-color) !default;
20
+
21
+ /// Default background color on hover for items in a Menu.
22
+ /// @type Color
23
+ $accordion-item-background-hover: $light-gray !default;
24
+
25
+ /// Default padding of an accordion item.
26
+ /// @type Number | List
27
+ $accordion-item-padding: 1.25rem 1rem !default;
28
+
29
+ /// Default background color of tab content.
30
+ /// @type Color
31
+ $accordion-content-background: $white !default;
32
+
33
+ /// Default border color of tab content.
34
+ /// @type Color
35
+ $accordion-content-border: 1px solid $light-gray !default;
36
+
37
+ /// Default text color of tab content.
38
+ /// @type Color
39
+ $accordion-content-color: foreground($accordion-background, $primary-color) !default;
40
+
41
+ /// Default padding for tab content.
42
+ /// @type Number | List
43
+ $accordion-content-padding: 1rem !default;
44
+
45
+ /// Adds styles for an accordion container. Apply this to the same element that gets `data-accordion`.
46
+ @mixin accordion-container {
47
+ list-style-type: none;
48
+ background: $accordion-background;
49
+ border: $accordion-content-border;
50
+ border-radius: $global-radius;
51
+ margin-#{$global-left}: 0;
52
+ }
53
+
54
+ /// Adds styles for the title of an accordion item. Apply this to the link within an accordion item.
55
+ @mixin accordion-title {
56
+ display: block;
57
+ padding: $accordion-item-padding;
58
+ line-height: 1;
59
+ font-size: rem-calc(12);
60
+ color: $accordion-item-color;
61
+ position: relative;
62
+ border-bottom: $accordion-content-border;
63
+
64
+ &:hover,
65
+ &:focus {
66
+ background-color: $accordion-item-background-hover;
67
+ }
68
+
69
+ // Remove the border on the last title
70
+ :last-child > & {
71
+ border-bottom-width: 0;
72
+ }
73
+
74
+ @if $accordion-plusminus {
75
+ &::before {
76
+ content: '+';
77
+ position: absolute;
78
+ #{$global-right}: 1rem;
79
+ top: 50%;
80
+ margin-top: -0.5rem;
81
+ }
82
+
83
+ .is-active > &::before {
84
+ content: '–';
85
+ }
86
+ }
87
+ }
88
+
89
+ /// Adds styles for accordion content. Apply this to the content pane below an accordion item's title.
90
+ @mixin accordion-content {
91
+ padding: $accordion-content-padding;
92
+ display: none;
93
+ border-bottom: $accordion-content-border;
94
+ background-color: $accordion-content-background;
95
+ }
96
+
97
+ @mixin foundation-accordion {
98
+ .accordion {
99
+ @include accordion-container;
100
+ }
101
+
102
+ .accordion-item {
103
+ // This class doesn't need styles!
104
+ }
105
+
106
+ .accordion-title {
107
+ @include accordion-title;
108
+ }
109
+
110
+ .accordion-content {
111
+ @include accordion-content;
112
+ }
113
+ }
@@ -0,0 +1,55 @@
1
+ // Foundation for Sites by ZURB
2
+ // foundation.zurb.com
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: foreground($badge-background) !default;
16
+
17
+ /// Default padding inside badges.
18
+ /// @type Number
19
+ $badge-padding: 0.3em !default;
20
+
21
+ /// Minimum width of a badge.
22
+ /// @type Number
23
+ $badge-minwidth: 2.1em !default;
24
+
25
+ /// Default font size for badges.
26
+ /// @type Number
27
+ $badge-font-size: 0.6rem !default;
28
+
29
+ /// Generates the base styles for a badge.
30
+ @mixin badge {
31
+ display: inline-block;
32
+ padding: $badge-padding;
33
+ min-width: $badge-minwidth;
34
+ font-size: $badge-font-size;
35
+ text-align: center;
36
+ border-radius: 50%;
37
+ }
38
+
39
+ @mixin foundation-badge {
40
+ .badge {
41
+ @include badge;
42
+
43
+ background: $badge-background;
44
+ color: $badge-color;
45
+
46
+ @each $name, $color in $foundation-colors {
47
+ @if $name != primary {
48
+ &.#{$name} {
49
+ background: $color;
50
+ color: foreground($color);
51
+ }
52
+ }
53
+ }
54
+ }
55
+ }
@@ -0,0 +1,94 @@
1
+ // Foundation for Sites by ZURB
2
+ // foundation.zurb.com
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 slash between breadcrumb links.
38
+ /// @type Boolean
39
+ $breadcrumbs-item-slash: true !default;
40
+
41
+ /// Adds styles for a breadcrumbs container, along with the styles for the `<li>` and `<a>` elements inside of it.
42
+ @mixin breadcrumbs-container {
43
+ @include clearfix;
44
+ list-style: none;
45
+ margin: $breadcrumbs-margin;
46
+
47
+ // Item wrapper
48
+ li {
49
+ float: #{$global-left};
50
+ color: $breadcrumbs-item-color-current;
51
+ font-size: $breadcrumbs-item-font-size;
52
+ cursor: default;
53
+
54
+ @if $breadcrumbs-item-uppercase {
55
+ text-transform: uppercase;
56
+ }
57
+
58
+ @if $breadcrumbs-item-slash {
59
+ // Need to escape the backslash
60
+ $slash: if($global-text-direction == 'ltr', '/', '\\');
61
+
62
+ &:not(:last-child)::after {
63
+ color: $medium-gray;
64
+ content: $slash;
65
+ margin: 0 $breadcrumbs-item-margin;
66
+ position: relative;
67
+ top: 1px;
68
+ opacity: 1;
69
+ }
70
+ }
71
+ @else {
72
+ margin-#{$global-right}: $breadcrumbs-item-margin;
73
+ }
74
+ }
75
+
76
+ // Page links
77
+ a {
78
+ color: $breadcrumbs-item-color;
79
+
80
+ &:hover {
81
+ text-decoration: underline;
82
+ }
83
+ }
84
+ }
85
+
86
+ @mixin foundation-breadcrumbs {
87
+ .breadcrumbs {
88
+ @include breadcrumbs-container;
89
+
90
+ .disabled {
91
+ color: $breadcrumbs-item-color-disabled;
92
+ }
93
+ }
94
+ }
@@ -0,0 +1,130 @@
1
+ // Foundation for Sites by ZURB
2
+ // foundation.zurb.com
3
+ // Licensed under MIT Open Source
4
+
5
+ ////
6
+ /// @group button-group
7
+ ////
8
+
9
+ /// Margin for button groups.
10
+ /// @type Number
11
+ $buttongroup-margin: 1rem !default;
12
+
13
+ /// Margin between buttons in a button group.
14
+ /// @type Border
15
+ $buttongroup-spacing: 1px !default;
16
+
17
+ /// Selector for the buttons inside a button group.
18
+ /// @type String
19
+ $buttongroup-child-selector: '.button' !default;
20
+
21
+ /// Maximum number of buttons that can be in an even-width button group.
22
+ /// @type Number
23
+ $buttongroup-expand-max: 6 !default;
24
+
25
+ /// Add styles for a button group container.
26
+ /// @param {String} $child-selector [$buttongroup-child-selector] - Selector for the buttons inside a button group.
27
+ @mixin button-group(
28
+ $child-selector: $buttongroup-child-selector
29
+ ) {
30
+ @include clearfix;
31
+ margin-bottom: $buttongroup-margin;
32
+ font-size: map-get($button-sizes, default);
33
+
34
+ #{$child-selector} {
35
+ float: #{$global-left};
36
+ margin: 0;
37
+ font-size: inherit;
38
+
39
+ &:not(:last-child) {
40
+ border-#{$global-right}: $buttongroup-spacing solid $body-background;
41
+ }
42
+ }
43
+ }
44
+
45
+ /// Creates a full-width button group, making each button equal width.
46
+ /// @param {Keyword|Number} $count [auto] - Number of buttons inside the button group. Set to `auto` to generate CSS that will account for a variable number of buttons.
47
+ /// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside a button group.
48
+ @mixin button-group-expand(
49
+ $selector: $buttongroup-child-selector
50
+ ) {
51
+ display: table;
52
+ table-layout: fixed;
53
+ width: 100%;
54
+
55
+ &::before,
56
+ &::after {
57
+ display: none;
58
+ }
59
+
60
+ #{$selector} {
61
+ display: table-cell;
62
+ float: none;
63
+ }
64
+ }
65
+
66
+ /// Stacks the buttons in a button group.
67
+ /// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside the button group.
68
+ @mixin button-group-stack(
69
+ $selector: $buttongroup-child-selector
70
+ ) {
71
+ #{$selector} {
72
+ width: 100%;
73
+
74
+ &:not(:last-child) {
75
+ border-#{$global-right}: $buttongroup-spacing solid;
76
+ }
77
+ }
78
+ }
79
+
80
+ /// Un-stacks the buttons in a button group.
81
+ /// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside the button group.
82
+ @mixin button-group-unstack(
83
+ $selector: $buttongroup-child-selector
84
+ ) {
85
+ #{$selector} {
86
+ width: auto;
87
+
88
+ &:not(:last-child) {
89
+ border-#{$global-right}: $buttongroup-spacing solid $body-background;
90
+ }
91
+ }
92
+ }
93
+
94
+ @mixin foundation-button-group {
95
+ .button-group {
96
+ @include button-group;
97
+
98
+ // Sizes
99
+ &.tiny { font-size: map-get($button-sizes, tiny); }
100
+ &.small { font-size: map-get($button-sizes, small); }
101
+ &.large { font-size: map-get($button-sizes, large); }
102
+ &.expanded { @include button-group-expand; }
103
+
104
+ // Colors
105
+ @each $name, $color in $foundation-colors {
106
+ @if $button-fill != hollow {
107
+ &.#{$name} #{$buttongroup-child-selector} {
108
+ @include button-style($color, auto, auto);
109
+ }
110
+ }
111
+ @else {
112
+ &.#{$name} #{$buttongroup-child-selector} {
113
+ @include button-hollow;
114
+ @include button-hollow-style($color);
115
+ }
116
+ }
117
+ }
118
+
119
+ &.stacked,
120
+ &.stacked-for-small {
121
+ @include button-group-stack;
122
+ }
123
+
124
+ &.stacked-for-small {
125
+ @include breakpoint(medium) {
126
+ @include button-group-unstack;
127
+ }
128
+ }
129
+ }
130
+ }
@@ -0,0 +1,265 @@
1
+ // Foundation for Sites by ZURB
2
+ // foundation.zurb.com
3
+ // Licensed under MIT Open Source
4
+
5
+ ////
6
+ /// @group button
7
+ ////
8
+
9
+ /// Padding inside buttons.
10
+ /// @type List
11
+ $button-padding: 0.85em 1em !default;
12
+
13
+ /// Margin around buttons.
14
+ /// @type List
15
+ $button-margin: 0 0 $global-margin 0 !default;
16
+
17
+ /// Default fill for buttons. Can either be `solid` or `hollow`.
18
+ /// @type Keyword
19
+ $button-fill: solid !default;
20
+
21
+ /// Default background color for buttons.
22
+ /// @type Color
23
+ $button-background: $primary-color !default;
24
+
25
+ /// Background color on hover for buttons.
26
+ /// @type Color
27
+ $button-background-hover: scale-color($button-background, $lightness: -15%) !default;
28
+
29
+ /// Font color for buttons.
30
+ /// @type List
31
+ $button-color: #fff !default;
32
+
33
+ /// Font color for buttons, if the background is light.
34
+ /// @type List
35
+ $button-color-alt: #000 !default;
36
+
37
+ /// Border radius for buttons, defaulted to global-radius.
38
+ /// @type Number
39
+ $button-radius: $global-radius !default;
40
+
41
+ /// Sizes for buttons.
42
+ /// @type Map
43
+ $button-sizes: (
44
+ tiny: 0.6rem,
45
+ small: 0.75rem,
46
+ default: 0.9rem,
47
+ large: 1.25rem,
48
+ ) !default;
49
+
50
+ /// opacity for a disabled button.
51
+ /// @type List
52
+ $button-opacity-disabled: 0.25 !default;
53
+
54
+ // Internal: flip from margin-right to margin-left for defaults
55
+ @if $global-text-direction == 'rtl' {
56
+ $button-margin: 0 0 $global-margin $global-margin !default;
57
+ }
58
+
59
+ // TODO: Document button-base() mixin
60
+ @mixin button-base {
61
+ @include disable-mouse-outline;
62
+ display: inline-block;
63
+ text-align: center;
64
+ line-height: 1;
65
+ cursor: pointer;
66
+ -webkit-appearance: none;
67
+ transition: background-color 0.25s ease-out, color 0.25s ease-out;
68
+ vertical-align: middle;
69
+ border: 1px solid transparent;
70
+ border-radius: $button-radius;
71
+ padding: $button-padding;
72
+ margin: $button-margin;
73
+ font-size: map-get($button-sizes, default);
74
+ }
75
+
76
+ /// Expands a button to make it full-width.
77
+ /// @param {Boolean} $expand [true] - Set to `true` to enable the expand behavior. Set to `false` to reverse this behavior.
78
+ @mixin button-expand($expand: true) {
79
+ @if $expand {
80
+ display: block;
81
+ width: 100%;
82
+ margin-left: 0;
83
+ margin-right: 0;
84
+ }
85
+ @else {
86
+ display: inline-block;
87
+ width: auto;
88
+ margin: $button-margin;
89
+ }
90
+ }
91
+
92
+ /// Sets the visual style of a button.
93
+ /// @param {Color} $background [$button-background] - Background color of the button.
94
+ /// @param {Color} $background-hover [$button-background-hover] - Background color of the button on hover. Set to `auto` to have the mixin automatically generate a hover color.
95
+ /// @param {Color} $color [$button-color] - Text color of the button. Set to `auto` to automatically generate a color based on the background color.
96
+ @mixin button-style(
97
+ $background: $button-background,
98
+ $background-hover: $button-background-hover,
99
+ $color: $button-color
100
+ ) {
101
+ @if $color == auto {
102
+ $color: isitlight($background);
103
+ }
104
+
105
+ @if $background-hover == auto {
106
+ $background-hover: scale-color($background, $lightness: -20%);
107
+ }
108
+
109
+ @if lightness($background) >= 70% {
110
+ $color: $button-color-alt;
111
+ }
112
+ @else {
113
+ $color: $button-color;
114
+ }
115
+
116
+ background-color: $background;
117
+ color: $color;
118
+
119
+ &:hover, &:focus {
120
+ background-color: $background-hover;
121
+ color: $color;
122
+ }
123
+ }
124
+
125
+ /// Removes background fill on hover and focus for hollow buttons.
126
+ @mixin button-hollow {
127
+ &,
128
+ &:hover, &:focus {
129
+ background-color: transparent;
130
+ }
131
+ }
132
+
133
+ @mixin button-hollow-style($color: $primary-color) {
134
+ $color-hover: scale-color($color, $lightness: -50%);
135
+
136
+ border: 1px solid $color;
137
+ color: $color;
138
+
139
+ &:hover, &:focus {
140
+ border-color: $color-hover;
141
+ color: $color-hover;
142
+ }
143
+ }
144
+
145
+ /// Adds disabled styles to a button by fading the element, reseting the cursor, and disabling pointer events.
146
+ @mixin button-disabled {
147
+ opacity: $button-opacity-disabled;
148
+ cursor: not-allowed;
149
+ pointer-events: none;
150
+ }
151
+
152
+ /// Adds a dropdown arrow to a button.
153
+ /// @param {Number} $size [0.4em] - Size of the arrow. We recommend using an `em` value so the triangle scales when used inside different sizes of buttons.
154
+ /// @param {Color} $color [white] - Color of the arrow.
155
+ /// @param {Number} $offset [$button-padding] - Distance between the arrow and the text of the button. Defaults to whatever the right padding of a button is.
156
+ @mixin button-dropdown(
157
+ $size: 0.4em,
158
+ $color: $white,
159
+ $offset: get-side($button-padding, right)
160
+ ) {
161
+ &::after {
162
+ @include css-triangle($size, $color, down);
163
+ position: relative;
164
+ top: 0.4em; // Aligns the arrow with the text of the button
165
+ float: #{$global-right};
166
+ margin-#{$global-left}: get-side($button-padding, right);
167
+ display: inline-block;
168
+ }
169
+ }
170
+
171
+ /// Adds all styles for a button. For more granular control over styles, use the individual button mixins.
172
+ /// @param {Boolean} $expand [false] - Set to `true` to make the button full-width.
173
+ /// @param {Color} $background [$button-background] - Background color of the button.
174
+ /// @param {Color} $background-hover [$button-background-hover] - Background color of the button on hover. Set to `auto` to have the mixin automatically generate a hover color.
175
+ /// @param {Color} $color [$button-color] - Text color of the button. Set to `auto` to automatically generate a color based on the background color.
176
+ /// @param {Keyword} $style [solid] - Set to `hollow` to create a hollow button. The color defined in `$background` will be used as the primary color of the button.
177
+ @mixin button(
178
+ $expand: false,
179
+ $background: $button-background,
180
+ $background-hover: $button-background-hover,
181
+ $color: $button-color,
182
+ $style: $button-fill
183
+ ) {
184
+ @include button-base;
185
+
186
+ @if $style == solid {
187
+ @include button-style($background, $background-hover, $color);
188
+ }
189
+ @else if $style == hollow {
190
+ @include button-hollow;
191
+ @include button-hollow-style($background);
192
+ }
193
+
194
+ @if $expand {
195
+ @include button-expand;
196
+ }
197
+ }
198
+
199
+ @mixin foundation-button {
200
+ .button {
201
+ @include button;
202
+
203
+ // Sizes
204
+ &.tiny { font-size: map-get($button-sizes, tiny); }
205
+ &.small { font-size: map-get($button-sizes, small); }
206
+ &.large { font-size: map-get($button-sizes, large); }
207
+ &.expanded { @include button-expand; }
208
+
209
+ // Colors
210
+ @each $name, $color in $foundation-colors {
211
+ @if $button-fill != hollow {
212
+ &.#{$name} {
213
+ @include button-style($color, auto);
214
+ }
215
+ }
216
+ @else {
217
+ &.#{$name} {
218
+ @include button-hollow-style($color);
219
+ }
220
+
221
+ &.#{$name}.dropdown::after {
222
+ border-top-color: $color;
223
+ }
224
+ }
225
+ }
226
+
227
+ // Hollow style
228
+ @if $button-fill != hollow {
229
+ &.hollow {
230
+ @include button-hollow;
231
+ @include button-hollow-style;
232
+
233
+ @each $name, $color in $foundation-colors {
234
+ &.#{$name} {
235
+ @include button-hollow-style($color);
236
+ }
237
+ }
238
+ }
239
+ }
240
+
241
+ // Disabled style
242
+ &.disabled,
243
+ &[disabled] {
244
+ @include button-disabled;
245
+ }
246
+
247
+ // Dropdown arrow
248
+ &.dropdown {
249
+ @include button-dropdown;
250
+
251
+ @if $button-fill == hollow {
252
+ &::after {
253
+ border-top-color: $button-background;
254
+ }
255
+ }
256
+ }
257
+
258
+ // Button with dropdown arrow only
259
+ &.arrow-only::after {
260
+ margin-#{$global-left}: 0;
261
+ float: none;
262
+ top: 0.2em;
263
+ }
264
+ }
265
+ }