@finqu/cool 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/README.md +1 -0
  2. package/build/.eslintrc.json +10 -0
  3. package/build/banner.js +14 -0
  4. package/build/build-plugins.js +92 -0
  5. package/build/rollup.config.js +78 -0
  6. package/dist/css/cool-grid.css +3672 -0
  7. package/dist/css/cool-grid.css.map +30 -0
  8. package/dist/css/cool-grid.min.css +7 -0
  9. package/dist/css/cool-grid.min.css.map +1 -0
  10. package/dist/css/cool-reboot.css +281 -0
  11. package/dist/css/cool-reboot.css.map +58 -0
  12. package/dist/css/cool-reboot.min.css +7 -0
  13. package/dist/css/cool-reboot.min.css.map +1 -0
  14. package/dist/css/cool.css +14841 -0
  15. package/dist/css/cool.css.map +144 -0
  16. package/dist/css/cool.min.css +7 -0
  17. package/dist/css/cool.min.css.map +1 -0
  18. package/dist/js/cool.bundle.js +15304 -0
  19. package/dist/js/cool.bundle.js.map +1 -0
  20. package/dist/js/cool.bundle.min.js +45 -0
  21. package/dist/js/cool.bundle.min.js.map +1 -0
  22. package/dist/js/cool.esm.js +4766 -0
  23. package/dist/js/cool.esm.js.map +1 -0
  24. package/dist/js/cool.esm.min.js +7 -0
  25. package/dist/js/cool.esm.min.js.map +1 -0
  26. package/dist/js/cool.js +4948 -0
  27. package/dist/js/cool.js.map +1 -0
  28. package/dist/js/cool.min.js +7 -0
  29. package/dist/js/cool.min.js.map +1 -0
  30. package/html/index.html +892 -0
  31. package/js/dist/collapse.js +321 -0
  32. package/js/dist/collapse.js.map +1 -0
  33. package/js/dist/common.js +1474 -0
  34. package/js/dist/common.js.map +1 -0
  35. package/js/dist/cooldropdown.js +467 -0
  36. package/js/dist/cooldropdown.js.map +1 -0
  37. package/js/dist/coolpopover.js +391 -0
  38. package/js/dist/coolpopover.js.map +1 -0
  39. package/js/dist/coolsectiontabs.js +256 -0
  40. package/js/dist/coolsectiontabs.js.map +1 -0
  41. package/js/dist/coolselect.js +796 -0
  42. package/js/dist/coolselect.js.map +1 -0
  43. package/js/dist/cooltooltip.js +360 -0
  44. package/js/dist/cooltooltip.js.map +1 -0
  45. package/js/dist/coolui.js +73 -0
  46. package/js/dist/coolui.js.map +1 -0
  47. package/js/dist/dropdown.js +1716 -0
  48. package/js/dist/dropdown.js.map +1 -0
  49. package/js/dist/popover.js +587 -0
  50. package/js/dist/popover.js.map +1 -0
  51. package/js/dist/sectiontabs.js +263 -0
  52. package/js/dist/sectiontabs.js.map +1 -0
  53. package/js/dist/select.js +2029 -0
  54. package/js/dist/select.js.map +1 -0
  55. package/js/dist/tooltip.js +555 -0
  56. package/js/dist/tooltip.js.map +1 -0
  57. package/js/index.esm.js +21 -0
  58. package/js/index.umd.js +21 -0
  59. package/js/src/abstract-ui-component.js +70 -0
  60. package/js/src/collapse.js +258 -0
  61. package/js/src/common.js +280 -0
  62. package/js/src/dialog.js +570 -0
  63. package/js/src/dropdown.js +443 -0
  64. package/js/src/popover.js +615 -0
  65. package/js/src/section-tabs.js +204 -0
  66. package/js/src/select.js +832 -0
  67. package/js/src/toast.js +581 -0
  68. package/js/src/tooltip.js +575 -0
  69. package/js/src/util/animate-css.js +22 -0
  70. package/js/src/util/index.js +112 -0
  71. package/js/src/util/perfect-scrollbar.js +1316 -0
  72. package/less/alert.less +345 -0
  73. package/less/badge.less +38 -0
  74. package/less/bootstrap-noconflict.less +23 -0
  75. package/less/bootstrap.less +23 -0
  76. package/less/button-group.less +153 -0
  77. package/less/buttons.less +287 -0
  78. package/less/dialog-noconflict.less +174 -0
  79. package/less/dialog.less +203 -0
  80. package/less/dropdown.less +209 -0
  81. package/less/forms.less +770 -0
  82. package/less/images.less +242 -0
  83. package/less/input-group.less +163 -0
  84. package/less/list-group.less +73 -0
  85. package/less/mixins/aspect-ratio.less +23 -0
  86. package/less/mixins/border-radius.less +24 -0
  87. package/less/mixins/box-shadow.less +4 -0
  88. package/less/mixins/buttons.less +17 -0
  89. package/less/mixins/caret.less +51 -0
  90. package/less/mixins/clearfix.less +10 -0
  91. package/less/mixins/gradients.less +34 -0
  92. package/less/mixins/nav-divider.less +7 -0
  93. package/less/mixins/object-fit.less +13 -0
  94. package/less/mixins/reset-text.less +16 -0
  95. package/less/mixins.less +11 -0
  96. package/less/package.json +11 -0
  97. package/less/pagination.less +69 -0
  98. package/less/popover.less +143 -0
  99. package/less/project.sublime-workspace +774 -0
  100. package/less/reboot.less +235 -0
  101. package/less/section.less +793 -0
  102. package/less/select.less +150 -0
  103. package/less/tables.less +737 -0
  104. package/less/tabs.less +162 -0
  105. package/less/tooltip.less +87 -0
  106. package/less/type.less +71 -0
  107. package/less/utilities/align.less +27 -0
  108. package/less/utilities/animate.less +3512 -0
  109. package/less/utilities/background.less +70 -0
  110. package/less/utilities/borders.less +16 -0
  111. package/less/utilities/color.less +70 -0
  112. package/less/utilities/cursor.less +8 -0
  113. package/less/utilities/display.less +38 -0
  114. package/less/utilities/embed.less +61 -0
  115. package/less/utilities/flex.less +76 -0
  116. package/less/utilities/jquery-ui.less +116 -0
  117. package/less/utilities/lazyload.less +29 -0
  118. package/less/utilities/overflow.less +11 -0
  119. package/less/utilities/pace.less +25 -0
  120. package/less/utilities/placeholder.less +60 -0
  121. package/less/utilities/position.less +42 -0
  122. package/less/utilities/scrollbar.less +152 -0
  123. package/less/utilities/spacing.less +197 -0
  124. package/less/utilities/text.less +68 -0
  125. package/less/utilities/transform.less +7 -0
  126. package/less/utilities.less +21 -0
  127. package/less/variables.less +343 -0
  128. package/package.json +71 -0
  129. package/scss/LISENCE +15 -0
  130. package/scss/_alert.scss +125 -0
  131. package/scss/_badge.scss +58 -0
  132. package/scss/_button-group.scss +124 -0
  133. package/scss/_buttons.scss +206 -0
  134. package/scss/_custom-forms.scss +423 -0
  135. package/scss/_dialog.scss +149 -0
  136. package/scss/_dropdown.scss +234 -0
  137. package/scss/_forms.scss +257 -0
  138. package/scss/_frame.scss +523 -0
  139. package/scss/_functions.scss +114 -0
  140. package/scss/_grid.scss +35 -0
  141. package/scss/_images.scss +312 -0
  142. package/scss/_input-group.scss +245 -0
  143. package/scss/_list-group.scss +82 -0
  144. package/scss/_mixins.scss +32 -0
  145. package/scss/_navbar.scss +214 -0
  146. package/scss/_pagination.scss +79 -0
  147. package/scss/_popover.scss +165 -0
  148. package/scss/_reboot.scss +279 -0
  149. package/scss/_root.scss +15 -0
  150. package/scss/_section.scss +851 -0
  151. package/scss/_select.scss +166 -0
  152. package/scss/_tables.scss +707 -0
  153. package/scss/_tabs.scss +175 -0
  154. package/scss/_toast.scss +182 -0
  155. package/scss/_tooltip.scss +101 -0
  156. package/scss/_type.scss +90 -0
  157. package/scss/_utilities.scss +21 -0
  158. package/scss/_variables.scss +697 -0
  159. package/scss/cool-grid.scss +29 -0
  160. package/scss/cool-reboot.scss +11 -0
  161. package/scss/cool.scss +36 -0
  162. package/scss/mixins/_alert-variant.scss +40 -0
  163. package/scss/mixins/_aspect-ratio.scss +29 -0
  164. package/scss/mixins/_background-variant.scss +25 -0
  165. package/scss/mixins/_badge-variant.scss +13 -0
  166. package/scss/mixins/_breakpoints.scss +102 -0
  167. package/scss/mixins/_buttons.scss +104 -0
  168. package/scss/mixins/_caret.scss +80 -0
  169. package/scss/mixins/_clearfix.scss +10 -0
  170. package/scss/mixins/_float.scss +14 -0
  171. package/scss/mixins/_forms.scss +51 -0
  172. package/scss/mixins/_gradients.scss +40 -0
  173. package/scss/mixins/_grid-framework.scss +72 -0
  174. package/scss/mixins/_grid.scss +60 -0
  175. package/scss/mixins/_nav-divider.scss +9 -0
  176. package/scss/mixins/_object-fit.scss +16 -0
  177. package/scss/mixins/_reset-text.scss +19 -0
  178. package/scss/mixins/_text-emphasis.scss +21 -0
  179. package/scss/mixins/_text-hide.scss +10 -0
  180. package/scss/mixins/_text-truncate.scss +8 -0
  181. package/scss/project.sublime-workspace +491 -0
  182. package/scss/utilities/_align.scss +41 -0
  183. package/scss/utilities/_animate.scss +3512 -0
  184. package/scss/utilities/_background.scss +14 -0
  185. package/scss/utilities/_borders.scss +146 -0
  186. package/scss/utilities/_clearfix.scss +6 -0
  187. package/scss/utilities/_collapse.scss +33 -0
  188. package/scss/utilities/_cursor.scss +10 -0
  189. package/scss/utilities/_display.scss +16 -0
  190. package/scss/utilities/_embed.scss +78 -0
  191. package/scss/utilities/_flex.scss +50 -0
  192. package/scss/utilities/_lazyload.scss +31 -0
  193. package/scss/utilities/_overflow.scss +6 -0
  194. package/scss/utilities/_perfect-scrollbar.scss +154 -0
  195. package/scss/utilities/_placeholder.scss +76 -0
  196. package/scss/utilities/_position.scss +30 -0
  197. package/scss/utilities/_sizing.scss +32 -0
  198. package/scss/utilities/_spacing.scss +92 -0
  199. package/scss/utilities/_text.scss +97 -0
@@ -0,0 +1,29 @@
1
+ /*!
2
+ * Cool UI - Grid v1.0.0 (https://finqu.fi)
3
+ * Copyright 2019 Finqu Oy.
4
+ * Licensed under the ISC license - (http://opensource.org/licenses/ISC)
5
+ * Forked from Bootstrap, licensed MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
+ */
7
+
8
+ html {
9
+ box-sizing: border-box;
10
+ -ms-overflow-style: scrollbar;
11
+ }
12
+
13
+ *,
14
+ *::before,
15
+ *::after {
16
+ box-sizing: inherit;
17
+ }
18
+
19
+ @import "functions";
20
+ @import "variables";
21
+
22
+ @import "mixins/breakpoints";
23
+ @import "mixins/grid-framework";
24
+ @import "mixins/grid";
25
+
26
+ @import "grid";
27
+ @import "utilities/display";
28
+ @import "utilities/flex";
29
+ @import "utilities/spacing";
@@ -0,0 +1,11 @@
1
+ /*!
2
+ * Cool UI - Reboot v1.0.0 (https://finqu.fi)
3
+ * Copyright 2019 Finqu Oy.
4
+ * Licensed under the ISC license - (http://opensource.org/licenses/ISC)
5
+ * Forked from Bootstrap, licensed MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
+ */
7
+
8
+ @import "functions";
9
+ @import "variables";
10
+ @import "mixins";
11
+ @import "reboot";
package/scss/cool.scss ADDED
@@ -0,0 +1,36 @@
1
+ /*!
2
+ * Cool UI v1.0.0 (https://finqu.fi)
3
+ * Copyright 2019 Finqu Oy.
4
+ * Licensed under the ISC license - (http://opensource.org/licenses/ISC)
5
+ * Forked from Bootstrap, licensed MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
+ */
7
+
8
+ @import "functions";
9
+ @import "variables";
10
+ @import "mixins";
11
+ @import "root";
12
+ @import "reboot";
13
+ @import "frame";
14
+ @import "navbar";
15
+ @import "type";
16
+ @import "images";
17
+ @import "grid";
18
+ @import "button-group";
19
+ @import "input-group";
20
+ @import "tables";
21
+ @import "forms";
22
+ @import "buttons";
23
+ @import "dropdown";
24
+ @import "custom-forms";
25
+ @import "tabs";
26
+ @import "pagination";
27
+ @import "badge";
28
+ @import "alert";
29
+ @import "tooltip";
30
+ @import "popover";
31
+ @import "dialog";
32
+ @import "section";
33
+ @import "utilities";
34
+ @import "select";
35
+ @import "toast";
36
+ @import "list-group";
@@ -0,0 +1,40 @@
1
+ // Alert variant
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ @mixin alert-variant($color) {
5
+
6
+ border-color: $color;
7
+
8
+ & > .alert-content-container > .alert-content > strong {
9
+ color: $color;
10
+ }
11
+
12
+ &:not(.alert-fill-bg) > .alert-icon {
13
+ padding: 0 15px;
14
+ width: 55px;
15
+ color: color-yiq($color);
16
+
17
+ &:after {
18
+ width: 49px;
19
+ background-color: $color;
20
+ }
21
+ }
22
+
23
+ &.alert-fill-bg {
24
+ & > .alert-icon {
25
+ color: color-yiq($color);
26
+ &:after {
27
+ background-color: $color;
28
+ }
29
+ }
30
+
31
+ & > .alert-content-container {
32
+ background-color: $color;
33
+ color: color-yiq($color);
34
+
35
+ & > .alert-content > strong {
36
+ color: color-yiq($color);
37
+ }
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,29 @@
1
+ // Aspect ratio
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ @mixin aspect-ratio($width, $height) {
5
+
6
+ position: relative;
7
+
8
+ &:before {
9
+ display: block;
10
+ content: '';
11
+ width: 100%;
12
+ padding-top: ($height / $width) * 100%;
13
+ }
14
+
15
+ > .content {
16
+ position: absolute;
17
+ padding:10px;
18
+ top: 0;
19
+ left: 0;
20
+ right: 0;
21
+ bottom: 0;
22
+ span:before{
23
+ content: '';
24
+ }
25
+ span:after{
26
+ content: '';
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,25 @@
1
+ // Background variant
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ @mixin bg-variant($parent, $color) {
5
+
6
+ #{$parent} {
7
+ background-color: $color !important;
8
+ }
9
+
10
+ a#{$parent},
11
+ button#{$parent} {
12
+
13
+ &:hover,
14
+ &:focus {
15
+ background-color: darken($color, 10%) !important;
16
+ }
17
+ }
18
+ }
19
+
20
+ @mixin bg-gradient-variant($parent, $color) {
21
+
22
+ #{$parent} {
23
+ background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;
24
+ }
25
+ }
@@ -0,0 +1,13 @@
1
+ // Badge variant
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ @mixin badge-variant($color) {
5
+
6
+ background: $color;
7
+ color: color-yiq($color);
8
+ }
9
+
10
+ @mixin badge-outline-variant($color) {
11
+
12
+ border: 1px solid $color;
13
+ }
@@ -0,0 +1,102 @@
1
+ // Breakpoints
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ // Name of the next breakpoint, or null for the last breakpoint.
5
+ @function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
6
+
7
+ $n: index($breakpoint-names, $name);
8
+
9
+ @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
10
+ }
11
+
12
+ // Minimum breakpoint width. Null for the smallest (first) breakpoint.
13
+ @function breakpoint-min($name, $breakpoints: $grid-breakpoints) {
14
+
15
+ $min: map-get($breakpoints, $name);
16
+
17
+ @return if($min != 0, $min, null);
18
+ }
19
+
20
+ // Maximum breakpoint width. Null for the largest (last) breakpoint.
21
+ @function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
22
+
23
+ $next: breakpoint-next($name, $breakpoints);
24
+
25
+ @return if($next, breakpoint-min($next, $breakpoints) - .02, null);
26
+ }
27
+
28
+ // Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.
29
+ @function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {
30
+
31
+ @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");
32
+ }
33
+
34
+ // Media of at least the minimum breakpoint width. No query for the smallest breakpoint.
35
+ @mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {
36
+
37
+ $min: breakpoint-min($name, $breakpoints);
38
+
39
+ @if $min {
40
+ @media (min-width: $min) {
41
+ @content;
42
+ }
43
+ } @else {
44
+ @content;
45
+ }
46
+ }
47
+
48
+ // Media of at most the maximum breakpoint width. No query for the largest breakpoint.
49
+ @mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
50
+
51
+ $max: breakpoint-max($name, $breakpoints);
52
+
53
+ @if $max {
54
+ @media (max-width: $max) {
55
+ @content;
56
+ }
57
+ } @else {
58
+ @content;
59
+ }
60
+ }
61
+
62
+ // Media that spans multiple breakpoint widths.
63
+ @mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {
64
+
65
+ $min: breakpoint-min($lower, $breakpoints);
66
+ $max: breakpoint-max($upper, $breakpoints);
67
+
68
+ @if $min != null and $max != null {
69
+ @media (min-width: $min) and (max-width: $max) {
70
+ @content;
71
+ }
72
+ } @else if $max == null {
73
+ @include media-breakpoint-up($lower, $breakpoints) {
74
+ @content;
75
+ }
76
+ } @else if $min == null {
77
+ @include media-breakpoint-down($upper, $breakpoints) {
78
+ @content;
79
+ }
80
+ }
81
+ }
82
+
83
+ // Media between the breakpoint's minimum and maximum widths.
84
+ @mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {
85
+
86
+ $min: breakpoint-min($name, $breakpoints);
87
+ $max: breakpoint-max($name, $breakpoints);
88
+
89
+ @if $min != null and $max != null {
90
+ @media (min-width: $min) and (max-width: $max) {
91
+ @content;
92
+ }
93
+ } @else if $max == null {
94
+ @include media-breakpoint-up($name, $breakpoints) {
95
+ @content;
96
+ }
97
+ } @else if $min == null {
98
+ @include media-breakpoint-down($name, $breakpoints) {
99
+ @content;
100
+ }
101
+ }
102
+ }
@@ -0,0 +1,104 @@
1
+ // Buttons
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ // Button default
5
+ @mixin button-variant($background, $border: $background, $color: color-yiq($background), $hover-background: darken($background, 15%), $hover-border: $hover-background, $hover-color: color-yiq(darken($background, 15%)), $active-background: $hover-background, $active-border: $hover-border, $active-color: $hover-color, $enable-shadow: true) {
6
+
7
+ border: $btn-border-width solid $border;
8
+ background: $background;
9
+ color: $color;
10
+
11
+ &.focus,
12
+ &:focus,
13
+ &.hover,
14
+ &:hover {
15
+ border: $btn-border-width solid $hover-border;
16
+ background: $hover-background;
17
+ color: $hover-color;
18
+
19
+ @if $enable-shadow {
20
+ box-shadow: 0 14px 26px -12px rgba(darken($background, 15%), 0.32), 0 4px 23px 0 rgba(darken($background, 15%), 0.06), 0 8px 10px -5px rgba(darken($background, 15%), 0.2);
21
+ } @else {
22
+ box-shadow: none;
23
+ }
24
+ }
25
+
26
+ &:not(:disabled):not(.disabled):active,
27
+ &:not(:disabled):not(.disabled).active {
28
+ border: $btn-border-width solid $active-border;
29
+ background: $active-background;
30
+ color: $active-color;
31
+
32
+ @if $enable-shadow {
33
+ box-shadow: 0 14px 26px -12px rgba(darken($background, 15%), 0.32), 0 4px 23px 0 rgba(darken($background, 15%), 0.06), 0 8px 10px -5px rgba(darken($background, 15%), 0.2);
34
+ } @else {
35
+ box-shadow: none;
36
+ }
37
+ }
38
+
39
+ &.disabled,
40
+ &[disabled] {
41
+ opacity: 0.35;
42
+ cursor: not-allowed;
43
+ &:hover {
44
+ box-shadow: none;
45
+ cursor: not-allowed;
46
+ }
47
+ }
48
+ }
49
+
50
+
51
+ // Button outline
52
+ @mixin button-outline-variant($border-color, $color: $border-color, $hover-background: $border-color, $hover-color: color-yiq($border-color), $active-color: $hover-color, $active-background: $hover-background, $active-border: $border-color, $enable-shadow: true) {
53
+
54
+ border: $btn-border-width solid $border-color;
55
+ color: $color;
56
+ background: transparent;
57
+
58
+ &.focus,
59
+ &:focus,
60
+ &.hover,
61
+ &:hover {
62
+ background: $hover-background;
63
+ color: $hover-color;
64
+
65
+ @if $enable-shadow {
66
+ box-shadow: 0 14px 26px -12px rgba(darken($border-color, 15%), 0.32), 0 4px 23px 0 rgba(darken($border-color, 15%), 0.06), 0 8px 10px -5px rgba(darken($border-color, 15%), 0.2);
67
+ } @else {
68
+ box-shadow: none;
69
+ }
70
+ }
71
+
72
+ &:not(:disabled):not(.disabled):active,
73
+ &:not(:disabled):not(.disabled).active {
74
+ border: $btn-border-width solid $active-border;
75
+ background: $active-background;
76
+ color: $active-color;
77
+
78
+ @if $enable-shadow {
79
+ box-shadow: 0 14px 26px -12px rgba(darken($border-color, 15%), 0.32), 0 4px 23px 0 rgba(darken($border-color, 15%), 0.06), 0 8px 10px -5px rgba(darken($border-color, 15%), 0.2);
80
+ } @else {
81
+ box-shadow: none;
82
+ }
83
+ }
84
+
85
+ &.disabled,
86
+ &[disabled] {
87
+ opacity: 0.35;
88
+ cursor: not-allowed;
89
+ &:hover {
90
+ box-shadow: none;
91
+ cursor: not-allowed;
92
+ }
93
+ }
94
+ }
95
+
96
+
97
+ // Button sizes
98
+ @mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
99
+
100
+ padding: $padding-y $padding-x;
101
+ font-size: $font-size;
102
+ line-height: $line-height;
103
+ border-radius: $border-radius;
104
+ }
@@ -0,0 +1,80 @@
1
+ // Caret
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ @mixin caret-reset-after {
5
+
6
+ &:after {
7
+ display: inline-block;
8
+ width: 12px;
9
+ height: 12px;
10
+ padding-left: $caret-width * .85;
11
+ content: '';
12
+ background-repeat: no-repeat;
13
+ background-position: right;
14
+ vertical-align: middle;
15
+ box-sizing: content-box;
16
+ }
17
+
18
+ &:empty:after {
19
+ padding-left: 0;
20
+ }
21
+ }
22
+
23
+ @mixin caret-reset-before {
24
+
25
+ &:before {
26
+ display: inline-block;
27
+ width: 12px;
28
+ height: 12px;
29
+ padding-right: $caret-width * .85;
30
+ content: '';
31
+ background-repeat: no-repeat;
32
+ background-position: left;
33
+ vertical-align: middle;
34
+ box-sizing: content-box;
35
+ }
36
+
37
+ &:empty:before {
38
+ padding-right: 0;
39
+ }
40
+ }
41
+
42
+ @mixin caret-down {
43
+
44
+ @include caret-reset-after;
45
+
46
+ &:after {
47
+ // Font Awesome Free fa-angle-down
48
+ background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMjAgNTEyIj48cGF0aCBmaWxsPSIjNzY4NDhGIiBkPSJNMTUxLjUgMzQ3LjhMMy41IDIwMWMtNC43LTQuNy00LjctMTIuMyAwLTE3bDE5LjgtMTkuOGM0LjctNC43IDEyLjMtNC43IDE3IDBMMTYwIDI4Mi43bDExOS43LTExOC41YzQuNy00LjcgMTIuMy00LjcgMTcgMGwxOS44IDE5LjhjNC43IDQuNyA0LjcgMTIuMyAwIDE3bC0xNDggMTQ2LjhjLTQuNyA0LjctMTIuMyA0LjctMTcgMHoiPjwvcGF0aD48L3N2Zz4=');
49
+ }
50
+ }
51
+
52
+ @mixin caret-up {
53
+
54
+ @include caret-reset-after;
55
+
56
+ &:after {
57
+ // Font Awesome Free fa-angle-up
58
+ background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMjAgNTEyIj48cGF0aCBmaWxsPSIjNzY4NDhGIiBkPSJNMTY4LjUgMTY0LjJsMTQ4IDE0Ni44YzQuNyA0LjcgNC43IDEyLjMgMCAxN2wtMTkuOCAxOS44Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMTYwIDIyOS4zIDQwLjMgMzQ3LjhjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwzLjUgMzI4Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsMTQ4LTE0Ni44YzQuNy00LjcgMTIuMy00LjcgMTcgMHoiPjwvcGF0aD48L3N2Zz4=');
59
+ }
60
+ }
61
+
62
+ @mixin caret-right {
63
+
64
+ @include caret-reset-after;
65
+
66
+ &:after {
67
+ // Font Awesome Free fa-angle-right
68
+ background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgNTEyIj48cGF0aCBmaWxsPSIjNzY4NDhGIiBkPSJNMTg3LjggMjY0LjVMNDEgNDEyLjVjLTQuNyA0LjctMTIuMyA0LjctMTcgMEw0LjIgMzkyLjdjLTQuNy00LjctNC43LTEyLjMgMC0xN0wxMjIuNyAyNTYgNC4yIDEzNi4zYy00LjctNC43LTQuNy0xMi4zIDAtMTdMMjQgOTkuNWM0LjctNC43IDEyLjMtNC43IDE3IDBsMTQ2LjggMTQ4YzQuNyA0LjcgNC43IDEyLjMgMCAxN3oiPjwvcGF0aD48L3N2Zz4=');
69
+ }
70
+ }
71
+
72
+ @mixin caret-left {
73
+
74
+ @include caret-reset-before;
75
+
76
+ &:before {
77
+ // Font Awesome Free fa-angle-left
78
+ background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgNTEyIj48cGF0aCBmaWxsPSIjNzY4NDhGIiBkPSJNNC4yIDI0Ny41TDE1MSA5OS41YzQuNy00LjcgMTIuMy00LjcgMTcgMGwxOS44IDE5LjhjNC43IDQuNyA0LjcgMTIuMyAwIDE3TDY5LjMgMjU2bDExOC41IDExOS43YzQuNyA0LjcgNC43IDEyLjMgMCAxN0wxNjggNDEyLjVjLTQuNyA0LjctMTIuMyA0LjctMTcgMEw0LjIgMjY0LjVjLTQuNy00LjctNC43LTEyLjMgMC0xN3oiPjwvcGF0aD48L3N2Zz4=');
79
+ }
80
+ }
@@ -0,0 +1,10 @@
1
+ // Clearfix
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ @mixin clearfix() {
5
+ &::after {
6
+ display: block;
7
+ clear: both;
8
+ content: "";
9
+ }
10
+ }
@@ -0,0 +1,14 @@
1
+ // Float
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ @mixin float-left {
5
+ float: left !important;
6
+ }
7
+
8
+ @mixin float-right {
9
+ float: right !important;
10
+ }
11
+
12
+ @mixin float-none {
13
+ float: none !important;
14
+ }
@@ -0,0 +1,51 @@
1
+ // Forms
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ @mixin form-control-focus {
5
+
6
+ &:focus {
7
+ border-color: $input-focus-border-color;
8
+ outline: 0;
9
+ }
10
+ }
11
+
12
+ @mixin form-validation-state($state, $color) {
13
+
14
+ .#{$state}-feedback {
15
+ display: none;
16
+ width: 100%;
17
+ margin-top: $form-feedback-margin-top;
18
+ font-size: $form-feedback-font-size;
19
+ color: $color;
20
+ }
21
+
22
+ .form-control {
23
+ .was-validated &:#{$state},
24
+ &.is-#{$state} {
25
+
26
+ border-color: $color;
27
+
28
+ &:focus {
29
+ border-color: $color;
30
+ }
31
+
32
+ ~ .#{$state}-feedback {
33
+ display: block;
34
+ }
35
+ }
36
+ }
37
+
38
+ .form-check-input {
39
+ .was-validated &:#{$state},
40
+ &.is-#{$state} {
41
+
42
+ ~ .form-check-label {
43
+ color: $color;
44
+ }
45
+
46
+ ~ .#{$state}-feedback {
47
+ display: block;
48
+ }
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,40 @@
1
+ // Gradients
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ @mixin gradient-bg($color) {
5
+ background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;
6
+ }
7
+
8
+ @mixin gradient-x($start-color: color('grey-darker'), $end-color: color('grey-darkest'), $start-percent: 0%, $end-percent: 100%) {
9
+ background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
10
+ background-repeat: repeat-x;
11
+ }
12
+
13
+ @mixin gradient-y($start-color: color('grey-darker'), $end-color: color('grey-darkest'), $start-percent: 0%, $end-percent: 100%) {
14
+ background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
15
+ background-repeat: repeat-x;
16
+ }
17
+
18
+ @mixin gradient-directional($start-color: color('grey-darker'), $end-color: color('grey-darkest'), $deg: 45deg) {
19
+ background-image: linear-gradient($deg, $start-color, $end-color);
20
+ background-repeat: repeat-x;
21
+ }
22
+
23
+ @mixin gradient-x-three-colors($start-color: color('blue'), $mid-color: color('grey-pink'), $color-stop: 50%, $end-color: color('red')) {
24
+ background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
25
+ background-repeat: no-repeat;
26
+ }
27
+
28
+ @mixin gradient-y-three-colors($start-color: color('blue'), $mid-color: color('pink'), $color-stop: 50%, $end-color: color('red')) {
29
+ background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
30
+ background-repeat: no-repeat;
31
+ }
32
+
33
+ @mixin gradient-radial($inner-color: color('grey-darker'), $outer-color: color('grey-darkest')) {
34
+ background-image: radial-gradient(circle, $inner-color, $outer-color);
35
+ background-repeat: no-repeat;
36
+ }
37
+
38
+ @mixin gradient-striped($color: rgba(color('white'), .15), $angle: 45deg) {
39
+ background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
40
+ }
@@ -0,0 +1,72 @@
1
+ // Grid framework
2
+ // ---------------------------------------------------------------------------------------------------------------
3
+
4
+ @mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
5
+
6
+ %grid-column {
7
+ position: relative;
8
+ width: 100%;
9
+ padding-right: $gutter / 2;
10
+ padding-left: $gutter / 2;
11
+ }
12
+
13
+ @each $breakpoint in map-keys($breakpoints) {
14
+ $infix: breakpoint-infix($breakpoint, $breakpoints);
15
+
16
+ // Allow columns to stretch full width below their breakpoints
17
+ @for $i from 1 through $columns {
18
+ .col#{$infix}-#{$i} {
19
+ @extend %grid-column;
20
+ }
21
+ }
22
+ .col#{$infix},
23
+ .col#{$infix}-auto {
24
+ @extend %grid-column;
25
+ }
26
+
27
+ @include media-breakpoint-up($breakpoint, $breakpoints) {
28
+
29
+ // Provide basic `.col-{bp}` classes for equal-width flexbox columns
30
+ .col#{$infix} {
31
+ flex-basis: 0;
32
+ flex-grow: 1;
33
+ max-width: 100%;
34
+ }
35
+
36
+ .col#{$infix}-auto {
37
+ flex: 0 0 auto;
38
+ width: auto;
39
+ max-width: 100%; // Reset earlier grid tiers
40
+ }
41
+
42
+ @for $i from 1 through $columns {
43
+ .col#{$infix}-#{$i} {
44
+ @include make-col($i, $columns);
45
+ }
46
+ }
47
+
48
+ .order#{$infix}-first {
49
+ order: -1;
50
+ }
51
+
52
+ .order#{$infix}-last {
53
+ order: $columns + 1;
54
+ }
55
+
56
+ @for $i from 0 through $columns {
57
+ .order#{$infix}-#{$i} {
58
+ order: $i;
59
+ }
60
+ }
61
+
62
+ // `$columns - 1` because offsetting by the width of an entire row isn't possible
63
+ @for $i from 0 through ($columns - 1) {
64
+ @if not ($infix == "" and $i == 0) {
65
+ .offset#{$infix}-#{$i} {
66
+ @include make-col-offset($i, $columns);
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }