flipper-ui 0.12.2 → 0.13.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/docs/ui/README.md +21 -3
  3. data/docs/ui/images/configured-ui.png +0 -0
  4. data/docs/ui/images/environment-banner.png +0 -0
  5. data/docs/ui/images/feature.png +0 -0
  6. data/docs/ui/images/features.png +0 -0
  7. data/lib/flipper/ui/assets/javascripts/application.coffee +3 -0
  8. data/lib/flipper/ui/assets/stylesheets/.DS_Store +0 -0
  9. data/lib/flipper/ui/assets/stylesheets/application.scss +9 -48
  10. data/lib/flipper/ui/assets/stylesheets/bootstrap/_alert.scss +51 -0
  11. data/lib/flipper/ui/assets/stylesheets/bootstrap/_badge.scss +47 -0
  12. data/lib/flipper/ui/assets/stylesheets/bootstrap/_breadcrumb.scss +38 -0
  13. data/lib/flipper/ui/assets/stylesheets/bootstrap/_button-group.scss +166 -0
  14. data/lib/flipper/ui/assets/stylesheets/bootstrap/_buttons.scss +78 -95
  15. data/lib/flipper/ui/assets/stylesheets/bootstrap/_card.scss +270 -0
  16. data/lib/flipper/ui/assets/stylesheets/bootstrap/_carousel.scss +122 -200
  17. data/lib/flipper/ui/assets/stylesheets/bootstrap/_close.scss +12 -14
  18. data/lib/flipper/ui/assets/stylesheets/bootstrap/_code.scss +15 -28
  19. data/lib/flipper/ui/assets/stylesheets/bootstrap/_custom-forms.scss +297 -0
  20. data/lib/flipper/ui/assets/stylesheets/bootstrap/_dropdown.scss +131 -0
  21. data/lib/flipper/ui/assets/stylesheets/bootstrap/_forms.scss +210 -455
  22. data/lib/flipper/ui/assets/stylesheets/bootstrap/_functions.scss +86 -0
  23. data/lib/flipper/ui/assets/stylesheets/bootstrap/_grid.scss +29 -61
  24. data/lib/flipper/ui/assets/stylesheets/bootstrap/_images.scss +42 -0
  25. data/lib/flipper/ui/assets/stylesheets/bootstrap/_input-group.scss +159 -0
  26. data/lib/flipper/ui/assets/stylesheets/bootstrap/_jumbotron.scss +8 -42
  27. data/lib/flipper/ui/assets/stylesheets/bootstrap/_list-group.scss +64 -73
  28. data/lib/flipper/ui/assets/stylesheets/bootstrap/_media.scss +3 -56
  29. data/lib/flipper/ui/assets/stylesheets/bootstrap/_mixins.scss +21 -18
  30. data/lib/flipper/ui/assets/stylesheets/bootstrap/_modal.scss +168 -0
  31. data/lib/flipper/ui/assets/stylesheets/bootstrap/_nav.scss +118 -0
  32. data/lib/flipper/ui/assets/stylesheets/bootstrap/_navbar.scss +203 -554
  33. data/lib/flipper/ui/assets/stylesheets/bootstrap/_pagination.scss +58 -69
  34. data/lib/flipper/ui/assets/stylesheets/bootstrap/_popover.scss +183 -0
  35. data/lib/flipper/ui/assets/stylesheets/bootstrap/_print.scss +71 -54
  36. data/lib/flipper/ui/assets/stylesheets/bootstrap/_progress.scss +33 -0
  37. data/lib/flipper/ui/assets/stylesheets/bootstrap/_reboot.scss +482 -0
  38. data/lib/flipper/ui/assets/stylesheets/bootstrap/_root.scss +19 -0
  39. data/lib/flipper/ui/assets/stylesheets/bootstrap/_tables.scss +109 -163
  40. data/lib/flipper/ui/assets/stylesheets/bootstrap/_tooltip.scss +97 -84
  41. data/lib/flipper/ui/assets/stylesheets/bootstrap/_transitions.scss +36 -0
  42. data/lib/flipper/ui/assets/stylesheets/bootstrap/_type.scss +66 -239
  43. data/lib/flipper/ui/assets/stylesheets/bootstrap/_utilities.scss +14 -55
  44. data/lib/flipper/ui/assets/stylesheets/bootstrap/_variables.scss +726 -698
  45. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap-grid.scss +32 -0
  46. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap-reboot.scss +12 -0
  47. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap.scss +42 -0
  48. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_alert.scss +13 -0
  49. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_background-variant.scss +14 -4
  50. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_badge.scss +12 -0
  51. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_border-radius.scss +25 -8
  52. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +5 -0
  53. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +123 -0
  54. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_buttons.scss +89 -32
  55. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_caret.scss +65 -0
  56. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_clearfix.scss +3 -18
  57. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_float.scss +11 -0
  58. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_forms.scss +115 -66
  59. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_gradients.scss +14 -27
  60. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +52 -66
  61. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid.scss +37 -107
  62. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_hover.scss +39 -0
  63. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_image.scss +18 -15
  64. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_list-group.scss +10 -20
  65. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_lists.scss +7 -0
  66. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +3 -3
  67. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +10 -0
  68. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_pagination.scss +10 -11
  69. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_reset-text.scss +17 -0
  70. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_resize.scss +1 -1
  71. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +35 -0
  72. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_size.scss +1 -5
  73. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_table-row.scss +16 -14
  74. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +7 -4
  75. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-hide.scss +9 -0
  76. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/{_text-overflow.scss → _text-truncate.scss} +2 -2
  77. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_transition.scss +9 -0
  78. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_visibility.scss +7 -0
  79. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_align.scss +8 -0
  80. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_background.scss +19 -0
  81. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_borders.scss +59 -0
  82. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_clearfix.scss +3 -0
  83. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_display.scss +38 -0
  84. data/lib/flipper/ui/assets/stylesheets/bootstrap/{_responsive-embed.scss → utilities/_embed.scss} +26 -9
  85. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_flex.scss +46 -0
  86. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_float.scss +9 -0
  87. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_position.scss +36 -0
  88. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +11 -0
  89. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_sizing.scss +12 -0
  90. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_spacing.scss +51 -0
  91. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_text.scss +52 -0
  92. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_visibility.scss +11 -0
  93. data/lib/flipper/ui/configuration.rb +24 -0
  94. data/lib/flipper/ui/decorators/feature.rb +3 -3
  95. data/lib/flipper/ui/public/css/application.css +6237 -2339
  96. data/lib/flipper/ui/public/js/application.js +3 -2
  97. data/lib/flipper/ui/views/add_actor.erb +7 -9
  98. data/lib/flipper/ui/views/add_feature.erb +8 -10
  99. data/lib/flipper/ui/views/add_group.erb +7 -9
  100. data/lib/flipper/ui/views/feature.erb +181 -141
  101. data/lib/flipper/ui/views/feature_creation_disabled.erb +1 -1
  102. data/lib/flipper/ui/views/feature_removal_disabled.erb +1 -1
  103. data/lib/flipper/ui/views/features.erb +12 -15
  104. data/lib/flipper/ui/views/layout.erb +25 -15
  105. data/lib/flipper/version.rb +1 -1
  106. data/spec/flipper/ui/actions/actors_gate_spec.rb +2 -1
  107. data/spec/flipper/ui/actions/add_feature_spec.rb +2 -1
  108. data/spec/flipper/ui/actions/groups_gate_spec.rb +2 -1
  109. data/spec/flipper/ui/configuration_spec.rb +27 -0
  110. data/spec/flipper/ui_spec.rb +24 -0
  111. metadata +58 -64
  112. data/lib/flipper/ui/assets/stylesheets/_bootstrap-compass.scss +0 -9
  113. data/lib/flipper/ui/assets/stylesheets/_bootstrap-mincer.scss +0 -19
  114. data/lib/flipper/ui/assets/stylesheets/_bootstrap-sprockets.scss +0 -9
  115. data/lib/flipper/ui/assets/stylesheets/_bootstrap.scss +0 -50
  116. data/lib/flipper/ui/assets/stylesheets/bootstrap/_alerts.scss +0 -73
  117. data/lib/flipper/ui/assets/stylesheets/bootstrap/_badges.scss +0 -68
  118. data/lib/flipper/ui/assets/stylesheets/bootstrap/_breadcrumbs.scss +0 -26
  119. data/lib/flipper/ui/assets/stylesheets/bootstrap/_button-groups.scss +0 -243
  120. data/lib/flipper/ui/assets/stylesheets/bootstrap/_component-animations.scss +0 -37
  121. data/lib/flipper/ui/assets/stylesheets/bootstrap/_dropdowns.scss +0 -214
  122. data/lib/flipper/ui/assets/stylesheets/bootstrap/_glyphicons.scss +0 -305
  123. data/lib/flipper/ui/assets/stylesheets/bootstrap/_input-groups.scss +0 -166
  124. data/lib/flipper/ui/assets/stylesheets/bootstrap/_labels.scss +0 -66
  125. data/lib/flipper/ui/assets/stylesheets/bootstrap/_modals.scss +0 -150
  126. data/lib/flipper/ui/assets/stylesheets/bootstrap/_navs.scss +0 -242
  127. data/lib/flipper/ui/assets/stylesheets/bootstrap/_normalize.scss +0 -427
  128. data/lib/flipper/ui/assets/stylesheets/bootstrap/_pager.scss +0 -54
  129. data/lib/flipper/ui/assets/stylesheets/bootstrap/_panels.scss +0 -265
  130. data/lib/flipper/ui/assets/stylesheets/bootstrap/_popovers.scss +0 -135
  131. data/lib/flipper/ui/assets/stylesheets/bootstrap/_progress-bars.scss +0 -87
  132. data/lib/flipper/ui/assets/stylesheets/bootstrap/_responsive-utilities.scss +0 -177
  133. data/lib/flipper/ui/assets/stylesheets/bootstrap/_scaffolding.scss +0 -162
  134. data/lib/flipper/ui/assets/stylesheets/bootstrap/_theme.scss +0 -273
  135. data/lib/flipper/ui/assets/stylesheets/bootstrap/_thumbnails.scss +0 -38
  136. data/lib/flipper/ui/assets/stylesheets/bootstrap/_wells.scss +0 -29
  137. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_alerts.scss +0 -14
  138. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_center-block.scss +0 -7
  139. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_hide-text.scss +0 -21
  140. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_labels.scss +0 -12
  141. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  142. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_opacity.scss +0 -8
  143. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_panels.scss +0 -24
  144. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_progress-bar.scss +0 -10
  145. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_reset-filter.scss +0 -8
  146. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +0 -21
  147. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +0 -9
  148. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +0 -222
  149. data/lib/flipper/ui/public/css/primer.css +0 -1
  150. data/lib/flipper/ui/public/css/primer/primer.css +0 -1933
  151. data/lib/flipper/ui/public/css/scss/primer.css +0 -1933
  152. data/lib/flipper/ui/public/js/bootstrap-sprockets.js +0 -12
  153. data/lib/flipper/ui/public/js/bootstrap.js +0 -2317
  154. data/lib/flipper/ui/public/js/bootstrap.min.js +0 -7
  155. data/lib/flipper/ui/public/js/bootstrap/affix.js +0 -162
  156. data/lib/flipper/ui/public/js/bootstrap/alert.js +0 -94
  157. data/lib/flipper/ui/public/js/bootstrap/button.js +0 -116
  158. data/lib/flipper/ui/public/js/bootstrap/carousel.js +0 -237
  159. data/lib/flipper/ui/public/js/bootstrap/collapse.js +0 -211
  160. data/lib/flipper/ui/public/js/bootstrap/dropdown.js +0 -161
  161. data/lib/flipper/ui/public/js/bootstrap/modal.js +0 -339
  162. data/lib/flipper/ui/public/js/bootstrap/popover.js +0 -108
  163. data/lib/flipper/ui/public/js/bootstrap/scrollspy.js +0 -172
  164. data/lib/flipper/ui/public/js/bootstrap/tab.js +0 -153
  165. data/lib/flipper/ui/public/js/bootstrap/tooltip.js +0 -476
  166. data/lib/flipper/ui/public/js/bootstrap/transition.js +0 -59
@@ -0,0 +1,33 @@
1
+ @keyframes progress-bar-stripes {
2
+ from { background-position: $progress-height 0; }
3
+ to { background-position: 0 0; }
4
+ }
5
+
6
+ .progress {
7
+ display: flex;
8
+ height: $progress-height;
9
+ overflow: hidden; // force rounded corners by cropping it
10
+ font-size: $progress-font-size;
11
+ background-color: $progress-bg;
12
+ @include border-radius($progress-border-radius);
13
+ @include box-shadow($progress-box-shadow);
14
+ }
15
+
16
+ .progress-bar {
17
+ display: flex;
18
+ flex-direction: column;
19
+ justify-content: center;
20
+ color: $progress-bar-color;
21
+ text-align: center;
22
+ background-color: $progress-bar-bg;
23
+ @include transition($progress-bar-transition);
24
+ }
25
+
26
+ .progress-bar-striped {
27
+ @include gradient-striped();
28
+ background-size: $progress-height $progress-height;
29
+ }
30
+
31
+ .progress-bar-animated {
32
+ animation: progress-bar-stripes $progress-bar-animation-timing;
33
+ }
@@ -0,0 +1,482 @@
1
+ // stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
2
+
3
+ // Reboot
4
+ //
5
+ // Normalization of HTML elements, manually forked from Normalize.css to remove
6
+ // styles targeting irrelevant browsers while applying new styles.
7
+ //
8
+ // Normalize is licensed MIT. https://github.com/necolas/normalize.css
9
+
10
+
11
+ // Document
12
+ //
13
+ // 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
14
+ // 2. Change the default font family in all browsers.
15
+ // 3. Correct the line height in all browsers.
16
+ // 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.
17
+ // 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so
18
+ // we force a non-overlapping, non-auto-hiding scrollbar to counteract.
19
+ // 6. Change the default tap highlight to be completely transparent in iOS.
20
+
21
+ *,
22
+ *::before,
23
+ *::after {
24
+ box-sizing: border-box; // 1
25
+ }
26
+
27
+ html {
28
+ font-family: sans-serif; // 2
29
+ line-height: 1.15; // 3
30
+ -webkit-text-size-adjust: 100%; // 4
31
+ -ms-text-size-adjust: 100%; // 4
32
+ -ms-overflow-style: scrollbar; // 5
33
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); // 6
34
+ }
35
+
36
+ // IE10+ doesn't honor `<meta name="viewport">` in some cases.
37
+ @at-root {
38
+ @-ms-viewport {
39
+ width: device-width;
40
+ }
41
+ }
42
+
43
+ // stylelint-disable selector-list-comma-newline-after
44
+ // Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers)
45
+ article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
46
+ display: block;
47
+ }
48
+ // stylelint-enable selector-list-comma-newline-after
49
+
50
+ // Body
51
+ //
52
+ // 1. Remove the margin in all browsers.
53
+ // 2. As a best practice, apply a default `background-color`.
54
+ // 3. Set an explicit initial text-align value so that we can later use the
55
+ // the `inherit` value on things like `<th>` elements.
56
+
57
+ body {
58
+ margin: 0; // 1
59
+ font-family: $font-family-base;
60
+ font-size: $font-size-base;
61
+ font-weight: $font-weight-base;
62
+ line-height: $line-height-base;
63
+ color: $body-color;
64
+ text-align: left; // 3
65
+ background-color: $body-bg; // 2
66
+ }
67
+
68
+ // Suppress the focus outline on elements that cannot be accessed via keyboard.
69
+ // This prevents an unwanted focus outline from appearing around elements that
70
+ // might still respond to pointer events.
71
+ //
72
+ // Credit: https://github.com/suitcss/base
73
+ [tabindex="-1"]:focus {
74
+ outline: 0 !important;
75
+ }
76
+
77
+
78
+ // Content grouping
79
+ //
80
+ // 1. Add the correct box sizing in Firefox.
81
+ // 2. Show the overflow in Edge and IE.
82
+
83
+ hr {
84
+ box-sizing: content-box; // 1
85
+ height: 0; // 1
86
+ overflow: visible; // 2
87
+ }
88
+
89
+
90
+ //
91
+ // Typography
92
+ //
93
+
94
+ // Remove top margins from headings
95
+ //
96
+ // By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
97
+ // margin for easier control within type scales as it avoids margin collapsing.
98
+ // stylelint-disable selector-list-comma-newline-after
99
+ h1, h2, h3, h4, h5, h6 {
100
+ margin-top: 0;
101
+ margin-bottom: $headings-margin-bottom;
102
+ }
103
+ // stylelint-enable selector-list-comma-newline-after
104
+
105
+ // Reset margins on paragraphs
106
+ //
107
+ // Similarly, the top margin on `<p>`s get reset. However, we also reset the
108
+ // bottom margin to use `rem` units instead of `em`.
109
+ p {
110
+ margin-top: 0;
111
+ margin-bottom: $paragraph-margin-bottom;
112
+ }
113
+
114
+ // Abbreviations
115
+ //
116
+ // 1. Remove the bottom border in Firefox 39-.
117
+ // 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
118
+ // 3. Add explicit cursor to indicate changed behavior.
119
+ // 4. Duplicate behavior to the data-* attribute for our tooltip plugin
120
+
121
+ abbr[title],
122
+ abbr[data-original-title] { // 4
123
+ text-decoration: underline; // 2
124
+ text-decoration: underline dotted; // 2
125
+ cursor: help; // 3
126
+ border-bottom: 0; // 1
127
+ }
128
+
129
+ address {
130
+ margin-bottom: 1rem;
131
+ font-style: normal;
132
+ line-height: inherit;
133
+ }
134
+
135
+ ol,
136
+ ul,
137
+ dl {
138
+ margin-top: 0;
139
+ margin-bottom: 1rem;
140
+ }
141
+
142
+ ol ol,
143
+ ul ul,
144
+ ol ul,
145
+ ul ol {
146
+ margin-bottom: 0;
147
+ }
148
+
149
+ dt {
150
+ font-weight: $dt-font-weight;
151
+ }
152
+
153
+ dd {
154
+ margin-bottom: .5rem;
155
+ margin-left: 0; // Undo browser default
156
+ }
157
+
158
+ blockquote {
159
+ margin: 0 0 1rem;
160
+ }
161
+
162
+ dfn {
163
+ font-style: italic; // Add the correct font style in Android 4.3-
164
+ }
165
+
166
+ // stylelint-disable font-weight-notation
167
+ b,
168
+ strong {
169
+ font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari
170
+ }
171
+ // stylelint-enable font-weight-notation
172
+
173
+ small {
174
+ font-size: 80%; // Add the correct font size in all browsers
175
+ }
176
+
177
+ //
178
+ // Prevent `sub` and `sup` elements from affecting the line height in
179
+ // all browsers.
180
+ //
181
+
182
+ sub,
183
+ sup {
184
+ position: relative;
185
+ font-size: 75%;
186
+ line-height: 0;
187
+ vertical-align: baseline;
188
+ }
189
+
190
+ sub { bottom: -.25em; }
191
+ sup { top: -.5em; }
192
+
193
+
194
+ //
195
+ // Links
196
+ //
197
+
198
+ a {
199
+ color: $link-color;
200
+ text-decoration: $link-decoration;
201
+ background-color: transparent; // Remove the gray background on active links in IE 10.
202
+ -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.
203
+
204
+ @include hover {
205
+ color: $link-hover-color;
206
+ text-decoration: $link-hover-decoration;
207
+ }
208
+ }
209
+
210
+ // And undo these styles for placeholder links/named anchors (without href)
211
+ // which have not been made explicitly keyboard-focusable (without tabindex).
212
+ // It would be more straightforward to just use a[href] in previous block, but that
213
+ // causes specificity issues in many other styles that are too complex to fix.
214
+ // See https://github.com/twbs/bootstrap/issues/19402
215
+
216
+ a:not([href]):not([tabindex]) {
217
+ color: inherit;
218
+ text-decoration: none;
219
+
220
+ @include hover-focus {
221
+ color: inherit;
222
+ text-decoration: none;
223
+ }
224
+
225
+ &:focus {
226
+ outline: 0;
227
+ }
228
+ }
229
+
230
+
231
+ //
232
+ // Code
233
+ //
234
+
235
+ // stylelint-disable font-family-no-duplicate-names
236
+ pre,
237
+ code,
238
+ kbd,
239
+ samp {
240
+ font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.
241
+ font-size: 1em; // Correct the odd `em` font sizing in all browsers.
242
+ }
243
+ // stylelint-enable font-family-no-duplicate-names
244
+
245
+ pre {
246
+ // Remove browser default top margin
247
+ margin-top: 0;
248
+ // Reset browser default of `1em` to use `rem`s
249
+ margin-bottom: 1rem;
250
+ // Don't allow content to break outside
251
+ overflow: auto;
252
+ // We have @viewport set which causes scrollbars to overlap content in IE11 and Edge, so
253
+ // we force a non-overlapping, non-auto-hiding scrollbar to counteract.
254
+ -ms-overflow-style: scrollbar;
255
+ }
256
+
257
+
258
+ //
259
+ // Figures
260
+ //
261
+
262
+ figure {
263
+ // Apply a consistent margin strategy (matches our type styles).
264
+ margin: 0 0 1rem;
265
+ }
266
+
267
+
268
+ //
269
+ // Images and content
270
+ //
271
+
272
+ img {
273
+ vertical-align: middle;
274
+ border-style: none; // Remove the border on images inside links in IE 10-.
275
+ }
276
+
277
+ svg:not(:root) {
278
+ overflow: hidden; // Hide the overflow in IE
279
+ }
280
+
281
+
282
+ //
283
+ // Tables
284
+ //
285
+
286
+ table {
287
+ border-collapse: collapse; // Prevent double borders
288
+ }
289
+
290
+ caption {
291
+ padding-top: $table-cell-padding;
292
+ padding-bottom: $table-cell-padding;
293
+ color: $text-muted;
294
+ text-align: left;
295
+ caption-side: bottom;
296
+ }
297
+
298
+ th {
299
+ // Matches default `<td>` alignment by inheriting from the `<body>`, or the
300
+ // closest parent with a set `text-align`.
301
+ text-align: inherit;
302
+ }
303
+
304
+
305
+ //
306
+ // Forms
307
+ //
308
+
309
+ label {
310
+ // Allow labels to use `margin` for spacing.
311
+ display: inline-block;
312
+ margin-bottom: .5rem;
313
+ }
314
+
315
+ // Remove the default `border-radius` that macOS Chrome adds.
316
+ //
317
+ // Details at https://github.com/twbs/bootstrap/issues/24093
318
+ button {
319
+ border-radius: 0;
320
+ }
321
+
322
+ // Work around a Firefox/IE bug where the transparent `button` background
323
+ // results in a loss of the default `button` focus styles.
324
+ //
325
+ // Credit: https://github.com/suitcss/base/
326
+ button:focus {
327
+ outline: 1px dotted;
328
+ outline: 5px auto -webkit-focus-ring-color;
329
+ }
330
+
331
+ input,
332
+ button,
333
+ select,
334
+ optgroup,
335
+ textarea {
336
+ margin: 0; // Remove the margin in Firefox and Safari
337
+ font-family: inherit;
338
+ font-size: inherit;
339
+ line-height: inherit;
340
+ }
341
+
342
+ button,
343
+ input {
344
+ overflow: visible; // Show the overflow in Edge
345
+ }
346
+
347
+ button,
348
+ select {
349
+ text-transform: none; // Remove the inheritance of text transform in Firefox
350
+ }
351
+
352
+ // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
353
+ // controls in Android 4.
354
+ // 2. Correct the inability to style clickable types in iOS and Safari.
355
+ button,
356
+ html [type="button"], // 1
357
+ [type="reset"],
358
+ [type="submit"] {
359
+ -webkit-appearance: button; // 2
360
+ }
361
+
362
+ // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
363
+ button::-moz-focus-inner,
364
+ [type="button"]::-moz-focus-inner,
365
+ [type="reset"]::-moz-focus-inner,
366
+ [type="submit"]::-moz-focus-inner {
367
+ padding: 0;
368
+ border-style: none;
369
+ }
370
+
371
+ input[type="radio"],
372
+ input[type="checkbox"] {
373
+ box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
374
+ padding: 0; // 2. Remove the padding in IE 10-
375
+ }
376
+
377
+
378
+ input[type="date"],
379
+ input[type="time"],
380
+ input[type="datetime-local"],
381
+ input[type="month"] {
382
+ // Remove the default appearance of temporal inputs to avoid a Mobile Safari
383
+ // bug where setting a custom line-height prevents text from being vertically
384
+ // centered within the input.
385
+ // See https://bugs.webkit.org/show_bug.cgi?id=139848
386
+ // and https://github.com/twbs/bootstrap/issues/11266
387
+ -webkit-appearance: listbox;
388
+ }
389
+
390
+ textarea {
391
+ overflow: auto; // Remove the default vertical scrollbar in IE.
392
+ // Textareas should really only resize vertically so they don't break their (horizontal) containers.
393
+ resize: vertical;
394
+ }
395
+
396
+ fieldset {
397
+ // Browsers set a default `min-width: min-content;` on fieldsets,
398
+ // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
399
+ // So we reset that to ensure fieldsets behave more like a standard block element.
400
+ // See https://github.com/twbs/bootstrap/issues/12359
401
+ // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
402
+ min-width: 0;
403
+ // Reset the default outline behavior of fieldsets so they don't affect page layout.
404
+ padding: 0;
405
+ margin: 0;
406
+ border: 0;
407
+ }
408
+
409
+ // 1. Correct the text wrapping in Edge and IE.
410
+ // 2. Correct the color inheritance from `fieldset` elements in IE.
411
+ legend {
412
+ display: block;
413
+ width: 100%;
414
+ max-width: 100%; // 1
415
+ padding: 0;
416
+ margin-bottom: .5rem;
417
+ font-size: 1.5rem;
418
+ line-height: inherit;
419
+ color: inherit; // 2
420
+ white-space: normal; // 1
421
+ }
422
+
423
+ progress {
424
+ vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.
425
+ }
426
+
427
+ // Correct the cursor style of increment and decrement buttons in Chrome.
428
+ [type="number"]::-webkit-inner-spin-button,
429
+ [type="number"]::-webkit-outer-spin-button {
430
+ height: auto;
431
+ }
432
+
433
+ [type="search"] {
434
+ // This overrides the extra rounded corners on search inputs in iOS so that our
435
+ // `.form-control` class can properly style them. Note that this cannot simply
436
+ // be added to `.form-control` as it's not specific enough. For details, see
437
+ // https://github.com/twbs/bootstrap/issues/11586.
438
+ outline-offset: -2px; // 2. Correct the outline style in Safari.
439
+ -webkit-appearance: none;
440
+ }
441
+
442
+ //
443
+ // Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
444
+ //
445
+
446
+ [type="search"]::-webkit-search-cancel-button,
447
+ [type="search"]::-webkit-search-decoration {
448
+ -webkit-appearance: none;
449
+ }
450
+
451
+ //
452
+ // 1. Correct the inability to style clickable types in iOS and Safari.
453
+ // 2. Change font properties to `inherit` in Safari.
454
+ //
455
+
456
+ ::-webkit-file-upload-button {
457
+ font: inherit; // 2
458
+ -webkit-appearance: button; // 1
459
+ }
460
+
461
+ //
462
+ // Correct element displays
463
+ //
464
+
465
+ output {
466
+ display: inline-block;
467
+ }
468
+
469
+ summary {
470
+ display: list-item; // Add the correct display in all browsers
471
+ cursor: pointer;
472
+ }
473
+
474
+ template {
475
+ display: none; // Add the correct display in IE
476
+ }
477
+
478
+ // Always hide an element with the `hidden` HTML attribute (from PureCSS).
479
+ // Needed for proper display in IE 10-.
480
+ [hidden] {
481
+ display: none !important;
482
+ }