mirror of
https://github.com/StarCitizenTools/mediawiki-skins-Citizen.git
synced 2024-11-27 07:41:07 +00:00
240 lines
5 KiB
Plaintext
240 lines
5 KiB
Plaintext
/*
|
|
* Citizen - Mixins
|
|
* https://starcitizen.tools
|
|
*/
|
|
|
|
.citizen-card( @border-radius: true ) {
|
|
background-color: var( --color-surface-1 );
|
|
box-shadow: var( --box-shadow-dialog );
|
|
|
|
& when ( @border-radius ) {
|
|
border-radius: var( --border-radius--medium );
|
|
}
|
|
}
|
|
|
|
// Collaspe animation setup
|
|
.citizen-card-hide( @position, @axis: '', @fadeChildren: true ) {
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transform: ~'scale@{axis}( 0 )';
|
|
transform-origin: @position;
|
|
visibility: hidden;
|
|
|
|
& when ( @fadeChildren ) {
|
|
> * {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Expand animiation setup
|
|
// When using fadeChildren, the child elements need to have
|
|
// opacity: 0 set manually
|
|
.citizen-card-show( @fadeChildren: true ) {
|
|
opacity: 1;
|
|
pointer-events: auto;
|
|
transform: none;
|
|
// HACK: So that visiblity won't wait 250ms to become visible
|
|
transition-delay: 0ms;
|
|
visibility: visible;
|
|
|
|
& when ( @fadeChildren ) {
|
|
> * {
|
|
.citizen-card-content-show;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Fade content when users open the menu
|
|
// But GTFO instantly when they close the menu
|
|
.citizen-card-content-show() {
|
|
opacity: 1;
|
|
transition: @transition-opacity--transform;
|
|
}
|
|
|
|
// Transition animation
|
|
.citizen-card-transition() {
|
|
transition: @transition-transform, @transition-opacity--transform, @transition-visibility--transform;
|
|
}
|
|
|
|
// Header card popups
|
|
.citizen-header-card( @position ) {
|
|
position: absolute;
|
|
right: 0;
|
|
bottom: 100%;
|
|
left: 0;
|
|
overflow: auto;
|
|
min-width: 16rem;
|
|
max-height: var( --header-card-maxheight );
|
|
margin: var( --space-sm );
|
|
overscroll-behavior: contain;
|
|
user-select: none;
|
|
.citizen-card();
|
|
.citizen-card-hide( bottom @position );
|
|
|
|
@media ( min-width: @width-breakpoint-tablet ) {
|
|
& when ( @position = left ) {
|
|
right: unset;
|
|
}
|
|
|
|
& when ( @position = right ) {
|
|
left: unset;
|
|
}
|
|
}
|
|
|
|
@media ( min-width: @width-breakpoint-desktop ) {
|
|
right: unset;
|
|
left: 100%;
|
|
& when ( @position = left ) {
|
|
top: 0;
|
|
bottom: unset;
|
|
.citizen-card-hide( top left );
|
|
}
|
|
|
|
& when ( @position = right ) {
|
|
bottom: 0;
|
|
.citizen-card-hide( bottom left );
|
|
}
|
|
}
|
|
}
|
|
|
|
// To hide objects, but keep them accessible for screen-readers
|
|
.hidden() {
|
|
position: absolute;
|
|
top: -9999px;
|
|
}
|
|
|
|
// Set content to be at the center
|
|
.content-center() {
|
|
max-width: var( --width-layout );
|
|
margin-right: auto;
|
|
margin-left: auto;
|
|
}
|
|
|
|
// Prepare for RL icons
|
|
.resource-loader-icon-link() {
|
|
display: block;
|
|
width: @icon-box-size;
|
|
height: @icon-box-size;
|
|
}
|
|
|
|
.resource-loader-icon-link-small() {
|
|
display: block;
|
|
width: @icon-size;
|
|
height: @icon-size;
|
|
}
|
|
|
|
.resource-loader-icon() {
|
|
position: absolute;
|
|
width: inherit;
|
|
height: inherit;
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
content: '';
|
|
}
|
|
|
|
.resource-loader-menu-icon() {
|
|
position: absolute;
|
|
width: @icon-box-size;
|
|
height: @icon-box-size;
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
content: '';
|
|
}
|
|
|
|
.resource-loader-list-icon() {
|
|
position: relative;
|
|
width: @icon-size;
|
|
height: @icon-size;
|
|
flex-shrink: 0;
|
|
align-self: center;
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
background-size: contain;
|
|
content: '';
|
|
}
|
|
|
|
.menu-item-link() {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
color: var( --color-base ) !important;
|
|
font-weight: 450;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.menu-item-link-hover() {
|
|
background-color: var( --background-color-primary--hover );
|
|
}
|
|
|
|
.menu-item-link-active() {
|
|
background-color: var( --background-color-primary--active );
|
|
}
|
|
|
|
// Button Styles
|
|
.button-blue() {
|
|
background-color: var( --color-primary );
|
|
color: #fff !important;
|
|
transition: @transition-background, @transition-color;
|
|
}
|
|
|
|
.button-blue-hover() {
|
|
background-color: var( --color-primary--hover );
|
|
}
|
|
|
|
.button-blue-active() {
|
|
background-color: var( --color-primary--active );
|
|
}
|
|
|
|
.button-red() {
|
|
background-color: var( --color-destructive );
|
|
color: #fff !important;
|
|
transition: @transition-background, @transition-color;
|
|
}
|
|
|
|
.button-red-hover() {
|
|
background-color: var( --color-destructive--hover );
|
|
}
|
|
|
|
.button-red-active() {
|
|
background-color: var( --color-destructive--active );
|
|
}
|
|
|
|
// Gradient overflow
|
|
.gradient-overflow(@position) {
|
|
position: fixed;
|
|
z-index: 3;
|
|
width: 100%;
|
|
height: @margin-side * 2;
|
|
background: @position;
|
|
content: '';
|
|
}
|
|
|
|
// Borrowed from Mediawiki core 1.35
|
|
// “Clearfix Reloaded” Mixin
|
|
// The mixin is used on a container with floating children.
|
|
// Margin collapsing is a feature, not a bug, hence relying on `display: block` as default.
|
|
// With `.mixin-clearfix( @collapse: false; );` you call it to let `margin`s not collapse.
|
|
// See https://www.cssmojo.com/the-very-latest-clearfix-reloaded/
|
|
// In future we might replace the `&:after` pseudo-element with
|
|
// `display: flow-root;` altogether.
|
|
// Support: Firefox 3.5+, Safari 4+, Chrome, Opera 15+, IE 8+
|
|
.mixin-clearfix( @collapse: true ) {
|
|
&:after {
|
|
clear: both;
|
|
// Margin collapsing as feature. Apply it.
|
|
& when ( @collapse ) {
|
|
display: block;
|
|
content: '';
|
|
}
|
|
}
|
|
// Margin collapsing as bug. Prevent it.
|
|
& when not ( @collapse ) {
|
|
&:before,
|
|
&:after {
|
|
display: table;
|
|
content: '';
|
|
}
|
|
}
|
|
}
|