MINI Sh3ll
/* ------------------------------------------------------------------------------
*
* # Timeline
*
* Styles for timeline in 3 layouts: left, right and centered
*
* ---------------------------------------------------------------------------- */
// Check if component is enabled
@if $enable-timeline {
// Base
.timeline {
position: relative;
// Dots base
&:before,
&:after {
content: "";
position: absolute;
left: 50%;
margin-left: -($timeline-line-width);
background-color: $timeline-line-color;
z-index: 1;
@include size($timeline-line-width * 2);
@include border-radius($border-radius-circle);
}
// Top dot
&:before {
top: 0;
}
// Bottom dot
&:after {
bottom: 0;
}
}
// Container
.timeline-container {
position: relative;
padding-top: ($spacer / 2);
margin-top: -($spacer / 2);
padding-bottom: 1px;
// Vertical line
&:after {
content: "";
position: absolute;
top: 0;
left: 50%;
margin-left: -($timeline-line-width / 2);
background-color: $timeline-line-color;
height: 100%;
width: $timeline-line-width;
z-index: -1;
}
}
// Row
.timeline-row {
position: relative;
}
// Date
.timeline-date {
text-align: center;
background-color: $body-bg;
position: relative;
z-index: 1;
padding-top: $spacer;
padding-bottom: $spacer;
margin-bottom: $spacer;
// Dots base
&:before,
&:after {
content: "";
position: absolute;
left: 50%;
margin-left: -($timeline-line-width);
background-color: $timeline-line-color;
z-index: 1;
@include size($timeline-line-width * 2);
@include border-radius($border-radius-circle);
}
// Top dot
&:before {
top: 0;
}
// Bottom dot
&:after {
bottom: 0;
}
// Change bg color to card bg if inside card
.card & {
background-color: $card-bg;
}
}
// Time
.timeline-time {
text-align: center;
padding-top: $spacer;
padding-bottom: $spacer;
background-color: $body-bg;
position: relative;
margin-bottom: $spacer;
// Dots base
&:before,
&:after {
content: "";
position: absolute;
left: 50%;
margin-left: -($timeline-line-width);
background-color: $timeline-line-color;
@include size($timeline-line-width * 2);
@include border-radius($border-radius-circle);
}
// Top dot
&:before {
top: 0;
}
// Bottom dot
&:after {
bottom: 0;
}
// Change bg color to card bg if inside card
.card & {
background-color: $card-bg;
}
// Hide dots no desktop
@include media-breakpoint-up(md) {
&:before,
&:after {
content: none;
}
}
}
// Icon and image
.timeline-icon {
margin: 0 auto $spacer auto;
background-color: $timeline-icon-bg;
border: $timeline-icon-border-width solid $body-bg;
@include size($timeline-icon-size);
@include border-radius($border-radius-circle);
// Change border color if it's inside card
.card & {
border-color: $card-bg;
}
// Icon
div {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 0 0 $timeline-line-width $timeline-line-color inset;
@include border-radius($border-radius-circle);
// Hide border if icon wrapper has dark color
&[class*=bg-]:not(.bg-white):not(.bg-light):not(.bg-transparent) {
box-shadow: none;
}
// Icon
> i {
top: 0;
}
}
// Image
img {
@include size($timeline-icon-size - rem-calc($timeline-icon-border-width * 2));
@include border-radius($border-radius-circle);
}
}
//
// Responsive config
//
@include media-breakpoint-up(md) {
// Positions
// ------------------------------
// Center layout
.timeline-center {
// Left blocks
.timeline-row-left {
margin-right: 50%;
padding-right: $timeline-icon-size - rem-calc($timeline-icon-border-width);
}
// Right blocks
.timeline-row-right {
margin-left: 50%;
padding-left: $timeline-icon-size - rem-calc($timeline-icon-border-width);
}
}
// Left layout
.timeline-left {
// Vertical line
.timeline-container:after,
&:before,
&:after,
.timeline-date:before,
.timeline-date:after {
left: ($timeline-icon-size / 2);
}
// Content padding
.timeline-row,
.timeline-date {
padding-left: ($timeline-icon-size + $timeline-content-padding-x);
}
}
// Right layout
.timeline-right {
// Vertical line
.timeline-container:after,
&:before,
&:after,
.timeline-date:before,
.timeline-date:after {
left: auto;
right: ($timeline-icon-size / 2);
margin-left: 0;
margin-right: -($timeline-line-width);
}
.timeline-container:after {
margin-right: -($timeline-line-width / 2);
}
// Content padding
.timeline-row,
.timeline-date {
padding-right: ($timeline-icon-size + $timeline-content-padding-x);
}
}
// Reduce date vertical spacing in both
.timeline-left .timeline-date,
.timeline-right .timeline-date {
padding-top: ($spacer / 2);
padding-bottom: ($spacer / 2);
}
// Icon
// ------------------------------
// Base
.timeline-icon {
position: absolute;
top: ($spacer / 2);
// Horizontal line base
&:after {
content: "";
position: absolute;
top: 50%;
margin-top: -($timeline-line-width / 2);
height: $timeline-line-width;
width: ($timeline-icon-size / 2) - rem-calc($timeline-icon-border-width * 2);
background-color: $timeline-line-color;
z-index: 1;
}
}
// In left layout
.timeline-left {
.timeline-icon {
left: 0;
// Right line
&:after {
left: 100%;
margin-left: $timeline-icon-border-width;
}
}
}
// In right layout
.timeline-right {
.timeline-icon {
right: 0;
// Left line
&:after {
right: 100%;
margin-right: $timeline-icon-border-width;
}
}
}
// In centered layout
.timeline-center {
// In left block
.timeline-row-left {
.timeline-icon {
left: 100%;
margin-left: -($timeline-icon-size / 2);
// Left horizontal line
&:after {
right: 100%;
margin-right: $timeline-icon-border-width;
}
}
}
// In right block
.timeline-row-right {
.timeline-icon {
right: 100%;
margin-right: -($timeline-icon-size / 2);
// Right horizontal line
&:after {
left: 100%;
margin-left: $timeline-icon-border-width;
}
}
}
// Full width post
.timeline-row-full .timeline-icon {
position: static;
// Remove horizontal line
&:after {
content: none;
}
}
}
// Time
// ------------------------------
.timeline-time {
padding: 0;
text-align: inherit;
background-color: transparent;
// Hide dots
&:before {
content: none;
}
}
// In left and right layouts
.timeline-left,
.timeline-right {
.timeline-time {
padding-top: ($spacer / 2);
margin-bottom: $spacer;
padding-left: ($timeline-content-padding-x / 2);
}
}
.timeline-right .timeline-time {
text-align: right;
padding-left: 0;
padding-right: ($timeline-content-padding-x / 2);
}
// In center layout
.timeline-center {
.timeline-time,
.timeline-row-full .timeline-time {
position: absolute;
left: 100%;
top: ($spacer / 2) + rem-calc($timeline-icon-border-width);
width: 100%;
padding-left: $timeline-icon-size - rem-calc($timeline-icon-border-width);
}
// Right aligned post
.timeline-row-right,
.timeline-row-full {
.timeline-time {
left: auto;
right: 100%;
padding-left: 0;
padding-right: $timeline-icon-size - rem-calc($timeline-icon-border-width);
text-align: right;
}
}
// Full width post
.timeline-row-full .timeline-time {
right: 50%;
top: $timeline-icon-border-width;
}
}
}
}
OHA YOOOO