X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fsass%2Finclude%2F_mixins.scss;h=0634f467748b1309de6f50431ece0b5b5ec3ee97;hb=3eb7ee658db32d270553046eeb77afc679a71466;hp=99ca25f9cfdf89ce6418a40a6fe894c19fa10bab;hpb=f33dc6ab2db1c733f09dcb039b8bf46c69854753;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/sass/include/_mixins.scss b/client/src/sass/include/_mixins.scss index 99ca25f9c..0634f4677 100644 --- a/client/src/sass/include/_mixins.scss +++ b/client/src/sass/include/_mixins.scss @@ -1,7 +1,10 @@ -@import '_variables'; +@use 'sass:math'; +@use '_variables' as *; @mixin disable-default-a-behaviour { - &:hover, &:focus, &:active { + &:hover, + &:focus, + &:active { text-decoration: none !important; outline: none !important; } @@ -22,52 +25,47 @@ @mixin ellipsis-multiline($font-size: 16px, $number-of-lines: 2) { display: block; /* Fallback for non-webkit */ - display: -webkit-box; - max-height: $font-size * $number-of-lines; + display: -webkit-box; /* stylelint-disable-line value-no-vendor-prefix */ + -webkit-line-clamp: $number-of-lines; /* Fallback for non-webkit */ font-size: $font-size; line-height: $font-size; overflow: hidden; text-overflow: ellipsis; + max-height: $font-size * $number-of-lines; } -@mixin prefix($property, $parameters...) { - @each $prefix in -webkit-, -moz-, -ms-, -o-, "" { - #{$prefix}#{$property}: $parameters; +@mixin fade-text ($fade-after, $background-color) { + position: relative; + overflow: hidden; + + &::after { + content: ''; + pointer-events: none; + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + background: linear-gradient(transparent $fade-after, $background-color); } } -@mixin peertube-word-wrap { +@mixin peertube-word-wrap ($with-hyphen: true) { word-break: break-word; word-wrap: break-word; overflow-wrap: break-word; - -webkit-hyphens: auto; - -ms-hyphens: auto; - -moz-hyphens: auto; - hyphens: auto; + + @if $with-hyphen { + hyphens: auto; + } } @mixin apply-svg-color ($color) { - ::ng-deep svg { - path[fill="#000000"], - g[fill="#000000"], - rect[fill="#000000"], - circle[fill="#000000"], - polygon[fill="#000000"] { - fill: $color; - } - - path[stroke="#000000"], - g[stroke="#000000"], - rect[stroke="#000000"], - circle[stroke="#000000"], - polygon[stroke="#000000"] { - stroke: $color; - } - - stop[stop-color="#000000"] { - stop-color: $color; - } + ::ng-deep .feather, + ::ng-deep .material, + ::ng-deep .misc { + color: $color; } } @@ -87,22 +85,25 @@ } @mixin peertube-input-text($width) { + padding: 0 15px; display: inline-block; height: $button-height; width: $width; - color: var(--inputForegroundColor); - background-color: var(--inputBackgroundColor); + color: pvar(--inputForegroundColor); + background-color: pvar(--inputBackgroundColor); border: 1px solid #C6C6C6; border-radius: 3px; - padding-left: 15px; - padding-right: 15px; font-size: 15px; &::placeholder { - color: var(--inputPlaceholderColor); + color: pvar(--inputPlaceholderColor); } - @media screen and (max-width: $width) { + &[readonly] { + opacity: 0.7; + } + + @media screen and (max-width: calc(#{$width} + 40px)) { width: 100%; } } @@ -112,131 +113,198 @@ min-height: $button-height; padding-top: 0; padding-bottom: 0; + flex-wrap: nowrap; - .input-group-text{ + .input-group-text { font-size: 14px; - color: gray; + color: #808080; } } @mixin peertube-textarea ($width, $height) { @include peertube-input-text($width); - color: var(--textareaForegroundColor); - background-color: var(--textareaBackgroundColor); + color: pvar(--textareaForegroundColor); + background-color: pvar(--textareaBackgroundColor); height: $height; padding: 5px 15px; font-size: 15px; } @mixin orange-button { - @include button-focus(var(--mainColorLightest)); + @include button-focus(pvar(--mainColorLightest)); - &, &:active, &:focus { + &, + &:active, + &:focus { color: #fff; - background-color: var(--mainColor); + background-color: pvar(--mainColor); } &:hover { color: #fff; - background-color: var(--mainHoverColor); + background-color: pvar(--mainHoverColor); } - &[disabled], &.disabled { + &[disabled], + &.disabled { cursor: default; color: #fff; background-color: #C6C6C6; } my-global-icon { - @include apply-svg-color(#fff) + @include apply-svg-color(#fff); + } +} + +@mixin orange-button-inverted { + @include button-focus(pvar(--mainColorLightest)); + + border: 2px solid pvar(--mainColor); + font-weight: $font-semibold; + + &, + &:active, + &:focus { + color: pvar(--mainColor); + background-color: pvar(--mainBackgroundColor); + } + + &:hover { + color: pvar(--mainColor); + background-color: pvar(--mainColorLightest); + } + + &[disabled], + &.disabled { + cursor: default; + color: pvar(--mainColor); + background-color: #C6C6C6; + } + + my-global-icon { + @include apply-svg-color(pvar(--mainColor)); } } @mixin tertiary-button { @include button-focus($grey-button-outline-color); - color: $grey-foreground-color; + color: pvar(--greyForegroundColor); background-color: transparent; - &[disabled], &.disabled { + &[disabled], + .disabled { cursor: default; } my-global-icon { - @include apply-svg-color(transparent) + @include apply-svg-color(transparent); } } @mixin grey-button { @include button-focus($grey-button-outline-color); - &, &:active, &:focus { - background-color: $grey-background-color; - color: $grey-foreground-color; - } + background-color: $grey-background-color; + color: pvar(--greyForegroundColor); - &:hover, &:active, &:focus, &[disabled], &.disabled { - color: $grey-foreground-color; + &:hover, + &:active, + &:focus, + &[disabled], + &.disabled { + color: pvar(--greyForegroundColor); background-color: $grey-background-hover-color; } - &[disabled], &.disabled { + &[disabled], + &.disabled { cursor: default; } my-global-icon { - @include apply-svg-color($grey-foreground-color) + @include apply-svg-color(pvar(--greyForegroundColor)); + } +} + +@mixin danger-button { + $color: lighten($color: #c54130, $amount: 10); + $text: #fff6f5; + + @include button-focus(scale-color($color, $alpha: -95%)); + + background-color: $color; + color: $text; + + &:hover, + &:active, + &:focus, + &[disabled], + &.disabled { + background-color: lighten($color: $color, $amount: 10); + } + + &[disabled], + &.disabled { + cursor: default; + } + + my-global-icon { + @include apply-svg-color($text); } } @mixin peertube-button { - border: none; + @include padding(0, 17px, 0, 13px); + + border: 0; font-weight: $font-semibold; font-size: 15px; height: $button-height; line-height: $button-height; - border-radius: 3px; + // FIXME: because of primeng that redefines border-radius of all input[type="..."] + border-radius: 3px !important; text-align: center; - padding: 0 17px 0 13px; cursor: pointer; } @mixin peertube-button-link { - display: inline-block; - @include disable-default-a-behaviour; @include peertube-button; -} -@mixin peertube-button-outline { display: inline-block; +} +@mixin peertube-button-outline { @include disable-default-a-behaviour; @include peertube-button; + display: inline-block; border: 1px solid; } @mixin button-with-icon($width: 20px, $margin-right: 3px, $top: -1px) { + display: inline-flex; + align-items: center; + line-height: normal !important; + my-global-icon { + @include margin-right($margin-right); + position: relative; width: $width; - margin-right: $margin-right; top: $top; } } -@mixin peertube-button-file ($width) { +@mixin peertube-file { position: relative; overflow: hidden; display: inline-block; - width: $width; min-height: 30px; - @include peertube-button; - @include orange-button; - input[type=file] { position: absolute; top: 0; @@ -244,16 +312,23 @@ width: 100%; height: 100%; font-size: 100px; - text-align: right; + text-align: end; filter: alpha(opacity=0); opacity: 0; outline: none; - background: white; + background: #fff; cursor: inherit; display: block; } } +@mixin peertube-button-file ($width) { + @include peertube-file; + @include peertube-button; + + width: $width; +} + @mixin icon ($size) { display: inline-block; background-repeat: no-repeat; @@ -264,18 +339,12 @@ cursor: pointer; } -@mixin select-arrow-down { - top: 50%; - right: calc(0% + 15px); - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border: 5px solid rgba(0, 0, 0, 0); - border-top-color: #000; - margin-top: -2px; - z-index: 100; +@mixin responsive-width ($width) { + width: $width; + + @media screen and (max-width: $width) { + width: 100%; + } } @mixin peertube-select-container ($width) { @@ -283,8 +352,8 @@ margin: 0; width: $width; border-radius: 3px; - color: var(--inputForegroundColor); - background: var(--inputBackgroundColor); + color: pvar(--inputForegroundColor); + background: pvar(--inputBackgroundColor); position: relative; font-size: 15px; @@ -295,27 +364,38 @@ cursor: default; } } + select[disabled] { + background-color: #f9f9f9; + } @media screen and (max-width: $width) { width: 100%; } - &:after { - @include select-arrow-down; + &::after { + top: 50%; + right: calc(0% + 15px); + content: ' '; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border: 5px solid rgba(0, 0, 0, 0); + border-top-color: #000; + margin-top: -2px; + z-index: 100; } select { padding: 0 35px 0 12px; - width: calc(100% + 2px); position: relative; - left: 1px; border: 1px solid #C6C6C6; background: transparent none; appearance: none; cursor: pointer; height: $button-height; text-overflow: ellipsis; - color: var(--mainForegroundColor); + color: pvar(--mainForegroundColor); &:focus { outline: none; @@ -330,43 +410,77 @@ color: #000; } } + + &.peertube-select-button { + @include grey-button; + + select, + option { + font-weight: $font-semibold; + color: pvar(--greyForegroundColor); + border: 0; + } + } } -// Thanks: https://codepen.io/triss90/pen/XNEdRe/ +// Thanks: https://codepen.io/manabox/pen/raQmpL @mixin peertube-radio-container { - input[type="radio"] { - display: none; - - & + label { - font-weight: $font-regular; - cursor: pointer; - - &:before { - position: relative; - top: -2px; - content: ''; - background: #fff; - border-radius: 100%; - border: 1px solid #000; - display: inline-block; - width: 15px; - height: 15px; - vertical-align: middle; - cursor: pointer; - text-align: center; - margin-right: 10px; - } - } + [type=radio]:checked, + [type=radio]:not(:checked) { + position: absolute; + left: -9999px; + } - &:checked + label:before { - background-color: #000; - box-shadow: inset 0 0 0 4px #fff; - } + [type=radio]:checked + label, + [type=radio]:not(:checked) + label { + position: relative; + padding-left: 28px; + cursor: pointer; + line-height: 20px; + display: inline-block; + font-size: 15px; + font-weight: $font-regular; + } - &:focus + label:before { - outline: none; - border-color: #000; - } + [type=radio]:checked + label::before, + [type=radio]:not(:checked) + label::before { + content: ''; + position: absolute; + left: 0; + top: 0; + width: 18px; + height: 18px; + border: 1px solid #C6C6C6; + border-radius: 100%; + background: #fff; + } + + [type=radio]:checked + label::after, + [type=radio]:not(:checked) + label::after { + content: ''; + width: 10px; + height: 10px; + background: pvar(--mainColor); + position: absolute; + top: 4px; + left: 4px; + border-radius: 100%; + transition: all 0.2s ease; + } + [type=radio]:not(:checked) + label::after { + opacity: 0; + transform: scale(0); + } + [type=radio]:checked + label::after { + opacity: 1; + transform: scale(1); + } + + .form-group-description { + display: block; + margin-top: -10px; + margin-bottom: 10px; + margin-left: 29px; } } @@ -375,10 +489,10 @@ position: absolute; &:focus + span { - box-shadow: #{$focus-box-shadow-form} var(--mainColorLightest); + box-shadow: #{$focus-box-shadow-form} pvar(--mainColorLightest); } - & + span { + + span { position: relative; width: 18px; min-width: 18px; @@ -388,7 +502,7 @@ vertical-align: middle; cursor: pointer; - &:after { + &::after { content: ''; position: absolute; top: calc(2px - #{$border-width}); @@ -404,40 +518,96 @@ &:checked + span { border-color: transparent; - background: var(--mainColor); + background: pvar(--mainColor); animation: jelly 0.6s ease; - &:after { + &::after { opacity: 1; transform: rotate(45deg) scale(1); } } - & + span + span { + + span + span { + @include margin-left(5px); + font-size: 15px; font-weight: $font-regular; - margin-left: 5px; cursor: pointer; display: inline; } &[disabled] + span, - &[disabled] + span + span{ + &[disabled] + span + span { opacity: 0.5; cursor: default; } } +@mixin table-badge { + border-radius: 2px; + padding: 1/4em 1/2em; + text-transform: uppercase; + font-weight: $font-bold; + font-size: 12px; + letter-spacing: 1/3px; -@mixin avatar ($size) { - object-fit: cover; - border-radius: 50%; + &.badge-banned, + &.badge-red { + background-color: #ffcdd2; + color: #c63737; + } + + &.badge-banned { + text-decoration: line-through; + } + + &.badge-yellow { + background-color: #feedaf; + color: #8a5340; + } + + &.badge-brown { + background-color: #ffd8b2; + color: #805b36; + } + + &.badge-green { + background-color: #c8e6c9; + color: #256029; + } + + &.badge-blue { + background-color: #b3e5fc; + color: #23547b; + } + + &.badge-purple { + background-color: #eccfff; + color: #694382; + } +} + +@mixin actor-avatar-size ($size) { + display: inline-block; width: $size; height: $size; min-width: $size; min-height: $size; } +@mixin actor-counters ($separator-margin: 10px) { + color: pvar(--greyForegroundColor); + font-size: 16px; + display: flex; + align-items: center; + + > *:not(:last-child)::after { + content: '•'; + margin: 0 $separator-margin; + color: pvar(--mainColor); + } +} + @mixin chevron ($size, $border-width) { border-style: solid; border-width: $border-width $border-width 0 0; @@ -464,129 +634,42 @@ @mixin in-content-small-title { text-transform: uppercase; - color: var(--mainColor); + color: pvar(--mainColor); font-weight: $font-bold; font-size: 13px; } @mixin settings-big-title { text-transform: uppercase; - color: var(--mainColor); + color: pvar(--mainColor); font-weight: $font-bold; font-size: 110%; margin-bottom: 10px; } -@mixin actor-owner { - @include disable-default-a-behaviour; - - font-size: 13px; - margin-top: 4px; - color: var(--mainForegroundColor); - - span:hover { - opacity: 0.8; - } - - img { - @include avatar(18px); - - margin-left: 7px; - position: relative; - top: -2px; - } -} - -@mixin sub-menu-with-actor { - height: max-content; - display: flex; - flex-direction: column; - align-items: flex-start; - - .actor { - display: flex; - margin-top: 20px; - margin-bottom: 20px; - - img { - @include avatar(80px); - - margin-right: 20px; - } - - .actor-info { - display: flex; - flex-direction: column; - justify-content: center; - - .actor-names { - display: flex; - align-items: center; - flex-wrap: wrap; - - .actor-display-name { - font-size: 23px; - font-weight: $font-bold; - margin-right: 7px; - } - - .actor-name { - position: relative; - top: 3px; - font-size: 14px; - color: $grey-actor-name; - } - } - - .actor-lower { - grid-area: lower; - } - - .actor-followers { - font-size: 15px; - } - - .actor-owner { - @include actor-owner; - } - } - } - - .links { - margin-top: 0; - margin-bottom: 15px; - - a { - margin-top: 0; - margin-bottom: 0; - text-transform: uppercase; - font-weight: 600; - font-size: 110%; - - @media screen and (max-width: $mobile-view) { - font-size: 130%; - } - } - } -} - @mixin create-button { @include peertube-button-link; @include orange-button; @include button-with-icon(20px, 5px, -1px); } -@mixin row-blocks { +@mixin row-blocks ($column-responsive: true) { display: flex; min-height: 130px; padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px solid #C6C6C6; - @media screen and (max-width: 800px) { - flex-direction: column; - height: auto; - align-items: center; + @media screen and (max-width: $small-view) { + @if $column-responsive { + flex-direction: column; + height: auto; + align-items: center; + } @else { + min-height: initial; + padding-bottom: 10px; + margin-bottom: 10px; + } } } @@ -594,26 +677,42 @@ padding: 6px 15px; my-global-icon { + @include margin-right(10px); + width: 22px; opacity: .7; - - margin-right: 10px; position: relative; top: -2px; } } -@mixin progressbar { +@mixin progressbar($small: false) { background-color: $grey-background-color; display: flex; height: 1rem; overflow: hidden; font-size: 0.75rem; border-radius: 0.25rem; + position: relative; + + span { + position: absolute; + color: $grey-foreground-color; + @if $small { + top: -1px; + } + + &:nth-of-type(1) { + left: .2rem; + } + &:nth-of-type(2) { + right: .2rem; + } + } .progress-bar { - color: var(--mainBackgroundColor); - background-color: var(--mainColor); + color: pvar(--mainBackgroundColor); + background-color: pvar(--mainColor); display: flex; flex-direction: column; justify-content: center; @@ -622,7 +721,11 @@ transition: width 0.6s ease; &.secondary { - background-color: var(--secondaryColor); + background-color: pvar(--secondaryColor); + } + + &.red { + background-color: lighten($color: #c54130, $amount: 10); } } } @@ -633,23 +736,25 @@ padding: 0.75rem 1rem; margin-bottom: 1rem; list-style: none; - background-color: var(--submenuColor); + background-color: pvar(--submenuBackgroundColor); border-radius: 0.25rem; .breadcrumb-item { display: flex; a { - color: var(--mainColor); + color: pvar(--mainColor); } - & + .breadcrumb-item { - padding-left: 0.5rem; + + .breadcrumb-item { + @include padding-left(0.5rem); + &::before { + @include padding-right(0.5rem); + display: inline-block; - padding-right: 0.5rem; color: #6c757d; - content: "/"; + content: '/'; } } @@ -664,13 +769,13 @@ flex-wrap: wrap; margin: 0 -5px; - & > div { + > div { box-sizing: border-box; - flex: 0 0 percentage(1/3); + flex: 0 0 percentage(math.div(1, 3)); padding: 0 5px; margin-bottom: 10px; - & > a { + > a { @include disable-default-a-behaviour; text-decoration: none; @@ -685,102 +790,33 @@ } } - & > a, - & > div { + > a, + > div { padding: 20px; - background: var(--submenuColor); + background: pvar(--submenuBackgroundColor); border-radius: 4px; box-sizing: border-box; height: 100%; } } - .dashboard-num, .dashboard-text { + .dashboard-num, + .dashboard-text { text-align: center; font-size: 130%; - line-height: 21px; - color: var(--mainForegroundColor); + color: pvar(--mainForegroundColor); line-height: 30px; margin-bottom: 20px; } .dashboard-label { font-size: 90%; - color: var(--inputPlaceholderColor); + color: pvar(--inputPlaceholderColor); text-align: center; } } -@mixin ng2-tags { - ::ng-deep { - .ng2-tag-input { - border: none !important; - } - - .ng2-tags-container { - display: flex; - align-items: center; - border: 1px solid #C6C6C6; - border-radius: 3px; - padding: 5px !important; - height: max-content; - - &:focus-within { - box-shadow: #{$focus-box-shadow-form} var(--mainColorLightest); - } - } - - tag-input-form { - input { - height: 30px !important; - font-size: 12px !important; - - background-color: var(--mainBackgroundColor) !important; - color: var(--mainForegroundColor) !important; - } - } - - tag { - background-color: $grey-background-color !important; - color: #000 !important; - border-radius: 3px !important; - font-size: 12px !important; - height: 30px !important; - line-height: 30px !important; - margin: 0 5px 0 0 !important; - cursor: default !important; - padding: 0 8px 0 10px !important; - - div { - height: 100% !important; - } - } - - delete-icon { - cursor: pointer !important; - height: auto !important; - vertical-align: middle !important; - padding-left: 6px !important; - - svg { - position: relative; - top: -1px; - height: auto !important; - vertical-align: middle !important; - - path { - fill: $grey-foreground-color !important; - } - } - - &:hover { - transform: none !important; - } - } - } -} - -@mixin divider($color: var(--submenuColor), $background: var(--mainBackgroundColor)) { +@mixin divider($color: pvar(--submenuBackgroundColor), $background: pvar(--mainBackgroundColor)) { width: 95%; border-top: .05rem solid $color; height: .05rem; @@ -804,35 +840,34 @@ } @mixin chip { + --chip-radius: 5rem; + --chip-padding: .2rem .4rem; $avatar-height: 1.2rem; align-items: center; - border-radius: 5rem; + border-radius: var(--chip-radius); display: inline-flex; font-size: 90%; - color: var(--mainForegroundColor); + color: pvar(--mainForegroundColor); height: $avatar-height; line-height: 1rem; margin: .1rem; max-width: 320px; overflow: hidden; - padding: .2rem .4rem; + padding: var(--chip-padding); text-decoration: none; text-overflow: ellipsis; vertical-align: middle; white-space: nowrap; - .avatar { - margin-left: -.4rem; - margin-right: .2rem; - height: $avatar-height; - width: $avatar-height; + &.rectangular { + --chip-radius: .2rem; + --chip-padding: .2rem .3rem; + } - border-radius: 50%; - display: inline-block; - line-height: 1.25; - position: relative; - vertical-align: middle; + my-actor-avatar { + @include margin-left(-.4rem); + @include margin-right(.2rem); } &.two-lines { @@ -840,50 +875,159 @@ height: $avatar-height; - .avatar { - height: $avatar-height; - width: $avatar-height; + my-actor-avatar { + @include actor-avatar-size($avatar-height); } div { + margin: 0 .1rem; + display: flex; flex-direction: column; height: $avatar-height; - margin-left: .1rem; - margin-right: .1rem; justify-content: center; } } } -@mixin empty-state { - min-height: 40vh; - max-height: 500px; +// applies ratio (default to 16:9) to a child element (using $selector) only using +// an immediate's parent size. This allows to set a ratio without explicit +// dimensions, as width/height cannot be computed from each other. +@mixin block-ratio ($selector: 'div', $inverted-ratio: math.div(9, 16)) { + $padding-percent: percentage($inverted-ratio); - display: flex; - justify-content: center; - align-items: center; + position: relative; + height: 0; + width: 100%; + padding-top: $padding-percent; + + #{$selector} { + position: absolute; + width: 100%; + height: 100%; + top: 0; + + @content; + } } -@mixin admin-sub-header-responsive ($horizontal-margins) { - flex-direction: column; +@mixin sub-menu-h1 { + ::ng-deep h1 { + font-size: 1.3rem; + border-bottom: 2px solid $grey-background-color; + padding-bottom: 15px; + margin-bottom: $sub-menu-margin-bottom; + + > span > my-global-icon, + > my-global-icon { + @include margin-right(10px); + width: 24px; + height: 24px; + vertical-align: top; + } - .form-sub-title { - margin-right: 0px !important; - margin-bottom: 10px; - text-align: center; + .badge { + @include margin-left(7px); + vertical-align: top; + } } +} - .admin-sub-nav { - display: block; - overflow-x: auto; - white-space: nowrap; - height: 50px; - padding: 10px 0; - width: calc(100vw - #{$horizontal-margins*2}); +@mixin play-icon ($width, $height) { + width: 0; + height: 0; - a { - margin-left: 5px; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%) scale(0.5); + + border-top: #{math.div($height, 2)} solid transparent; + border-bottom: #{math.div($height, 2)} solid transparent; + + border-left: $width solid rgba(255, 255, 255, 0.95); +} + +@mixin on-small-main-col () { + :host-context(.main-col:not(.expanded)) { + @media screen and (max-width: $small-view + $menu-width) { + @content; + } + } + + :host-context(.main-col.expanded) { + @media screen and (max-width: $small-view) { + @content; } } } + +@mixin on-mobile-main-col () { + :host-context(.main-col:not(.expanded)) { + @media screen and (max-width: $mobile-view + $menu-width) { + @content; + } + } + + :host-context(.main-col.expanded) { + @media screen and (max-width: $mobile-view) { + @content; + } + } +} + +@mixin margin ($block-start, $inline-end, $block-end, $inline-start) { + @include margin-left($inline-start); + @include margin-right($inline-end); + + margin-top: $block-start; + margin-bottom: $block-end; +} + +@mixin padding ($block-start, $inline-end, $block-end, $inline-start) { + @include padding-left($inline-start); + @include padding-right($inline-end); + + padding-top: $block-start; + padding-bottom: $block-end; +} + +@mixin margin-left ($value) { + @supports (margin-inline-start: $value) { + margin-inline-start: $value; + } + + @supports not (margin-inline-start: $value) { + margin-left: $value; + } +} + +@mixin margin-right ($value) { + @supports (margin-inline-end: $value) { + margin-inline-end: $value; + } + + @supports not (margin-inline-end: $value) { + margin-right: $value; + } +} + +@mixin padding-left ($value) { + @supports (padding-inline-start: $value) { + padding-inline-start: $value; + } + + @supports not (padding-inline-start: $value) { + padding-left: $value; + } +} + +@mixin padding-right ($value) { + @supports (padding-inline-end: $value) { + padding-inline-end: $value; + } + + @supports not (padding-inline-end: $value) { + padding-right: $value; + } +}