]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - client/src/app/+videos/+video-watch/video-watch.component.scss
Translated using Weblate (Spanish)
[github/Chocobozzz/PeerTube.git] / client / src / app / +videos / +video-watch / video-watch.component.scss
... / ...
CommitLineData
1@import '_variables';
2@import '_mixins';
3@import '_bootstrap-variables';
4@import '_miniature';
5
6$player-factor: 1.7; // 16/9
7$video-info-margin-left: 44px;
8
9@function getPlayerHeight($width){
10 @return calc(#{$width} / #{$player-factor})
11}
12
13@function getPlayerWidth($height){
14 @return calc(#{$height} * #{$player-factor})
15}
16
17@mixin playlist-below-player {
18 width: 100% !important;
19 height: auto !important;
20 max-height: 300px !important;
21 max-width: initial;
22 border-bottom: 1px solid $separator-border-color !important;
23}
24
25.root {
26 &.theater-enabled #video-wrapper {
27 flex-direction: column;
28 justify-content: center;
29
30 #videojs-wrapper {
31 width: 100%;
32 }
33
34 ::ng-deep .video-js {
35 $height: calc(100vh - #{$header-height} - #{$theater-bottom-space});
36
37 height: $height;
38 width: 100%;
39 max-width: initial;
40 }
41
42 my-video-watch-playlist ::ng-deep .playlist {
43 @include playlist-below-player;
44 }
45 }
46}
47
48.blocked-label {
49 font-weight: $font-semibold;
50}
51
52#video-wrapper {
53 background-color: #000;
54 display: flex;
55 justify-content: center;
56
57 #videojs-wrapper {
58 display: flex;
59 justify-content: center;
60 flex-grow: 1;
61 }
62
63 .remote-server-down {
64 color: #fff;
65 display: flex;
66 flex-direction: column;
67 align-items: center;
68 text-align: center;
69 justify-content: center;
70 background-color: #141313;
71 width: 100%;
72 font-size: 24px;
73 height: 500px;
74
75 @media screen and (max-width: 1000px) {
76 font-size: 20px;
77 }
78
79 @media screen and (max-width: 600px) {
80 font-size: 16px;
81 }
82 }
83
84 ::ng-deep .video-js {
85 width: 100%;
86 max-width: getPlayerWidth(66vh);
87 height: 66vh;
88
89 // VideoJS create an inner video player
90 video {
91 outline: 0;
92 position: relative !important;
93 }
94 }
95
96 @media screen and (max-width: 600px) {
97 .remote-server-down,
98 ::ng-deep .video-js {
99 width: 100vw;
100 height: getPlayerHeight(100vw)
101 }
102 }
103}
104
105.alert {
106 text-align: center;
107 border-radius: 0;
108}
109
110.flex-direction-column {
111 flex-direction: column;
112}
113
114#video-not-found {
115 height: 300px;
116 line-height: 300px;
117 margin-top: 50px;
118 text-align: center;
119 font-weight: $font-semibold;
120 font-size: 15px;
121}
122
123.video-bottom {
124 display: flex;
125 margin-top: 1.5rem;
126
127 .video-info {
128 flex-grow: 1;
129 // Set min width for flex item
130 min-width: 1px;
131 max-width: 100%;
132
133 .video-info-first-row {
134 display: flex;
135
136 & > div:first-child {
137 flex-grow: 1;
138 }
139
140 .video-info-name {
141 margin-right: 30px;
142 min-height: 40px; // Align with the action buttons
143 font-size: 27px;
144 font-weight: $font-semibold;
145 flex-grow: 1;
146 }
147
148 .video-info-first-row-bottom {
149 display: flex;
150 flex-wrap: wrap;
151 align-items: center;
152 width: 100%;
153 }
154
155 .video-info-date-views {
156 align-self: start;
157 margin-bottom: 10px;
158 margin-right: 10px;
159 font-size: 1em;
160 }
161
162 .video-info-channel {
163 font-weight: $font-semibold;
164 font-size: 15px;
165
166 a {
167 @include disable-default-a-behaviour;
168
169 color: pvar(--mainForegroundColor);
170
171 &:hover {
172 opacity: 0.8;
173 }
174
175 img {
176 @include avatar(18px);
177
178 margin: -2px 5px 0 0;
179 }
180 }
181
182 .video-info-channel-left {
183 flex-grow: 1;
184
185 .video-info-channel-left-links {
186 display: flex;
187 flex-direction: column;
188 position: relative;
189 line-height: 1.37;
190
191 a:nth-of-type(2) {
192 font-weight: 500;
193 font-size: 90%;
194 }
195
196 a.single-link {
197 margin-top: 7px;
198 }
199 }
200 }
201
202 my-subscribe-button {
203 margin-left: 5px;
204 }
205 }
206
207 my-feed {
208 margin-left: 5px;
209 margin-top: 1px;
210 }
211
212 .video-actions-rates {
213 margin: 0 0 10px 0;
214 align-items: start;
215 width: max-content;
216 margin-left: auto;
217
218 .video-actions {
219 height: 40px; // Align with the title
220 display: flex;
221 align-items: center;
222
223 .action-button:not(:first-child),
224 .action-dropdown,
225 my-video-actions-dropdown {
226 margin-left: 5px;
227 }
228
229 ::ng-deep.action-button {
230 @include peertube-button;
231 @include button-with-icon(21px, 0, -1px);
232 @include apply-svg-color(pvar(--actionButtonColor));
233
234 font-size: 100%;
235 font-weight: $font-semibold;
236 display: inline-block;
237 padding: 0 10px 0 10px;
238 white-space: nowrap;
239 background-color: transparent !important;
240 color: pvar(--actionButtonColor);
241 text-transform: uppercase;
242
243 &::after {
244 display: none;
245 }
246
247 &:hover {
248 opacity: 0.9;
249 }
250
251 &.action-button-like,
252 &.action-button-dislike {
253 filter: brightness(120%);
254
255 .count {
256 margin: 0 5px;
257 }
258 }
259
260 &.action-button-like.activated {
261 .count {
262 color: pvar(--activatedActionButtonColor);
263 }
264
265 my-global-icon {
266 @include apply-svg-color(pvar(--activatedActionButtonColor));
267 }
268 }
269
270 &.action-button-dislike.activated {
271 .count {
272 color: pvar(--activatedActionButtonColor);
273 }
274
275 my-global-icon {
276 @include apply-svg-color(pvar(--activatedActionButtonColor));
277 }
278 }
279
280 &.action-button-support {
281 color: pvar(--supportButtonColor);
282
283 my-global-icon {
284 @include apply-svg-color(pvar(--supportButtonColor));
285 }
286 }
287
288 &.action-button-support {
289 my-global-icon {
290 ::ng-deep path:first-child {
291 fill: pvar(--supportButtonHeartColor) !important;
292 }
293 }
294 }
295
296 &.action-button-save {
297 my-global-icon {
298 top: 0 !important;
299 right: -1px;
300 }
301 }
302
303 .icon-text {
304 margin-left: 3px;
305 }
306 }
307 }
308
309 .video-info-likes-dislikes-bar-outer-container {
310 position: relative;
311 }
312
313 .video-info-likes-dislikes-bar-inner-container {
314 position: absolute;
315 height: 20px;
316 }
317
318 .video-info-likes-dislikes-bar {
319 $likes-bar-height: 2px;
320 height: $likes-bar-height;
321 margin-top: -$likes-bar-height;
322 width: 120px;
323 background-color: #ccc;
324 position: relative;
325 top: 10px;
326
327 .likes-bar {
328 height: 100%;
329 background-color: #909090;
330
331 &.liked {
332 background-color: pvar(--activatedActionButtonColor);
333 }
334 }
335 }
336 }
337 }
338
339 .video-info-description {
340 margin: 20px 0;
341 margin-left: $video-info-margin-left;
342 font-size: 15px;
343
344 .video-info-description-html {
345 @include peertube-word-wrap;
346
347 /deep/ a {
348 text-decoration: none;
349 }
350 }
351
352 .glyphicon, .description-loading {
353 margin-left: 3px;
354 }
355
356 .description-loading {
357 display: inline-block;
358 }
359
360 .video-info-description-more {
361 cursor: pointer;
362 font-weight: $font-semibold;
363 color: pvar(--greyForegroundColor);
364 font-size: 14px;
365
366 .glyphicon {
367 position: relative;
368 top: 2px;
369 }
370 }
371 }
372
373 .video-attributes {
374 margin-left: $video-info-margin-left;
375 }
376
377 .video-attributes .video-attribute {
378 font-size: 13px;
379 display: block;
380 margin-bottom: 12px;
381
382 .video-attribute-label {
383 min-width: 142px;
384 padding-right: 5px;
385 display: inline-block;
386 color: pvar(--greyForegroundColor);
387 font-weight: $font-bold;
388 }
389
390 a.video-attribute-value {
391 @include disable-default-a-behaviour;
392 color: pvar(--mainForegroundColor);
393
394 &:hover {
395 opacity: 0.9;
396 }
397 }
398
399 &.video-attribute-tags {
400 .video-attribute-value:not(:nth-child(2)) {
401 &::before {
402 content: ', '
403 }
404 }
405 }
406 }
407 }
408
409 ::ng-deep .other-videos {
410 padding-left: 15px;
411 min-width: $video-miniature-width;
412
413 @media screen and (min-width: 1800px - (3* $video-miniature-width)) {
414 width: min-content;
415 }
416
417 .title-page {
418 margin: 0 !important;
419 }
420
421 .video-miniature {
422 display: flex;
423 width: max-content;
424 height: 100%;
425 padding-bottom: 20px;
426 flex-wrap: wrap;
427 }
428
429 .video-bottom {
430 @media screen and (max-width: 1800px - (3* $video-miniature-width)) {
431 margin-left: 1rem;
432 }
433 @media screen and (max-width: 500px) {
434 margin-left: 0;
435 margin-top: .5rem;
436 }
437 }
438 }
439}
440
441my-video-comments {
442 display: inline-block;
443 width: 100%;
444 margin-bottom: 20px;
445}
446
447// If the view is not expanded, take into account the menu
448.privacy-concerns {
449 z-index: z(dropdown) + 1;
450 width: calc(100% - #{$menu-width});
451}
452
453@media screen and (max-width: $small-view) {
454 .privacy-concerns {
455 margin-left: $menu-width - 15px; // Menu is absolute
456 }
457}
458
459:host-context(.expanded) {
460 .privacy-concerns {
461 width: 100%;
462 margin-left: -15px;
463 }
464}
465
466.privacy-concerns {
467 position: fixed;
468 bottom: 0;
469 z-index: z(privacymsg);
470
471 padding: 5px 15px;
472
473 display: flex;
474 flex-wrap: nowrap;
475 align-items: center;
476 justify-content: space-between;
477 background-color: rgba(0, 0, 0, 0.9);
478 color: #fff;
479
480 .privacy-concerns-text {
481 margin: 0 5px;
482 }
483
484 a {
485 @include disable-default-a-behaviour;
486
487 color: pvar(--mainColor);
488 transition: color 0.3s;
489
490 &:hover {
491 color: #fff;
492 }
493 }
494
495 .privacy-concerns-button {
496 padding: 5px 8px 5px 7px;
497 margin-left: auto;
498 border-radius: 3px;
499 white-space: nowrap;
500 cursor: pointer;
501 transition: background-color 0.3s;
502 font-weight: $font-semibold;
503
504 &:hover {
505 background-color: #000;
506 }
507 }
508
509 .privacy-concerns-okay {
510 background-color: pvar(--mainColor);
511 margin-left: 10px;
512 }
513}
514
515@media screen and (max-width: 1600px) {
516 .video-bottom .video-info .video-attributes .video-attribute {
517 margin-bottom: 5px;
518 }
519}
520
521@media screen and (max-width: 1300px) {
522 .privacy-concerns {
523 font-size: 12px;
524 padding: 2px 5px;
525
526 .privacy-concerns-text {
527 margin: 0;
528 }
529 }
530}
531
532@media screen and (max-width: 1100px) {
533 #video-wrapper {
534 flex-direction: column;
535 justify-content: center;
536
537 my-video-watch-playlist ::ng-deep .playlist {
538 @include playlist-below-player;
539 }
540 }
541
542 .video-bottom {
543 flex-direction: column;
544
545 ::ng-deep .other-videos {
546 padding-left: 0 !important;
547
548 ::ng-deep .video-miniature {
549 flex-direction: row;
550 width: auto;
551 }
552 }
553 }
554}
555
556@media screen and (max-width: 600px) {
557 .video-bottom {
558 margin-top: 20px !important;
559 padding-bottom: 20px !important;
560
561 .video-info {
562 padding: 0;
563
564 .video-info-first-row {
565
566 .video-info-name {
567 font-size: 20px;
568 height: auto;
569 }
570 }
571 }
572 }
573
574 ::ng-deep .other-videos .video-miniature {
575 flex-direction: column;
576 }
577
578 .privacy-concerns {
579 width: 100%;
580
581 strong {
582 display: none;
583 }
584 }
585}
586
587@media screen and (max-width: 450px) {
588 .video-bottom {
589 .action-button .icon-text {
590 display: none !important;
591 }
592
593 .video-info .video-info-first-row {
594 .video-info-name {
595 font-size: 18px;
596 }
597
598 .video-info-date-views {
599 font-size: 14px;
600 }
601
602 .video-actions-rates {
603 margin-top: 10px;
604 }
605 }
606
607 .video-info-description {
608 font-size: 14px !important;
609 }
610 }
611}