2023-10-20 16:05:57 +00:00
|
|
|
//
|
|
|
|
// Mixins
|
|
|
|
// --------------------------------------------------
|
|
|
|
|
|
|
|
@mixin compact {
|
|
|
|
$selector: &;
|
|
|
|
@at-root [zoteroUIDensity="compact"] {
|
|
|
|
@if $selector {
|
|
|
|
#{$selector} {
|
|
|
|
@content;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@else {
|
|
|
|
@content;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@mixin comfortable {
|
|
|
|
$selector: &;
|
|
|
|
@at-root [zoteroUIDensity="comfortable"] {
|
|
|
|
@if $selector {
|
|
|
|
#{$selector} {
|
|
|
|
@content;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@else {
|
|
|
|
@content;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-10-24 06:36:56 +00:00
|
|
|
|
|
|
|
// @NOTE: this mixin uses `state` mixin, therefore must be used in a selector nested
|
|
|
|
// underneath selectors listed in arguments, e.g., .virtualized-table .row
|
|
|
|
// by default. See `state` mixin for more details.
|
|
|
|
@mixin focus-states(
|
2023-11-15 09:07:54 +00:00
|
|
|
$selectedState: '.row.selected',
|
|
|
|
$focused: '.virtualized-table:focus-within'
|
|
|
|
) {
|
|
|
|
@media (prefers-color-scheme: light) {
|
|
|
|
@content("light");
|
|
|
|
|
|
|
|
@include state($selectedState) {
|
|
|
|
@include state($focused) {
|
|
|
|
@content("white");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
|
|
@content("dark");
|
|
|
|
|
|
|
|
@include state($selectedState) {
|
|
|
|
@include state($focused) {
|
|
|
|
@content("white");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-10-24 06:36:56 +00:00
|
|
|
|
2023-11-15 09:07:54 +00:00
|
|
|
// An implementation of Firefox light-dark() CSS mixin, which is not supported in 102
|
|
|
|
@mixin light-dark($prop, $light-color, $dark-color) {
|
|
|
|
@media (prefers-color-scheme: light) {
|
|
|
|
#{$prop}: $light-color;
|
|
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
|
|
#{$prop}: $dark-color;
|
|
|
|
}
|
2023-10-24 06:36:56 +00:00
|
|
|
}
|
2023-10-27 13:00:21 +00:00
|
|
|
|
|
|
|
@mixin color-scheme {
|
|
|
|
@media (prefers-color-scheme: light) {
|
|
|
|
@content("light");
|
|
|
|
}
|
|
|
|
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
|
|
@content("dark");
|
|
|
|
}
|
2023-11-28 10:58:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@mixin clicky-item {
|
|
|
|
display: flex;
|
|
|
|
align-items: flex-start;
|
|
|
|
gap: 4px;
|
|
|
|
padding-inline-start: 4px;
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
border-radius: 5px;
|
|
|
|
background-color: var(--fill-quinary);
|
|
|
|
}
|
|
|
|
|
|
|
|
.label {
|
|
|
|
display: -webkit-box;
|
|
|
|
-webkit-box-orient: vertical;
|
|
|
|
-webkit-line-clamp: 10;
|
|
|
|
width: 0; // Needed to allow the label to shrink for some reason
|
|
|
|
flex: 1;
|
|
|
|
overflow: hidden;
|
|
|
|
line-height: 16px;
|
|
|
|
}
|
|
|
|
|
|
|
|
@include comfortable {
|
|
|
|
.icon, .label {
|
|
|
|
padding-block: 2px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-12-01 07:43:43 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* Hide icons on macOS. We use :is() to work around weird behavior in Fx101 where a regular child
|
|
|
|
selector doesn't match the first time the menu is opened. */
|
|
|
|
@mixin macOS-hide-menu-icons {
|
|
|
|
$selector: &;
|
|
|
|
@at-root {
|
|
|
|
@media (-moz-platform: macos) {
|
|
|
|
// Yes, every single one of these :is-es is necessary!
|
|
|
|
:is(:is(#{$selector}) .menuitem-iconic, :is(#{$selector}) .menu-iconic) {
|
|
|
|
list-style-image: none !important;
|
|
|
|
|
|
|
|
.menu-iconic-left {
|
|
|
|
display: none !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|