flipper-ui 0.16.1 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +5 -5
  2. data/docs/ui/README.md +34 -24
  3. data/docs/ui/images/banner.png +0 -0
  4. data/docs/ui/images/description.png +0 -0
  5. data/docs/ui/images/feature.png +0 -0
  6. data/docs/ui/images/features.png +0 -0
  7. data/examples/ui/basic.ru +20 -0
  8. data/flipper-ui.gemspec +1 -2
  9. data/lib/flipper/ui.rb +4 -7
  10. data/lib/flipper/ui/action.rb +3 -6
  11. data/lib/flipper/ui/actions/feature.rb +5 -2
  12. data/lib/flipper/ui/actions/features.rb +14 -1
  13. data/lib/flipper/ui/actions/file.rb +1 -1
  14. data/lib/flipper/ui/assets/javascripts/application.coffee +5 -3
  15. data/lib/flipper/ui/configuration.rb +34 -10
  16. data/lib/flipper/ui/decorators/feature.rb +39 -13
  17. data/lib/flipper/ui/public/css/application.css +20 -6493
  18. data/lib/flipper/ui/public/js/application.js +5 -5
  19. data/lib/flipper/ui/util.rb +40 -0
  20. data/lib/flipper/ui/views/add_actor.erb +2 -2
  21. data/lib/flipper/ui/views/add_feature.erb +2 -2
  22. data/lib/flipper/ui/views/add_group.erb +1 -1
  23. data/lib/flipper/ui/views/feature.erb +199 -180
  24. data/lib/flipper/ui/views/features.erb +55 -36
  25. data/lib/flipper/ui/views/layout.erb +4 -14
  26. data/lib/flipper/version.rb +1 -1
  27. data/spec/flipper/ui/actions/actors_gate_spec.rb +9 -13
  28. data/spec/flipper/ui/actions/feature_spec.rb +14 -16
  29. data/spec/flipper/ui/actions/features_spec.rb +49 -14
  30. data/spec/flipper/ui/actions/file_spec.rb +0 -10
  31. data/spec/flipper/ui/actions/groups_gate_spec.rb +0 -6
  32. data/spec/flipper/ui/actions/percentage_of_actors_gate_spec.rb +0 -2
  33. data/spec/flipper/ui/actions/percentage_of_time_gate_spec.rb +0 -2
  34. data/spec/flipper/ui/configuration_spec.rb +69 -34
  35. data/spec/flipper/ui/decorators/feature_spec.rb +2 -32
  36. data/spec/flipper/ui_spec.rb +1 -1
  37. metadata +19 -131
  38. data/docs/ui/images/configured-ui.png +0 -0
  39. data/docs/ui/images/environment-banner.png +0 -0
  40. data/lib/flipper/ui/assets/stylesheets/.DS_Store +0 -0
  41. data/lib/flipper/ui/assets/stylesheets/application.scss +0 -19
  42. data/lib/flipper/ui/assets/stylesheets/bootstrap/_alert.scss +0 -51
  43. data/lib/flipper/ui/assets/stylesheets/bootstrap/_badge.scss +0 -47
  44. data/lib/flipper/ui/assets/stylesheets/bootstrap/_breadcrumb.scss +0 -38
  45. data/lib/flipper/ui/assets/stylesheets/bootstrap/_button-group.scss +0 -166
  46. data/lib/flipper/ui/assets/stylesheets/bootstrap/_buttons.scss +0 -143
  47. data/lib/flipper/ui/assets/stylesheets/bootstrap/_card.scss +0 -270
  48. data/lib/flipper/ui/assets/stylesheets/bootstrap/_carousel.scss +0 -191
  49. data/lib/flipper/ui/assets/stylesheets/bootstrap/_close.scss +0 -34
  50. data/lib/flipper/ui/assets/stylesheets/bootstrap/_code.scss +0 -56
  51. data/lib/flipper/ui/assets/stylesheets/bootstrap/_custom-forms.scss +0 -297
  52. data/lib/flipper/ui/assets/stylesheets/bootstrap/_dropdown.scss +0 -131
  53. data/lib/flipper/ui/assets/stylesheets/bootstrap/_forms.scss +0 -333
  54. data/lib/flipper/ui/assets/stylesheets/bootstrap/_functions.scss +0 -86
  55. data/lib/flipper/ui/assets/stylesheets/bootstrap/_grid.scss +0 -52
  56. data/lib/flipper/ui/assets/stylesheets/bootstrap/_images.scss +0 -42
  57. data/lib/flipper/ui/assets/stylesheets/bootstrap/_input-group.scss +0 -159
  58. data/lib/flipper/ui/assets/stylesheets/bootstrap/_jumbotron.scss +0 -16
  59. data/lib/flipper/ui/assets/stylesheets/bootstrap/_list-group.scss +0 -115
  60. data/lib/flipper/ui/assets/stylesheets/bootstrap/_media.scss +0 -8
  61. data/lib/flipper/ui/assets/stylesheets/bootstrap/_mixins.scss +0 -42
  62. data/lib/flipper/ui/assets/stylesheets/bootstrap/_modal.scss +0 -168
  63. data/lib/flipper/ui/assets/stylesheets/bootstrap/_nav.scss +0 -118
  64. data/lib/flipper/ui/assets/stylesheets/bootstrap/_navbar.scss +0 -311
  65. data/lib/flipper/ui/assets/stylesheets/bootstrap/_pagination.scss +0 -77
  66. data/lib/flipper/ui/assets/stylesheets/bootstrap/_popover.scss +0 -183
  67. data/lib/flipper/ui/assets/stylesheets/bootstrap/_print.scss +0 -124
  68. data/lib/flipper/ui/assets/stylesheets/bootstrap/_progress.scss +0 -33
  69. data/lib/flipper/ui/assets/stylesheets/bootstrap/_reboot.scss +0 -482
  70. data/lib/flipper/ui/assets/stylesheets/bootstrap/_root.scss +0 -19
  71. data/lib/flipper/ui/assets/stylesheets/bootstrap/_tables.scss +0 -180
  72. data/lib/flipper/ui/assets/stylesheets/bootstrap/_tooltip.scss +0 -115
  73. data/lib/flipper/ui/assets/stylesheets/bootstrap/_transitions.scss +0 -36
  74. data/lib/flipper/ui/assets/stylesheets/bootstrap/_type.scss +0 -125
  75. data/lib/flipper/ui/assets/stylesheets/bootstrap/_utilities.scss +0 -14
  76. data/lib/flipper/ui/assets/stylesheets/bootstrap/_variables.scss +0 -894
  77. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap-grid.scss +0 -32
  78. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap-reboot.scss +0 -12
  79. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap.scss +0 -42
  80. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_alert.scss +0 -13
  81. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
  82. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -12
  83. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_border-radius.scss +0 -35
  84. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +0 -5
  85. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +0 -123
  86. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_buttons.scss +0 -109
  87. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_caret.scss +0 -65
  88. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_clearfix.scss +0 -7
  89. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_float.scss +0 -11
  90. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_forms.scss +0 -137
  91. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_gradients.scss +0 -45
  92. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -67
  93. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid.scss +0 -52
  94. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -39
  95. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_image.scss +0 -36
  96. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_list-group.scss +0 -21
  97. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_lists.scss +0 -7
  98. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
  99. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +0 -10
  100. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_pagination.scss +0 -22
  101. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_reset-text.scss +0 -17
  102. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_resize.scss +0 -6
  103. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -35
  104. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_size.scss +0 -6
  105. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -30
  106. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -14
  107. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -9
  108. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-truncate.scss +0 -8
  109. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_transition.scss +0 -9
  110. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -7
  111. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  112. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  113. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -59
  114. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_clearfix.scss +0 -3
  115. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_display.scss +0 -38
  116. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -52
  117. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -46
  118. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_float.scss +0 -9
  119. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_position.scss +0 -36
  120. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  121. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -12
  122. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -51
  123. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_text.scss +0 -52
  124. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -11
  125. data/lib/flipper/ui/assets/stylesheets/primer/.scss-lint.yml +0 -446
  126. data/lib/flipper/ui/assets/stylesheets/primer/_alerts.scss +0 -106
  127. data/lib/flipper/ui/assets/stylesheets/primer/_avatars.scss +0 -36
  128. data/lib/flipper/ui/assets/stylesheets/primer/_base.scss +0 -40
  129. data/lib/flipper/ui/assets/stylesheets/primer/_blankslate.scss +0 -96
  130. data/lib/flipper/ui/assets/stylesheets/primer/_buttons.scss +0 -404
  131. data/lib/flipper/ui/assets/stylesheets/primer/_counter.scss +0 -10
  132. data/lib/flipper/ui/assets/stylesheets/primer/_filter-list.scss +0 -68
  133. data/lib/flipper/ui/assets/stylesheets/primer/_flex-table.scss +0 -20
  134. data/lib/flipper/ui/assets/stylesheets/primer/_forms.scss +0 -756
  135. data/lib/flipper/ui/assets/stylesheets/primer/_layout.scss +0 -69
  136. data/lib/flipper/ui/assets/stylesheets/primer/_menu.scss +0 -113
  137. data/lib/flipper/ui/assets/stylesheets/primer/_mixins.scss +0 -53
  138. data/lib/flipper/ui/assets/stylesheets/primer/_normalize.scss +0 -425
  139. data/lib/flipper/ui/assets/stylesheets/primer/_states.scss +0 -32
  140. data/lib/flipper/ui/assets/stylesheets/primer/_tabnav.scss +0 -65
  141. data/lib/flipper/ui/assets/stylesheets/primer/_tooltips.scss +0 -255
  142. data/lib/flipper/ui/assets/stylesheets/primer/_truncate.scss +0 -27
  143. data/lib/flipper/ui/assets/stylesheets/primer/_type.scss +0 -92
  144. data/lib/flipper/ui/assets/stylesheets/primer/_utility.scss +0 -73
  145. data/lib/flipper/ui/assets/stylesheets/primer/_variables.scss +0 -34
  146. data/lib/flipper/ui/assets/stylesheets/primer/primer.scss +0 -39
  147. data/lib/flipper/ui/eruby.rb +0 -11
  148. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  149. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.svg +0 -288
  150. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  151. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  152. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  153. data/lib/flipper/ui/public/images/remove.png +0 -0
  154. data/lib/flipper/ui/public/octicons/octicons.less +0 -235
  155. data/lib/flipper/ui/public/octicons/sprockets-octicons.scss +0 -232
@@ -1,10 +0,0 @@
1
- .counter {
2
- display: inline-block;
3
- padding: 2px 5px;
4
- font-size: 11px;
5
- font-weight: bold;
6
- line-height: 1;
7
- color: #777;
8
- background-color: #eee;
9
- border-radius: 20px;
10
- }
@@ -1,68 +0,0 @@
1
- // Filters list
2
- //
3
- // A vertical list of filters.
4
- .filter-list {
5
- list-style-type: none;
6
-
7
- &.small .filter-item {
8
- padding: 4px 10px;
9
- margin: 0 0 2px;
10
- font-size: 12px;
11
- }
12
-
13
- &.pjax-active .filter-item {
14
- color: #777;
15
- background-color: transparent;
16
-
17
- &.pjax-active {
18
- color: #fff;
19
- background-color: $brand-blue;
20
- }
21
- }
22
- }
23
-
24
- .filter-item {
25
- position: relative;
26
- display: block;
27
- padding: 8px 10px;
28
- margin-bottom: 5px;
29
- overflow: hidden;
30
- font-size: 14px;
31
- color: #777;
32
- text-decoration: none;
33
- text-overflow: ellipsis;
34
- white-space: nowrap;
35
- cursor: pointer;
36
- border-radius: 3px;
37
-
38
- &:hover {
39
- text-decoration: none;
40
- background-color: #eee;
41
- }
42
-
43
- &.selected {
44
- color: #fff;
45
- background-color: $brand-blue;
46
-
47
- .octicon-remove-close {
48
- float: right;
49
- opacity: 0.8;
50
- }
51
- }
52
-
53
- .count {
54
- float: right;
55
- font-weight: bold;
56
- }
57
-
58
- .bar {
59
- position: absolute;
60
- top: 2px;
61
- right: 0;
62
- bottom: 2px;
63
- z-index: -1;
64
- display: inline-block;
65
- background-color: #f1f1f1;
66
- }
67
- }
68
-
@@ -1,20 +0,0 @@
1
- // Flex table is a module for creating dynamically resizable elements that
2
- // always sit on the same horizontal line (e.g., they never wrap). Using
3
- // tables means it's cross browser friendly.
4
-
5
- .flex-table {
6
- display: table;
7
- }
8
-
9
- // Place this on every "cell"
10
- .flex-table-item {
11
- display: table-cell;
12
- width: 1%;
13
- white-space: nowrap;
14
- vertical-align: middle;
15
- }
16
-
17
- // Place this on the largest or most important "cell"
18
- .flex-table-item-primary {
19
- width: 99%;
20
- }
@@ -1,756 +0,0 @@
1
- // Base form controls
2
- //
3
- // Overrides for common inputs for easier styling.
4
-
5
- fieldset {
6
- padding: 0;
7
- margin: 0;
8
- border: 0;
9
- }
10
-
11
- label {
12
- font-size: 13px;
13
- font-weight: bold;
14
- }
15
-
16
- .form-control,
17
- input[type="text"],
18
- input[type="password"],
19
- input[type="email"],
20
- input[type="number"],
21
- input[type="tel"],
22
- input[type="url"],
23
- textarea {
24
- min-height: 34px;
25
- padding: 7px 8px;
26
- font-size: 13px;
27
- color: #333;
28
- vertical-align: middle;
29
- background-color: #fff;
30
- background-repeat: no-repeat; // Repeat and position set for form states (success, error, etc)
31
- background-position: right center;
32
- border: 1px solid #ccc;
33
- border-radius: 3px;
34
- outline: none;
35
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);
36
-
37
- &.focus,
38
- &:focus {
39
- border-color: #51a7e8;
40
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(81, 167, 232, 0.5);
41
- }
42
- }
43
-
44
- // Inputs with contrast for easy light gray backgrounds against white.
45
- // input.class is needed here to increase specificity over input[…]
46
- input.input-contrast,
47
- .input-contrast {
48
- background-color: #fafafa;
49
-
50
- &:focus { background-color: #fff; }
51
- }
52
-
53
- // Custom styling for HTML5 validation bubbles (WebKit only)
54
- ::-webkit-input-placeholder,
55
- :-moz-placeholder {
56
- color: #aaa;
57
- }
58
-
59
- ::-webkit-validation-bubble-message {
60
- font-size: 12px;
61
- color: #fff;
62
- background: #9c2400;
63
- border: 0;
64
- border-radius: 3px;
65
- -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
66
- }
67
-
68
- input::-webkit-validation-bubble-icon {
69
- display: none;
70
- }
71
-
72
- ::-webkit-validation-bubble-arrow {
73
- background-color: #9c2400;
74
- border: solid 1px #9c2400;
75
- -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
76
- }
77
-
78
- // Mini inputs, to match .minibutton
79
- input.input-mini {
80
- min-height: 26px;
81
- padding-top: 4px;
82
- padding-bottom: 4px;
83
- font-size: 12px;
84
- }
85
-
86
- // Large inputs
87
- input.input-large {
88
- padding: 6px 10px;
89
- font-size: 16px;
90
- }
91
-
92
- // Full-width inputs
93
- .input-block {
94
- display: block;
95
- width: 100%;
96
- }
97
-
98
- // Inputs with monospace text
99
- .input-monospace {
100
- font-family: $mono-font;
101
- }
102
-
103
- // Form groups
104
- //
105
- // Typical form groups - `<dl.form>` with a `<dt>` containing the label and
106
- // `<dd> containing the form elements.
107
- dl.form {
108
- margin: 15px 0;
109
-
110
- input[type="text"],
111
- input[type="password"],
112
- input[type="email"],
113
- input[type="url"],
114
- textarea {
115
- background-color: #fafafa;
116
-
117
- &:focus {
118
- background-color: #fff;
119
- }
120
- }
121
-
122
- // The Label
123
- > dt {
124
- margin: 0 0 6px;
125
-
126
- label {
127
- position: relative;
128
- }
129
- }
130
-
131
- &.flattened > dt {
132
- float: left;
133
- margin: 0;
134
- line-height: 32px;
135
- }
136
-
137
- &.flattened > dd {
138
- line-height: 32px;
139
- }
140
-
141
- //
142
- // Form Elements
143
- //
144
-
145
- > dd {
146
- // Text fields
147
- input[type="text"],
148
- input[type="password"],
149
- input[type="email"],
150
- input[type="url"] {
151
- width: 440px;
152
- max-width: 100%;
153
- margin-right: 5px;
154
- background-position-x: 98%;
155
- }
156
-
157
- input {
158
- &.shorter { width: 130px; }
159
-
160
- &.short { width: 250px; }
161
-
162
- &.long { width: 100%; }
163
- }
164
-
165
- // Textarea
166
- textarea {
167
- width: 100%;
168
- height: 200px;
169
- min-height: 200px;
170
-
171
- &.short {
172
- height: 50px;
173
- min-height: 50px;
174
- }
175
- }
176
-
177
- h4 {
178
- margin: 4px 0 0;
179
-
180
- &.is-error { color: $brand-red; }
181
-
182
- &.is-success { color: $brand-green; }
183
- }
184
-
185
- h4 + p.note {
186
- margin-top: 0;
187
- }
188
-
189
- }
190
-
191
- //
192
- // Variants
193
- //
194
-
195
- &.required {
196
- > dt > label:after {
197
- padding-left: 5px;
198
- color: #9f1006;
199
- content: "*";
200
- }
201
- }
202
- }
203
-
204
- .note {
205
- min-height: 17px;
206
- margin: 4px 0 2px;
207
- font-size: 12px;
208
- color: #777;
209
-
210
- .spinner {
211
- margin-right: 3px;
212
- vertical-align: middle;
213
- }
214
- }
215
-
216
-
217
- // Checkboxes and Radiobuttons
218
- //
219
- // For checkboxes and radio button selections.
220
- .form-checkbox {
221
- padding-left: 20px;
222
- margin: 15px 0;
223
- vertical-align: middle;
224
-
225
- label {
226
-
227
- em.highlight {
228
- position: relative;
229
- left: -4px;
230
- padding: 2px 4px;
231
- font-style: normal;
232
- background: #fffbdc;
233
- border-radius: 3px;
234
- }
235
- }
236
-
237
- input[type=checkbox],
238
- input[type=radio] {
239
- float: left;
240
- margin: 2px 0 0 -20px;
241
- vertical-align: middle;
242
- }
243
-
244
- .note {
245
- display: block;
246
- margin: 0;
247
- font-size: 12px;
248
- font-weight: normal;
249
- color: #666;
250
- }
251
- }
252
-
253
-
254
- // Form AJAX states
255
- //
256
- // Form fields that need feedback for AJAX loading, success
257
- // states and errored states.
258
- dl.form {
259
- .success,
260
- .error,
261
- .indicator {
262
- display: none;
263
- font-size: 12px;
264
- font-weight: bold;
265
- }
266
-
267
- &.loading {
268
- opacity: 0.5;
269
-
270
- .indicator {
271
- display: inline;
272
- }
273
-
274
- .spinner {
275
- display: inline-block;
276
- vertical-align: middle;
277
- }
278
- }
279
-
280
- &.successful {
281
- .success {
282
- display: inline;
283
- color: #390;
284
- }
285
- }
286
-
287
- &.errored {
288
- > dt label {
289
- color: #900;
290
- }
291
-
292
- // General text next to the field
293
- .error {
294
- display: inline;
295
- color: #900;
296
- }
297
-
298
- // Specific error explanations from the server
299
- dd.error,
300
- dd.warning {
301
- display: inline-block;
302
- padding: 5px;
303
- font-size: 11px;
304
- color: #494620;
305
- background: #f7ea57;
306
- border: 1px solid #c0b536;
307
- border-top-color: #fff;
308
- border-bottom-right-radius: 3px;
309
- border-bottom-left-radius: 3px;
310
- }
311
- }
312
-
313
- &.warn {
314
- // General text next to the field
315
- .warning {
316
- display: inline;
317
- color: #900;
318
- }
319
-
320
- // Specific warning explanations from the server
321
- dd.warning {
322
- display: inline-block;
323
- padding: 5px;
324
- font-size: 11px;
325
- color: #494620;
326
- background: #f7ea57;
327
- border: 1px solid #c0b536;
328
- border-top-color: #fff;
329
- border-bottom-right-radius: 3px;
330
- border-bottom-left-radius: 3px;
331
- }
332
- }
333
-
334
- .form-note {
335
- display: inline-block;
336
- padding: 5px;
337
- margin-top: -1px;
338
- font-size: 11px;
339
- color: #494620;
340
- background: #f7ea57;
341
- border: 1px solid #c0b536;
342
- border-top-color: #fff;
343
- border-bottom-right-radius: 3px;
344
- border-bottom-left-radius: 3px;
345
- }
346
- }
347
-
348
-
349
- // Field groups
350
- //
351
- // Wrap field groups in `<div.hfields>` to lay them out horizontally - great for
352
- // the top of pages with autosave.
353
- .hfields {
354
- margin: 15px 0;
355
- @include clearfix;
356
-
357
- dl.form {
358
- float: left;
359
- margin: 0 30px 0 0;
360
-
361
- & > dt label {
362
- display: inline-block;
363
- margin: 5px 0 0;
364
- color: #666;
365
-
366
- img {
367
- position: relative;
368
- top: -2px;
369
- }
370
- }
371
- }
372
-
373
- .btn {
374
- float: left;
375
- margin: 28px 25px 0 -20px;
376
- }
377
-
378
- select { margin-top: 5px; }
379
- }
380
-
381
- // IE 9
382
- html.no-dnd-uploads {
383
- .drag-and-drop {
384
- min-height: 32px;
385
-
386
- .default {
387
- display: none;
388
- }
389
- }
390
-
391
- .upload-enabled textarea {
392
- border-bottom: 1px solid #ddd;
393
- }
394
- }
395
-
396
- .drag-and-drop {
397
- padding: 7px 10px;
398
- margin: 0;
399
- font-size: 13px;
400
- line-height: 16px;
401
- color: #aaa;
402
- background-color: #fafafa;
403
- border: 1px solid #ccc;
404
- border-top: 0;
405
- border-bottom-right-radius: 3px;
406
- border-bottom-left-radius: 3px;
407
-
408
- .default,
409
- .loading,
410
- .error {
411
- display: none;
412
- }
413
-
414
- .error {
415
- color: $brand-red;
416
- }
417
-
418
- // Spinner
419
- img {
420
- vertical-align: top;
421
- }
422
- }
423
-
424
- .is-default .drag-and-drop .default {
425
- display: inline-block;
426
- }
427
-
428
- .is-uploading .drag-and-drop .loading {
429
- display: inline-block;
430
- }
431
-
432
- .is-bad-file .drag-and-drop .bad-file {
433
- display: inline-block;
434
- }
435
-
436
- .is-too-big .drag-and-drop .too-big {
437
- display: inline-block;
438
- }
439
-
440
- .is-empty .drag-and-drop .empty {
441
- display: inline-block;
442
- }
443
-
444
- .is-bad-browser .drag-and-drop .bad-browser {
445
- display: inline-block;
446
- }
447
-
448
- .drag-and-drop-error-info {
449
- font-weight: normal;
450
- color: #aaa;
451
-
452
- a {
453
- color: $brand-blue;
454
- }
455
- }
456
-
457
- .is-failed .drag-and-drop .failed-request {
458
- display: inline-block;
459
- }
460
-
461
- .manual-file-chooser {
462
- position: absolute;
463
- width: 240px;
464
- padding: 5px;
465
- margin-left: -80px;
466
- cursor: pointer;
467
- opacity: 0.0001;
468
- }
469
-
470
- .manual-file-chooser:hover + .manual-file-chooser-text {
471
- text-decoration: underline;
472
- }
473
-
474
- .btn {
475
- // align manual-file-chooser inside a button
476
- .manual-file-chooser {
477
- top: 0;
478
- padding: 0;
479
- line-height: 34px;
480
- }
481
- }
482
-
483
- // Focused Textarea styles
484
- .upload-enabled textarea {
485
- display: block;
486
- border-bottom: 1px dashed #ddd;
487
- border-bottom-right-radius: 0;
488
- border-bottom-left-radius: 0;
489
- }
490
-
491
- .focused .drag-and-drop {
492
- @extend input[type="text"]:focus;
493
- box-shadow: rgba(#51a7e8, 0.5) 0 0 3px;
494
- }
495
-
496
- // Dropping a file on top
497
- .dragover textarea,
498
- .dragover .drag-and-drop {
499
- box-shadow: rgba(#c9ff00, 1) 0 0 3px;
500
- }
501
-
502
-
503
- // Form style with a write and a preview tab
504
- .previewable-comment-form {
505
- position: relative;
506
-
507
- .tabnav {
508
- position: relative;
509
- padding: 10px 10px 0;
510
- }
511
-
512
- .comment {
513
- border: 1px solid #cacaca;
514
- }
515
-
516
- .comment-header .comment-header-actions { display: none; }
517
-
518
- .comment-form-error { margin-bottom: 10px; }
519
-
520
- .write-content,
521
- .preview-content {
522
- display: none;
523
- padding: 0 10px 10px;
524
- }
525
-
526
- &.write-selected .write-content,
527
- &.preview-selected .preview-content {
528
- display: block;
529
- }
530
-
531
- textarea {
532
- display: block;
533
- width: 100%;
534
- min-height: 100px;
535
- max-height: 500px;
536
- padding: 10px;
537
- resize: vertical;
538
-
539
- &.fullscreen-contents:focus {
540
- border: 0;
541
- box-shadow: none;
542
- }
543
- }
544
- }
545
-
546
-
547
- // A two column form, with a .main and a .sidebar column
548
- //
549
- // Override some `.timeline-comment-wrapper` defaults.
550
- // The `div` is needed to be more specific than the other class.
551
- div.composer {
552
- margin-top: 0;
553
- border: 0;
554
- }
555
-
556
- // Override the previewable comment form defaults
557
- .composer .comment-form-textarea {
558
- height: 200px;
559
- min-height: 200px;
560
- }
561
-
562
- .composer-infobar {
563
- height: 35px;
564
- padding: 0 10px;
565
- margin-bottom: 10px;
566
- border-bottom: 1px solid #eee;
567
- }
568
-
569
- .composer .tabnav { margin: 0 0 10px; }
570
-
571
- .infobar-widget {
572
-
573
- &.milestone {
574
- position: relative; // requires so that the `right: 0;` below works
575
- float: right;
576
-
577
- .select-menu-modal-holder { right: 0; }
578
- }
579
-
580
- &.assignee {
581
- float: left;
582
-
583
- .css-truncate-target {
584
- max-width: 110px;
585
- }
586
- }
587
-
588
- .text,
589
- .avatar,
590
- .select-menu {
591
- display: inline-block;
592
- vertical-align: top;
593
- }
594
-
595
- .text {
596
- margin-top: 3px;
597
-
598
- a {
599
- font-weight: bold;
600
- color: #333;
601
- }
602
- }
603
-
604
- .progress-bar {
605
- width: 200px;
606
- overflow: hidden; // round the corners if 100%
607
- line-height: 18px;
608
- }
609
- }
610
-
611
-
612
- // Hide the up/down buttons in <input type="number"> in the login form, the
613
- // input is used for two-factor auth codes, type="number" makes it more usable
614
- // on phones
615
- input::-webkit-outer-spin-button,
616
- input::-webkit-inner-spin-button {
617
- margin: 0;
618
- -webkit-appearance: none;
619
- }
620
-
621
-
622
- // Input groups
623
- .input-group {
624
- display: table;
625
-
626
- input {
627
- position: relative;
628
- width: 100%;
629
-
630
- &:focus {
631
- z-index: 2;
632
- }
633
- }
634
-
635
- input[type="text"] + .btn {
636
- margin-left: 0;
637
- }
638
-
639
- // For when you want the input group to behave like inline-block.
640
- &.inline {
641
- display: inline-table;
642
- }
643
- }
644
-
645
- .input-group input,
646
- .input-group-button {
647
- display: table-cell;
648
- }
649
-
650
- .input-group-button {
651
- width: 1%;
652
- vertical-align: middle; // Match the inputs
653
- }
654
-
655
- .input-group input:first-child,
656
- .input-group-button:first-child .btn {
657
- border-top-right-radius: 0;
658
- border-bottom-right-radius: 0;
659
- }
660
-
661
- .input-group-button:first-child .btn {
662
- margin-right: -1px;
663
- }
664
-
665
- .input-group input:last-child,
666
- .input-group-button:last-child .btn {
667
- border-top-left-radius: 0;
668
- border-bottom-left-radius: 0;
669
- }
670
-
671
- .input-group-button:last-child .btn {
672
- margin-left: -1px;
673
- }
674
-
675
- h2.account {
676
- margin: 15px 0 0;
677
- font-size: 18px;
678
- font-weight: normal;
679
- color: #666;
680
- }
681
-
682
- p.explain {
683
- position: relative;
684
- font-size: 12px;
685
- color: #666;
686
-
687
- strong {
688
- color: #333;
689
- }
690
-
691
- .octicon {
692
- margin-right: 5px;
693
- color: #bbb;
694
- }
695
-
696
- .minibutton {
697
- top: -4px;
698
- float: right;
699
- }
700
- }
701
-
702
- .options-content p.explain {
703
- padding: 10px 10px 0;
704
- margin-top: 0;
705
- border-top: 1px solid #ddd;
706
- }
707
-
708
- .form-actions {
709
- @include clearfix;
710
-
711
- .btn {
712
- float: right;
713
-
714
- + .btn {
715
- margin-right: 5px;
716
- }
717
- }
718
- }
719
-
720
- .form-warning {
721
- padding: 8px 10px;
722
- margin: 10px 0;
723
- font-size: 14px;
724
- color: #333;
725
- background: #ffffe2;
726
- border: 1px solid #e7e4c2;
727
- border-radius: 4px;
728
-
729
- p {
730
- margin: 0;
731
- line-height: 1.5;
732
- }
733
-
734
- strong { color: #000; }
735
-
736
- a { font-weight: bold; }
737
- }
738
-
739
-
740
- // Inline verification
741
- //
742
- // Used for example when autosaving checkboxes in settings.
743
- .status-indicator {
744
- @include icon-bootstrap(16px);
745
- margin-left: 5px;
746
- }
747
-
748
- .status-indicator-success:before {
749
- color: $brand-green;
750
- content: "\f03a"; // octicon-check
751
- }
752
-
753
- .status-indicator-failed:before {
754
- color: $brand-red;
755
- content: "\f02d"; // octicon-x
756
- }