// Padding and Margin sizes $-spacing-small: 10px; $-spacing-medium: 25px; $-spacing-large: 35px; .pink { background-color: pink; } @mixin RV-Reset { margin: 0; padding: 0; top: 0; bottom: 0; left: 0; right: 0; border: none; } @mixin RV-Alignment--top { display: grid; align-content: start; } @mixin RV-Alignment--bottom { display: grid; align-content: end; } @mixin RV-Alignment--left { display: grid; justify-content: start; } @mixin RV-Alignment--right { display: grid; justify-content: end; } @mixin RV-Alignment--horizontalCenter { display: grid; justify-content: center; } @mixin RV-Alignment--verticalCenter { display: grid; align-items: center; } @mixin RV-Alignment--center { @include RV-Alignment--horizontalCenter; @include RV-Alignment--verticalCenter; } @mixin RV-Alignment__Container { display: grid; &--top { @include RV-Alignment--top; } &--bottom { @include RV-Alignment--bottom; } &--left { @include RV-Alignment--left; } &--right { @include RV-Alignment--right; } &--horizontalCenter { @include RV-Alignment--horizontalCenter; } &--verticalCenter { @include RV-Alignment--verticalCenter; } &--center { @include RV-Alignment--center; } } @mixin RV-Alignment { &__Container { @include RV-Alignment__Container; } } .RV-Alignment { @include RV-Alignment; } @mixin RV-FlexRow__Container--column { display: flex; flex-direction: column; } @mixin RV-FlexRow__Container--multiRow { flex-wrap: wrap; } @mixin RV-FlexRow__Container { display: flex; flex-direction: row; height: 100%; &--multiRow { @include RV-FlexRow__Container--multiRow; } &--column { @include RV-FlexRow__Container--column; } } @mixin RV-FlexRow__Item--normal { flex-grow: 3; flex-shrink: 3; } @mixin RV-FlexRow__Item--narrower { flex-grow: 1; flex-shrink: 5; } @mixin RV-FlexRow__Item--narrow { flex-grow: 2; flex-shrink: 4; } @mixin RV-FlexRow__Item--wide { flex-grow: 4; flex-shrink: 2; } @mixin RV-FlexRow__Item--wider { flex-grow: 5; flex-shrink: 1; } @mixin RV-FlexRow__Item--fixedSize($-width: 100px) { flex-grow: 0; flex-shrink: 0; width: min-content; flex-basis: $-width; } @mixin RV-FlexRow__Item { @include RV-Alignment; min-width: min-content; width: 100%; &,&--normal { @include RV-FlexRow__Item--normal; } &--narrower { @include RV-FlexRow__Item--narrower; } &--narrow { @include RV-FlexRow__Item--narrow; } &--wide { @include RV-FlexRow__Item--wide; } &--wider { @include RV-FlexRow__Item--wider; } &--fixedSize { @include RV-FlexRow__Item--fixedSize; } } @mixin RV-FlexRow { &__Container { @include RV-FlexRow__Container; } &__Item { @include RV-FlexRow__Item; } } .RV-FlexRow{ @include RV-FlexRow; } @mixin RV-FlexGrid__Container($-item_width: 300px, $-item_height: 300px) { display: grid; grid-template-columns: repeat(auto-fill, minmax($-item_width, 1fr)); grid-template-rows: repeat(auto-fill, minmax($-item_height, 1fr)); grid-auto-rows: minmax($-item_height, 1fr); } @mixin RV-FlexGrid($-item_width: 300px, $-item_height: 300px) { &__Container { @include RV-FlexGrid__Container($-item_width, $-item_height); } &__Item { @include RV-Alignment; } } .RV-FlexGrid{ @include RV-FlexGrid; } @mixin RV-ContentCrop--bottom { img { object-position: botom; } } @mixin RV-ContentCrop--top { img { object-position: top; } } @mixin RV-ContentCrop--right { img { object-position: right; } } @mixin RV-ContentCrop--left { img { object-position: left; } } @mixin RV-ContentCrop--center { img { object-position: center; } } @mixin RV-ContentCrop{ &,* { overflow: hidden; word-break: break-all; } img { width: 100%; height: 100%; object-fit: cover; } &--left { @include RV-ContentCrop--left; } &--center { @include RV-ContentCrop--center; } &--top { @include RV-ContentCrop--top; } &--bottom { @include RV-ContentCrop--bottom; } &--center { @include RV-ContentCrop--center; } } .RV-ContentCrop__Container { @include RV-ContentCrop; } @mixin RV-Fan--horizontal($-base_height, $-base_width, $-suffix: '') { &__Container#{$-suffix} { flex-direction: row; } &__Container#{$-suffix} &__Surface { min-width: $-base_width; height: $-base_height; } } @mixin RV-Fan--vertical($-base_height, $-base_width, $-suffix: '') { &__Container#{$-suffix} { flex-direction: column; width:max-content; } &__Container#{$-suffix} &__Surface { width: $-base_width; min-height: $-base_height; } } @mixin RV-Fan--auto($-base_height, $-base_width, $-suffix: '') { &__Container#{$-suffix} { flex-flow: row wrap; } &__Container#{$-suffix} &__Surface { width: calc(100% - #{$-base_width}); min-width: $-base-width; height: $-base_height; } } @mixin RV-Fan--fullWidth($-base_height, $-base_width, $-suffix: '') { &__Container#{$-suffix} &__Base, &__Container#{$-suffix} &__Surface { flex-grow: 1; } } @mixin RV-Fan ($-base_height, $-base_width) { @include RV-Fan--vertical($-base_height, $-base_width, '--vertical'); @include RV-Fan--horizontal($-base_height, $-base_width, '--horizontal'); @include RV-Fan--auto($-base_height, $-base_width, '--auto'); @include RV-Fan--fullWidth($-base_height, $-base_width, '--fullWidth'); &__Container { display: flex; } &__Base { height: $-base_height; width: $-base_width; flex: 0 0 auto; } &__Surface { @include RV-ContentCrop; } } .RV-Fan { @include RV-Fan(280px, 320px); } @mixin RV-FullWidthContent__Container { width: 100%; } @mixin RV-FullWidthContent__Item { width: 100%; @include RV-ContentCrop; } @mixin RV-FullWidthContent { &__Container { @include RV-FullWidthContent__Container; } &__Item { @include RV-FullWidthContent__Item; } } .RV-FullWidthContent { @include RV-FullWidthContent; } @mixin RV-BoxShadow($color) { position:relative; float:left; width:40%; margin:2em 10px 4em; background:#fff; box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset; &:before, &:after { content:""; position:absolute; z-index:-2; } &--simple { box-shadow: 0 0 20px $color; } &--raised { &:after { box-shadow: 0 15px 10px -10px rgba(0, 0, 0, 0.5), 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset; } } &--liftedCorners { &:before, &:after { bottom:15px; left:10px; width:50%; height:20%; max-width:300px; box-shadow:0 15px 10px rgba(0, 0, 0, 0.7); transform:rotate(-3deg); } &:after{ right:10px; left:auto; transform:rotate(3deg); } } } .RV-BoxShadow { @include RV-BoxShadow(#6b5690); } @mixin RV-ElementList { &__Container { list-style-type: none; @include RV-Reset; } &__Item { @include RV-Reset; } } .RV-ElementList { @include RV-ElementList; } @mixin RV-Spacing__Outer--small { margin: $-spacing-small; } @mixin RV-Spacing__Outer--medium { margin: $-spacing-medium; } @mixin RV-Spacing__Outer--large { margin: $-spacing-large; } @mixin RV-Spacing__Inner--small($-container-suffix: '__Container') { padding: $-spacing-small; &#{$-container-suffix} { gap: $-spacing-small; } } @mixin RV-Spacing__Inner--medium($-container-suffix: '__Container') { padding: $-spacing-medium; &#{$-container-suffix} { gap: $-spacing-medium; } } @mixin RV-Spacing__Inner--large($-container-suffix: '__Container') { padding: $-spacing-large; &#{$-container-suffix} { gap: $-spacing-large; } } @mixin RV-Spacing { &__Outer{ &--small { @include RV-Spacing__Outer--small; } &--medium { @include RV-Spacing__Outer--medium; } &--large { @include RV-Spacing__Outer--large; } } &__Inner{ &--small { @include RV-Spacing__Inner--small(''); } &--medium { @include RV-Spacing__Inner--medium(''); } &--large { @include RV-Spacing__Inner--large(''); } } } .RV-Spacing { @include RV-Spacing; } .RV-Iconized { &__Container { position: relative; &--medium { top: -.5em; } &--large { top: -1.03073em; } &--huge { top: -2.05em; } } &__Icon { @include RV-Reset; } &__Container--small &__Icon{ width: 1em; height: 1em; position: relative; top: .125em; } &__Container--medium &__Icon{ width: 2em; height: 2em; position: relative; top: .625em; } &__Container--large &__Icon{ width: 3em; height: 3em; position: relative; top: 1.15573em; } &__Container--huge &__Icon{ width: 5em; height: 5em; position: relative; top: 2.175em; } } @mixin RV-ImageGrid { @include RV-ElementList; @include RV-FlexGrid; &__Container { @include RV-Spacing__Inner--medium; } &__Item { @include RV-ContentCrop; @include RV-ContentCrop--center; } } .RV-ImageGrid { @include RV-ImageGrid; }