0029c22ef6bcc04dff1afc4c2d5bc9c4872fc167
[oweals/peertube.git] / client / src / sass / application.scss
1 $icon-font-path: '../../node_modules/@neos21/bootstrap3-glyphicons/assets/fonts/';
2 @import '_bootstrap';
3
4 @import '_variables';
5 @import '_mixins';
6
7 @import '_fonts';
8
9 @import '~video.js/dist/video-js.css';
10
11 $assets-path: '../assets/';
12 @import './player/index';
13 @import './loading-bar';
14
15 @import './primeng-custom';
16
17 [hidden] {
18   display: none !important;
19 }
20
21 body {
22   /*** theme ***/
23   // now beware node-sass requires interpolation
24   // for css custom properties #{$var}
25   --mainColor: #{$orange-color};
26   --mainHoverColor: #{$orange-hoover-color};
27   --mainBackgroundColor: #{$bg-color};
28   --mainForegroundColor: #{$fg-color};
29   --menuBackgroundColor: #{$menu-background};
30   --menuForegroundColor: #{$menu-color};
31   --submenuColor: #{$sub-menu-color};
32   --inputColor: #{$input-background-color};
33   --inputPlaceholderColor: #{$input-placeholder-color};
34
35   font-family: $main-fonts;
36   font-weight: $font-regular;
37   color: var(--mainForegroundColor);
38   font-size: 14px;
39 }
40
41 #incompatible-browser {
42   display: none;
43   text-align: center;
44   position: absolute;
45   width: 100%;
46   top: 45%;
47 }
48
49 strong {
50   font-weight: $font-semibold;
51 }
52
53 input.readonly {
54   /* Force blank on readonly inputs */
55   background-color: var(--inputColor) !important;
56 }
57
58 input, textarea {
59   outline: none;
60   color: var(--mainForegroundColor);
61 }
62
63 .btn-outline-secondary {
64   border-color: $input-border-color;
65 }
66
67 label {
68   font-weight: $font-bold;
69   font-size: 15px;
70 }
71
72 .form-error {
73   display: block;
74   color: $red;
75   margin-top: 5px;
76 }
77
78 .input-error {
79   border-color: $red !important;
80 }
81
82 .fullWidth {
83   width: 100%;
84   margin-left: auto;
85   margin-right: auto;
86   max-width: initial;
87 }
88
89 .glyphicon-black {
90   color: black;
91 }
92
93 .main-col {
94   margin-left: $menu-width;
95   width: auto;
96
97   .margin-content {
98     margin-left: $not-expanded-horizontal-margins;
99     margin-right: $not-expanded-horizontal-margins;
100     flex-grow: 1;
101   }
102
103   .sub-menu {
104     background-color: var(--submenuColor);
105     width: 100%;
106     height: 81px;
107     margin-bottom: 30px;
108     display: flex;
109     align-items: center;
110     padding-left: $not-expanded-horizontal-margins;
111     padding-right: $not-expanded-horizontal-margins;
112   }
113
114   // Override some properties if the main content is expanded (no menu on the left)
115   &.expanded {
116     margin-left: 0;
117
118     .margin-content {
119       margin-left: $expanded-horizontal-margins;
120       margin-right: $expanded-horizontal-margins;
121     }
122
123     .sub-menu {
124       padding-left: $expanded-horizontal-margins;
125       padding-right: $expanded-horizontal-margins;
126     }
127   }
128 }
129
130 .title-page {
131   color: var(--mainForegroundColor);
132   font-size: 16px;
133   display: inline-block;
134   margin-right: 55px;
135   font-weight: $font-semibold;
136   @include disable-default-a-behaviour;
137
138   &.active, &.title-page-single {
139     border-bottom: 2px solid var(--mainColor);
140     font-weight: $font-bold;
141     margin-top: 30px;
142     margin-bottom: 25px;
143   }
144
145   &:hover, &:active, &:focus {
146     color: var(--mainForegroundColor);
147   }
148
149   @media screen and (max-width: 500px) {
150     margin-right: 20px;
151   }
152 }
153
154 .admin-sub-header {
155   display: flex;
156   align-items: center;
157   margin-bottom: 30px;
158
159   .form-sub-title {
160     flex-grow: 1;
161   }
162
163   .admin-sub-nav a {
164     @include disable-default-a-behaviour;
165
166     font-size: 16px;
167     color: var(--mainForegroundColor);
168     padding: 5px 15px;
169     border-radius: 0.25rem;
170
171     &.active {
172       font-weight: $font-semibold;
173       background-color: #f0f0f0;
174       color: #000;
175     }
176   }
177 }
178
179 .form-sub-title {
180   font-size: 20px;
181   font-weight: bold;
182 }
183
184 // Thanks https://gist.github.com/alexandrevicenzi/680147013e902a4eaa5d
185 .glyphicon-refresh-animate {
186   animation: spin .7s infinite linear;
187 }
188
189 @keyframes spin {
190   from { transform: scale(1) rotate(0deg);}
191   to { transform: scale(1) rotate(360deg);}
192 }
193
194 // Bootstrap customizations
195 .dropdown-menu {
196   border-radius: 3px;
197   box-shadow: 0 3px 6px;
198   font-size: 15px;
199
200   .dropdown-item {
201     padding: 3px 15px;
202
203     &:active {
204       color: #000 !important;
205     }
206   }
207
208   button {
209     @include disable-default-a-behaviour;
210   }
211
212   a {
213     @include disable-default-a-behaviour;
214     color: #000 !important;
215   }
216 }
217
218 .modal {
219   .modal-content {
220     background-color: var(--mainBackgroundColor);
221   }
222
223   .modal-header {
224     border-bottom: none;
225     margin-bottom: 5px;
226
227     .modal-title {
228       font-size: 20px;
229       font-weight: $font-semibold;
230     }
231
232     .close {
233       @include icon(24px);
234
235       position: relative;
236       top: 3px;
237       float: right;
238       background-image: url('../assets/images/global/cross.svg');
239
240       margin: 0;
241       padding: 0;
242       opacity: 1;
243     }
244   }
245
246   .inputs {
247     margin-top: 40px;
248     margin-bottom: 0;
249     text-align: right;
250
251     .action-button-cancel {
252       @include peertube-button;
253       @include grey-button;
254
255       display: inline-block;
256       margin-right: 10px;
257     }
258
259     .action-button-submit {
260       @include peertube-button;
261       @include orange-button;
262     }
263   }
264 }
265
266 // Nav customizations
267 .nav .nav-link {
268   display: flex !important;
269   align-items: center;
270   height: 30px !important;
271   padding: 10px 15px !important;
272 }
273
274 .nav.nav-pills {
275   font-size: 16px !important;
276
277   .nav-link.active {
278     font-weight: $font-semibold !important;
279   }
280
281   a {
282     @include disable-default-a-behaviour;
283
284     color: var(--mainForegroundColor);
285   }
286 }
287
288 ngb-tabset.bootstrap {
289
290   .nav-link {
291     &, & a {
292       @include disable-default-a-behaviour;
293
294       color: var(--mainForegroundColor) !important;
295     }
296   }
297 }
298
299 .nav-tabs .nav-link.active {
300   background-color: var(--mainBackgroundColor) !important;
301   border-bottom: none;
302 }
303
304 .orange-button {
305   @include peertube-button;
306   @include orange-button;
307 }
308
309 .orange-button-link {
310   @include peertube-button-link;
311   @include orange-button;
312 }
313
314 .grey-button {
315   @include peertube-button;
316   @include grey-button;
317 }
318
319 .grey-button-link {
320   @include peertube-button-link;
321   @include grey-button;
322 }
323
324 // In tables, don't have a hover different background
325 table {
326   .action-button-edit, .action-button-delete {
327     &:hover, &:active, &:focus, &[disabled], &.disabled {
328       background-color: $grey-color !important;
329     }
330   }
331 }
332
333 .no-results {
334   height: 40vh;
335   display: flex;
336   align-items: center;
337   justify-content: center;
338   font-size: 16px;
339   font-weight: $font-semibold;
340 }
341
342 @media screen and (max-width: 1200px) {
343   .main-col {
344     &.expanded {
345       .margin-content {
346         margin-left: $expanded-horizontal-margins/2;
347         margin-right: $expanded-horizontal-margins/2;
348       }
349     }
350   }
351 }
352
353 @media screen and (max-width: 900px) {
354   .main-col {
355     &.expanded {
356       .margin-content {
357         margin-left: $expanded-horizontal-margins/3;
358         margin-right: $expanded-horizontal-margins/3;
359       }
360
361       .sub-menu {
362         padding-left: 50px;
363
364         .title-page {
365           font-size: 15px;
366         }
367       }
368     }
369   }
370 }
371
372 @media screen and (max-width: $small-view) {
373   .main-col {
374     margin-left: 0;
375
376     &, &.expanded {
377       .margin-content {
378         margin-left: 15px;
379         margin-right: 15px;
380       }
381
382       .sub-menu {
383         padding-left: 15px;
384         padding-right: 15px;
385         margin-bottom: 10px;
386       }
387
388       input[type=text], input[type=password] {
389         width: 100% !important;
390       }
391     }
392   }
393 }