viniBaxter-spa_landing 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +7 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/README.md +39 -0
  8. data/Rakefile +6 -0
  9. data/app/assets/images/spa_landing/.DS_Store +0 -0
  10. data/app/assets/images/spa_landing/asc.gif +0 -0
  11. data/app/assets/images/spa_landing/bg.gif +0 -0
  12. data/app/assets/images/spa_landing/desc.gif +0 -0
  13. data/bin/console +14 -0
  14. data/bin/setup +8 -0
  15. data/lib/viniBaxter/.DS_Store +0 -0
  16. data/lib/viniBaxter/sass/.DS_Store +0 -0
  17. data/lib/viniBaxter/sass/spa_landing/_some_airbnb_variables.scss +48 -0
  18. data/lib/viniBaxter/sass/spa_landing/_user.scss +6 -0
  19. data/lib/viniBaxter/sass/spa_landing/scss/_alert.scss +51 -0
  20. data/lib/viniBaxter/sass/spa_landing/scss/_badge.scss +54 -0
  21. data/lib/viniBaxter/sass/spa_landing/scss/_breadcrumb.scss +42 -0
  22. data/lib/viniBaxter/sass/spa_landing/scss/_button-group.scss +163 -0
  23. data/lib/viniBaxter/sass/spa_landing/scss/_buttons.scss +139 -0
  24. data/lib/viniBaxter/sass/spa_landing/scss/_card.scss +278 -0
  25. data/lib/viniBaxter/sass/spa_landing/scss/_carousel.scss +197 -0
  26. data/lib/viniBaxter/sass/spa_landing/scss/_close.scss +41 -0
  27. data/lib/viniBaxter/sass/spa_landing/scss/_code.scss +48 -0
  28. data/lib/viniBaxter/sass/spa_landing/scss/_custom-forms.scss +521 -0
  29. data/lib/viniBaxter/sass/spa_landing/scss/_dropdown.scss +191 -0
  30. data/lib/viniBaxter/sass/spa_landing/scss/_forms.scss +338 -0
  31. data/lib/viniBaxter/sass/spa_landing/scss/_functions.scss +134 -0
  32. data/lib/viniBaxter/sass/spa_landing/scss/_grid.scss +69 -0
  33. data/lib/viniBaxter/sass/spa_landing/scss/_images.scss +42 -0
  34. data/lib/viniBaxter/sass/spa_landing/scss/_input-group.scss +191 -0
  35. data/lib/viniBaxter/sass/spa_landing/scss/_jumbotron.scss +17 -0
  36. data/lib/viniBaxter/sass/spa_landing/scss/_list-group.scss +158 -0
  37. data/lib/viniBaxter/sass/spa_landing/scss/_media.scss +8 -0
  38. data/lib/viniBaxter/sass/spa_landing/scss/_mixins.scss +47 -0
  39. data/lib/viniBaxter/sass/spa_landing/scss/_modal.scss +239 -0
  40. data/lib/viniBaxter/sass/spa_landing/scss/_nav.scss +120 -0
  41. data/lib/viniBaxter/sass/spa_landing/scss/_navbar.scss +324 -0
  42. data/lib/viniBaxter/sass/spa_landing/scss/_pagination.scss +73 -0
  43. data/lib/viniBaxter/sass/spa_landing/scss/_popover.scss +170 -0
  44. data/lib/viniBaxter/sass/spa_landing/scss/_print.scss +141 -0
  45. data/lib/viniBaxter/sass/spa_landing/scss/_progress.scss +46 -0
  46. data/lib/viniBaxter/sass/spa_landing/scss/_reboot.scss +482 -0
  47. data/lib/viniBaxter/sass/spa_landing/scss/_root.scss +20 -0
  48. data/lib/viniBaxter/sass/spa_landing/scss/_spinners.scss +55 -0
  49. data/lib/viniBaxter/sass/spa_landing/scss/_tables.scss +185 -0
  50. data/lib/viniBaxter/sass/spa_landing/scss/_toasts.scss +44 -0
  51. data/lib/viniBaxter/sass/spa_landing/scss/_tooltip.scss +115 -0
  52. data/lib/viniBaxter/sass/spa_landing/scss/_transitions.scss +20 -0
  53. data/lib/viniBaxter/sass/spa_landing/scss/_type.scss +125 -0
  54. data/lib/viniBaxter/sass/spa_landing/scss/_utilities.scss +17 -0
  55. data/lib/viniBaxter/sass/spa_landing/scss/_variables.scss +1143 -0
  56. data/lib/viniBaxter/sass/spa_landing/scss/bootstrap-grid.scss +29 -0
  57. data/lib/viniBaxter/sass/spa_landing/scss/bootstrap-reboot.scss +12 -0
  58. data/lib/viniBaxter/sass/spa_landing/scss/bootstrap.scss +44 -0
  59. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_alert.scss +13 -0
  60. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_background-variant.scss +22 -0
  61. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_badge.scss +17 -0
  62. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_border-radius.scss +63 -0
  63. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_box-shadow.scss +20 -0
  64. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_breakpoints.scss +123 -0
  65. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_buttons.scss +110 -0
  66. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_caret.scss +62 -0
  67. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_clearfix.scss +7 -0
  68. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_deprecate.scss +10 -0
  69. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_float.scss +14 -0
  70. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_forms.scss +177 -0
  71. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_gradients.scss +45 -0
  72. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_grid-framework.scss +71 -0
  73. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_grid.scss +69 -0
  74. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_hover.scss +37 -0
  75. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_image.scss +36 -0
  76. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_list-group.scss +21 -0
  77. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_lists.scss +7 -0
  78. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_nav-divider.scss +11 -0
  79. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_pagination.scss +22 -0
  80. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_reset-text.scss +17 -0
  81. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_resize.scss +6 -0
  82. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_screen-reader.scss +34 -0
  83. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_size.scss +7 -0
  84. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_table-row.scss +39 -0
  85. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_text-emphasis.scss +17 -0
  86. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_text-hide.scss +11 -0
  87. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_text-truncate.scss +8 -0
  88. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_transition.scss +16 -0
  89. data/lib/viniBaxter/sass/spa_landing/scss/mixins/_visibility.scss +8 -0
  90. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_align.scss +8 -0
  91. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_background.scss +19 -0
  92. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_borders.scss +75 -0
  93. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_clearfix.scss +3 -0
  94. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_display.scss +26 -0
  95. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_embed.scss +39 -0
  96. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_flex.scss +51 -0
  97. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_float.scss +11 -0
  98. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_overflow.scss +5 -0
  99. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_position.scss +32 -0
  100. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_screenreaders.scss +11 -0
  101. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_shadows.scss +6 -0
  102. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_sizing.scss +20 -0
  103. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_spacing.scss +73 -0
  104. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_stretched-link.scss +19 -0
  105. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_text.scss +72 -0
  106. data/lib/viniBaxter/sass/spa_landing/scss/utilities/_visibility.scss +13 -0
  107. data/lib/viniBaxter/sass/spa_landing/scss/vendor/_rfs.scss +204 -0
  108. data/lib/viniBaxter/sass/spa_landing/theme/_alert.scss +18 -0
  109. data/lib/viniBaxter/sass/spa_landing/theme/_aos.scss +32 -0
  110. data/lib/viniBaxter/sass/spa_landing/theme/_avatar.scss +192 -0
  111. data/lib/viniBaxter/sass/spa_landing/theme/_badge.scss +95 -0
  112. data/lib/viniBaxter/sass/spa_landing/theme/_breadcrumb.scss +35 -0
  113. data/lib/viniBaxter/sass/spa_landing/theme/_button-group.scss +0 -0
  114. data/lib/viniBaxter/sass/spa_landing/theme/_buttons.scss +115 -0
  115. data/lib/viniBaxter/sass/spa_landing/theme/_card.scss +222 -0
  116. data/lib/viniBaxter/sass/spa_landing/theme/_carousel.scss +0 -0
  117. data/lib/viniBaxter/sass/spa_landing/theme/_close.scss +11 -0
  118. data/lib/viniBaxter/sass/spa_landing/theme/_code.scss +0 -0
  119. data/lib/viniBaxter/sass/spa_landing/theme/_collapse.scss +15 -0
  120. data/lib/viniBaxter/sass/spa_landing/theme/_custom-forms.scss +65 -0
  121. data/lib/viniBaxter/sass/spa_landing/theme/_device.scss +103 -0
  122. data/lib/viniBaxter/sass/spa_landing/theme/_dropdown.scss +106 -0
  123. data/lib/viniBaxter/sass/spa_landing/theme/_fancybox.scss +14 -0
  124. data/lib/viniBaxter/sass/spa_landing/theme/_feather.scss +1093 -0
  125. data/lib/viniBaxter/sass/spa_landing/theme/_flickity.scss +112 -0
  126. data/lib/viniBaxter/sass/spa_landing/theme/_footer.scss +10 -0
  127. data/lib/viniBaxter/sass/spa_landing/theme/_forms.scss +92 -0
  128. data/lib/viniBaxter/sass/spa_landing/theme/_functions.scss +14 -0
  129. data/lib/viniBaxter/sass/spa_landing/theme/_grid.scss +9 -0
  130. data/lib/viniBaxter/sass/spa_landing/theme/_highlight.scss +8 -0
  131. data/lib/viniBaxter/sass/spa_landing/theme/_icon.scss +56 -0
  132. data/lib/viniBaxter/sass/spa_landing/theme/_images.scss +32 -0
  133. data/lib/viniBaxter/sass/spa_landing/theme/_input-group.scss +0 -0
  134. data/lib/viniBaxter/sass/spa_landing/theme/_jumbotron.scss +0 -0
  135. data/lib/viniBaxter/sass/spa_landing/theme/_list-group.scss +22 -0
  136. data/lib/viniBaxter/sass/spa_landing/theme/_list.scss +27 -0
  137. data/lib/viniBaxter/sass/spa_landing/theme/_media.scss +0 -0
  138. data/lib/viniBaxter/sass/spa_landing/theme/_mixins.scss +8 -0
  139. data/lib/viniBaxter/sass/spa_landing/theme/_modal.scss +21 -0
  140. data/lib/viniBaxter/sass/spa_landing/theme/_nav.scss +0 -0
  141. data/lib/viniBaxter/sass/spa_landing/theme/_navbar.scss +377 -0
  142. data/lib/viniBaxter/sass/spa_landing/theme/_pagination.scss +34 -0
  143. data/lib/viniBaxter/sass/spa_landing/theme/_popover.scss +15 -0
  144. data/lib/viniBaxter/sass/spa_landing/theme/_print.scss +0 -0
  145. data/lib/viniBaxter/sass/spa_landing/theme/_progress.scss +0 -0
  146. data/lib/viniBaxter/sass/spa_landing/theme/_reboot.scss +17 -0
  147. data/lib/viniBaxter/sass/spa_landing/theme/_root.scss +0 -0
  148. data/lib/viniBaxter/sass/spa_landing/theme/_screenshot.scss +9 -0
  149. data/lib/viniBaxter/sass/spa_landing/theme/_section.scss +19 -0
  150. data/lib/viniBaxter/sass/spa_landing/theme/_shapes.scss +178 -0
  151. data/lib/viniBaxter/sass/spa_landing/theme/_sidenav.scss +28 -0
  152. data/lib/viniBaxter/sass/spa_landing/theme/_tables.scss +23 -0
  153. data/lib/viniBaxter/sass/spa_landing/theme/_theme.scss +57 -0
  154. data/lib/viniBaxter/sass/spa_landing/theme/_tooltip.scss +0 -0
  155. data/lib/viniBaxter/sass/spa_landing/theme/_transitions.scss +0 -0
  156. data/lib/viniBaxter/sass/spa_landing/theme/_type.scss +169 -0
  157. data/lib/viniBaxter/sass/spa_landing/theme/_utilities.scss +15 -0
  158. data/lib/viniBaxter/sass/spa_landing/theme/_variables.scss +565 -0
  159. data/lib/viniBaxter/sass/spa_landing/theme/mixins/_badge.scss +16 -0
  160. data/lib/viniBaxter/sass/spa_landing/theme/mixins/_buttons.scss +19 -0
  161. data/lib/viniBaxter/sass/spa_landing/theme/mixins/_overlay.scss +24 -0
  162. data/lib/viniBaxter/sass/spa_landing/theme/utilities/_background.scss +54 -0
  163. data/lib/viniBaxter/sass/spa_landing/theme/utilities/_borders.scss +76 -0
  164. data/lib/viniBaxter/sass/spa_landing/theme/utilities/_images.scss +35 -0
  165. data/lib/viniBaxter/sass/spa_landing/theme/utilities/_lift.scss +18 -0
  166. data/lib/viniBaxter/sass/spa_landing/theme/utilities/_overlay.scss +49 -0
  167. data/lib/viniBaxter/sass/spa_landing/theme/utilities/_position.scss +41 -0
  168. data/lib/viniBaxter/sass/spa_landing/theme/utilities/_shadows.scss +24 -0
  169. data/lib/viniBaxter/sass/spa_landing/theme/utilities/_sizing.scss +72 -0
  170. data/lib/viniBaxter/sass/spa_landing/theme/utilities/_type.scss +54 -0
  171. data/lib/viniBaxter/sass/spa_landing/theme/utilities/_visibility.scss +12 -0
  172. data/lib/viniBaxter/sass/spa_landing.scss +17 -0
  173. data/lib/viniBaxter/spa_landing/engine.rb +17 -0
  174. data/lib/viniBaxter/spa_landing/version.rb +5 -0
  175. data/lib/viniBaxter/spa_landing.rb +8 -0
  176. data/viniBaxter-spa_landing.gemspec +33 -0
  177. metadata +259 -0
@@ -0,0 +1,338 @@
1
+ // stylelint-disable selector-no-qualifying-type
2
+
3
+ //
4
+ // Textual form controls
5
+ //
6
+
7
+ .form-control {
8
+ display: block;
9
+ width: 100%;
10
+ height: $input-height;
11
+ padding: $input-padding-y $input-padding-x;
12
+ font-family: $input-font-family;
13
+ @include font-size($input-font-size);
14
+ font-weight: $input-font-weight;
15
+ line-height: $input-line-height;
16
+ color: $input-color;
17
+ background-color: $input-bg;
18
+ background-clip: padding-box;
19
+ border: $input-border-width solid $input-border-color;
20
+
21
+ // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
22
+ @include border-radius($input-border-radius, 0);
23
+
24
+ @include box-shadow($input-box-shadow);
25
+ @include transition($input-transition);
26
+
27
+ // Unstyle the caret on `<select>`s in IE10+.
28
+ &::-ms-expand {
29
+ background-color: transparent;
30
+ border: 0;
31
+ }
32
+
33
+ // Remove select outline from select box in FF
34
+ &:-moz-focusring {
35
+ color: transparent;
36
+ text-shadow: 0 0 0 $input-color;
37
+ }
38
+
39
+ // Customize the `:focus` state to imitate native WebKit styles.
40
+ @include form-control-focus($ignore-warning: true);
41
+
42
+ // Placeholder
43
+ &::placeholder {
44
+ color: $input-placeholder-color;
45
+ // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
46
+ opacity: 1;
47
+ }
48
+
49
+ // Disabled and read-only inputs
50
+ //
51
+ // HTML5 says that controls under a fieldset > legend:first-child won't be
52
+ // disabled if the fieldset is disabled. Due to implementation difficulty, we
53
+ // don't honor that edge case; we style them as disabled anyway.
54
+ &:disabled,
55
+ &[readonly] {
56
+ background-color: $input-disabled-bg;
57
+ // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
58
+ opacity: 1;
59
+ }
60
+ }
61
+
62
+ select.form-control {
63
+ &:focus::-ms-value {
64
+ // Suppress the nested default white text on blue background highlight given to
65
+ // the selected option text when the (still closed) <select> receives focus
66
+ // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to
67
+ // match the appearance of the native widget.
68
+ // See https://github.com/twbs/bootstrap/issues/19398.
69
+ color: $input-color;
70
+ background-color: $input-bg;
71
+ }
72
+ }
73
+
74
+ // Make file inputs better match text inputs by forcing them to new lines.
75
+ .form-control-file,
76
+ .form-control-range {
77
+ display: block;
78
+ width: 100%;
79
+ }
80
+
81
+
82
+ //
83
+ // Labels
84
+ //
85
+
86
+ // For use with horizontal and inline forms, when you need the label (or legend)
87
+ // text to align with the form controls.
88
+ .col-form-label {
89
+ padding-top: add($input-padding-y, $input-border-width);
90
+ padding-bottom: add($input-padding-y, $input-border-width);
91
+ margin-bottom: 0; // Override the `<label>/<legend>` default
92
+ @include font-size(inherit); // Override the `<legend>` default
93
+ line-height: $input-line-height;
94
+ }
95
+
96
+ .col-form-label-lg {
97
+ padding-top: add($input-padding-y-lg, $input-border-width);
98
+ padding-bottom: add($input-padding-y-lg, $input-border-width);
99
+ @include font-size($input-font-size-lg);
100
+ line-height: $input-line-height-lg;
101
+ }
102
+
103
+ .col-form-label-sm {
104
+ padding-top: add($input-padding-y-sm, $input-border-width);
105
+ padding-bottom: add($input-padding-y-sm, $input-border-width);
106
+ @include font-size($input-font-size-sm);
107
+ line-height: $input-line-height-sm;
108
+ }
109
+
110
+
111
+ // Readonly controls as plain text
112
+ //
113
+ // Apply class to a readonly input to make it appear like regular plain
114
+ // text (without any border, background color, focus indicator)
115
+
116
+ .form-control-plaintext {
117
+ display: block;
118
+ width: 100%;
119
+ padding: $input-padding-y 0;
120
+ margin-bottom: 0; // match inputs if this class comes on inputs with default margins
121
+ @include font-size($input-font-size);
122
+ line-height: $input-line-height;
123
+ color: $input-plaintext-color;
124
+ background-color: transparent;
125
+ border: solid transparent;
126
+ border-width: $input-border-width 0;
127
+
128
+ &.form-control-sm,
129
+ &.form-control-lg {
130
+ padding-right: 0;
131
+ padding-left: 0;
132
+ }
133
+ }
134
+
135
+
136
+ // Form control sizing
137
+ //
138
+ // Build on `.form-control` with modifier classes to decrease or increase the
139
+ // height and font-size of form controls.
140
+ //
141
+ // Repeated in `_input_group.scss` to avoid Sass extend issues.
142
+
143
+ .form-control-sm {
144
+ height: $input-height-sm;
145
+ padding: $input-padding-y-sm $input-padding-x-sm;
146
+ @include font-size($input-font-size-sm);
147
+ line-height: $input-line-height-sm;
148
+ @include border-radius($input-border-radius-sm);
149
+ }
150
+
151
+ .form-control-lg {
152
+ height: $input-height-lg;
153
+ padding: $input-padding-y-lg $input-padding-x-lg;
154
+ @include font-size($input-font-size-lg);
155
+ line-height: $input-line-height-lg;
156
+ @include border-radius($input-border-radius-lg);
157
+ }
158
+
159
+ // stylelint-disable-next-line no-duplicate-selectors
160
+ select.form-control {
161
+ &[size],
162
+ &[multiple] {
163
+ height: auto;
164
+ }
165
+ }
166
+
167
+ textarea.form-control {
168
+ height: auto;
169
+ }
170
+
171
+ // Form groups
172
+ //
173
+ // Designed to help with the organization and spacing of vertical forms. For
174
+ // horizontal forms, use the predefined grid classes.
175
+
176
+ .form-group {
177
+ margin-bottom: $form-group-margin-bottom;
178
+ }
179
+
180
+ .form-text {
181
+ display: block;
182
+ margin-top: $form-text-margin-top;
183
+ }
184
+
185
+
186
+ // Form grid
187
+ //
188
+ // Special replacement for our grid system's `.row` for tighter form layouts.
189
+
190
+ .form-row {
191
+ display: flex;
192
+ flex-wrap: wrap;
193
+ margin-right: -$form-grid-gutter-width / 2;
194
+ margin-left: -$form-grid-gutter-width / 2;
195
+
196
+ > .col,
197
+ > [class*="col-"] {
198
+ padding-right: $form-grid-gutter-width / 2;
199
+ padding-left: $form-grid-gutter-width / 2;
200
+ }
201
+ }
202
+
203
+
204
+ // Checkboxes and radios
205
+ //
206
+ // Indent the labels to position radios/checkboxes as hanging controls.
207
+
208
+ .form-check {
209
+ position: relative;
210
+ display: block;
211
+ padding-left: $form-check-input-gutter;
212
+ }
213
+
214
+ .form-check-input {
215
+ position: absolute;
216
+ margin-top: $form-check-input-margin-y;
217
+ margin-left: -$form-check-input-gutter;
218
+
219
+ // Use [disabled] and :disabled for workaround https://github.com/twbs/bootstrap/issues/28247
220
+ &[disabled] ~ .form-check-label,
221
+ &:disabled ~ .form-check-label {
222
+ color: $text-muted;
223
+ }
224
+ }
225
+
226
+ .form-check-label {
227
+ margin-bottom: 0; // Override default `<label>` bottom margin
228
+ }
229
+
230
+ .form-check-inline {
231
+ display: inline-flex;
232
+ align-items: center;
233
+ padding-left: 0; // Override base .form-check
234
+ margin-right: $form-check-inline-margin-x;
235
+
236
+ // Undo .form-check-input defaults and add some `margin-right`.
237
+ .form-check-input {
238
+ position: static;
239
+ margin-top: 0;
240
+ margin-right: $form-check-inline-input-margin-x;
241
+ margin-left: 0;
242
+ }
243
+ }
244
+
245
+
246
+ // Form validation
247
+ //
248
+ // Provide feedback to users when form field values are valid or invalid. Works
249
+ // primarily for client-side validation via scoped `:invalid` and `:valid`
250
+ // pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
251
+ // server side validation.
252
+
253
+ @each $state, $data in $form-validation-states {
254
+ @include form-validation-state($state, map-get($data, color), map-get($data, icon));
255
+ }
256
+
257
+ // Inline forms
258
+ //
259
+ // Make forms appear inline(-block) by adding the `.form-inline` class. Inline
260
+ // forms begin stacked on extra small (mobile) devices and then go inline when
261
+ // viewports reach <768px.
262
+ //
263
+ // Requires wrapping inputs and labels with `.form-group` for proper display of
264
+ // default HTML form controls and our custom form controls (e.g., input groups).
265
+
266
+ .form-inline {
267
+ display: flex;
268
+ flex-flow: row wrap;
269
+ align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)
270
+
271
+ // Because we use flex, the initial sizing of checkboxes is collapsed and
272
+ // doesn't occupy the full-width (which is what we want for xs grid tier),
273
+ // so we force that here.
274
+ .form-check {
275
+ width: 100%;
276
+ }
277
+
278
+ // Kick in the inline
279
+ @include media-breakpoint-up(sm) {
280
+ label {
281
+ display: flex;
282
+ align-items: center;
283
+ justify-content: center;
284
+ margin-bottom: 0;
285
+ }
286
+
287
+ // Inline-block all the things for "inline"
288
+ .form-group {
289
+ display: flex;
290
+ flex: 0 0 auto;
291
+ flex-flow: row wrap;
292
+ align-items: center;
293
+ margin-bottom: 0;
294
+ }
295
+
296
+ // Allow folks to *not* use `.form-group`
297
+ .form-control {
298
+ display: inline-block;
299
+ width: auto; // Prevent labels from stacking above inputs in `.form-group`
300
+ vertical-align: middle;
301
+ }
302
+
303
+ // Make static controls behave like regular ones
304
+ .form-control-plaintext {
305
+ display: inline-block;
306
+ }
307
+
308
+ .input-group,
309
+ .custom-select {
310
+ width: auto;
311
+ }
312
+
313
+ // Remove default margin on radios/checkboxes that were used for stacking, and
314
+ // then undo the floating of radios and checkboxes to match.
315
+ .form-check {
316
+ display: flex;
317
+ align-items: center;
318
+ justify-content: center;
319
+ width: auto;
320
+ padding-left: 0;
321
+ }
322
+ .form-check-input {
323
+ position: relative;
324
+ flex-shrink: 0;
325
+ margin-top: 0;
326
+ margin-right: $form-check-input-margin-x;
327
+ margin-left: 0;
328
+ }
329
+
330
+ .custom-control {
331
+ align-items: center;
332
+ justify-content: center;
333
+ }
334
+ .custom-control-label {
335
+ margin-bottom: 0;
336
+ }
337
+ }
338
+ }
@@ -0,0 +1,134 @@
1
+ // Bootstrap functions
2
+ //
3
+ // Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
4
+
5
+ // Ascending
6
+ // Used to evaluate Sass maps like our grid breakpoints.
7
+ @mixin _assert-ascending($map, $map-name) {
8
+ $prev-key: null;
9
+ $prev-num: null;
10
+ @each $key, $num in $map {
11
+ @if $prev-num == null or unit($num) == "%" or unit($prev-num) == "%" {
12
+ // Do nothing
13
+ } @else if not comparable($prev-num, $num) {
14
+ @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
15
+ } @else if $prev-num >= $num {
16
+ @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
17
+ }
18
+ $prev-key: $key;
19
+ $prev-num: $num;
20
+ }
21
+ }
22
+
23
+ // Starts at zero
24
+ // Used to ensure the min-width of the lowest breakpoint starts at 0.
25
+ @mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
26
+ $values: map-values($map);
27
+ $first-value: nth($values, 1);
28
+ @if $first-value != 0 {
29
+ @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
30
+ }
31
+ }
32
+
33
+ // Replace `$search` with `$replace` in `$string`
34
+ // Used on our SVG icon backgrounds for custom forms.
35
+ //
36
+ // @author Hugo Giraudel
37
+ // @param {String} $string - Initial string
38
+ // @param {String} $search - Substring to replace
39
+ // @param {String} $replace ('') - New value
40
+ // @return {String} - Updated string
41
+ @function str-replace($string, $search, $replace: "") {
42
+ $index: str-index($string, $search);
43
+
44
+ @if $index {
45
+ @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
46
+ }
47
+
48
+ @return $string;
49
+ }
50
+
51
+ // See https://codepen.io/kevinweber/pen/dXWoRw
52
+ @function escape-svg($string) {
53
+ @if str-index($string, "data:image/svg+xml") {
54
+ @each $char, $encoded in $escaped-characters {
55
+ $string: str-replace($string, $char, $encoded);
56
+ }
57
+ }
58
+
59
+ @return $string;
60
+ }
61
+
62
+ // Color contrast
63
+ @function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
64
+ $r: red($color);
65
+ $g: green($color);
66
+ $b: blue($color);
67
+
68
+ $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
69
+
70
+ @if ($yiq >= $yiq-contrasted-threshold) {
71
+ @return $dark;
72
+ } @else {
73
+ @return $light;
74
+ }
75
+ }
76
+
77
+ // Retrieve color Sass maps
78
+ @function color($key: "blue") {
79
+ @return map-get($colors, $key);
80
+ }
81
+
82
+ @function theme-color($key: "primary") {
83
+ @return map-get($theme-colors, $key);
84
+ }
85
+
86
+ @function gray($key: "100") {
87
+ @return map-get($grays, $key);
88
+ }
89
+
90
+ // Request a theme color level
91
+ @function theme-color-level($color-name: "primary", $level: 0) {
92
+ $color: theme-color($color-name);
93
+ $color-base: if($level > 0, $black, $white);
94
+ $level: abs($level);
95
+
96
+ @return mix($color-base, $color, $level * $theme-color-interval);
97
+ }
98
+
99
+ // Return valid calc
100
+ @function add($value1, $value2, $return-calc: true) {
101
+ @if $value1 == null {
102
+ @return $value2;
103
+ }
104
+
105
+ @if $value2 == null {
106
+ @return $value1;
107
+ }
108
+
109
+ @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
110
+ @return $value1 + $value2;
111
+ }
112
+
113
+ @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(" + ") + $value2);
114
+ }
115
+
116
+ @function subtract($value1, $value2, $return-calc: true) {
117
+ @if $value1 == null and $value2 == null {
118
+ @return null;
119
+ }
120
+
121
+ @if $value1 == null {
122
+ @return -$value2;
123
+ }
124
+
125
+ @if $value2 == null {
126
+ @return $value1;
127
+ }
128
+
129
+ @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
130
+ @return $value1 - $value2;
131
+ }
132
+
133
+ @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
134
+ }
@@ -0,0 +1,69 @@
1
+ // Container widths
2
+ //
3
+ // Set the container width, and override it for fixed navbars in media queries.
4
+
5
+ @if $enable-grid-classes {
6
+ // Single container class with breakpoint max-widths
7
+ .container {
8
+ @include make-container();
9
+ @include make-container-max-widths();
10
+ }
11
+
12
+ // 100% wide container at all breakpoints
13
+ .container-fluid {
14
+ @include make-container();
15
+ }
16
+
17
+ // Responsive containers that are 100% wide until a breakpoint
18
+ @each $breakpoint, $container-max-width in $container-max-widths {
19
+ .container-#{$breakpoint} {
20
+ @extend .container-fluid;
21
+ }
22
+
23
+ @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
24
+ %responsive-container-#{$breakpoint} {
25
+ max-width: $container-max-width;
26
+ }
27
+
28
+ @each $name, $width in $grid-breakpoints {
29
+ @if ($container-max-width > $width or $breakpoint == $name) {
30
+ .container#{breakpoint-infix($name, $grid-breakpoints)} {
31
+ @extend %responsive-container-#{$breakpoint};
32
+ }
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
38
+
39
+
40
+ // Row
41
+ //
42
+ // Rows contain your columns.
43
+
44
+ @if $enable-grid-classes {
45
+ .row {
46
+ @include make-row();
47
+ }
48
+
49
+ // Remove the negative margin from default .row, then the horizontal padding
50
+ // from all immediate children columns (to prevent runaway style inheritance).
51
+ .no-gutters {
52
+ margin-right: 0;
53
+ margin-left: 0;
54
+
55
+ > .col,
56
+ > [class*="col-"] {
57
+ padding-right: 0;
58
+ padding-left: 0;
59
+ }
60
+ }
61
+ }
62
+
63
+ // Columns
64
+ //
65
+ // Common styles for small and large grid columns
66
+
67
+ @if $enable-grid-classes {
68
+ @include make-grid-columns();
69
+ }
@@ -0,0 +1,42 @@
1
+ // Responsive images (ensure images don't scale beyond their parents)
2
+ //
3
+ // This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
4
+ // We previously tried the "images are responsive by default" approach in Bootstrap v2,
5
+ // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
6
+ // which weren't expecting the images within themselves to be involuntarily resized.
7
+ // See also https://github.com/twbs/bootstrap/issues/18178
8
+ .img-fluid {
9
+ @include img-fluid();
10
+ }
11
+
12
+
13
+ // Image thumbnails
14
+ .img-thumbnail {
15
+ padding: $thumbnail-padding;
16
+ background-color: $thumbnail-bg;
17
+ border: $thumbnail-border-width solid $thumbnail-border-color;
18
+ @include border-radius($thumbnail-border-radius);
19
+ @include box-shadow($thumbnail-box-shadow);
20
+
21
+ // Keep them at most 100% wide
22
+ @include img-fluid();
23
+ }
24
+
25
+ //
26
+ // Figures
27
+ //
28
+
29
+ .figure {
30
+ // Ensures the caption's text aligns with the image.
31
+ display: inline-block;
32
+ }
33
+
34
+ .figure-img {
35
+ margin-bottom: $spacer / 2;
36
+ line-height: 1;
37
+ }
38
+
39
+ .figure-caption {
40
+ @include font-size($figure-caption-font-size);
41
+ color: $figure-caption-color;
42
+ }