flipper-ui 0.17.1 → 0.20.0.beta1

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 (153) hide show
  1. checksums.yaml +4 -4
  2. data/docs/ui/README.md +31 -22
  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 +3 -4
  9. data/lib/flipper/ui.rb +0 -3
  10. data/lib/flipper/ui/action.rb +2 -1
  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 +23 -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 +1 -1
  21. data/lib/flipper/ui/views/add_feature.erb +1 -1
  22. data/lib/flipper/ui/views/add_group.erb +1 -1
  23. data/lib/flipper/ui/views/feature.erb +198 -179
  24. data/lib/flipper/ui/views/features.erb +47 -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 +0 -4
  28. data/spec/flipper/ui/actions/feature_spec.rb +14 -16
  29. data/spec/flipper/ui/actions/features_spec.rb +1 -5
  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 +58 -34
  35. data/spec/flipper/ui/decorators/feature_spec.rb +0 -30
  36. metadata +11 -127
  37. data/docs/ui/images/configured-ui.png +0 -0
  38. data/docs/ui/images/environment-banner.png +0 -0
  39. data/lib/flipper/ui/assets/stylesheets/.DS_Store +0 -0
  40. data/lib/flipper/ui/assets/stylesheets/application.scss +0 -19
  41. data/lib/flipper/ui/assets/stylesheets/bootstrap/_alert.scss +0 -51
  42. data/lib/flipper/ui/assets/stylesheets/bootstrap/_badge.scss +0 -47
  43. data/lib/flipper/ui/assets/stylesheets/bootstrap/_breadcrumb.scss +0 -38
  44. data/lib/flipper/ui/assets/stylesheets/bootstrap/_button-group.scss +0 -166
  45. data/lib/flipper/ui/assets/stylesheets/bootstrap/_buttons.scss +0 -143
  46. data/lib/flipper/ui/assets/stylesheets/bootstrap/_card.scss +0 -270
  47. data/lib/flipper/ui/assets/stylesheets/bootstrap/_carousel.scss +0 -191
  48. data/lib/flipper/ui/assets/stylesheets/bootstrap/_close.scss +0 -34
  49. data/lib/flipper/ui/assets/stylesheets/bootstrap/_code.scss +0 -56
  50. data/lib/flipper/ui/assets/stylesheets/bootstrap/_custom-forms.scss +0 -297
  51. data/lib/flipper/ui/assets/stylesheets/bootstrap/_dropdown.scss +0 -131
  52. data/lib/flipper/ui/assets/stylesheets/bootstrap/_forms.scss +0 -333
  53. data/lib/flipper/ui/assets/stylesheets/bootstrap/_functions.scss +0 -86
  54. data/lib/flipper/ui/assets/stylesheets/bootstrap/_grid.scss +0 -52
  55. data/lib/flipper/ui/assets/stylesheets/bootstrap/_images.scss +0 -42
  56. data/lib/flipper/ui/assets/stylesheets/bootstrap/_input-group.scss +0 -159
  57. data/lib/flipper/ui/assets/stylesheets/bootstrap/_jumbotron.scss +0 -16
  58. data/lib/flipper/ui/assets/stylesheets/bootstrap/_list-group.scss +0 -115
  59. data/lib/flipper/ui/assets/stylesheets/bootstrap/_media.scss +0 -8
  60. data/lib/flipper/ui/assets/stylesheets/bootstrap/_mixins.scss +0 -42
  61. data/lib/flipper/ui/assets/stylesheets/bootstrap/_modal.scss +0 -168
  62. data/lib/flipper/ui/assets/stylesheets/bootstrap/_nav.scss +0 -118
  63. data/lib/flipper/ui/assets/stylesheets/bootstrap/_navbar.scss +0 -311
  64. data/lib/flipper/ui/assets/stylesheets/bootstrap/_pagination.scss +0 -77
  65. data/lib/flipper/ui/assets/stylesheets/bootstrap/_popover.scss +0 -183
  66. data/lib/flipper/ui/assets/stylesheets/bootstrap/_print.scss +0 -124
  67. data/lib/flipper/ui/assets/stylesheets/bootstrap/_progress.scss +0 -33
  68. data/lib/flipper/ui/assets/stylesheets/bootstrap/_reboot.scss +0 -482
  69. data/lib/flipper/ui/assets/stylesheets/bootstrap/_root.scss +0 -19
  70. data/lib/flipper/ui/assets/stylesheets/bootstrap/_tables.scss +0 -180
  71. data/lib/flipper/ui/assets/stylesheets/bootstrap/_tooltip.scss +0 -115
  72. data/lib/flipper/ui/assets/stylesheets/bootstrap/_transitions.scss +0 -36
  73. data/lib/flipper/ui/assets/stylesheets/bootstrap/_type.scss +0 -125
  74. data/lib/flipper/ui/assets/stylesheets/bootstrap/_utilities.scss +0 -14
  75. data/lib/flipper/ui/assets/stylesheets/bootstrap/_variables.scss +0 -894
  76. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap-grid.scss +0 -32
  77. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap-reboot.scss +0 -12
  78. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap.scss +0 -42
  79. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_alert.scss +0 -13
  80. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
  81. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -12
  82. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_border-radius.scss +0 -35
  83. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +0 -5
  84. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +0 -123
  85. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_buttons.scss +0 -109
  86. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_caret.scss +0 -65
  87. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_clearfix.scss +0 -7
  88. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_float.scss +0 -11
  89. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_forms.scss +0 -137
  90. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_gradients.scss +0 -45
  91. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -67
  92. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid.scss +0 -52
  93. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -39
  94. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_image.scss +0 -36
  95. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_list-group.scss +0 -21
  96. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_lists.scss +0 -7
  97. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
  98. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +0 -10
  99. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_pagination.scss +0 -22
  100. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_reset-text.scss +0 -17
  101. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_resize.scss +0 -6
  102. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -35
  103. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_size.scss +0 -6
  104. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -30
  105. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -14
  106. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -9
  107. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-truncate.scss +0 -8
  108. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_transition.scss +0 -9
  109. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -7
  110. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  111. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  112. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -59
  113. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_clearfix.scss +0 -3
  114. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_display.scss +0 -38
  115. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -52
  116. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -46
  117. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_float.scss +0 -9
  118. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_position.scss +0 -36
  119. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  120. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -12
  121. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -51
  122. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_text.scss +0 -52
  123. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -11
  124. data/lib/flipper/ui/assets/stylesheets/primer/.scss-lint.yml +0 -446
  125. data/lib/flipper/ui/assets/stylesheets/primer/_alerts.scss +0 -106
  126. data/lib/flipper/ui/assets/stylesheets/primer/_avatars.scss +0 -36
  127. data/lib/flipper/ui/assets/stylesheets/primer/_base.scss +0 -40
  128. data/lib/flipper/ui/assets/stylesheets/primer/_blankslate.scss +0 -96
  129. data/lib/flipper/ui/assets/stylesheets/primer/_buttons.scss +0 -404
  130. data/lib/flipper/ui/assets/stylesheets/primer/_counter.scss +0 -10
  131. data/lib/flipper/ui/assets/stylesheets/primer/_filter-list.scss +0 -68
  132. data/lib/flipper/ui/assets/stylesheets/primer/_flex-table.scss +0 -20
  133. data/lib/flipper/ui/assets/stylesheets/primer/_forms.scss +0 -756
  134. data/lib/flipper/ui/assets/stylesheets/primer/_layout.scss +0 -69
  135. data/lib/flipper/ui/assets/stylesheets/primer/_menu.scss +0 -113
  136. data/lib/flipper/ui/assets/stylesheets/primer/_mixins.scss +0 -53
  137. data/lib/flipper/ui/assets/stylesheets/primer/_normalize.scss +0 -425
  138. data/lib/flipper/ui/assets/stylesheets/primer/_states.scss +0 -32
  139. data/lib/flipper/ui/assets/stylesheets/primer/_tabnav.scss +0 -65
  140. data/lib/flipper/ui/assets/stylesheets/primer/_tooltips.scss +0 -255
  141. data/lib/flipper/ui/assets/stylesheets/primer/_truncate.scss +0 -27
  142. data/lib/flipper/ui/assets/stylesheets/primer/_type.scss +0 -92
  143. data/lib/flipper/ui/assets/stylesheets/primer/_utility.scss +0 -73
  144. data/lib/flipper/ui/assets/stylesheets/primer/_variables.scss +0 -34
  145. data/lib/flipper/ui/assets/stylesheets/primer/primer.scss +0 -39
  146. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  147. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.svg +0 -288
  148. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  149. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  150. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  151. data/lib/flipper/ui/public/images/remove.png +0 -0
  152. data/lib/flipper/ui/public/octicons/octicons.less +0 -235
  153. 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
- }