discourse/app/assets/stylesheets/common/topic-timeline.scss
Kris 329e1055cf
DEV: merge mobile topic.scss styles into common directory (#31712)
This eliminates the mobile topic.scss file by moving its styles into the
relevant common files with breakpoints, and also removes some unused
legacy styles. There should be no major visual changes as a result.
2025-03-10 11:31:15 -04:00

333 lines
6.7 KiB
SCSS
Vendored

.timeline-loading {
width: 900px;
}
.timeline-container {
box-sizing: border-box;
z-index: z("timeline");
&.timeline-docked-bottom {
.timeline-footer-controls {
opacity: 0;
pointer-events: none;
cursor: default;
}
}
&.timeline-fullscreen.show {
max-height: 700px;
@media (prefers-reduced-motion: no-preference) {
transition: max-height 0.4s ease-out;
}
@media screen and (max-height: 425px) {
max-height: 75vh;
}
.topic-timeline {
.timeline-footer-controls {
display: flex;
flex-wrap: wrap;
max-width: calc(100% - 9em); // 9em is the width of the timeline
}
}
.timeline-controls {
display: table-cell;
vertical-align: top;
}
}
&.timeline-fullscreen {
max-height: 0;
position: fixed;
margin-left: 0;
background-color: var(--secondary);
bottom: 0;
left: 0;
right: 0;
border-top: 1px solid var(--primary-low);
box-shadow: var(--shadow-composer);
padding: 20px 0;
z-index: z("fullscreen");
@media (prefers-reduced-motion: no-preference) {
transition: max-height 0.3s ease-in;
}
@media screen and (max-height: 425px) {
padding-top: 10px;
}
.back-button {
display: none;
}
.topic-timeline {
width: 100%;
table-layout: fixed;
margin-left: 0;
margin-right: 0;
display: table;
touch-action: none;
.topic-category {
margin-bottom: 0.5rem;
}
.timeline-date-wrapper {
text-align: right;
@include ellipsis;
}
.post-excerpt {
max-width: 650px;
line-height: var(--line-height-large);
display: block;
@include line-clamp(8);
@media screen and (max-height: 425px) {
@include line-clamp(5);
}
}
.username {
color: var(--primary-high-or-secondary-low);
word-wrap: break-word;
font-weight: bold;
}
.title {
margin-top: 0;
padding-left: 1em;
display: table-cell;
vertical-align: top;
width: 100%;
h2 {
margin-top: 0;
display: block;
line-height: var(--line-height-medium);
font-size: var(--font-up-2);
@include line-clamp(4);
}
a {
color: var(--primary);
}
}
.timeline-last-read {
right: 0;
margin-left: 0;
.progress {
display: none;
}
}
.timeline-footer-controls {
display: none;
position: absolute;
bottom: 20px;
left: 10px;
.topic-admin-menu {
display: flex;
}
}
.timeline-scrollarea-wrapper {
display: table-cell;
padding-right: 1.5em;
width: 7em;
}
.timeline-scrollarea {
border-right: 1px solid var(--tertiary-low-or-tertiary-high);
border-left: none;
max-width: 120px;
.timeline-scroller {
position: relative;
margin-right: -1.5em;
padding-right: 1.5em;
justify-content: flex-end;
.timeline-scroller-content {
box-sizing: border-box;
max-width: 100%;
overflow: hidden;
text-align: right;
padding-left: 0;
padding-right: 1em;
}
.timeline-handle {
float: none;
width: 11px;
position: relative;
right: -6px;
}
}
.timeline-padding {
margin-left: 0;
margin-right: -1em;
}
}
}
.timeline-scrollarea-wrapper::after {
content: "";
display: table;
clear: both;
}
.start-date,
.now-date {
padding: 0.5em 0;
}
}
.topic-timeline {
transition: opacity 0.2s ease-in;
touch-action: none;
min-width: 6em;
.topic-admin-menu .btn {
height: 100%;
}
.timeline-controls {
margin-bottom: 1em;
}
.timeline-date-wrapper {
max-width: 9em;
overflow-wrap: anywhere;
}
.timeline-footer-controls {
// this is absolutely positioned to avoid
// adding extra height below short topics
// above the topic-footer-controls
position: absolute;
margin-top: 1em;
display: flex;
gap: 0.5em;
flex-wrap: wrap;
@media (prefers-reduced-motion: no-preference) {
transition: opacity 0.2s ease-in;
}
button:last-child {
margin-right: 0;
}
}
.start-date {
color: var(--primary-med-or-secondary-med);
}
.timeline-scrollarea {
margin-top: 0.5em;
margin-left: 0.5em;
border-left: 1px solid var(--tertiary-low-or-tertiary-high);
position: relative;
transform: translateZ(0);
}
.timeline-padding {
transition: height 0.15s ease-out;
cursor: pointer;
// this element has a click event
// the negative margin lets this element overlap
// the scrollarea's vertical track and thus it
// enables taps on the track to work
margin-left: -1em;
.widget-dragging & {
transition: none;
}
.dragging & {
transition: none;
}
}
.timeline-handle {
border-radius: 0.8em;
width: 0.35em;
background-color: var(--tertiary-low-or-tertiary-high);
height: 100%;
float: left;
z-index: z("base") + 1;
outline: 1px solid transparent;
margin-left: 0.5px;
}
.timeline-scroller-content {
box-sizing: border-box;
max-width: 100%;
overflow: hidden;
padding-left: 1em;
position: absolute; // prevents text length from impacting width
max-height: 3em; // this hides the date when the count + date would wrap to more than 2 lines
}
.timeline-ago {
color: var(--primary-med-or-secondary-med);
max-width: 4.6em;
overflow: hidden;
text-overflow: ellipsis;
}
.timeline-scroller {
@include unselectable;
margin-left: -0.22em;
cursor: ns-resize;
display: flex;
align-items: center;
.back-button {
margin-top: 1em;
}
}
.timeline-replies {
overflow: hidden;
overflow-wrap: break-word;
font-weight: bold;
}
.timeline-last-read {
position: absolute;
margin-left: -0.35em;
z-index: z("base") + 2; // above timeline-handle
.progress {
font-size: 0.8em;
color: var(--tertiary);
margin-right: 1em;
}
}
.back-button {
min-height: unset;
padding: 2px 5px;
}
.now-date {
display: inline-block;
color: var(--primary-med-or-secondary-med);
margin-top: 0.5em;
}
}
}