67 lines
1.6 KiB
SCSS
67 lines
1.6 KiB
SCSS
@use "sass:list";
|
|
@use "sass:map";
|
|
@use "list" as list-utils;
|
|
@use "media";
|
|
|
|
//== Args ======================================================================
|
|
$win: "win";
|
|
$mac: "mac";
|
|
$linux: "linux";
|
|
|
|
$win7: "win7";
|
|
$win8: "win8";
|
|
$win10: "win10";
|
|
$bigsur: "bigsur";
|
|
|
|
//== Privated Variables ========================================================
|
|
$_win-template: "-moz-os-version: windows-" "-moz-platform: windows-";
|
|
$_win-media: (
|
|
#{$win7}: "win7",
|
|
#{$win8}: "win8",
|
|
#{$win10}: "win10",
|
|
);
|
|
@each $_win-key in map.keys($_win-media) {
|
|
$_win-value: map.get($_win-media, $_win-key);
|
|
|
|
$result-template: ();
|
|
@for $i from 1 through list.length($_win-template) {
|
|
$result-value: list.nth($_win-template, $i) + $_win-value;
|
|
$result-template: list.append($result-template, $result-value);
|
|
}
|
|
$_win-media: map.set($_win-media, $_win-key, $result-template);
|
|
}
|
|
|
|
$_others-media: (
|
|
#{$linux}: "-moz-gtk-csd-available",
|
|
#{$bigsur}: "-moz-mac-big-sur-theme: 0",
|
|
);
|
|
$_os-media: map.merge(
|
|
$_win-media, $_others-media
|
|
);
|
|
|
|
//== Mixin =====================================================================
|
|
@mixin OS($osNames...) {
|
|
@if list.index($osNames, $win) {
|
|
$osNames: list-utils.remove($osNames, $win);
|
|
$osNames: list.join($osNames, map.keys($_win-media));
|
|
}
|
|
|
|
$osMedias: ();
|
|
@each $osName in $osNames {
|
|
$osMedia: map.get($_os-media, $osName);
|
|
@if $osMedia != null {
|
|
$osMedias: list.join($osMedias, $osMedia);
|
|
}
|
|
}
|
|
|
|
@include media.each($osMedias...) {
|
|
@content;
|
|
}
|
|
|
|
@if list.index($osNames, $mac) {
|
|
@supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") {
|
|
@content;
|
|
}
|
|
}
|
|
}
|