nosignal-shell/scss/launcher.scss
2025-04-09 16:04:10 +10:00

332 lines
7 KiB
SCSS

@use "sass:color";
@use "scheme";
@use "lib";
@use "font";
@mixin launcher($mode, $colour) {
&.#{$mode} {
@include lib.border($colour, 0.7, 2);
label.icon {
color: $colour;
}
.separator {
background-color: color.change($colour, $alpha: 0.7);
}
.result:focus {
color: $colour;
.sublabel {
color: color.mix(scheme.$subtext0, $colour, 60%);
}
}
&.lines {
.search-bar {
.mode {
@include lib.border($colour, $width: 2, $force: true);
}
.entry {
border-bottom: lib.s(2) solid $colour;
}
}
.mode-switcher .mode {
&.selected {
border-top: lib.s(2) solid $colour;
}
&:hover,
&:focus {
color: $colour;
}
&:active {
color: color.mix($colour, scheme.$base, 80%);
}
}
.result:focus {
border-bottom: lib.s(2) solid $colour;
}
}
&.round {
.search-bar .mode {
background-color: $colour;
}
.mode-switcher .mode.selected {
color: $colour;
}
}
}
}
.launcher {
@include lib.rounded(10);
@include lib.element-decel;
@include lib.shadow;
@include font.mono;
background-color: scheme.$base;
color: scheme.$text;
padding: lib.s(14);
font-size: lib.s(16);
min-width: lib.s(700);
min-height: lib.s(420);
@include launcher(apps, scheme.$primary);
@include launcher(files, scheme.$secondary);
@include launcher(math, scheme.$tertiary);
.search-bar {
margin-bottom: lib.s(15);
@include lib.spacing(10);
.mode {
@include lib.rounded(5);
@include lib.element-decel;
padding: lib.s(5) lib.s(10);
@include lib.spacing(3);
.icon {
font-size: lib.s(20);
}
}
}
.mode-switcher .mode {
@include lib.element-decel;
padding-top: lib.s(10);
.icon {
font-size: lib.s(24);
}
& > box {
@include lib.spacing(10);
}
}
.result {
@include lib.element-decel;
padding-left: lib.s(10);
.icon {
font-size: lib.s(32);
}
.has-sublabel {
padding: lib.s(3) 0;
}
.sublabel {
@include lib.element-decel;
color: scheme.$subtext0;
font-size: lib.s(14);
}
& > box {
@include lib.spacing(10);
}
&.italic {
font-style: italic;
}
&:hover {
background-color: scheme.$surface0;
}
&:active {
background-color: color.mix(scheme.$surface0, scheme.$surface1, 70%);
}
}
.math {
.preview > * {
margin-bottom: lib.s(10);
}
.result {
@include lib.spacing(10);
}
}
.swatches {
margin-bottom: lib.s(5);
@include lib.spacing(3);
}
.swatch {
@include lib.rounded(100);
min-width: lib.s(16);
min-height: lib.s(16);
&.big {
min-height: lib.s(32);
&.left {
@include lib.border(scheme.$overlay0, 0.3, $force: true);
border-right: none;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
&.right {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
}
}
.wallpaper {
.thumbnail {
background-size: cover;
background-position: center;
}
&.compact .thumbnail {
@include lib.rounded(100);
min-width: lib.s(32);
min-height: lib.s(32);
}
&:not(.compact) {
@include lib.spacing(3, true);
.thumbnail {
@include lib.rounded(10);
& > * {
background-size: cover;
background-position: center;
&:first-child {
@include lib.rounded(10, $tr: 0, $br: 0);
}
&:last-child {
@include lib.rounded(10, $tl: 0, $bl: 0);
}
}
}
}
&.medium .thumbnail {
min-height: lib.s(96);
}
&.large .thumbnail {
min-height: lib.s(160);
}
}
&.lines {
.mode-switcher .mode {
border-top: lib.s(2) solid transparent;
}
.result {
border-bottom: lib.s(2) solid transparent;
}
.wallpaper {
padding-top: lib.s(5);
&.compact {
padding-top: lib.s(3);
padding-bottom: lib.s(3);
}
}
}
&.round {
.search-bar {
.mode {
@include lib.rounded(10);
color: color.change(scheme.$base, $alpha: 1);
.icon {
color: color.change(scheme.$base, $alpha: 1);
}
}
.entry {
@include lib.rounded(10);
padding: lib.s(5) lib.s(10);
background-color: color.mix(scheme.$base, scheme.$surface0, 30%);
}
}
.mode-switcher {
padding-top: lib.s(10);
@include lib.spacing(10);
.mode {
@include lib.rounded(10);
padding: lib.s(5);
background-color: color.mix(scheme.$base, scheme.$surface0, 50%);
&:not(.selected) .icon {
color: scheme.$text;
}
&:hover,
&:focus {
background-color: scheme.$surface0;
}
&:active {
background-color: color.mix(scheme.$surface0, scheme.$surface1, 70%);
}
}
}
.result {
@include lib.rounded(10);
padding-right: lib.s(10);
margin-bottom: lib.s(5);
margin-right: lib.s(5);
&:focus {
background-color: scheme.$surface0;
}
}
.math .preview .result {
@include lib.rounded(20);
background-color: scheme.$surface0;
padding: lib.s(5) lib.s(10);
}
.wallpaper-container {
padding-right: 0;
.wallpaper:not(.compact) {
padding-top: lib.s(8);
padding-bottom: lib.s(3);
}
}
}
}