artistry
Version:
A powerful and configurable stylesheet
239 lines (190 loc) • 5.72 kB
text/stylus
@require "card-settings.styl";
@require "../core/mixins.styl";
$card-header-margin = -($card-border-width + $card-padding);
.card-container {
--card-min-width: $card-min-width;
--card-max-width: $card-max-width;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(var(--card-min-width), var(--card-max-width)));
grid-gap: $card-gap;
& > .card,
& > .card-fillable.fillable {
margin: 0;
}
}
.card {
--card-handle-width: $card-handle-width;
display: flex;
flex-direction: column;
padding: 0;
margin: $card-margin 0;
border: $card-border-width solid $card-border-color;
color: $card-color;
background-color: $card-background-color;
box-shadow: $card-box-shadow;
transition: height $card-animation-time;
&:not(.card-square) {
border-radius: $card-border-radius;
& > *:first-child {
border-top-left-radius: $card-border-radius;
border-top-right-radius: $card-border-radius;
}
& > *:last-child {
border-bottom-left-radius: $card-border-radius;
border-bottom-right-radius: $card-border-radius;
}
}
& > *:first-child {
border-top-width: 0;
}
& > *:last-child {
border-bottom-width: 0;
}
&.card-type-success {
border-color: $card-success-border-color;
}
&.card-type-info {
border-color: $card-info-border-color;
}
&.card-type-warning {
border-color: $card-warning-border-color;
}
&.card-type-danger {
border-color: $card-danger-border-color;
}
&.card-handle-top {
border-top-width: var(--card-handle-width);
}
&.card-handle-right {
border-right-width: var(--card-handle-width);
}
&.card-handle-bottom {
border-bottom-width: var(--card-handle-width);
}
&.card-handle-left {
border-left-width: var(--card-handle-width);
}
$.card-handle-bold {
}
& > header,
& > footer,
& > .card-title {
display: flex;
//border: $card-border-width solid $card-border-color;
border-width: $card-border-width 0;
border-color: $card-border-color;
border-style: solid;
margin: 0;//(-1 * $card-border-width);
padding: $card-padding;
clearfix();
&:first-child {
margin-bottom: 0;
}
&:last-child {
margin-top: 0;
}
& > .card-toggle {
padding: 0;
margin: 0;
margin-left: auto;
height: 20px;
width: 20px;
font-weight: bold;
}
}
& > header,
& > .card-title {
background-color: $card-header-background-color;
color: $card-header-color;
font-weight: $card-header-font-weight;
}
& > footer {
background-color: $card-footer-background-color;
color: $card-footer-color;
font-weight: $card-footer-font-weight;
}
& > nav,
& > .card-nav {
display: block;
clearfix();
margin: 0;
padding: 0;
}
& > .card-content {
flex-grow: 1;
transition: max-height $card-animation-time;
&.card-content-space {
padding: $card-padding;
}
&.lock-contents:after {
border-bottom-right-radius: max(0, $card-border-radius - $card-border-width);
border-bottom-left-radius: max(0, $card-border-radius - $card-border-width);
}
}
&.card-closed,
&[data-closed=true] {
overflow: hidden;
& > div.card-content {
overflow: hidden;
padding-top: 0;
padding-bottom: 0;
max-height: 0;
}
}
&.card-run {
overflow: hidden;
}
}
.card-fillable.fillable
margin: $card-margin 0;
& > .fillable-content > .card
margin: 0;
.card-row {
display: block;
margin: $card-control-margin;
}
.card-section {
--card-control-min-width: $card-min-width;
--card-control-max-width: $card-max-width;
margin: ($card-control-margin / 2);
&.card-section-multi-column {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(var(--card-control-min-width), var(--card-control-max-width)));
grid-gap: $card-control-margin;
}
&.card-section-centered {
& > .card-control:not(.card-control-stacked) {
& > .card-control-title {
--card-control-margin: $card-control-margin;
width: calc(100% / 2 - var(--card-control-margin));
}
}
}
& > .card-control {
display: flex;
margin: 0;
& > .card-control-title {
font-weight: bold;
margin: ($card-control-margin / 2);
}
& > .card-control-data {
margin: ($card-control-margin / 2);
text-align: start;
}
&:not(.card-control-stacked) {
flex-direction: row;
align-items: center;
& > .card-control-title {
width: calc(var(--card-control-min-width) / 3);
text-align: end;
}
}
&.card-control-stacked {
flex-direction: column;
justify-items: start;
& > .card-control-title {
text-align: start;
}
}
}
}