blob: 956775b69e7fe3e8110c7b71058a1471b7df0d87 [file] [log] [blame]
Frédéric Guimont3e5f1b62016-11-22 11:41:38 -05001body {
Adrien Beraud8e25afb2017-04-19 01:38:57 +02002 margin: 0;
AmarOkb4253242017-07-13 11:21:39 -04003 overflow: hidden;
Sébastien Blin82d0d2d2018-03-14 17:21:42 -04004 background-color: #f2f2f2;
Adrien Beraud8e25afb2017-04-19 01:38:57 +02005}
6
Sébastien Blin82d0d2d2018-03-14 17:21:42 -04007/** TODO invitation bar like Tirifto mock up */
8
Sébastien Blinf4f90282017-10-03 14:07:16 -04009#invitation {
10 visibility: hidden;
11 width: 100%;
12 background: #bae5f0;
13 z-index: 2;
14 position: absolute;
15 margin: 0 auto;
16 left:0;
17 right:0;
18 top:0;
19}
20
21#actions
22{
23 margin: 10px;
24 list-style: none;
25 display: flex;
26 align-items: center;
27 justify-content: center;
28}
29
Sébastien Blin82d0d2d2018-03-14 17:21:42 -040030.invitation-button,
Sébastien Blinf4f90282017-10-03 14:07:16 -040031.flat-button {
32 margin: 5px;
33 border: 0;
34 border-radius: 5px;
35 transition: all 0.3s ease;
Sébastien Blin82d0d2d2018-03-14 17:21:42 -040036 color: #f9f9f9;
Sébastien Blinf4f90282017-10-03 14:07:16 -040037 padding: 10px 20px 10px 20px;
38 vertical-align: middle;
Sébastien Blinf4f90282017-10-03 14:07:16 -040039}
40
41.button-green {
42 background: #27ae60;
43}
44
45.button-green:hover {
46 background: #219d55;
47}
48
49.button-red {
50 background: #dc3a37;
51}
52
53.button-red:hover {
54 background: #dc2719;
55}
56
57#invitation #text h1 {
58 font-size: 1.5em;
59}
60
61#invitation #text {
62 text-align: center;
63 width: 90%;
64 margin: auto;
65 margin-top: 10px;
66 font-size: 0.8em;
67}
68
Sébastien Blin23c09e02017-07-28 16:19:17 -040069a:link {
70 text-decoration: none;
71 color: #0e649b;
72 transition: all 0.2s ease-in-out;
73 border-bottom: dotted 1px;
74}
75
76a:hover {
77 border: 0;
78}
79
Adrien Beraud8e25afb2017-04-19 01:38:57 +020080#container {
81 position: relative;
82 height: 100%;
83 width: 100%;
AmarOkb4253242017-07-13 11:21:39 -040084 display: flex;
85 flex-direction: column;
86 margin: 0;
87 padding: 0;
AmarOkd55d85e2017-07-14 09:44:05 -040088 justify-content: flex-end;
Adrien Beraud8e25afb2017-04-19 01:38:57 +020089}
90
91#messages {
AmarOkb4253242017-07-13 11:21:39 -040092 position: relative;
AmarOkb4253242017-07-13 11:21:39 -040093 z-index: 0;
Adrien Beraud8e25afb2017-04-19 01:38:57 +020094 width: 100%;
Frédéric Guimont3e5f1b62016-11-22 11:41:38 -050095 overflow-y: scroll;
AmarOkb4253242017-07-13 11:21:39 -040096 height: auto;
Sébastien Blin82d0d2d2018-03-14 17:21:42 -040097 padding-bottom: 1em;
AmarOkd55d85e2017-07-14 09:44:05 -040098 max-height: calc(100% - 50px);
Frédéric Guimont3e5f1b62016-11-22 11:41:38 -050099}
100
AmarOkb4253242017-07-13 11:21:39 -0400101#sendMessage {
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400102 background-color: white;
AmarOkb4253242017-07-13 11:21:39 -0400103 display: flex;
AmarOkb4253242017-07-13 11:21:39 -0400104 position: relative;
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400105 padding-right: 10px;
106 padding-left: 18px;
AmarOk6286ad42017-07-14 12:11:08 -0400107 overflow: hidden;
108 padding-top: 8px;
109 padding-bottom: 8px;
110 align-items: center;
111
AmarOkb4253242017-07-13 11:21:39 -0400112}
113
114#message {
AmarOkd55d85e2017-07-14 09:44:05 -0400115 flex: 1;
AmarOk6286ad42017-07-14 12:11:08 -0400116 margin-right: 10px;
117 border: 0;
118 overflow-y: scroll;
119 color: black;
120 max-height: 150px;
121 padding-left: 8px;
122 resize: none;
AmarOkb4253242017-07-13 11:21:39 -0400123}
124
125#message:focus,
126#message.focus {
AmarOkb4253242017-07-13 11:21:39 -0400127 outline: none;
128}
129
Sébastien Blinf4f90282017-10-03 14:07:16 -0400130#container[disabled] {
131 background-color: #ccc;
132}
133
AmarOkb4253242017-07-13 11:21:39 -0400134input[placeholder], [placeholder], *[placeholder] {
135 color: #d3d3d3;
136}
137
AmarOkb4253242017-07-13 11:21:39 -0400138#sendMessage svg {
139 fill: #666;
140 padding: 5px;
141 width: 100%;
142 height: 100%;
143 transition: all 0.3s ease;
144}
145
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400146/* General messages */
AmarOkb4253242017-07-13 11:21:39 -0400147
Frédéric Guimont3e5f1b62016-11-22 11:41:38 -0500148.wc {
149 will-change: transform;
150}
151
aviau32b8dd62016-11-02 00:36:57 -0400152.message_wrapper {
153 transform: scale(0);
Sébastien Blin23c09e02017-07-28 16:19:17 -0400154 max-width: 70%;
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400155 margin: 8px 0 0 0;
aviau32b8dd62016-11-02 00:36:57 -0400156 display: inline-block;
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400157 padding: 1em;
aviau32b8dd62016-11-02 00:36:57 -0400158 border-radius: 10px;
159 position: relative;
160 -webkit-animation: talk;
161 -webkit-animation-duration: 0.3s;
162 -webkit-animation-delay: 0.1s;
163 -webkit-animation-fill-mode: forwards;
164 -webkit-animation-timing-function: ease-in-out;
165}
166
Hugo Lefeuvre9186c602018-05-03 10:44:15 -0400167@font-face {
168 font-family: emoji;
169
170 /* Fonts for text outside emoji blocks */
171 src: local('Open sans'),
172 local('Helvetica'),
173 local('Segoe UI'),
174 local('sans-serif');
175}
176
177@font-face {
178 font-family: emoji;
179
180 src: local('Noto Color Emoji'),
181 local('Android Emoji'),
182 local('Twitter Color Emoji');
183
184 /* Emoji unicode blocks */
185 unicode-range: U+1F300-1F5FF, U+1F600-1F64F, U+1F680-1F6FF, U+2600-26FF;
186}
187
aviau32b8dd62016-11-02 00:36:57 -0400188.message {
Hugo Lefeuvre9186c602018-05-03 10:44:15 -0400189 font: 0.875em emoji;
aviau32b8dd62016-11-02 00:36:57 -0400190 margin: 0;
191 display: flex;
192 justify-content: flex-start;
193 align-items: top;
194 overflow: hidden;
195}
196
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400197.message_in {
198 padding-left: 25%;
AmarOk6286ad42017-07-14 12:11:08 -0400199}
200
aviau32b8dd62016-11-02 00:36:57 -0400201.message_out {
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400202 padding-right: 25%;
Sébastien Blinc6f3a262017-07-28 16:12:24 -0400203 flex-direction: row-reverse;
204}
205
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400206.message_in + .message_in .sender_image {
207 opacity: 0;
208}
209
210.message_out + .message_out .sender_image {
211 opacity: 0;
212}
213
214.message_in > .message_wrapper:before {
215 content: "";
216 width: 10px;
217 height: 10px;
218 position: absolute;
219 left: -10px;
220 top: 0;
221 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E %3Cpath d= 'M10,0 L0,0 C10,0 10,10 10,10' fill='%23fdfdfd'/%3E %3C/svg%3E");
222 transform-origin: top left;
223}
224
225.message_in + .message_in > .message_wrapper:before {
226 display: none;
227}
228
229.message_out + .message_out > .message_wrapper:after {
230 display: none;
231}
232
233.message_out > .message_wrapper:after {
234 content: "";
235 width: 10px;
236 height: 10px;
237 position: absolute;
238 right: -10px;
239 top: 0;
240 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E %3Cpath d= 'M0,0 L10,0 C0,0 0,10 0,10' fill='%23cfd8dc'/%3E %3C/svg%3E");
241 transform-origin: top right;
242}
243
244.message_delivery_status {
245 margin: 10px 10px;
246 color: #A0A0A0;
247 opacity: 0;
248 -webkit-animation-name: fade-in;
249 -webkit-animation-duration: 0.2s;
250 -webkit-animation-timing-function: ease-in-out;
251 -webkit-animation-delay: 0.4s;
252 -webkit-animation-fill-mode: forwards;
253 transition: opacity 0.5s ease-in-out;
254}
255
aviau32b8dd62016-11-02 00:36:57 -0400256.message_sender {
257 display: none;
258}
259
260.sender_image {
261 border-radius: 50%;
262 transition: transform 0.2s ease-in-out;
Frédéric Guimont3e5f1b62016-11-22 11:41:38 -0500263 margin: 10px;
aviau32b8dd62016-11-02 00:36:57 -0400264}
265
266.message_in .sender_image {
267 -webkit-animation-name: enter-stage-left;
268 -webkit-animation-duration: 0.2s;
269 -webkit-animation-timing-function: ease-in-out;
270}
271
272.message_out .sender_image {
273 -webkit-animation-name: enter-stage-right;
274 -webkit-animation-duration: 0.2s;
275 -webkit-animation-timing-function: ease-in-out;
276}
277
278@-webkit-keyframes enter-stage-left {
279 from {
280 transform: translateX(-100%);
281 }
282 to {
283 transform: translateX(0);
284 }
285}
286
287@-webkit-keyframes enter-stage-right {
288 from {
289 transform: translateX(100%);
290 }
291 to {
292 transform: translateX(0);
293 }
294}
295
296.message_out > .message_wrapper {
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400297 background-color: #cfd8dc;
aviau32b8dd62016-11-02 00:36:57 -0400298 border-top-right-radius: 0;
299 transform-origin: top right;
300}
301
302.message_out + .message_out > .message_wrapper {
303 border-top-right-radius: 10px;
304}
305
306.message_in > .message_wrapper {
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400307 background-color: #fdfdfd;
aviau32b8dd62016-11-02 00:36:57 -0400308 border-top-left-radius: 0;
309 transform-origin: top left;
310}
311
312.message_in + .message_in > .message_wrapper {
313 border-top-left-radius: 10px;
314}
315
aviau32b8dd62016-11-02 00:36:57 -0400316
317@-webkit-keyframes fade-in {
318 from {
319 opacity: 0;
320 }
321 to {
322 opacity: 1;
323 }
324}
325
aviau32b8dd62016-11-02 00:36:57 -0400326@-webkit-keyframes talk {
327 from {
328 transform: scale(0);
329 }
330 to {
331 transform: scale(1);
332 }
333}
334
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400335.timestamp {
336 display: flex;
337 justify-content: flex-start;
338 color: #333;
339 font-size: 10px;
340 padding: 5px;
aviau32b8dd62016-11-02 00:36:57 -0400341}
342
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400343.timestamp_out {
344 flex-direction: row-reverse;
aviau32b8dd62016-11-02 00:36:57 -0400345}
346
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400347/* Buttons */
348
349.flat-button {
350 flex: 1;
351 padding: 0;
aviau32b8dd62016-11-02 00:36:57 -0400352}
353
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400354.left_buttons {
355 display: flex;
356 align-self: center;
357 max-width: 90px;
358 padding-left: 1em;
aviau32b8dd62016-11-02 00:36:57 -0400359}
360
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400361.msg-button {
362 border-radius: 50%;
363 border: 0;
364 width: 40px;
365 height: 40px;
366 align-self: center;
367 transition: all 0.3s ease;
368 cursor: pointer;
aviau32b8dd62016-11-02 00:36:57 -0400369}
370
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400371.msg-button.hover,
372.msg-button:hover {
373 background: #bae5f0;
aviau32b8dd62016-11-02 00:36:57 -0400374}
375
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400376
377/* Status */
378
379.status_circle {
380 fill: #A0A0A0;
381 -webkit-animation: circle-dance;
382 -webkit-animation-duration: 0.8s;
383 -webkit-animation-iteration-count: infinite;
384 -webkit-animation-direction: alternate;
385 -webkit-animation-timing-function: ease-in-out;
aviau32b8dd62016-11-02 00:36:57 -0400386}
Sébastien Blinf4f90282017-10-03 14:07:16 -0400387
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400388.anim-first {
389 -webkit-animation-delay: 0.7s;
Sébastien Blinf4f90282017-10-03 14:07:16 -0400390}
391
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400392.anim-second {
393 -webkit-animation-delay: 0.9s;
394}
395
396.anim-third {
397 -webkit-animation-delay: 1.1s;
398}
399
400@-webkit-keyframes circle-dance {
401 0%,50% {
402 -webkit-transform: translateY(0);
403 fill: #A0A0A0;
404 }
405 100% {
406 -webkit-transform: translateY(-8px);
407 fill: #000;
408 }
409}
410
411.status-x {
412 stroke-dasharray: 12;
413 stroke-dashoffset: 12;
414 -webkit-animation: dash-x;
415 -webkit-animation-duration: 0.2s;
416 -webkit-animation-fill-mode: forwards;
417 -webkit-animation-timing-function: ease-in-out;
418}
419
420.x-first {
421 -webkit-animation-delay: 0.7s;
422}
423
424.x-second {
425 -webkit-animation-delay: 0.9s;
426}
427
428@-webkit-keyframes dash-x{
429 from {
430 stroke-dashoffset: 12;
431 }
432 to {
433 stroke-dashoffset: 0;
434 }
435}
436
437/* Contact + Call interactions */
438.message_type_contact .message_wrapper,
439.message_type_call .message_wrapper {
440 width: auto;
441 margin-left: 30%;
442 margin-right: 30%;
443 display: flex;
444 flex-wrap: wrap;
445 background-color: #f2f2f2;
446 padding: 0;
Sébastien Blinf4f90282017-10-03 14:07:16 -0400447}
448
Sébastien Blinf4f90282017-10-03 14:07:16 -0400449.message_type_contact .message_wrapper:before,
450.message_type_call .message_wrapper:before {
451 display: none;
452}
453
454.message_type_call .message_wrapper:after,
455.message_type_contact .message_wrapper:after {
456 display: none;
457}
458
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400459.message_type_contact .text,
460.message_type_call .text {
461 align-self: center;
462 font-size: 1.2em;
463 padding: 1em;
Sébastien Blinf4f90282017-10-03 14:07:16 -0400464}
465
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400466/* file interactions */
Sébastien Blinf4f90282017-10-03 14:07:16 -0400467
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400468.message_type_data_transfer .message_wrapper {
Guillaume Roguez5b137be2018-02-21 10:44:58 -0500469 padding: 0;
470 width: 30%;
471 display: flex;
472 flex-wrap: wrap;
473}
474
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400475.accept, .refuse {
476 border-radius: 50%;
477 cursor: pointer;
478}
479
480.accept svg,
481.refuse svg {
482 padding: 8px;
483 width: 24px;
484 height: 24px;
485}
486
487.accept {
488 fill: #219d55;
489}
490
491.accept:hover {
492 fill: white;
493 background: #219d55;
494}
495
496.refuse {
497 fill: #dc2719;
498}
499
500.refuse:hover {
501 fill: white;
502 background: #dc2719;
503}
504
505.message_type_data_transfer .text {
506 padding: 1em;
507 text-align: left;
508 align-self: left;
509 max-width: calc(100% - 180px);
510}
511
512.message_type_data_transfer .filename {
513 cursor: pointer;
514 font-size: 1.1em;
Guillaume Roguez5b137be2018-02-21 10:44:58 -0500515 overflow: hidden;
516}
517
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400518.message_type_data_transfer .informations {
Guillaume Roguez5b137be2018-02-21 10:44:58 -0500519 color: #555;
520 font-size: 0.8em;
521}
522
523.message_progress_bar {
Guillaume Roguez5b137be2018-02-21 10:44:58 -0500524 width: 100%;
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400525 height: 1em;
Guillaume Roguez5b137be2018-02-21 10:44:58 -0500526 position: relative;
527 overflow: hidden;
528 background-color: #eee;
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400529 border-radius: 0;
Guillaume Roguez5b137be2018-02-21 10:44:58 -0500530 box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
531}
532
533.message_progress_bar > span {
534 display: inline;
535 height: 100%;
536 background-color: #01a2b8;
537 position: absolute;
538 overflow: hidden;
539}
540
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400541/* text interactions */
542
543.message_type_text .message_wrapper {
544 max-width: 40%;
545}
546
547.message_type_text .message_text {
548 padding: 0px;
549}
550
551.message_text {
552 hyphens: auto; /* When webkitgtk+ will supports this, intelligent word-breaking */
553 word-break: break-word;
554 word-wrap: break-word;
555 display: block;
556}
557
558pre {
559 font : inherit;
560 font-family : inherit;
561 font-size : inherit;
562 font-style : inherit;
563 font-variant : inherit;
564 font-weight : inherit;
565 margin: 0;
Guillaume Roguez5b137be2018-02-21 10:44:58 -0500566 padding: 0;
567}
Sébastien Blin82d0d2d2018-03-14 17:21:42 -0400568
569/* Media interactions */
570.media_wrapper img {
571 max-width: 800px;
572 max-height: 700px;
573 margin: 5px 0 0 0;
574}
575
576.playVideo {
577 background-color: rgba(0, 0, 0, 0.6);
578 height: 50px;
579 width: 50px;
580 border-radius: 5px;
581 float: right;
582 position: absolute;
583 top: calc(50% - 25px);
584 left: calc(50% - 25px);
585 z-index: 3;
586}
587
588.containerVideo {
589 width: 100%;
590 position: relative;
591}
592
593.playVideo svg {
594 height: 40px;
595 width: 40px;
596 margin: 5px;
597}
598
599/* Text interaction */
600.failure,
601.sending {
602 margin: 10px 10px;
603 color: #A0A0A0;
604 opacity: 0;
605 -webkit-animation-name: fade-in;
606 -webkit-animation-duration: 0.2s;
607 -webkit-animation-timing-function: ease-in-out;
608 -webkit-animation-delay: 0.4s;
609 -webkit-animation-fill-mode: forwards;
610 transition: opacity 0.5s ease-in-out;
611}
612
613/* Classic screens */
614@media screen and (max-width: 1920px), screen and (max-height: 1080px) {
615 .message_in {
616 padding-left: 15%;
617 }
618
619 .message_out {
620 padding-right: 15%;
621 }
622
623 .message_type_text .message_wrapper {
624 max-width: 60%;
625 }
626
627 /* File interactions */
628 .message_type_data_transfer .message_wrapper {
629 width: 40%;
630 }
631
632 /* Media interactions */
633 .media_wrapper img {
634 max-width: 450px;
635 max-height: 450px;
636 }
637}
638
639/* lower resolutions */
640@media screen and (max-width: 1000px), screen and (max-height: 480px) {
641 .message_in {
642 padding-left: 0;
643 }
644
645 .message_out {
646 padding-right: 0;
647 }
648
649 .message_type_text .message_wrapper {
650 max-width: 90%;
651 }
652
653 /* File interactions */
654 .message_type_data_transfer .message_wrapper {
655 width: 70%;
656 }
657
658 /* Media interactions */
659 .media_wrapper img {
660 max-width: 200px;
661 max-height: 200px;
662 }
663}
664
665/* Special case */
666@media screen and (max-width: 300px) {
667 .sender_image {
668 visibility: hidden;
669 display: none;
670 }
671
672 /* File interactions */
673 .message_type_data_transfer .left_buttons {
674 max-width: 100%;
675 }
676
677 .message_type_data_transfer .text {
678 max-width: 100%;
679 padding-left: 0;
680 }
681}
682
683.message_type_contact .message_wrapper:hover .timestamp_action,
684.message_type_call .message_wrapper:hover .timestamp_action {
685 opacity: 1;
686}
687
688.timestamp_action {
689 display: flex;
690 align-items: center;
691 justify-content: center;
692 opacity:0;
693 transition:visibility 0.3s linear,opacity 0.3s linear;
694}