zotero/scss/scaffold.scss
Dan Stillman 35a70117b0 fx153: Restore the toolbarbutton dropmarker
Bug 1980856 removed both wantdropmarker support and the rule that gave
.toolbarbutton-menu-dropmarker its image, once Firefox's last consumer
stopped using it, so the New Item, Add Attachment, and New Note buttons
lost their chevrons, along with the ones in advanced search, the feed
settings dialog, and Scaffold.

Draw it with a background, since a <dropmarker> doesn't render
list-style-image, and use chevron-6 to match the quick search dropmarker
and the menu marker on our own buttons. The rule also moves out of the
toolbarbutton block, since a plain <button> can host one too.
2026-08-03 11:48:42 -04:00

454 lines
6.7 KiB
SCSS

@import "abstracts/variables";
@import "abstracts/functions";
@import "abstracts/mixins";
@import "abstracts/placeholders";
@import "abstracts/utilities";
@import "abstracts/split-button";
@import "abstracts/svgicon";
@import "themes/light";
@import "themes/dark";
// Base
// --------------------------------------------------
@import "base/base";
$scaffold-toolbarbutton-icons: (
load: 'folder-open',
save: 'save',
saveToZotero: 'save-to-zotero',
detect: 'run-detect',
do: 'run-do',
template: 'plus'
);
@each $cls, $icon in $scaffold-toolbarbutton-icons {
#tb-#{$cls} {
@include svgicon-menu($icon, "universal", "20");
}
};
:root {
--monospace-font: 0.92em Monaco, Consolas, Inconsolata, monospace;
}
#scaffold, #zotero-select-item-dialog {
@include contain-richlistbox;
@include macOS-normalize-controls;
}
#scaffold {
min-height: 600px;
}
#zotero-select-item-dialog {
max-width: 400px;
min-height: 330px;
max-height: 330px;
}
#zotero-selectitems-links {
flex: 1 1 0;
}
#zotero-select-items-buttons {
// Prevent contain-richlistbox from squishing the buttons
flex-shrink: 0;
gap: 6px;
padding-top: 4px;
}
.menubar-container {
display: flex;
background: var(--material-sidepane);
border-bottom: var(--material-panedivider);
#main-menubar {
pointer-events: all;
}
}
#zotero-toolbar {
@media not (-moz-platform: macos) {
appearance: none;
background: var(--material-sidepane);
}
box-sizing: content-box;
border-bottom: var(--material-panedivider);
toolbarbutton {
height: 28px;
padding: 0 4px;
margin: 0 4px;
.toolbarbutton-menu-dropmarker {
-moz-default-appearance: none;
@include svgicon("chevron-6", "universal", "8");
color: var(--fill-secondary);
width: 8px;
height: 8px;
margin-inline-start: 4px;
}
}
toolbarseparator {
appearance: none;
width: 1px;
height: 18px;
background-color: var(--fill-quinary);
}
}
browser,
#appcontent
{
background: var(--material-toolbar);
}
#left-tabbox {
flex: 1;
min-width: 500px;
margin: 0 5px 5px 5px;
padding: 16px 0 16px 16px;
overflow: clip;
tabpanel {
display: flex;
width: 100%;
min-width: 0;
}
}
#right-pane {
display: flex;
flex-direction: column;
min-width: 350px;
border-inline-start: var(--material-panedivider);
#output {
flex: 1;
background: var(--material-background);
border: 0;
outline: none;
font: var(--monospace-font);
}
#item-previews {
flex: 1;
}
}
#metadata-grid {
flex: 1;
display: grid;
align-content: start;
align-items: center;
grid-template-columns: max-content 1fr;
gap: 8px;
label,
button,
input {
margin: 0;
}
& > label:nth-child(2n + 1) {
justify-self: inline-end;
}
label:first-child {
text-align: inline-end;
}
.button-row {
display: grid;
grid-template-columns: 1fr max-content;
gap: 8px;
}
#metadata-bottom-row {
display: flex;
align-items: center;
gap: 8px;
#textbox-minVersion {
margin-inline-end: auto;
}
}
#checkboxes-translatorType {
display: flex;
flex-direction: row;
gap: 8px;
}
}
#testing-container {
flex: 1;
max-width: 100%;
gap: 8px;
listheader, richlistbox {
.col-input {
flex: 1;
}
.col-status {
width: 175px;
}
.col-defer {
width: 60px;
& {
margin-inline: 0;
padding-inline: 0;
}
.treecol-text {
margin-inline-end: 0 !important;
padding-inline-end: 0;
}
}
}
listheader {
// Keep aligned with item columns when scrollbars are visible
scrollbar-gutter: stable;
overflow-y: hidden;
}
richlistbox {
min-width: 200px;
margin-block: 0;
richlistitem {
padding: 0;
align-items: center;
&:nth-child(odd):not([selected]) {
background: var(--material-stripe);
}
.cell {
display: flex;
align-items: center;
gap: 0.5em;
label {
margin: 0 5px;
padding: 0 4px;
}
}
.cell.col-status {
.status {
display: flex;
gap: 0.5em;
width: unset;
flex: 1;
.text {
flex-shrink: 1;
overflow: hidden;
text-overflow: ellipsis;
}
.added, .removed {
flex-shrink: 0;
}
.added {
color: rgb(40 161 40 / 0.8);
}
.removed {
color: rgb(210 50 50 / 0.8);
}
}
.update {
width: 16px;
height: 16px;
padding: 0;
flex-shrink: 0;
@include svgicon-menu('sync-12', 'universal', '16');
.toolbarbutton-text {
display: none;
}
}
&:not(.needs-update) {
.status {
.added, .removed {
color: revert;
opacity: 0.8;
}
}
.update {
display: none;
}
}
}
.cell.col-defer {
justify-content: center;
}
}
&:focus richlistitem[selected] {
.cell.col-status.needs-update {
.status {
.added, .removed {
filter: brightness(1.5);
}
}
.update {
color: inherit;
&:hover {
background: #ffffff1a;
}
&:active {
background: #ffffff33;
}
}
}
}
}
#testing-listbox-container {
flex: 1;
}
#editor-tests {
flex: 2;
}
}
#browser-container {
flex: 1;
gap: 8px;
#browser-url-container {
gap: 8px;
button,
label,
input {
margin: 0;
}
#load-url-button {
min-width: 35px;
}
#browser-loading {
padding-left: 35px; // retains spacing after load-url-button is hidden
}
}
}
#import-container {
flex: 1;
gap: 8px;
#import-buttons {
gap: 8px;
button {
margin: 0;
}
}
}
scaffold-item-previews {
flex-direction: column;
border-top: var(--material-panedivider);
overflow-y: auto;
.switcher {
&:not([hidden]) {
display: flex;
}
justify-content: end;
align-items: center;
position: sticky;
top: 0;
z-index: 1;
padding: 3px;
background: var(--material-sidepane);
border-bottom: var(--material-border);
button {
appearance: none;
margin: 0;
padding: 4px;
min-width: 0;
border-radius: 2px;
color: var(--fill-secondary);
background-color: transparent;
&:hover {
background-color: var(--fill-quinary);
}
&:active {
background-color: var(--fill-quarternary);
}
}
}
> deck {
> :not(.deck-selected) {
display: none;
}
}
}
scaffold-item-preview {
display: flex;
flex-direction: column;
padding: 6px;
.diff {
font: var(--monospace-font);
user-select: text;
div {
white-space: pre-wrap;
overflow-wrap: anywhere;
&.added {
background-color: rgb(0 255 0 / 0.1);
}
&.removed {
background-color: rgb(255 0 0 / 0.1);
}
}
}
info-box, abstract-box, tags-box {
collapsible-section > .head {
display: none;
}
}
.attachments-preview, .notes-preview {
display: flex;
flex-direction: column;
padding-block: 6px;
gap: 6px;
&:empty {
display: none;
}
}
}