);
diff --git a/src/components/app/KeyboardShortcut.css b/src/components/app/KeyboardShortcut.css
index 0317004c5d..7fef635933 100644
--- a/src/components/app/KeyboardShortcut.css
+++ b/src/components/app/KeyboardShortcut.css
@@ -3,6 +3,10 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
.appKeyboardShortcuts {
+ --internal-fade-color: #000a;
+ --internal-fade-from-color: #0000;
+ --internal-shadow-color: rgb(0 0 0 / 0.4);
+
position: absolute;
top: 0;
left: 0;
@@ -12,7 +16,7 @@
box-sizing: border-box;
padding: 20px;
animation: appKeyboardShortcutsFadeIn 0.2s;
- background: #000a;
+ background: var(--internal-fade-color);
}
.appKeyboardShortcuts.open {
@@ -29,9 +33,9 @@
border-radius: 5px;
margin: 0 auto;
animation: arrowPanelAppear 0.2s cubic-bezier(0.07, 0.95, 0, 1);
- background: #fff;
- filter: drop-shadow(0 0 0.5px rgb(0 0 0 / 0.4))
- drop-shadow(0 4px 5px rgb(0 0 0 / 0.4));
+ background: var(--base-background-color);
+ filter: drop-shadow(0 0 0.5px var(--internal-shadow-color))
+ drop-shadow(0 4px 5px var(--internal-shadow-color));
}
.appKeyboardShortcutsScroll {
@@ -51,13 +55,16 @@
}
.appKeyboardShortcutsShortcut {
+ --internal-background-color: rgb(222 222 227 / 0.79);
+ --internal-shadow-color: rgb(0 0 0 / 0.27);
+
display: inline-flex;
align-items: center;
padding: 0 5px;
border-radius: 3px;
- background: rgb(222 222 227 / 0.79);
- box-shadow: 1px 1px rgb(0 0 0 / 0.27);
- color: #000;
+ background: var(--internal-background-color);
+ box-shadow: 1px 1px var(--internal-shadow-color);
+ color: var(--base-foreground-color);
margin-inline-start: 6px;
}
@@ -77,9 +84,11 @@
}
.appKeyboardShortcutsHeader {
+ --internal-background-color: var(--grey-20);
+
display: flex;
- border-bottom: 1px solid var(--grey-30);
- background: var(--grey-20);
+ border-bottom: 1px solid var(--base-border-color);
+ background: var(--internal-background-color);
font-size: 13px;
}
@@ -89,20 +98,23 @@
}
.appKeyboardShortcutsHeaderClose {
+ --internal-cancel-icon: url(../../../res/img/svg/searchfield-cancel.svg);
+ --internal-hover-background-color: var(--grey-30);
+
padding: 6px 6px 6px 30px;
border: 0;
border-radius: 3px;
/* Allow for the photon focus ring to fit in the space by using a 4px margin. */
margin: 4px;
- background: url(../../../res/img/svg/searchfield-cancel.svg) 10px center
- no-repeat;
+ background: var(--internal-cancel-icon) 10px center no-repeat;
+ color: var(--base-foreground-color);
cursor: pointer;
font-size: inherit;
}
.appKeyboardShortcutsHeaderClose:hover {
- background-color: var(--grey-30);
+ background-color: var(--internal-hover-background-color);
}
.appKeyboardShortcutsNoInteract {
@@ -111,11 +123,11 @@
@keyframes appKeyboardShortcutsFadeIn {
from {
- background: #0000;
+ background: var(--internal-fade-from-color);
}
to {
- background: #000a;
+ background: var(--internal-fade-color);
}
}
@@ -150,3 +162,24 @@
outline: 1px solid CanvasText;
}
}
+
+:root.dark-mode {
+ .appKeyboardShortcutsBox {
+ border: 1px solid var(--base-border-color);
+ }
+
+ .appKeyboardShortcutsShortcut {
+ --internal-background-color: var(--ink-70);
+ --internal-shadow-color: #b1b1b380;
+ }
+
+ .appKeyboardShortcutsHeader {
+ --internal-background-color: var(--ink-80);
+ }
+
+ .appKeyboardShortcutsHeaderClose {
+ --internal-hover-background-color: var(
+ --clickable-ghost-hover-background-color
+ );
+ }
+}
diff --git a/src/components/app/ListOfPublishedProfiles.css b/src/components/app/ListOfPublishedProfiles.css
index 2d040d09bf..bd2ba2e962 100644
--- a/src/components/app/ListOfPublishedProfiles.css
+++ b/src/components/app/ListOfPublishedProfiles.css
@@ -35,6 +35,8 @@
}
.publishedProfilesListItem {
+ --internal-hover-shadow-color: var(--blue-60);
+
display: flex;
justify-content: space-between;
@@ -46,21 +48,27 @@
}
.publishedProfilesLink {
+ --internal-hover-background-color: var(--grey-90-a05);
+
display: flex;
min-width: 0;
flex: auto;
padding: 4px 8px; /* 4px as vertical padding so that it's 8 when added up, and 8px for the left and right padddings */
- color: inherit;
+ color: var(--base-foreground-color);
text-decoration: none;
}
+.publishedProfilesLink:visited {
+ color: var(--base-foreground-color);
+}
+
.publishedProfilesLink:hover {
- background: var(--grey-90-a05);
+ background: var(--internal-hover-background-color);
}
.publishedProfilesListItem_ConfirmDialogIsOpen,
.publishedProfilesListItem:focus-within {
- box-shadow: -3px 0 0 var(--blue-60); /* This is a border that doesn't move the content. */
+ box-shadow: -3px 0 0 var(--internal-hover-shadow-color); /* This is a border that doesn't move the content. */
}
.publishedProfilesDate {
@@ -100,3 +108,13 @@
.publishedProfilesDeleteButton {
margin-left: 8px;
}
+
+:root.dark-mode {
+ .publishedProfilesListItem {
+ --internal-hover-shadow-color: var(--blue-70);
+ }
+
+ .publishedProfilesLink {
+ --internal-hover-background-color: var(--grey-10-a10);
+ }
+}
diff --git a/src/components/app/MenuButtons/MetaInfo.css b/src/components/app/MenuButtons/MetaInfo.css
index 1067be8932..2a2d3c18a3 100644
--- a/src/components/app/MenuButtons/MetaInfo.css
+++ b/src/components/app/MenuButtons/MetaInfo.css
@@ -3,14 +3,25 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
.metaInfoPanel {
+ --internal-label-foreground-color: var(--grey-50);
+ --internal-subtitle-border-color: rgb(0 0 0 / 0.05);
+
width: 350px;
+ color: var(--base-foreground-color);
font-size: 12px;
line-height: 20px;
}
.metaInfoPanel,
.metaInfoPanel .arrowPanelArrow::before {
- background-color: white;
+ background-color: var(--base-background-color);
+}
+
+:root.dark-mode {
+ .metaInfoPanel {
+ --internal-label-foreground-color: var(--grey-40);
+ --internal-subtitle-border-color: rgb(237 237 240 / 0.05);
+ }
}
.metaInfoSection {
@@ -22,7 +33,7 @@
.metaInfoWideLabel {
display: inline-block;
width: 120px;
- color: var(--grey-50);
+ color: var(--internal-label-foreground-color);
}
.metaInfoLargeContent {
@@ -38,7 +49,7 @@
.visualMetricsLabel {
display: inline-block;
width: 145px;
- color: var(--grey-50);
+ color: var(--internal-label-foreground-color);
}
.metaInfoList {
@@ -62,7 +73,7 @@
.metaInfoSubTitle {
padding-top: 4px;
padding-bottom: 4px;
- border-bottom: 1px solid rgb(0 0 0 / 0.05);
+ border-bottom: 1px solid var(--internal-subtitle-border-color);
margin: 0;
font-size: 1.2em;
font-weight: 700;
diff --git a/src/components/app/MenuButtons/MetaOverheadStatistics.css b/src/components/app/MenuButtons/MetaOverheadStatistics.css
index 8a03792170..6eb1b04645 100644
--- a/src/components/app/MenuButtons/MetaOverheadStatistics.css
+++ b/src/components/app/MenuButtons/MetaOverheadStatistics.css
@@ -3,11 +3,19 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
.metaInfoGrid {
+ --internal-label-foreground-color: var(--grey-50);
+
display: grid;
margin-bottom: 20px;
grid-template-columns: repeat(4, 1fr);
}
+:root.dark-mode {
+ .metaInfoGrid {
+ --internal-label-foreground-color: var(--grey-40);
+ }
+}
+
.metaInfoGrid > div {
margin: 2px 0;
}
@@ -18,7 +26,7 @@
}
.metaInfoGrid > div:nth-child(4n + 1) {
- color: var(--grey-50);
+ color: var(--internal-label-foreground-color);
font-weight: 500;
}
diff --git a/src/components/app/MenuButtons/Permalink.css b/src/components/app/MenuButtons/Permalink.css
index ba9697c1f2..e0c3fd4839 100644
--- a/src/components/app/MenuButtons/Permalink.css
+++ b/src/components/app/MenuButtons/Permalink.css
@@ -4,8 +4,18 @@
/* This background image builds on the generic styles defined in
* MenuButtons/index.css when using an icon. */
+.menuButtonsPermalinkButtonButton {
+ --internal-icon: url(../../../../res/img/svg/link-dark-12.svg);
+}
+
+:root.dark-mode {
+ .menuButtonsPermalinkButtonButton {
+ --internal-icon: url(../../../../res/img/svg/link-light-12.svg);
+ }
+}
+
.menuButtonsPermalinkButtonButton::before {
- background-image: url(../../../../res/img/svg/link-dark-12.svg);
+ background-image: var(--internal-icon);
}
.menuButtonsPermalinkPanel .arrowPanelContent {
diff --git a/src/components/app/MenuButtons/Publish.css b/src/components/app/MenuButtons/Publish.css
index 8df6094722..60429e8b08 100644
--- a/src/components/app/MenuButtons/Publish.css
+++ b/src/components/app/MenuButtons/Publish.css
@@ -4,34 +4,72 @@
/* These two background images build on the generic styles defined in
* MenuButtons/index.css when using an icon. */
+.menuButtonsShareButtonButton {
+ --internal-share-icon: url(../../../../res/img/svg/share-dark-12.svg);
+ --internal-uploading-icon: url(../../../../res/img/svg/sharing-animated-dark-12.svg);
+}
+
.menuButtonsShareButtonButton::before {
- background-image: url(../../../../res/img/svg/share-dark-12.svg);
+ background-image: var(--internal-share-icon);
}
.menuButtonsShareButtonButton-uploading::before {
- background-image: url(../../../../res/img/svg/sharing-animated-dark-12.svg);
+ background-image: var(--internal-uploading-icon);
}
.menuButtonsShareButtonError {
- background-color: var(--red-60);
- color: white;
+ --internal-error-foreground-color: white;
+ --internal-error-background-color: var(--red-60);
+ --internal-error-hover-background-color: var(--red-70);
+ --internal-error-active-background-color: var(--red-80);
+ --internal-error-icon: url(../../../../res/img/svg/error.svg);
+
+ background-color: var(--internal-error-background-color);
+ color: var(--internal-error-foreground-color);
}
.menuButtonsShareButtonError:hover {
- background-color: var(--red-70);
+ background-color: var(--internal-error-hover-background-color);
}
.buttonWithPanel.open > .menuButtonsShareButtonError,
.menuButtonsShareButtonError:hover:active {
- background-color: var(--red-80);
+ background-color: var(--internal-error-active-background-color);
}
.menuButtonsShareButtonError::before {
- background-image: url(../../../../res/img/svg/error.svg);
+ background-image: var(--internal-error-icon);
}
.publishPanelPanel {
--width: 510px;
+ --internal-info-icon: url(../../../../res/img/svg/info.svg);
+ --internal-button-disabled-hover-background-color: var(--grey-90-a10);
+ --internal-upload-icon: url(../../../../res/img/svg/upload.svg);
+ --internal-download-icon: url(../../../../res/img/svg/download.svg);
+ --internal-upload-percentage-foreground-color: var(--blue-60);
+ --internal-upload-bar-background-color: var(--grey-40);
+ --internal-upload-bar-inner-background-color: var(--blue-50);
+}
+
+:root.dark-mode {
+ .menuButtonsShareButtonButton {
+ --internal-share-icon: url(../../../../res/img/svg/share-light-12.svg);
+ --internal-uploading-icon: url(../../../../res/img/svg/sharing-animated-dark-12.svg);
+ }
+
+ .menuButtonsShareButtonError {
+ --internal-error-foreground-color: var(--grey-20);
+ }
+
+ .publishPanelPanel {
+ --internal-info-icon: url(../../../../res/img/svg/info-light.svg);
+ --internal-button-disabled-hover-background-color: var(--grey-10-a10);
+ --internal-download-icon: url(../../../../res/img/svg/download-light.svg);
+ --internal-upload-percentage-foreground-color: var(--blue-60);
+ --internal-upload-bar-background-color: var(--grey-40);
+ --internal-upload-bar-inner-background-color: var(--blue-50);
+ }
}
.publishPanelContent {
@@ -46,7 +84,7 @@
* This background image is 44x44, so this puts it 16px left of the text. */
padding-left: 60px;
margin: 0 0 0 -60px;
- background: url(../../../../res/img/svg/info.svg) left center no-repeat;
+ background: var(--internal-info-icon) left center no-repeat;
line-height: 44px; /* This is the height of the background image */
}
@@ -93,7 +131,7 @@
.publishPanelButtonDisabled:hover,
.publishPanelButtonDisabled:active:hover {
- background-color: var(--grey-90-a10);
+ background-color: var(--internal-button-disabled-hover-background-color);
}
.publishPanelButtonsSvg {
@@ -107,13 +145,13 @@
.publishPanelButtonsSvgUpload {
width: 20px;
height: 20px;
- background: url(../../../../res/img/svg/upload.svg) center center no-repeat;
+ background: var(--internal-upload-icon) center center no-repeat;
}
.publishPanelButtonsSvgDownload {
width: 20px;
height: 20px;
- background: url(../../../../res/img/svg/download.svg) center center no-repeat;
+ background: var(--internal-download-icon) center center no-repeat;
}
.menuButtonsDownloadSize {
@@ -133,14 +171,14 @@
.publishPanelUploadPercentage {
margin: 10px 0;
- color: var(--blue-60);
+ color: var(--internal-upload-percentage-foreground-color);
}
.publishPanelUploadBar {
overflow: hidden;
height: 5px;
border-radius: 2px;
- background-color: var(--grey-40);
+ background-color: var(--internal-upload-bar-background-color);
}
.publishPanelUploadBarInner {
@@ -149,7 +187,7 @@
height: 3px;
border-radius: 0 2px 2px 0;
animation: animate-stripes 1s linear infinite;
- background-color: var(--blue-50);
+ background-color: var(--internal-upload-bar-inner-background-color);
background-image: linear-gradient(
135deg,
transparent 20%,
diff --git a/src/components/app/MenuButtons/index.css b/src/components/app/MenuButtons/index.css
index 88f34acab1..97c4226765 100644
--- a/src/components/app/MenuButtons/index.css
+++ b/src/components/app/MenuButtons/index.css
@@ -6,6 +6,16 @@
* This overrides most browser styles, for both links and buttons. */
/* stylelint-disable order/properties-order */
.menuButtonsButton {
+ --internal-hover-background-color: rgb(0 0 0 / 0.1);
+ --internal-active-background-color: rgb(0 0 0 / 0.2);
+ --internal-open-in-new-icon: url(../../../../res/img/svg/open-in-new-12.svg);
+ --internal-info-icon: url(../../../../res/img/svg/info-12.svg);
+ --internal-revert-icon: url(../../../../res/img/svg/undo-dark-12.svg);
+ --internal-full-view-icon: url(../../../../res/img/svg/maximize-dark-12.svg);
+ --internal-upload-foreground-color: var(--grey-50);
+ --internal-upload-border-color: rgb(0 0 0 / 0.05);
+ --internal-upload-icon: url(../../../../res/img/svg/cloud-dark-12.svg);
+
position: relative; /* This allows to absolutely position its children */
display: flex;
height: 100%;
@@ -28,12 +38,26 @@
/* stylelint-enable order/properties-order */
.menuButtonsButton:hover {
- background-color: rgb(0 0 0 / 0.1);
+ background-color: var(--internal-hover-background-color);
+}
+
+:root.dark-mode {
+ .menuButtonsButton {
+ --internal-hover-background-color: rgb(255 255 255 / 0.1);
+ --internal-active-background-color: rgb(255 255 255 / 0.2);
+ --internal-open-in-new-icon: url(../../../../res/img/svg/open-in-new-light-12.svg);
+ --internal-info-icon: url(../../../../res/img/svg/info-light-12.svg);
+ --internal-revert-icon: url(../../../../res/img/svg/undo-light-12.svg);
+ --internal-full-view-icon: url(../../../../res/img/svg/maximize-light-12.svg);
+ --internal-upload-foreground-color: var(--grey-50);
+ --internal-upload-border-color: rgb(255 255 255 / 0.05);
+ --internal-upload-icon: url(../../../../res/img/svg/cloud-light-12.svg);
+ }
}
.buttonWithPanel.open > .menuButtonsButton,
.menuButtonsButton:hover:active {
- background-color: rgb(0 0 0 / 0.2);
+ background-color: var(--internal-active-background-color);
}
/* Use this class if a button has an icon */
@@ -69,7 +93,7 @@
top: 4px;
width: 1px;
height: calc(100% - 8px);
- background: var(--grey-30);
+ background: var(--base-border-color);
content: '';
}
@@ -92,34 +116,33 @@
width: 12px;
height: 12px;
padding-left: 4px;
- background: url(../../../../res/img/svg/open-in-new-12.svg) no-repeat right /
- 12px;
+ background: var(--internal-open-in-new-icon) no-repeat right / 12px;
}
/* These classes define respective states for the metainfo button. They change
* the icon whose generic styles are defined above. */
.menuButtonsMetaInfoButtonButton::before {
- background-image: url(../../../../res/img/svg/info-12.svg);
+ background-image: var(--internal-info-icon);
}
/* This is the revert button, appearing after publishing a profile. */
.menuButtonsRevertButton::before {
- background-image: url(../../../../res/img/svg/undo-dark-12.svg);
+ background-image: var(--internal-revert-icon);
}
.menuButtonsRevertToFullView::before {
- background-image: url(../../../../res/img/svg/maximize-dark-12.svg);
+ background-image: var(--internal-full-view-icon);
}
.profileInfoUploadedActions {
padding: 8px 0 8px 40px; /* The 40px padding leaves the room for the cloud image */
- border-bottom: 1px solid rgb(0 0 0 / 0.05);
+ border-bottom: 1px solid var(--internal-upload-border-color);
font-size: 13px;
}
.profileInfoUploadedLabel {
padding-right: 8px;
- color: var(--grey-50);
+ color: var(--internal-upload-foreground-color);
}
.profileInfoUploadedDate {
@@ -135,8 +158,7 @@
display: block;
width: 32px;
height: 32px;
- background: url(../../../../res/img/svg/cloud-dark-12.svg) no-repeat left /
- 32px;
+ background: var(--internal-upload-icon) no-repeat left / 32px;
content: '';
opacity: 0.5;
}
diff --git a/src/components/app/ProfileDeleteButton.css b/src/components/app/ProfileDeleteButton.css
index 0eb6a1adc5..67d93629e3 100644
--- a/src/components/app/ProfileDeleteButton.css
+++ b/src/components/app/ProfileDeleteButton.css
@@ -3,21 +3,29 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
.profileDeleteButtonSuccess {
+ --internal-icon: url(../../../res/img/svg/check-dark.svg);
+
/* Note: 20px is: 16px (icon width) + 4px (distance from the text) */
padding-left: 20px;
margin: 0;
- background: url(../../../res/img/svg/check-dark.svg) no-repeat left / 16px
- 16px;
+ background: var(--internal-icon) no-repeat left / 16px 16px;
white-space: nowrap;
}
+:root.dark-mode {
+ .profileDeleteButtonSuccess {
+ --internal-icon: url(../../../res/img/svg/check-light.svg);
+ }
+}
+
.profileDeleteButtonError {
+ --internal-icon: url(../../../res/img/svg/error-red.svg);
+
/* Note: 24px is: 16px (icon width) + 4px (icon padding) + 4px (distance from the text) */
padding-left: 24px;
/* The icon is 4px below the top */
- background: url(../../../res/img/svg/error-red.svg) no-repeat 0 4px / 16px
- 16px;
+ background: var(--internal-icon) no-repeat 0 4px / 16px 16px;
color: var(--red-60);
overflow-wrap: break-word;
}
diff --git a/src/components/app/ProfileFilterNavigator.css b/src/components/app/ProfileFilterNavigator.css
index cb035a2a8c..b9699eb3a2 100644
--- a/src/components/app/ProfileFilterNavigator.css
+++ b/src/components/app/ProfileFilterNavigator.css
@@ -3,6 +3,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
.profileFilterNavigator--tab-selector {
+ --internal-disabled-arrow-color: var(--grey-30);
+
display: flex;
align-items: center;
column-gap: 5px;
@@ -11,6 +13,12 @@
padding-inline: 20px 5px;
}
+:root.dark-mode {
+ .profileFilterNavigator--tab-selector {
+ --internal-disabled-arrow-color: var(--grey-60);
+ }
+}
+
/* This is the dropdown arrow on the left of the button. */
.profileFilterNavigator--tab-selector::before {
position: absolute;
@@ -30,7 +38,7 @@
.profileFilterNavigator--tab-selector:not(.button)::before {
/* Disabled tab selector indicates this with a grayed out arrow. */
- color: var(--grey-30);
+ color: var(--internal-disabled-arrow-color);
}
@media (forced-colors: active) {
diff --git a/src/components/app/ProfileName.css b/src/components/app/ProfileName.css
index 4a34f40ec6..a937377d77 100644
--- a/src/components/app/ProfileName.css
+++ b/src/components/app/ProfileName.css
@@ -3,18 +3,22 @@
* file, you can obtain one at http://mozilla.org/mpl/2.0/. */
.profileNameInput {
+ --internal-foreground-color: var(--grey-60);
+
height: 17px;
padding: 0 6px;
border: none;
border-radius: 1px;
margin: 4px;
- color: var(--grey-60);
+ color: var(--internal-foreground-color);
font: inherit;
font-weight: 700;
line-height: 17px;
}
.profileNameButton {
+ --internal-icon: url(../../../res/img/svg/edit-name-profiler.svg);
+
overflow: hidden;
min-width: 80px;
padding: 0 9px;
@@ -24,16 +28,17 @@
white-space: nowrap;
}
-.profileNameButton::before {
- flex-shrink: 0;
- background-image: url(../../../res/img/svg/edit-name-profiler.svg);
+:root.dark-mode {
+ .profileNameInput {
+ --internal-foreground-color: var(--base-foreground-color);
+ }
+
+ .profileNameButton {
+ --internal-icon: url(../../../res/img/svg/edit-name-profiler-light.svg);
+ }
}
-/* Using the style for links rather than for normal inputs, because we don't
- * want to trigger a border that would move things around. */
-.profileNameInput:focus-visible {
- box-shadow:
- 0 0 0 2px var(--blue-50),
- 0 0 0 4px var(--blue-50-a30);
- outline: 0;
+.profileNameButton::before {
+ flex-shrink: 0;
+ background-image: var(--internal-icon);
}
diff --git a/src/components/app/ProfileName.tsx b/src/components/app/ProfileName.tsx
index 12e78e7df9..2b6e6e235c 100644
--- a/src/components/app/ProfileName.tsx
+++ b/src/components/app/ProfileName.tsx
@@ -144,7 +144,7 @@ class ProfileNameImpl extends React.PureComponent