demarches-normaliennes/app/assets/stylesheets/02_utils.scss

225 lines
3.5 KiB
SCSS

@import "colors";
@import "constants";
// floats
.pull-left {
float: left;
}
.pull-right {
float: right;
}
.clearfix {
clear: both;
}
.inline {
display: inline;
}
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: none;
}
// text
.text-center,
.center {
text-align: center;
}
.text-right {
text-align: right;
}
.text-sm {
font-size: 14px !important;
}
.text-lg {
font-size: 18px;
}
.font-weight-bold {
font-weight: bold !important;
}
.font-weight-normal {
font-weight: normal !important;
}
.numbers-delimiter {
display: inline-block;
width: 5px;
}
.list-style-type-none {
list-style-type: none;
}
.empty-text {
font-size: 20px;
font-weight: bold;
text-align: center;
margin: 60px 0;
}
.empty-text-details {
margin-bottom: 60px;
text-align: center;
.empty-text + & {
margin-top: -50px;
}
}
.relative {
position: relative;
}
// display
.hidden {
display: none !important;
}
.visible-on-previous-hover {
visibility: hidden;
}
:hover + .visible-on-previous-hover {
visibility: visible;
}
.no-wrap {
white-space: nowrap;
}
// sizing
.width-100 {
width: 100%;
@media (max-width: $two-columns-breakpoint) {
&-mobile {
width: 100%;
}
}
}
.width-33 {
width: 33.33%;
@media (min-width: $two-columns-breakpoint) {
&-desktop {
width: 33.33%;
}
}
}
.width-66 {
width: 66.67%;
@media (min-width: $two-columns-breakpoint) {
&-desktop {
width: 66.67%;
}
}
}
// who known
.highlighted {
background-color: var(--background-contrast-yellow-moutarde); // from fr-badge--new
color: var(--text-action-high-grey);
background-clip: content-box;
}
.overflow-y-visible {
overflow: visible;
}
.super {
vertical-align: super;
}
.border-left {
border-left: 4px solid var(--background-contrast-grey);
padding-left: $default-padding;
}
// Labels that we only want for screen readers
// https://www.coolfields.co.uk/2016/05/text-for-screen-readers-only-updated/
.sr-only {
border: none;
clip: rect(1px, 1px, 1px, 1px);
clip-path: inset(50%);
height: 1px;
margin: -1px;
width: 1px;
overflow: hidden;
position: absolute !important;
word-wrap: normal !important;
}
.ml-auto {
margin-left: auto;
}
.truncate-80 {
width: 80%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
// generate spacer utility like bootstrap my-2 -> margin-left/right: 2 * $default-spacer
// using $direction.key as css modifier, $direction.values to set css properties
// scale it using $steps
$directions: (
"t": ("margin-top"),
"r": ("margin-right"),
"b": ("margin-bottom"),
"l": ("margin-left"),
"x": ("margin-left", "margin-right"),
"y": ("margin-top", "margin-bottom"),
"": ("margin")
);
$steps: (0, 1, 2, 3, 4, 5, 6, 7, 8);
@each $modifier, $properties in $directions {
@each $step in $steps {
@each $property in $properties {
.m#{$modifier}-#{$step} {
#{$property}: $step * $default-spacer;
}
}
}
}
$directions: (
"t": ("padding-top"),
"r": ("padding-right"),
"b": ("padding-bottom"),
"l": ("padding-left"),
"x": ("padding-left", "padding-right"),
"y": ("padding-top", "padding-bottom"),
"": ("padding")
);
$steps: (0, 1, 2, 3, 4, 5, 6, 7, 8);
@each $modifier, $properties in $directions {
@each $step in $steps {
@each $property in $properties {
.p#{$modifier}-#{$step} {
#{$property}: $step * $default-spacer;
}
}
}
}