1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2024-12-23 00:04:06 +00:00
transmission/web/assets/css/transmission-app.scss
Yat Ho 381c17e0bb
webui: fixed width for speed info (#6739)
* webui: fixed width for speed info

* fix: match download icon-text gap with upload

* webui: move speed arrow to the right of the text
2024-05-25 13:32:01 -05:00

1700 lines
34 KiB
SCSS

/// MIXINS
@mixin for-phone-only {
@media (width < 600px) {
@content;
}
}
@mixin for-tablet-portrait-up {
@media (width >= 600px) {
@content;
}
}
:root {
/* z-index enum */
--z-index-popup: 2;
/* various dimensions */
--dialog-logo-padding: calc(var(--dialog-padding) * 0.66);
--dialog-padding: 20px;
--logo-size: 64px;
--pauseresume-size: 20px;
--popup-top: 51px; // TODO: ugly that this is hardcoded
--progressbar-border: 1px;
--progressbar-height: 20px;
--toolbar-height: 50px;
/* colors related to torrent status */
--black: #000;
--blue-100: #51b3f7;
--blue-200: #357aaa;
--blue-300: #2c7fea;
--blue-400: #1847d4;
--dark-mode-black: #121212;
--dark-mode-white: #c9d1d9;
--default-accent-color-dark: #0c2d6b;
--default-border-dark: #575757;
--default-border-light: #aeaeae;
--default-tinted: rgba(128, 128, 144, 0.125);
--green-100: #26aa55;
--green-300: #7cef99;
--green-400: #67c87f;
--green-500: #34dc70;
--grey-200: #e1e4e8;
--grey-40: #666;
--grey-500: #828282;
--grey-900: #191919;
--nice-grey: #f8f8f8;
--red-500: #d73a49;
--white: #fff;
--yellow-300: #ffea7f;
/* ICONS -- see assets/img/README.md for sources and license details */
/* Are you a designer? New icon PRs welcomed! */
--image-alt-speed-disabled: url('../img/modern-tortoise.png');
--image-alt-speed-enabled: url('../img/modern-tortoise-blue.png');
--image-baseline: url('../img/horizontal-rule.svg');
--image-chevron-dn: url('../img/chevron-down.svg');
--image-chevron-up: url('../img/chevron-up.svg');
--image-lock-fill: url('../img/lock-fill.svg');
--image-magnet: url('../img/magnet.svg');
--image-pause-circle-active: url('../img/pause-circle-active.svg');
--image-pause-circle-idle: url('../img/pause-circle-idle.svg');
--image-play-circle-active: url('../img/play-circle-active.svg');
--image-play-circle-idle: url('../img/play-circle-idle.svg');
--app-image-url: url('../img/box.svg');
--audio-image-url: url('../img/music.svg');
--folder-image-url: url('../img/folder.svg');
--font-image-url: url('../img/type.svg');
--image-image-url: url('../img/image.svg');
--package-image-url: url('../img/package.svg');
--text-image-url: url('../img/file-text.svg');
--video-image-url: url('../img/film.svg');
--progress: 100%;
--color-bg-even: var(--default-tinted);
--color-bg-tabs: var(--default-tinted);
--color-fg-error: var(--red-500);
--color-fg-port-closed: var(--red-500);
--color-fg-port-open: var(--green-100);
--color-progressbar-background-2: var(--green-400);
--color-progressbar-leech: var(--blue-200);
--color-progressbar-magnet: var(--yellow-300);
--color-progressbar-paused: var(--grey-200);
--color-progressbar-queued: var(--blue-400);
--color-progressbar-verify: var(--yellow-300);
--color-toolbar-background: var(--default-tinted);
color-scheme: light dark;
@media (prefers-color-scheme: dark) {
--color-bg-hover: var(--grey-40);
--color-bg-odd: var(--black);
--color-bg-popup: var(--black);
--color-bg-primary: var(--black);
--color-bg-selected: var(--default-accent-color-dark);
--color-bg-warn: #cf6679;
--color-border-default: var(--default-border-dark);
--color-border-stark: var(--dark-mode-white);
--color-border-starkest: var(--grey-500);
--color-fg-disabled: #808088;
--color-fg-on-popup: var(--nice-grey);
--color-fg-primary: var(--dark-mode-white);
--color-fg-secondary: var(--nice-grey);
--color-fg-selected: var(--dark-mode-white);
--color-fg-tertiary: var(--grey-500);
--color-fg-warn: var(--dark-mode-black);
--color-progressbar-paused: var(--grey-500);
--color-progressbar-seed-1: var(--green-100);
--color-progressbar-seed-2: var(--green-400);
--color-progressbar-seed-paused: var(--grey-500);
.contrast-more {
--color-bg-even: var(--black);
--color-bg-hover: var(--grey-40);
--color-bg-selected: var(--blue-300);
--color-bg-tabs: var(--black);
--color-bg-warn: #cf6679;
--color-border-default: var(--white);
--color-border-stark: var(--white);
--color-border-starkest: var(--white);
--color-fg-disabled: var(--white);
--color-fg-error: var(--red-500);
--color-fg-on-popup: var(--white);
--color-fg-port-closed: var(--red-500);
--color-fg-port-open: var(--green-100);
--color-fg-primary: var(--white);
--color-fg-secondary: var(--white);
--color-fg-selected: var(--white);
--color-fg-tabs: var(--white);
--color-fg-tertiary: var(--white);
--color-fg-warn: var(--black);
--color-progressbar-background-2: var(--white);
--color-progressbar-magnet: var(--yellow-300);
--color-progressbar-paused: var(--grey-500);
--color-progressbar-queued: var(--blue-400);
--color-progressbar-seed-1: var(--black);
--color-progressbar-seed-2: var(--white);
--color-progressbar-seed-paused: var(--grey-500);
--color-progressbar-verify: var(--yellow-300);
--color-toolbar-background: var(--black);
}
}
@media (prefers-color-scheme: light) {
--color-bg-hover: var(--nice-grey);
--color-bg-odd: var(--white);
--color-bg-popup: var(--white);
--color-bg-primary: var(--white);
--color-bg-selected: var(--blue-300);
--color-bg-warn: #e4606d5b;
--color-border-default: var(--default-border-light);
--color-border-stark: var(--grey-500);
--color-border-starkest: #d0d7de;
--color-dialog-border: var(--nice-grey);
--color-fg-disabled: var(--grey-500);
--color-fg-error: var(--red-500);
--color-fg-on-popup: var(--grey-900);
--color-fg-port-closed: var(--red-500);
--color-fg-port-open: var(--green-400);
--color-fg-primary: #404040;
--color-fg-secondary: var(--grey-500);
--color-fg-selected: var(--nice-grey);
--color-fg-tertiary: var(--grey-500);
--color-fg-warn: #cf212e;
--color-progressbar-leech: var(--blue-100);
--color-progressbar-magnet: var(--yellow-300);
--color-progressbar-paused: var(--grey-200);
--color-progressbar-queued: var(--blue-400);
--color-progressbar-seed-1: var(--green-500);
--color-progressbar-seed-2: var(--green-300);
--color-progressbar-seed-paused: var(--grey-200);
--color-progressbar-verify: var(--yellow-300);
.contrast-more {
--color-bg-even: var(--white);
--color-bg-hover: var(--grey-40);
--color-bg-selected: var(--blue-300);
--color-bg-tabs: var(--white);
--color-bg-warn: #cf6679;
--color-border-default: var(--black);
--color-border-stark: var(--black);
--color-border-starkest: var(--black);
--color-fg-disabled: var(--black);
--color-fg-error: var(--red-500);
--color-fg-on-popup: var(--black);
--color-fg-port-closed: var(--red-500);
--color-fg-port-open: var(--green-400);
--color-fg-primary: var(--black);
--color-fg-secondary: var(--black);
--color-fg-selected: var(--white);
--color-fg-tabs: var(--black);
--color-fg-tertiary: var(--black);
--color-fg-warn: var(--white);
--color-progressbar-background-2: var(--white);
--color-progressbar-leech: var(--blue-200);
--color-progressbar-magnet: var(--yellow-300);
--color-progressbar-paused: var(--grey-500);
--color-progressbar-queued: var(--blue-400);
--color-progressbar-seed-1: var(--black);
--color-progressbar-seed-2: var(--white);
--color-progressbar-seed-paused: var(--grey-500);
--color-progressbar-verify: var(--yellow-300);
--color-toolbar-background: var(--white);
}
}
}
/* If browser can support using 'system color' keywords (i.e. way to inherit browser colors), use these variables instead */
@supports (background-color: Canvas) {
:root {
.contrast-less {
--color-bg-odd: Canvas;
--color-bg-primary: Canvas;
--color-bg-popup: Canvas;
}
}
}
html,
body {
background-color: var(--color-bg-primary);
color: var(--color-fg-primary);
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica,
Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
height: 100%;
margin: 0;
}
img {
border: 0;
}
a {
color: var(--color-fg-primary);
outline: 0;
text-decoration: underline;
}
.hidden {
display: none;
}
#mainwin {
display: flex;
flex-direction: column;
height: 100%;
position: relative;
> * {
margin: 0;
padding: 0;
}
.flexible-space {
margin-right: auto;
}
}
#mainwin-workarea {
display: flex;
flex: 1;
flex-direction: row;
overflow: auto;
}
.popup,
.tabs-container {
box-shadow:
0 3px 6px -4px rgba(0, 0, 0, 0.12),
0 6px 16px rgba(0, 0, 0, 0.08),
0 9px 28px 8px rgba(0, 0, 0, 0.06);
position: absolute;
}
/// TOOLBAR
#mainwin-toolbar {
align-items: center;
background: var(--color-toolbar-background);
border-bottom: 1px solid var(--color-border-default);
display: flex;
flex-direction: row;
height: var(--toolbar-height);
margin: 0;
width: 100%;
button {
background-color: transparent;
background-position: center;
background-repeat: no-repeat;
border: 0;
border-radius: 5px;
cursor: pointer;
height: var(--toolbar-height);
margin-right: 6px;
user-select: none;
-webkit-user-select: none;
width: var(--toolbar-height);
svg {
stroke: var(--color-fg-primary);
g path {
fill: var(--color-fg-primary);
}
}
&:disabled {
cursor: default;
svg {
stroke: var(--color-fg-disabled);
g path {
fill: var(--color-fg-disabled);
}
}
}
}
> .toolbar-separator {
border-left: 1px solid var(--color-border-default);
height: 25px;
margin: 0 6px 0 0;
}
:nth-last-child(2) {
border: 0;
flex-grow: 1;
}
}
.toolbar-icon {
stroke: var(--color-fg-primary);
}
#toolbar-overflow {
margin-right: 4px;
svg {
fill: var(--color-fg-primary);
height: 36px;
width: 36px;
}
&.alt-speed-enabled {
background-image: var(--image-alt-speed-enabled);
background-position: bottom left;
background-size: 20px;
}
}
/// FILTERBAR
#mainwin-statusbar {
white-space: nowrap;
align-items: center;
background: var(--color-toolbar-background);
border-bottom: 1px solid var(--color-border-default);
display: flex;
flex-direction: row;
height: 30px;
padding-left: 5px;
@include for-phone-only {
:not(select):not(input):not(option):not(.flexible-space) {
display: none;
}
}
#torrent-search {
width: 100%;
max-width: 160px;
}
select {
width: 70px;
}
> * {
margin-right: 5px;
}
.speed-container {
display: inherit;
align-items: inherit;
flex-direction: inherit;
&:not(:nth-child(1 of #mainwin-statusbar .speed-container)) {
width: 100px;
}
}
#speed-up-icon,
#speed-dn-icon {
fill: var(--color-fg-primary);
svg {
width: 20px;
}
}
#speed-dn-label,
#speed-up-label {
text-align: right;
}
}
/// TORRENT CONTAINER
#torrent-container {
flex-grow: 1;
left: 0;
margin: 0;
overflow: auto;
padding: 0;
right: 0;
}
#torrent-list {
cursor: pointer;
list-style-type: none;
margin: 0;
padding: 0;
text-align: left;
width: 100%;
user-select: none;
-webkit-user-select: none;
.torrent {
border-bottom: 1px solid var(--color-border-default);
&:nth-child(even) {
background-color: var(--color-bg-even);
}
&:nth-child(odd) {
background-color: var(--color-bg-odd);
}
.icon {
// color the background svg fill
background-color: var(--color-fg-primary);
background-position:
center,
top left;
-webkit-mask-image: var(--mime-icon-url);
-webkit-mask-repeat: no-repeat;
mask-image: var(--mime-icon-url);
mask-repeat: no-repeat;
&[data-icon-multifile='true'] {
-webkit-mask-image: var(--mime-icon-url), var(--folder-image-url);
-webkit-mask-position:
top left,
bottom right;
-webkit-mask-repeat: no-repeat, no-repeat;
-webkit-mask-size: 16px, 16px;
mask-image: var(--mime-icon-url), var(--folder-image-url);
mask-position:
top left,
bottom right;
mask-repeat: no-repeat, no-repeat;
mask-size: 16px, 16px;
}
&[data-icon-mime-type='audio'] {
--mime-icon-url: var(--audio-image-url);
}
&[data-icon-mime-type='application'] {
--mime-icon-url: var(--app-image-url);
}
&[data-icon-mime-type='font'] {
--mime-icon-url: var(--font-image-url);
}
&[data-icon-mime-type='image'] {
--mime-icon-url: var(--image-image-url);
}
&[data-icon-mime-type='model'] {
--mime-icon-url: var(--package-image-url);
}
&[data-icon-mime-type='text'] {
--mime-icon-url: var(--text-image-url);
}
&[data-icon-mime-type='video'] {
--mime-icon-url: var(--video-image-url);
}
}
.torrent-name {
font-weight: bold;
margin-bottom: 2px;
margin-top: 2px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
&.compact {
font-size: 1em;
font-weight: normal;
}
}
.torrent-labels {
font-size: small;
font-weight: normal;
margin-bottom: 2px;
margin-top: 2px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
padding: 1px 0;
&.compact {
flex: 1;
font-size: small;
}
}
.torrent-label {
padding: 0 8px;
margin: 0 2px;
border-radius: 1em;
border: 1px solid var(--color-border-default);
}
.torrent-progress-details,
.torrent-peer-details {
&.error {
color: var(--color-fg-error);
}
}
.torrent-progress-details,
.torrent-peer-details {
font-size: small;
}
&.compact {
--icon-size: 16px;
align-items: center;
display: flex;
flex-direction: row-reverse;
.icon {
-webkit-mask-size: var(--icon-size), calc(var(--icon-size) / 2);
flex-shrink: 0;
height: var(--icon-size);
mask-size: var(--icon-size), calc(var(--icon-size) / 2);
width: var(--icon-size);
&[data-icon-multifile='true'] {
--mime-icon-url: var(--folder-image-url);
}
}
> * {
margin: 5px;
}
}
&:not(.compact) {
--icon-size: 32px;
align-items: center;
display: grid;
grid-column-gap: 12px;
grid-template-areas:
'icon name labels'
'icon progress-text progress-text'
'icon progressbar progressbar'
'icon peers peers';
grid-template-columns: var(--icon-size) auto 1fr;
padding: 6px 12px;
.icon {
background-size: var(--icon-size), calc(var(--icon-size) / 2);
grid-area: icon;
height: var(--icon-size);
width: var(--icon-size);
}
.torrent-name {
grid-area: name;
}
.torrent-labels {
grid-area: labels;
}
.torrent-peer-details {
grid-area: peers;
}
.torrent-progress {
display: flex;
flex-direction: row;
grid-area: progressbar;
}
.torrent-progress-details {
grid-area: progress-text;
}
> * {
margin: 1px 0;
}
}
&.paused {
color: var(--color-fg-disabled);
.icon {
background-color: var(--color-fg-disabled);
}
}
&.selected {
background-color: var(--color-bg-selected);
color: var(--color-fg-selected);
.icon {
background-color: var(--color-fg-selected);
}
}
}
.icon {
background-position: center;
background-repeat: no-repeat;
}
.torrent-pauseresume-button {
background-position: center center;
background-repeat: no-repeat;
background-size: var(--pauseresume-size);
margin-left: calc(var(--pauseresume-size) / 2);
width: var(--pauseresume-size);
&[data-action='pause'] {
background-image: var(--image-pause-circle-idle);
&:active,
&:hover {
background-image: var(--image-pause-circle-active);
}
}
&[data-action='resume'] {
background-image: var(--image-play-circle-idle);
&:active,
&:hover {
background-image: var(--image-play-circle-active);
}
}
}
.torrent-progress-bar {
background-repeat: no-repeat;
border-color: var(--color-border-starkest);
border-radius: 3px;
border-style: solid;
border-width: 1px;
height: calc(var(--progressbar-height) - var(--progressbar-border) * 2);
&.full {
flex-grow: 1;
margin: 2px 0;
}
&.compact {
min-width: 100px;
width: 10vw;
}
&.leech {
&.queued {
background: linear-gradient(
to right,
var(--color-progressbar-queued) 0,
var(--color-progressbar-queued) var(--progress, 30%),
transparent var(--progress, 30%)
),
no-repeat;
}
background: linear-gradient(
to right,
var(--color-progressbar-leech) 0,
var(--color-progressbar-leech) var(--progress, 30%),
transparent var(--progress, 30%)
),
no-repeat;
}
&.magnet {
background: linear-gradient(
to right,
var(--color-progressbar-magnet) 0,
var(--color-progressbar-magnet) var(--progress, 30%),
transparent var(--progress, 30%)
),
no-repeat;
}
&.seed {
&.paused {
background-color: var(--color-progressbar-seed-paused);
}
&:not(.paused) {
background: linear-gradient(
to right,
var(--color-progressbar-seed-1) 0,
var(--color-progressbar-seed-1) var(--progress, 30%),
var(--color-progressbar-seed-2) var(--progress, 30%)
),
no-repeat;
}
&.queued {
background-color: var(--color-progressbar-seed-paused);
}
}
&.verify {
background: linear-gradient(
to right,
var(--color-progressbar-verify) 0,
var(--color-progressbar-verify) var(--progress, 30%),
transparent var(--progress, 30%)
),
no-repeat;
}
&.paused {
background: linear-gradient(
to right,
var(--color-progressbar-paused) 0,
var(--color-progressbar-paused) var(--progress, 30%),
transparent var(--progress, 30%)
),
no-repeat;
}
}
}
/// PREFERENCES DIALOG
@include for-phone-only {
input[type='checkbox'] {
height: 20px;
width: 20px;
}
}
#inspector,
#prefs-dialog {
@include for-phone-only {
left: 0;
}
@include for-tablet-portrait-up {
border-left: 1px solid var(--color-border-default);
width: 570px;
}
}
#prefs-dialog {
$background-color: var(--color-bg-primary);
background: $background-color;
bottom: 0;
right: 0;
top: var(--popup-top);
z-index: var(--z-index-popup);
.tabs-page {
grid-column-gap: 8px;
grid-row-gap: 5px;
grid-template-columns: 1fr 1fr;
margin: 20px;
&:not(.hidden) {
display: grid;
}
.section-label {
font-weight: bold;
grid-column: span 2;
// margin-left: -20px;
padding-bottom: 5px;
&:not(:first-of-type) {
margin-top: 20px;
}
}
}
.alt-speed-section-label {
background: transparent var(--image-alt-speed-enabled) no-repeat;
background-position: left;
background-position-y: 4px;
background-size: 20px;
padding-left: 22px;
}
:disabled,
.disabled {
color: var(--color-fg-disabled);
}
#alt-times-div,
#autostart-div,
#port-forwarding,
#randomize-port,
#suffix-div,
#use-dht-div,
#use-lpd-div,
#use-pex-div,
#utp-enabled,
.alt-speed-label {
grid-column: span 2;
}
#default-trackers {
height: 300px;
}
.blocklist-size-label,
.blocklist-update-button,
.register-handler-button,
.port-status {
grid-column: 2 / 3;
}
.blocklist-size-label {
font-size: smaller;
}
.blocklist-size-number {
font-weight: bolder;
}
.port-status-label {
display: inline-block;
font-weight: bold;
margin-left: 5px;
&[data-open='true'] {
color: var(--color-fg-port-open);
}
&[data-open='false'] {
color: var(--color-fg-port-closed);
}
}
#default-trackers,
.default-trackers-label {
grid-column: 1 / 3;
}
.alt-speed-label {
font-size: smaller;
// nudge it up next to the section label
margin: -10px 0 10px;
}
}
#prefs-dialog.ui-tabs .ui-tabs-panel {
padding: 0;
user-select: none;
-webkit-user-select: none;
}
/// TABS
.tabs-container {
align-items: stretch;
background: var(--color-bg-primary);
bottom: 0;
display: flex;
flex-direction: column;
position: absolute;
right: 0;
top: var(--popup-top);
z-index: var(--z-index-popup);
@include for-phone-only {
left: 0;
}
@include for-tablet-portrait-up {
width: 550px;
}
}
.tabs-container-close {
font-size: 150%;
cursor: pointer;
background: var(--color-bg-primary);
border: 0;
color: var(--color-fg-primary);
position: absolute;
padding: 10px 16px;
}
.tabs-buttons {
align-self: center;
background-color: var(--color-bg-tabs);
border: 1px solid var(--color-border-starkest);
border-radius: 6px;
display: flex;
margin: 10px 0;
button {
appearance: none;
border: 1px solid transparent;
border-radius: 6px;
color: var(--color-fg-primary);
font-weight: 400;
}
}
.tabs-pages {
box-sizing: border-box;
flex: 1;
overflow-x: hidden;
overflow-y: auto;
@include for-phone-only {
padding: 0 8px 20px;
}
@include for-tablet-portrait-up {
padding: 0 20px 20px;
}
}
.tabs-button {
background: none;
border: 1px solid transparent;
font-size: 14px;
padding: 3px 8px;
&:active,
&:checked,
&.selected {
background-color: var(--color-bg-odd);
border: 1px solid var(--color-fg-primary);
border-radius: 5px;
}
}
/// INSPECTOR
.inspector-info-page {
font-size: 14px;
// TODO: this is (mostly) copied from prefs-dialog.
// can it be folded into a single set of rules?
grid-column-gap: 8px;
grid-row-gap: 8px;
grid-template-columns: auto 1fr;
margin: 20px;
padding: 12px;
&:not(.hidden) {
display: grid;
}
.section-label {
font-size: 16px;
font-weight: bold;
grid-column: span 2;
padding-bottom: 5px;
&:not(:first-of-type) {
margin-top: 20px;
}
}
label {
font-weight: 500;
}
:not(.section-label) {
// this section is not copied
overflow-x: hidden;
text-overflow: ellipsis;
}
}
.inspector-info-magnet button {
background-color: var(--color-fg-primary);
background-position: top;
background-repeat: no-repeat;
border: 0;
cursor: pointer;
height: 1rem;
-webkit-mask: var(--image-magnet) no-repeat center / 14px;
mask: var(--image-magnet) no-repeat center / 14px;
vertical-align: middle;
width: 1rem;
}
#inspector,
#prefs-dialog {
.tabs-button {
height: 30px;
margin: 0;
min-width: 40px;
}
}
#inspector-file-list {
margin: 0;
padding: 0;
.inspector-torrent-file-list-entry {
display: grid;
grid-column-gap: 5px;
grid-template-areas:
'check name priority'
'blank1 info blank2';
grid-template-columns: 20px 1fr 65px;
margin-bottom: 4px;
padding: 5px;
&:nth-child(even) {
background-color: var(--color-bg-even);
}
&:nth-child(odd) {
background-color: var(--color-bg-odd);
}
&.skip {
opacity: 0.5;
}
}
.file-wanted-control {
grid-area: check;
}
.inspector-torrent-file-list-entry-name {
color: var(--color-fg-primary);
cursor: pointer;
font-size: 14px;
grid-area: name;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.inspector-torrent-file-list-entry.skip
> .inspector-torrent-file-list-entry-name {
color: var(--color-fg-disabled);
}
.inspector-torrent-file-list-entry-progress {
color: var(--color-fg-secondary);
font-size: 12px;
grid-area: info;
}
.single-file .inspector-torrent-file-list-entry,
.inspector-torrent-file-list-entry.complete {
> .file-wanted-control {
cursor: default;
}
}
}
#inspector-header {
margin: 8px 0;
}
#torrent-inspector-name {
font-size: large;
font-weight: bold;
}
#inspector-tiers-list {
color: var(--color-fg-primary);
margin: 0 10px;
padding: 0;
.tier-list-row {
display: grid;
font-size: 12px;
grid-column-gap: 8px;
grid-row-gap: 4px;
padding: 8px 12px;
&:nth-child(even of .tier-list-row) {
background-color: var(--color-bg-even);
}
&:nth-child(odd of .tier-list-row) {
background-color: var(--color-bg-odd);
}
}
.tier-list-torrent {
color: var(--color-fg-primary);
font-weight: bolder;
overflow-x: hidden;
padding-top: 12px;
padding-bottom: 8px;
text-overflow: ellipsis;
white-space: nowrap;
}
.tier-list-tracker {
font-size: 14px;
font-weight: bolder;
grid-column: span 2;
padding-bottom: 4px;
}
.tier-announce,
.tier-scrape,
.tier-state {
text-align: left;
}
.tier-downloads,
.tier-leechers,
.tier-seeders {
text-align: right;
}
}
// Peers Tab
.peer-list {
--table-border: 1px solid var(--color-border-default);
border: var(--table-border);
border-collapse: collapse;
cursor: default;
table-layout: fixed;
text-align: left;
width: 100%;
td,
th {
font-size: smaller;
padding: 5px;
}
td {
border: var(--table-border);
color: var(--color-fg-secondary);
// padding: 5px 10px;
}
.torrent-row td {
background: var(--color-bg-odd);
color: var(--color-fg-primary);
font-weight: bolder;
overflow-x: hidden;
padding: 10px;
text-overflow: ellipsis;
white-space: nowrap;
}
.encryption[data-encrypted='true'] {
background-color: var(--color-border-starkest);
-webkit-mask: var(--image-lock-fill) no-repeat center / 14px;
mask: var(--image-lock-fill) no-repeat center / 14px;
width: 10px;
}
.peer-address,
.percent-done,
.speed-down,
.speed-up {
text-align: right;
}
.percent-done {
width: 10%;
@include for-phone-only {
width: 12%;
}
}
.speed-down,
.speed-up {
width: 15%;
}
.peer-address {
width: 25%;
overflow-x: hidden;
text-overflow: ellipsis;
@include for-phone-only {
text-align: left;
width: 20%;
}
}
.peer-app-name {
overflow-x: hidden;
text-overflow: ellipsis;
white-space: nowrap;
@include for-tablet-portrait-up {
width: 20%;
}
}
.status {
cursor: pointer;
width: 10%;
}
}
/// FILE PRIORITY BUTTONS
.file-priority-radiobox {
grid-area: priority;
> * {
appearance: none;
background-color: var(--color-border-starkest);
background-position: center;
background-repeat: no-repeat;
background-size: 10px, 20px;
border: 1px solid var(--color-border-stark);
border-radius: 0;
height: 20px;
margin: 0;
padding: 0;
width: 20px;
}
> .low {
background-image: var(--image-chevron-dn);
border-right-width: 0;
}
> .normal {
background-image: var(--image-baseline);
}
> .high {
background-image: var(--image-chevron-up);
border-left-width: 0;
}
//if input is checked then change the background color
> .checked {
background-color: var(--color-bg-hover);
}
}
/// CONTEXT MENU
.context-menu {
background-color: var(--color-bg-primary);
border-radius: 5px;
color: var(--color-fg-on-popup);
padding: 10px 5px;
z-index: 9999;
user-select: none;
-webkit-user-select: none;
.context-menuitem {
font-size: 13px;
font-weight: 400;
list-style: none;
padding: 5px 15px;
&:hover:not(:disabled),
&:focus:not(:disabled) {
background-color: var(--color-bg-hover);
border-radius: 6px;
cursor: pointer;
font-weight: 500;
}
&:disabled {
color: var(--color-fg-disabled);
cursor: none;
}
&.warning:hover {
background-color: var(--color-bg-warn);
color: var(--color-fg-warn);
}
}
}
.context-menu-separator {
border-bottom: 1px solid var(--color-fg-secondary);
margin-bottom: 10px;
padding-bottom: 10px;
}
/// OVERFLOW MENU
.overflow-menu {
background: var(--color-bg-popup);
border-radius: 5px;
color: var(--color-fg-on-popup);
overflow: auto;
padding: 10px;
right: 0;
margin: 6px;
top: 50px;
z-index: var(--z-index-popup);
@include for-phone-only {
height: 80vh;
}
fieldset {
border: 0;
display: block;
margin: 8px 0;
ul {
margin: 0;
padding-left: 0;
li {
list-style-type: none;
}
a {
cursor: pointer;
}
}
}
.table-row {
align-items: center;
border-radius: 6px;
display: flex;
flex-direction: row;
padding: 3px 0;
}
legend {
color: var(--color-fg-primary);
font-weight: bolder;
margin: 12px 0 4px;
}
button,
label {
color: var(--color-fg-primary);
display: inline-flex;
font-size: 1em;
width: 100%;
}
button {
background: transparent;
border: 0;
cursor: pointer;
display: block;
padding: 4px 0;
text-align: left;
text-decoration: none;
width: 150px;
}
.input-and-label {
align-items: center;
display: inline-flex;
flex-direction: row;
}
#display-options {
display: flex;
flex-direction: column;
}
#speed-options {
display: flex;
flex-direction: column;
> .speed-up,
> .speed-down {
align-items: center;
display: flex;
flex-direction: row;
padding: 4px 0;
> label {
overflow: hidden;
width: 80px;
}
}
.alt-speed {
display: grid;
grid-column-gap: 5px;
grid-row-gap: 5px;
grid-template-areas:
'check lb'
'turtle values';
grid-template-columns: 22px 1fr;
margin-bottom: 4px;
}
#alt-speed-check {
grid-area: check;
&:checked ~ #alt-speed-image {
background-image: var(--image-alt-speed-enabled);
background-position: left;
background-size: 22px;
}
&:not(:checked) ~ #alt-speed-image {
background-image: var(--image-alt-speed-disabled);
background-size: 22px;
}
}
#alt-speed-image {
background-position: center;
background-repeat: no-repeat;
grid-area: turtle;
}
#alt-speed-label {
grid-area: lb;
}
#alt-speed-values-label {
font-size: small;
grid-area: values;
}
}
}
/// DIALOGS
@include for-phone-only {
.dialog-buttons {
padding-top: var(--dialog-logo-padding);
}
.dialog-container {
opacity: 96%;
position: absolute;
top: var(--popup-top);
width: 100%;
}
.dialog-logo {
padding-bottom: var(--dialog-logo-padding);
}
.dialog-window {
align-items: center;
display: flex;
flex-direction: column;
}
}
@include for-tablet-portrait-up {
.dialog-container {
min-width: 500px;
position: absolute;
top: calc(var(--popup-top) * 2);
}
.dialog-heading {
grid-area: heading;
}
.dialog-logo {
grid-area: icon;
padding-right: var(--dialog-logo-padding);
}
.dialog-window {
background-color: var(--color-bg-popup);
color: var(--color-fg-on-popup);
display: grid;
grid-column-gap: 12px;
grid-template-areas:
'icon heading'
'icon message'
'icon workarea'
'icon buttons';
grid-template-columns: var(--logo-size) 1fr;
padding: 2px 12px;
}
}
.dialog-buttons {
display: flex;
float: right;
grid-area: buttons;
margin: 10px 0 0;
text-align: center;
button {
appearance: none;
background: var(--color-bg-primary);
border: 1px solid var(--color-border-default);
border-radius: 5px;
color: var(--color-fg-primary);
margin-left: 8px;
padding: 8px;
text-decoration: none;
}
}
.dialog-buttons-begin {
flex-grow: 1;
}
.dialog-buttons-end {
display: none;
}
dialog {
border: 0;
}
.dialog-container {
color: var(--color-fg-primary);
display: block;
padding: 0;
z-index: var(--z-index-popup);
@include for-tablet-portrait-up {
border: 0;
border-radius: 8px;
max-width: 50%;
}
}
.dialog-heading {
align-items: center;
display: flex;
font-size: 1.2em;
font-weight: bold;
}
.dialog-logo {
background: transparent url('../img/logo.png') top left no-repeat;
height: var(--logo-size);
width: var(--logo-size);
}
.dialog-message {
grid-area: message;
margin: 10px 0 0;
}
.dialog-window {
background: var(--color-bg-primary);
border-radius: 8px;
padding: var(--dialog-padding);
}
.dialog-workarea {
display: flex;
flex-direction: column;
grid-area: workarea;
margin: 10px 0 0;
> * {
margin-bottom: 5px;
}
}
/// ABOUT DIALOG
.about-dialog {
max-width: initial;
.dialog-workarea > * {
margin-bottom: 10px;
}
}
.about-dialog-version-number {
margin-left: 4px;
}
.about-dialog-version-checksum {
font-size: small;
font-style: italic;
font-weight: normal;
margin-left: auto;
padding-left: 10px;
}
/// OPEN TORRENT DIALOG
.open-torrent {
input {
margin-bottom: 15px;
&[type='file'] {
width: 100%;
box-sizing: border-box;
}
}
#auto-start-label {
margin-left: 5px;
}
}
/// HOTKEYS DIALOG
.shortcuts-dialog {
table {
border-collapse: collapse;
width: 100%;
}
th,
td {
border: 1px solid var(--color-border-stark);
padding: 5px 10px;
}
}
/// RENAME DIALOG
#torrent-rename-name {
min-width: 400px;
}
/// SET-LOCATION DIALOG
#move-container #torrent-path {
min-width: 400px;
}
/// STATISTICS DIALOG
.tabs-pages,
.inspector-info-page,
.statistics-dialog {
.content {
column-gap: 16px;
display: grid;
grid-row-gap: 6px;
grid-template-columns: auto 1fr;
margin-top: 4px;
@include for-phone-only {
margin: 4px 0 16px;
}
@include for-tablet-portrait-up {
margin: 4px 16px 16px;
}
div {
word-break: break-word;
}
}
fieldset {
border: 0;
margin: 0;
padding: 0;
}
legend {
font-weight: bolder;
margin-bottom: 4px;
}
}
/// UPLOAD DIALOG
#free-space-text {
display: inline-block;
font-size: smaller;
font-style: italic;
}
.upload-div {
display: none;
}