gomuks/web/src/ui/timeline/TimelineEvent.css

273 lines
3.8 KiB
CSS

div.timeline-event {
width: 100%;
max-width: 100%;
overflow: hidden;
overflow-wrap: anywhere;
display: grid;
margin-top: .5rem;
grid-template:
"avatar gap sender sender" auto
"avatar gap content status" auto
/ 2.5rem .5rem 1fr 2rem;
&.highlight {
background-color: rgba(255, 255, 0, .1);
}
&.jump-highlight {
background-color: rgba(0, 255, 0, .2);
}
&.jump-highlight-fadeout {
transition: background-color 1s;
}
&:hover {
background-color: #eee;
&.highlight {
background-color: #eec;
}
&.jump-highlight {
background-color: #cec;
}
}
> div.sender-avatar {
grid-area: avatar;
width: 40px;
height: 40px;
margin-top: 2px;
}
> div.event-sender-and-time {
grid-area: sender;
display: flex;
align-items: center;
gap: .25rem;
> span.event-sender {
font-weight: bold;
}
> span.event-time, > span.event-edited {
font-size: .7rem;
color: #888;
}
}
> div.event-time-only {
grid-area: timestamp;
display: none;
align-items: end;
font-size: .7rem;
color: #888;
max-height: 1.25rem;
margin-left: .25rem;
}
> div.event-content {
grid-area: content;
overflow: hidden;
}
> div.event-send-status {
grid-area: status;
display: flex;
justify-content: right;
align-items: end;
max-height: 1.25rem;
> svg {
height: 16px;
}
&.error {
color: red;
}
&.sending, &.sent {
color: #ccc;
}
}
&.same-sender {
grid-template:
"timestamp content status" auto
/ 3rem 1fr 2rem;
margin-top: .25rem;
> div.sender-avatar, > div.event-sender-and-time {
display: none;
}
> div.event-time-only {
display: flex;
}
}
&.hidden-event {
grid-template:
"timestamp avatar content status" auto
/ 3rem 1.5rem 1fr 2rem;
> div.sender-avatar {
width: 1.5rem;
height: 1.5rem;
}
> div.event-sender-and-time {
display: none;
}
> div.event-time-only {
display: flex;
}
+ div.timeline-event.hidden-event {
margin-top: 0;
}
}
}
div.hidden-event > div.sender-avatar, blockquote.reply-body > div.reply-sender > div.sender-avatar {
margin-top: 0;
display: flex;
align-items: center;
}
div.date-separator {
display: flex;
align-items: center;
gap: .5rem;
> hr {
flex: 1;
opacity: .2;
}
}
div.decryption-error-body {
display: flex;
align-items: center;
> svg {
height: 20px;
color: red;
}
}
div.redacted-body, div.decryption-pending-body {
display: flex;
align-items: center;
color: #888;
> svg {
height: 20px;
}
}
div.member-body {
display: flex;
align-items: center;
gap: .25rem;
}
div.message-text {
&.plaintext-body {
white-space: pre-wrap;
}
&.notice-message {
opacity: .6;
}
&.emote-message::before {
content: "* " attr(data-event-sender) " ";
}
}
div.html-body {
overflow: hidden;
img[data-mx-emoticon] {
vertical-align: middle;
}
img.hicli-custom-emoji {
vertical-align: middle;
height: 24px;
width: auto;
max-width: 72px;
}
img.hicli-sizeless-inline-img {
height: 24px;
width: auto;
max-width: 72px;
}
span.hicli-spoiler {
filter: blur(4px);
transition: filter .5s;
cursor: pointer;
&.spoiler-revealed {
filter: none;
}
&:not(.spoiler-revealed) a {
pointer-events: none;
}
}
blockquote {
border-left: 2px solid #ccc;
padding-left: .5rem;
}
pre {
width: 100%;
max-height: max(50vh, 400px);
overflow: auto;
}
h1, h2, h3, h4, h5, h6 {
margin: 0 0 .5rem;
}
p, ul, ol, dl, table, pre, blockquote {
&:not(:last-child) {
margin: 0 0 .25rem;
}
&:last-child {
margin: 0;
}
}
}
div.media-container {
&.video-container {
width: 100%;
height: 240px;
}
> a {
display: flex;
align-items: center;
text-decoration: none;
color: inherit;
}
> img {
max-width: 100%;
max-height: 100%;
}
> video {
min-width: 320px;
max-width: 100%;
height: 100%;
}
}