diff options
Diffstat (limited to 'comm/mail/themes/shared/mail/about3Pane.css')
-rw-r--r-- | comm/mail/themes/shared/mail/about3Pane.css | 631 |
1 files changed, 631 insertions, 0 deletions
diff --git a/comm/mail/themes/shared/mail/about3Pane.css b/comm/mail/themes/shared/mail/about3Pane.css new file mode 100644 index 0000000000..75a4f9b668 --- /dev/null +++ b/comm/mail/themes/shared/mail/about3Pane.css @@ -0,0 +1,631 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at http://mozilla.org/MPL/2.0/. */ + +@import url("chrome://messenger/skin/shared/threadPane.css"); + +:root { + --foldertree-background: -moz-Dialog; + --treeitem-border-radius: 3px; + --folder-mode-name-padding: 6px; + --folder-tree-header-gap: 9px; + --folder-tree-header-padding: 9px; + --folder-pane-icon-size: 16px; + --folder-pane-icon-new: var(--icon-add); + --folder-pane-icon-more: var(--icon-more); + --folder-pane-icon-download: var(--icon-cloud-download); + --folder-pane-icon-kebab: var(--icon-kebab); +} + +@media not (prefers-contrast) { + :root { + --foldertree-background: var(--color-gray-05); + --folderpane-unread-count-background: var(--color-gray-50); + --folderpane-unread-count-text: var(--color-white); + --folderpane-total-count-background: var(--color-gray-20); + --folderpane-total-count-text: var(--color-gray-90); + --folderpane-unread-new-count-background: var(--color-blue-60); + --treeitem-background-selected: var(--color-gray-20); + --treeitem-background-hover: var(--color-gray-10); + --treeitem-text-active: var(--color-white); + --treeitem-background-active: var(--color-blue-50); + --in-content-item-selected-unfocused: var(--color-gray-20); + } + + @media (prefers-color-scheme: dark) { + :root { + --foldertree-background: var(--color-gray-80); + --folderpane-unread-new-count-background: var(--color-blue-50); + --folderpane-total-count-background: var(--color-gray-60); + --folderpane-total-count-text: var(--color-white); + --treeitem-background-selected: var(--color-gray-70); + --treeitem-background-hover: var(--color-gray-60); + --treeitem-background-active: var(--color-blue-60); + --in-content-item-selected-unfocused: rgba(249, 249, 250, 0.05); + --in-content-primary-button-background: #45a1ff; + --in-content-primary-button-background-hover: #65c1ff; + --in-content-primary-button-background-active: #85e1ff; + --in-content-focus-outline-color: #45a1ff; + } + } +} + +@media (prefers-contrast) { + :root:not(:-moz-lwtheme) { + --folderpane-unread-count-background: var(--selected-item-color); + --folderpane-unread-count-text: var(--selected-item-text-color); + --folderpane-total-count-background: var(--selected-item-color); + --folderpane-total-count-text: var(--selected-item-text-color); + --folderpane-unread-new-count-background: ButtonShadow; + --treeitem-background-selected: transparent; + --treeitem-background-hover: transparent; + --treeitem-outline-hover: 2px solid var(--selected-item-color); + --treeitem-text-active: var(--selected-item-text-color); + --treeitem-background-active: var(--selected-item-color); + } +} + +:root[lwt-tree] { + --foldertree-background: var(--sidebar-background-color); + --treeitem-background-selected: color-mix(in srgb, transparent 70%, var(--sidebar-highlight-background-color)); + --treeitem-background-hover: color-mix(in srgb, transparent 80%, var(--sidebar-highlight-background-color)); + --treeitem-text-active: var(--sidebar-highlight-text-color); + --treeitem-background-active: var(--sidebar-highlight-background-color); +} + +:root[uidensity="compact"] { + --folder-mode-name-padding: 3px; + --folder-tree-header-gap: 6px; + --folder-tree-header-padding: 4px 6px 3px; +} + +:root[uidensity="touch"] { + --folder-mode-name-padding: 9px; + --folder-tree-header-gap: 12px; + --folder-pane-icon-size: 20px; + --folder-pane-icon-new: var(--icon-add-md); + --folder-pane-icon-more: var(--icon-more-md); + --folder-pane-icon-download: var(--icon-cloud-download-md); +} + + +html { + height: 100%; +} + +body { + height: 100%; + margin: 0; + text-shadow: none; + + display: grid; + --folderPaneSplitter-width: 18em; + --messagePaneSplitter-width: 54em; + --messagePaneSplitter-height: 36em; +} + +/* Different layouts */ + +#folderPane { + grid-area: folders; + box-sizing: border-box; + /* Matches the collapse-width on the splitter. */ + min-width: 100px; + overflow: hidden auto; + background-color: var(--sidebar-background-color, var(--foldertree-background)); + color: var(--sidebar-text-color, inherit); + user-select: none; +} + +#folderPaneSplitter { + grid-area: folderPaneSplitter; +} + +#threadPane { + container-name: threadPane; + container-type: inline-size; + grid-area: threads; + box-sizing: border-box; + min-height: 200px; + min-width: 300px; + display: flex; + flex-direction: column; + overflow: hidden; +} + +#messagePaneSplitter { + grid-area: messagePaneSplitter; +} + +#messagePane { + grid-area: message; + box-sizing: border-box; + /* Matches the collapse-height and collapse-width on the splitter. */ + min-height: 100px; + min-width: 300px; + overflow: auto; + display: flex; +} + +#accountCentralBrowser { + grid-area: account-central; + box-sizing: border-box; + min-width: 400px; +} + +:is( + #messagePane, + #folderPane +).collapsed-by-splitter { + /* NOTE: We use "display: none" rather than "visibility: collapse". In the + * latter case, the min-width of min-height of the element would still + * influence the "auto" track sizing in the grid layout. In the former case + * the grid is completely missing a grid item for this track, so the "auto" + * size properly reduces to 0, as desired. Note that the track is indeed + * missing a grid item because each element in the body is explicitly placed + * in a grid-area, which means that there is no auto-placement of the grid + * items that would fill the track. */ + display: none; +} + +/* Classic layout: folder tree on the left, thread tree and message browser on the right. */ +body.layout-classic { + grid-template: "folders folderPaneSplitter threads" minmax(auto, 1fr) + "folders folderPaneSplitter messagePaneSplitter" min-content + "folders folderPaneSplitter message" minmax(auto, var(--messagePaneSplitter-height)) + / minmax(auto, var(--folderPaneSplitter-width)) min-content minmax(auto, 1fr); +} + +/* Vertical layout: three columns. */ +body.layout-vertical { + grid-template: "folders folderPaneSplitter threads messagePaneSplitter message" auto + / minmax(auto, var(--folderPaneSplitter-width)) min-content minmax(auto, 1fr) min-content minmax(auto, var(--messagePaneSplitter-width)); +} + +/* Wide layout: folder tree and thread tree on the top, and message browser on the bottom. */ +body.layout-wide { + grid-template: "folders folderPaneSplitter threads" minmax(auto, 1fr) + "messagePaneSplitter messagePaneSplitter messagePaneSplitter" min-content + "message message message" minmax(auto, var(--messagePaneSplitter-height)) + / minmax(auto, var(--folderPaneSplitter-width)) min-content minmax(auto, 1fr); +} + +/* If Account Central is shown, it overrides the layout setting. */ +body.account-central { + grid-template: "folders folderPaneSplitter account-central" auto + / minmax(auto, var(--folderPaneSplitter-width)) min-content minmax(auto, 1fr); +} + +body.account-central :is( + #threadPane, + #messagePaneSplitter, + #messagePane, +) { + display: none; +} + +body:not(.account-central) #accountCentralBrowser { + display: none; +} + +/* Folder tree pane. */ + +#folderPaneHeaderBar:not([hidden]) { + --button-margin: 0; + display: flex; + flex-direction: row-reverse; + align-items: center; + justify-content: space-between; + gap: var(--folder-tree-header-gap); + position: sticky; + top: 0; + background-color: var(--sidebar-background-color, var(--foldertree-background)); + color: var(--layout-color-2); + padding: var(--folder-tree-header-padding); + z-index: 1; +} + +#folderPaneGetMessages, +#folderPaneMoreButton, +#folderPaneWriteMessage { + --icon-size: var(--folder-pane-icon-size); +} + +#folderPaneGetMessages { + background-image: var(--folder-pane-icon-download); +} + +#folderPaneGetMessagesContext { + -moz-context-properties: fill, stroke; + fill: color-mix(in srgb, currentColor 20%, transparent); + stroke: currentColor; +} + +#itemGetAllNewMessages { + list-style-image: var(--folder-pane-icon-download); +} + +#folderPaneMoreButton { + background-image: var(--folder-pane-icon-more); +} + +#folderPaneWriteMessage { + background-image: var(--folder-pane-icon-new); +} + +#folderTree, +#folderTree ul { + margin: 0; + padding: 0; + list-style: none; + --depth: 0; + --indent: calc(16px * var(--depth)); +} + +#folderTree ul { + overflow: hidden; + height: auto; +} + +#folderTree:focus-visible { + outline: none; +} + +#folderTree li[data-mode] { + margin-bottom: 3px; +} + +#folderTree > li:not(:first-of-type) > .mode-container { + justify-content: space-between; + border-top: 1px solid var(--sidebar-border-color, var(--splitter-color)); +} + +#folderTree > li.unselectable > .mode-container { + margin: 0; + border-radius: 0; +} + +#folderTree > li.unselectable > .mode-container:hover { + background-color: transparent; +} + +#folderTree > li > .mode-container > .mode-name { + font-weight: 600; + font-size: 1.1rem; + min-height: initial; + padding-block: var(--folder-mode-name-padding); + padding-inline-start: 12px; + flex: 1; +} + +#folderTree > li > .mode-container > .mode-button { + background-image: var(--icon-kebab); +} + +#folderPaneHeaderBar[hidden] + #folderTree > li.unselectable:first-of-type > .mode-container { + border-top-style: none; +} + +.mode-container:not([hidden]) { + display: flex; + align-items: center; +} + +.container { + display: flex; + align-items: center; + -moz-context-properties: fill; + margin-inline: 6px; + border-radius: var(--treeitem-border-radius); + fill: currentColor; + cursor: default; + padding-inline-start: var(--indent); +} + +li.selected > .container { + background-color: var(--treeitem-background-selected); +} + +li:not(.selected) > .container:hover { + background-color: var(--treeitem-background-hover); +} + +@media (prefers-contrast) { + li:not(:focus-visible) > .container:hover { + outline: var(--treeitem-outline-hover); + outline-offset: -2px; + } +} + +li.context-menu-target:not(.selected) > .container, +li.context-menu-target:not(.selected) > .container:hover { + background-color: color-mix(in srgb, var(--treeitem-background-active) 10%, transparent); + outline: 1px var(--listbox-border-type) var(--listbox-focused-selected-bg); + outline-offset: -1px; +} + +#folderTree:focus-within li.selected > .container, +#folderTree li.drop-target > .container { + background-color: var(--treeitem-background-active); + color: var(--treeitem-text-active); +} + +#folderTree li .twisty { + display: inline-flex; + align-items: center; + justify-content: center; + width: var(--list-item-buttons-size); + height: var(--list-item-buttons-size); +} + +#folderTree li:not(.children) .twisty-icon { + display: none; +} + +#folderTree li.children.collapsed > .container .twisty-icon { + transform: rotate(-90deg); +} + +#folderTree li.children.collapsed:dir(rtl) > .container .twisty-icon { + transform: rotate(90deg); +} + +@media (prefers-reduced-motion: no-preference) { + #folderTree .twisty-icon { + transition: transform var(--transition-duration) var(--transition-timing); + } +} + +#folderTree .icon { + position: relative; + width: 16px; + height: 16px; + background-image: var(--icon-folder); + background-repeat: no-repeat; + --icon-color: var(--folder-color-folder); + -moz-context-properties: fill, stroke; + fill: color-mix(in srgb, var(--icon-color, var(--folder-color-folder)) 20%, transparent); + stroke: var(--icon-color, var(--folder-color-folder)); +} + +.new-messages:not([data-server-type]) > .container > .icon::after { + position: absolute; + content: var(--icon-new-indicator); + inset-inline-start: -2px; + inset-block-start: -2px; +} + +#folderTree:focus-within li.selected > .container > .icon { + --icon-color: currentColor !important; /* Override the user customized folder color. */ +} + +#folderTree li[data-server-type] > .container > .icon { + --icon-color: var(--primary); +} + +#folderTree li:is([data-server-type="imap"], [data-server-type="pop3"]) > .container > .icon { + background-image: var(--icon-mail); +} + +menuitem.server:is([data-server-type="imap"], [data-server-type="pop3"]) { + list-style-image: var(--icon-mail); +} + +#folderTree li:is([data-server-type="imap"], [data-server-type="pop3"])[data-server-secure="true"] + > .container > .icon { + background-image: var(--icon-mail-secure); +} + +menuitem.server:is([data-server-type="imap"], [data-server-type="pop3"])[data-server-secure="true"] { + list-style-image: var(--icon-mail-secure); +} + +#folderTree li[data-server-type="none"] > .container > .icon { + background-image: var(--icon-folder); +} + +#folderTree li[data-server-type="nntp"] > .container > .icon { + background-image: var(--icon-globe); +} + +menuitem.server[data-server-type="nntp"] { + list-style-image: var(--icon-globe); +} + +#folderTree li[data-server-type="nntp"][data-server-secure="true"] > .container > .icon { + background-image: var(--icon-globe-secure); +} + +menuitem.server[data-server-type="nntp"][data-server-secure="true"] { + list-style-image: var(--icon-globe-secure); +} + +#folderTree li[data-server-type="rss"] > .container > .icon { + background-image: var(--icon-rss); +} + +#folderTree li[data-server-type="rss"] > ul > li:not([data-folder-type], [data-is-busy="true"]) .icon { + --icon-color: currentColor; + fill: var(--icon-color); +} + +menuitem.server[data-server-type="rss"] { + list-style-image: var(--icon-rss); +} + +#folderTree li[data-folder-type="archive"] > .container > .icon { + background-image: var(--icon-archive); + --icon-color: var(--folder-color-archive); +} + +#folderTree li[data-folder-type="drafts"] > .container > .icon { + background-image: var(--icon-draft); + --icon-color: var(--folder-color-draft); +} + +#folderTree li[data-folder-type="inbox"] > .container > .icon { + background-image: var(--icon-inbox); + --icon-color: var(--folder-color-inbox); +} + +#folderTree li[data-folder-type="junk"] > .container > .icon { + background-image: var(--icon-spam); + --icon-color: var(--folder-color-spam); +} + +#folderTree li[data-folder-type="outbox"] > .container > .icon { + background-image: var(--icon-outbox); + --icon-color: var(--folder-color-outbox); +} + +#folderTree li[data-folder-type="sent"] > .container > .icon { + background-image: var(--icon-sent); + --icon-color: var(--folder-color-sent); +} + +#folderTree li[data-folder-type="templates"] > .container > .icon { + background-image: var(--icon-template); + --icon-color: var(--folder-color-template); +} + +#folderTree li[data-folder-type="trash"] > .container > .icon { + background-image: var(--icon-trash); + --icon-color: var(--folder-color-trash); +} + +#folderTree li[data-folder-type="virtual"] > .container > .icon { + background-image: var(--icon-folder-filter); + --icon-color: var(--folder-color-folder-filter); +} + +#folderTree li[data-server-type="nntp"] ul .icon { + background-image: var(--icon-newsletter); + --icon-color: var(--folder-color-newsletter); +} + +#folderTree li[data-is-paused="true"] > .container > .icon, +#folderTree li[data-is-paused="true"] > .container > .name, +#folderTree li[data-is-paused="true"] ul > li > .container > .icon, +#folderTree li[data-is-paused="true"] ul > li > .container > .name { + opacity: 0.6; +} + +#folderTree li[data-is-busy="true"] > .container > .icon { + content: var(--icon-clock) !important; + background-image: none; + --icon-color: var(--button-primary-background-color); +} + +@media (prefers-reduced-motion: no-preference) { + #folderTree li[data-is-busy="true"] > .container > .icon { + content: var(--icon-loading) !important; + animation: activity-indicator-3pane 1.05s steps(30) infinite; + object-fit: cover; + object-position: 0px 0; + } + @keyframes activity-indicator-3pane { + 100% { object-position: -480px 0; } + } +} + +#folderTree li[data-has-error="true"] > .container > .icon { + content: var(--icon-warning) !important; + background-image: none; + fill: var(--color-amber-30); + stroke: var(--color-amber-60); +} + +#folderTree li[data-tag-key] > .container > .icon { + background-image: var(--icon-tag); +} + +.name { + flex: 1; + margin-inline: 7px; + white-space: nowrap; + text-overflow: ellipsis; + overflow-x: hidden; +} + +#folderTree li[data-server-type] > .container > .name { + font-weight: bold; +} + +.noselect-folder > .container > .name { + font-style: italic; + opacity: 0.6; +} + +#folderTree:focus-within li.noselect-folder.selected > .container > .name { + opacity: 0.8; +} + +.unread > .container > .name, +.new-messages > .container > .name { + font-weight: bold; +} + +.new-messages > .container > .name { + color: var(--new-folder-color); +} + +#folderTree:focus-within li.selected.new-messages > .container > .name { + color: currentColor; +} + +.folder-count-badge { + display: none; + padding: 1px 4px; + border-radius: 1000px; + color: var(--folderpane-unread-count-text); + font-size: 0.85em; + font-weight: bold; + min-width: 16px; + text-align: center; + line-height: initial; + box-sizing: border-box; + margin-inline-end: 6px; +} + +.total-count { + font-weight: normal; + color: var(--folderpane-total-count-text); + background-color: var(--folderpane-total-count-background); +} + +.unread > .container > .unread-count { + display: unset; + background-color: var(--folderpane-unread-count-background); +} + +.total > .container > .total-count:not([hidden]) { + display: unset; +} + +.new-messages > .container > .unread-count { + background-color: var(--folderpane-unread-new-count-background); +} + +#folderTree:focus-within li.selected > .container > .unread-count { + background-color: var(--folderpane-unread-count-text); + color: var(--treeitem-background-active); +} + +.folder-size { + font-size: .8rem; + font-weight: bold; + color: var(--layout-color-3); + margin-inline-end: 6px; +} + +#folderTree:focus-within li.selected > .container > .folder-size { + color: currentColor; +} + +/* Message browser pane. */ + +#webBrowser, +#messageBrowser, +#multiMessageBrowser { + flex: 1; +} |