Adopt the Compound color system

As a first step towards adopting the Compound design system and the new Element Call designs, this pulls in Compound's color tokens and applies them to all existing components. I've tried to choose tokens based on the semantics of where they're used, but in some cases, where the new and old design systems differ in semantics, it was necessary to choose tokens based on their resulting color. These hacks can be removed as we implement more of the new designs.

There were a set of environment variables that we used for custom themes, but Compound has way too many design tokens for that approach to still be a good idea, so I decided to replace them all with a single environment variable that just lets you write arbitrary custom CSS.
This commit is contained in:
Robin Townsend
2023-08-28 16:45:17 -04:00
parent 1dc05bed7d
commit aa628cc63c
34 changed files with 288 additions and 236 deletions

View File

@@ -10,19 +10,10 @@ LIVEKIT_SECRET="secret"
# Used for determining the homeserver to use for short urls etc.
# VITE_FALLBACK_STUN_ALLOWED=false
# VITE_CUSTOM_THEME=true
# VITE_THEME_ACCENT=#0dbd8b
# VITE_THEME_ACCENT_20=#0dbd8b33
# VITE_THEME_ALERT=#ff5b55
# VITE_THEME_ALERT_20=#ff5b5533
# VITE_THEME_LINKS=#0086e6
# VITE_THEME_PRIMARY_CONTENT=#ffffff
# VITE_THEME_SECONDARY_CONTENT=#a9b2bc
# VITE_THEME_TERTIARY_CONTENT=#8e99a4
# VITE_THEME_TERTIARY_CONTENT_20=#8e99a433
# VITE_THEME_QUATERNARY_CONTENT=#6f7882
# VITE_THEME_QUINARY_CONTENT=#394049
# VITE_THEME_SYSTEM=#21262c
# VITE_THEME_BACKGROUND=#15191e
# VITE_THEME_BACKGROUND_85=#15191ed9
# VITE_THEME_SUBTLE_PRIMARY=#26282D
# CSS to be injected into the page for the purpose of custom theming.
# Generally, writing a custom theme involves overriding Compound design tokens,
# which are documented here:
# https://compound.element.io/?path=/docs/foundations-design-tokens--docs
# https://compound.element.io/?path=/docs/tokens-color-palettes--docs
# https://compound.element.io/?path=/docs/tokens-semantic-colors--docs
# VITE_CUSTOM_CSS=".cpd-theme-dark.cpd-theme-dark { --cpd-color-theme-bg: #101317; }"

View File

@@ -47,6 +47,7 @@
"@sentry/react": "^6.13.3",
"@sentry/tracing": "^6.13.3",
"@use-gesture/react": "^10.2.11",
"@vector-im/compound-design-tokens": "^0.0.3",
"@vitejs/plugin-basic-ssl": "^1.0.1",
"@vitejs/plugin-react": "^4.0.1",
"classnames": "^2.3.1",

View File

@@ -13,7 +13,7 @@
</script>
</head>
<body>
<body class="cpd-theme-dark">
<div id="root"></div>
</body>
</html>

View File

@@ -16,7 +16,7 @@ limitations under the License.
.avatar {
position: relative;
color: var(--primary-content);
color: var(--stopgap-color-on-solid-accent);
display: flex;
align-items: center;
justify-content: center;
@@ -33,7 +33,7 @@ limitations under the License.
}
.avatar svg * {
fill: var(--primary-content);
fill: var(--cpd-color-text-primary);
}
.avatar span {

View File

@@ -18,5 +18,5 @@ limitations under the License.
flex: 1;
border-radius: 8px;
padding: 16px;
background-color: var(--subtle-primary);
background-color: var(--cpd-color-bg-subtle-primary);
}

View File

@@ -17,7 +17,7 @@ limitations under the License.
.banner {
position: absolute;
padding: 29px;
background-color: var(--quaternary-content);
background-color: var(--cpd-color-bg-subtle-primary);
vertical-align: middle;
font-size: var(--font-size-body);
text-align: center;

View File

@@ -24,5 +24,5 @@ limitations under the License.
margin: 8px;
border-radius: 100%;
background-color: var(--subtle-primary);
background-color: var(--cpd-color-bg-subtle-primary);
}

View File

@@ -34,7 +34,7 @@ limitations under the License.
.facepile .avatar {
position: absolute;
top: 0;
border: 1px solid var(--system);
border: 1px solid var(--cpd-color-bg-canvas-default);
}
.facepile.md .avatar {

View File

@@ -82,27 +82,6 @@ limitations under the License.
stroke: white;
}
.backButton {
background: transparent;
border: none;
display: flex;
color: var(--primary-content);
cursor: pointer;
align-items: center;
}
.backButton h3 {
margin: 0;
}
.backButton > * {
margin-right: 12px;
}
.backButton > :last-child {
margin-right: 0;
}
.userName {
font-weight: 600;
margin-right: 8px;
@@ -111,15 +90,6 @@ limitations under the License.
flex-shrink: 1;
}
.signOutButton {
background: transparent;
border: none;
color: rgb(255, 75, 85);
cursor: pointer;
font-weight: 600;
flex-shrink: 0;
}
.versionMismatchWarning {
padding-left: 15px;
}
@@ -134,7 +104,7 @@ limitations under the License.
mask-image: url("./icons/AlertTriangleFilled.svg");
mask-repeat: no-repeat;
mask-size: contain;
background-color: var(--alert);
background-color: var(--cpd-color-icon-critical-primary);
padding-right: 5px;
}

View File

@@ -21,8 +21,8 @@ limitations under the License.
overflow-y: auto;
list-style: none;
background-color: transparent;
border: 1px solid var(--quinary-content);
background-color: var(--background);
border: 1px solid var(--cpd-color-border-interactive-secondary);
background-color: var(--cpd-color-bg-canvas-default);
border-radius: 8px;
}
@@ -31,7 +31,7 @@ limitations under the License.
align-items: center;
justify-content: space-between;
background-color: transparent;
color: var(--primary-content);
color: var(--cpd-color-text-primary);
padding: 8px 16px;
outline: none;
cursor: pointer;
@@ -44,6 +44,6 @@ limitations under the License.
}
.option.disabled {
color: var(--quaternary-content);
background-color: var(--bgColor3);
color: var(--cpd-color-text-disabled);
background-color: var(--stopgap-bgColor3);
}

View File

@@ -27,7 +27,7 @@ limitations under the License.
display: flex;
align-items: center;
padding: 0 12px;
color: var(--primary-content);
color: var(--cpd-color-text-primary);
font-size: var(--font-size-body);
text-overflow: ellipsis;
overflow: hidden;
@@ -44,7 +44,11 @@ limitations under the License.
.menuItem.focused,
.menuItem:hover {
background-color: var(--quinary-content);
background-color: var(--cpd-color-bg-action-secondary-hovered);
}
.menuItem:active {
background-color: var(--cpd-color-bg-action-secondary-pressed);
}
.menuItem.focused:first-child,
@@ -65,5 +69,5 @@ limitations under the License.
}
.checkIcon * {
stroke: var(--primary-content);
stroke: var(--cpd-color-text-primary);
}

View File

@@ -28,7 +28,7 @@ limitations under the License.
}
.modal {
background: #21262c;
background: var(--cpd-color-bg-subtle-secondary);
box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.15);
border-radius: 8px;
max-width: 90vw;

View File

@@ -15,12 +15,12 @@ limitations under the License.
*/
.tooltip {
background-color: var(--system);
background-color: var(--cpd-color-bg-subtle-secondary);
flex-direction: row;
justify-content: center;
align-items: center;
padding: 10px;
color: var(--primary-content);
color: var(--cpd-color-text-primary);
border-radius: 8px;
max-width: 135px;
width: max-content;

View File

@@ -22,7 +22,7 @@ limitations under the License.
}
.userButton svg * {
fill: var(--primary-content);
fill: var(--cpd-color-icon-primary);
}
.avatar {

View File

@@ -81,7 +81,7 @@ limitations under the License.
}
.authLinks a {
color: var(--accent);
color: var(--cpd-color-text-action-accent);
text-decoration: none;
font-weight: normal;
}

View File

@@ -46,8 +46,8 @@ limitations under the License.
}
.button {
color: var(--primary-content);
background-color: var(--accent);
color: var(--stopgap-color-on-solid-accent);
background-color: var(--cpd-color-text-action-accent);
}
.button:focus,
@@ -62,7 +62,7 @@ limitations under the License.
}
.toolbarButton:disabled {
opacity: 0.55;
background-color: var(--cpd-color-bg-action-primary-disabled);
}
.toolbarButton,
@@ -70,72 +70,89 @@ limitations under the License.
width: 50px;
height: 50px;
border-radius: 50px;
background-color: var(--system);
background-color: var(--cpd-color-bg-subtle-secondary);
}
.toolbarButton:hover,
.toolbarButtonSecondary:hover {
background-color: var(--quinary-content);
background-color: var(--cpd-color-bg-action-secondary-hovered);
}
.toolbarButton:active,
.toolbarButtonSecondary:active {
background-color: var(--cpd-color-bg-action-secondary-pressed);
}
.toolbarButton.on,
.toolbarButton.off {
background-color: var(--primary-content);
background-color: var(--cpd-color-bg-action-primary-rest);
}
.toolbarButtonSecondary.on {
background-color: var(--accent);
background-color: var(--cpd-color-text-success-primary);
}
.iconButton:not(.stroke) svg * {
fill: var(--primary-content);
fill: var(--cpd-color-bg-action-primary-rest);
}
.iconButton:not(.stroke):hover svg * {
fill: var(--accent);
fill: var(--cpd-color-icon-accent-tertiary);
}
.iconButton.on:not(.stroke) svg * {
fill: var(--accent);
fill: var(--cpd-color-icon-accent-tertiary);
}
.iconButton.on.stroke svg * {
stroke: var(--accent);
stroke: var(--cpd-color-icon-accent-tertiary);
}
.hangupButton {
background-color: var(--cpd-color-bg-critical-primary);
}
.hangupButton,
.hangupButton:hover {
background-color: var(--alert);
background-color: var(--cpd-color-bg-critical-hovered);
}
.toolbarButton.hangupButton svg * {
fill: var(--stopgap-color-on-solid-accent);
}
.toolbarButton svg *,
.toolbarButtonSecondary svg * {
fill: var(--cpd-color-icon-primary);
}
.toolbarButton.on svg * {
fill: var(--accent);
fill: var(--cpd-color-icon-accent-tertiary);
}
.toolbarButton.off svg * {
fill: #21262c;
fill: var(--cpd-color-icon-on-solid-primary);
}
.toolbarButtonSecondary.on svg * {
fill: var(--primary-content);
fill: var(--stopgap-color-on-solid-accent);
}
.secondary,
.copyButton {
color: var(--accent);
border: 2px solid var(--accent);
color: var(--cpd-color-text-action-accent);
border: 2px solid var(--cpd-color-text-action-accent);
background-color: transparent;
}
.secondaryHangup {
color: var(--alert);
border: 2px solid var(--alert);
color: var(--cpd-color-text-critical-primary);
border: 2px solid var(--cpd-color-border-critical-primary);
background-color: transparent;
}
.copyButton.secondaryCopy {
color: var(--primary-content);
border-color: var(--primary-content);
color: var(--cpd-color-text-primary);
border-color: var(--cpd-color-border-interactive-primary);
}
.copyButton {
@@ -158,12 +175,12 @@ limitations under the License.
}
.copyButton:not(.on) svg * {
fill: var(--accent);
fill: var(--cpd-color-icon-accent-tertiary);
}
.copyButton.on {
border-color: transparent;
background-color: var(--accent);
background-color: var(--cpd-color-text-action-accent);
color: white;
}
@@ -172,32 +189,36 @@ limitations under the License.
}
.copyButton.secondaryCopy:not(.on) svg * {
fill: var(--primary-content);
fill: var(--cpd-color-bg-action-primary-rest);
}
.iconCopyButton svg * {
fill: var(--tertiary-content);
fill: var(--cpd-color-icon-accent-tertiary);
}
.iconCopyButton:hover svg * {
fill: var(--accent);
fill: var(--cpd-color-icon-accent-tertiary);
}
.iconCopyButton.on svg *,
.iconCopyButton.on:hover svg * {
fill: transparent;
stroke: var(--accent);
stroke: var(--cpd-color-text-action-accent);
}
.dropdownButton {
color: var(--primary-content);
color: var(--cpd-color-text-primary);
padding: 2px 8px;
border-radius: 8px;
}
.dropdownButton:hover,
.dropdownButton:hover {
background-color: var(--cpd-color-bg-action-secondary-hovered);
}
.dropdownButton:active,
.dropdownButton.on {
background-color: var(--quinary-content);
background-color: var(--cpd-color-bg-action-secondary-pressed);
}
.dropdownButton svg {
@@ -205,7 +226,7 @@ limitations under the License.
}
.dropdownButton svg * {
fill: var(--primary-content);
fill: var(--cpd-color-icon-primary);
}
.lg {
@@ -215,6 +236,6 @@ limitations under the License.
.linkButton {
background-color: transparent;
border: none;
color: var(--accent);
color: var(--cpd-color-text-action-accent);
cursor: pointer;
}

View File

@@ -26,7 +26,7 @@ limitations under the License.
.callTile {
height: 95px;
padding: 12px;
background-color: var(--system);
background-color: var(--cpd-color-bg-subtle-secondary);
border-radius: 8px;
overflow: hidden;
box-sizing: border-box;
@@ -52,7 +52,7 @@ limitations under the License.
flex-direction: column;
flex: 1;
padding: 0 16px;
color: var(--primary-content);
color: var(--cpd-color-text-primary);
min-width: 0;
}

View File

@@ -39,5 +39,5 @@ limitations under the License.
}
.notice {
color: var(--secondary-content);
color: var(--cpd-color-text-secondary);
}

View File

@@ -47,5 +47,5 @@ limitations under the License.
}
.notice {
color: var(--secondary-content);
color: var(--cpd-color-text-secondary);
}

View File

@@ -21,6 +21,7 @@ limitations under the License.
(to avoid having to maintain a fork of Inter). */
@import "normalize.css/normalize.css";
@import "@vector-im/compound-design-tokens/assets/web/css/compound-design-tokens.css";
:root {
--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI",
@@ -37,22 +38,17 @@ limitations under the License.
--font-size-title: calc(24px * var(--font-scale));
--font-size-headline: calc(32px * var(--font-scale));
--accent: #0dbd8b;
--accent-20: #0dbd8b33;
--alert: #ff5b55;
--alert-20: #ff5b5533;
--links: #0086e6;
--primary-content: #ffffff;
--secondary-content: #a9b2bc;
--tertiary-content: #8e99a4;
--tertiary-content-20: #8e99a433;
--quaternary-content: #6f7882;
--quinary-content: #394049;
--system: #21262c;
--background: #15191e;
--background-85: rgba(23, 25, 28, 0.85);
--bgColor3: #444; /* This isn't found anywhere in the designs or Compound */
--subtle-primary: #26282d;
--cpd-color-border-accent: var(--cpd-color-green-1100);
/* These colors are needed during the transitionary period between the old and
new Compound design systems, but should be removed ASAP */
--stopgap-color-on-solid-accent: var(--cpd-color-bg-canvas-default);
--stopgap-background-85: rgba(255, 255, 255, 0.85);
--stopgap-bgColor3: #444;
}
.cpd-theme-dark {
--stopgap-color-on-solid-accent: var(--cpd-color-text-primary);
--stopgap-background-85: rgba(16, 19, 23, 0.85);
}
@font-face {
@@ -136,8 +132,8 @@ limitations under the License.
}
body {
background-color: var(--background);
color: var(--primary-content);
background-color: var(--cpd-color-bg-canvas-default);
color: var(--cpd-color-text-primary);
color-scheme: dark;
margin: 0;
font-family: var(--font-family);
@@ -204,7 +200,7 @@ p {
}
a {
color: var(--accent);
color: var(--cpd-color-text-action-accent);
text-decoration: none;
}
@@ -216,8 +212,8 @@ a:active {
hr {
width: calc(100% - 24px);
border: none;
border-top: 1px solid var(--quinary-content);
color: var(--quaternary-content);
border-top: 1px solid var(--cpd-color-border-interactive-secondary);
color: var(--cpd-color-border-interactive-secondary);
overflow: visible;
text-align: center;
height: 5px;

View File

@@ -87,62 +87,10 @@ export class Initializer {
});
// Custom Themeing
if (import.meta.env.VITE_CUSTOM_THEME) {
const style = document.documentElement.style;
style.setProperty(
"--accent",
import.meta.env.VITE_THEME_ACCENT as string
);
style.setProperty(
"--accent-20",
import.meta.env.VITE_THEME_ACCENT_20 as string
);
style.setProperty("--alert", import.meta.env.VITE_THEME_ALERT as string);
style.setProperty(
"--alert-20",
import.meta.env.VITE_THEME_ALERT_20 as string
);
style.setProperty("--links", import.meta.env.VITE_THEME_LINKS as string);
style.setProperty(
"--primary-content",
import.meta.env.VITE_THEME_PRIMARY_CONTENT as string
);
style.setProperty(
"--secondary-content",
import.meta.env.VITE_THEME_SECONDARY_CONTENT as string
);
style.setProperty(
"--tertiary-content",
import.meta.env.VITE_THEME_TERTIARY_CONTENT as string
);
style.setProperty(
"--tertiary-content-20",
import.meta.env.VITE_THEME_TERTIARY_CONTENT_20 as string
);
style.setProperty(
"--quaternary-content",
import.meta.env.VITE_THEME_QUATERNARY_CONTENT as string
);
style.setProperty(
"--quinary-content",
import.meta.env.VITE_THEME_QUINARY_CONTENT as string
);
style.setProperty(
"--system",
import.meta.env.VITE_THEME_SYSTEM as string
);
style.setProperty(
"--background",
import.meta.env.VITE_THEME_BACKGROUND as string
);
style.setProperty(
"--background-85",
import.meta.env.VITE_THEME_BACKGROUND_85 as string
);
style.setProperty(
"--subtle-primary",
import.meta.env.VITE_THEME_SUBTLE_PRIMARY as string
);
if (import.meta.env.VITE_CUSTOM_CSS) {
const style = document.createElement("style");
style.textContent = import.meta.env.VITE_CUSTOM_CSS;
document.head.appendChild(style);
}
// Custom fonts

View File

@@ -42,7 +42,7 @@ limitations under the License.
position: absolute;
bottom: 11px;
right: -4px;
background-color: var(--quinary-content);
background-color: var(--cpd-color-subtle-primary);
width: 20px;
height: 20px;
border-radius: 10px;
@@ -53,7 +53,7 @@ limitations under the License.
}
.removeButton {
color: var(--accent);
color: var(--cpd-color-text-action-accent);
font-size: var(--font-size-caption);
padding: 6px 0;
}

View File

@@ -42,7 +42,7 @@ limitations under the License.
.inputField {
border-radius: 4px;
transition: border-color 0.25s;
border: 1px solid var(--quinary-content);
border: 1px solid var(--cpd-color-border-interactive-primary);
}
.inputField input,
@@ -52,8 +52,8 @@ limitations under the License.
border: none;
border-radius: 4px;
padding: 12px 9px 10px 9px;
color: var(--primary-content);
background-color: var(--background);
color: var(--cpd-color-text-primary);
background-color: var(--cpd-color-bg-canvas-default);
flex: 1;
min-width: 0;
}
@@ -61,7 +61,7 @@ limitations under the License.
.inputField.disabled input,
.inputField.disabled textarea,
.inputField.disabled span {
color: var(--quaternary-content);
color: var(--cpd-color-text-disabled);
}
.inputField span {
@@ -81,13 +81,13 @@ limitations under the License.
.inputField input:placeholder-shown:focus::placeholder,
.inputField textarea:placeholder-shown:focus::placeholder {
transition: color 0.25s ease-in 0.1s;
color: var(--quaternary-content);
color: var(--cpd-color-text-placeholder);
}
.inputField label {
transition: font-size 0.25s ease-out 0.1s, color 0.25s ease-out 0.1s,
top 0.25s ease-out 0.1s, background-color 0.25s ease-out 0.1s;
color: var(--tertiary-content);
color: var(--cpd-color-text-secondary);
background-color: transparent;
font-size: var(--font-size-body);
position: absolute;
@@ -103,7 +103,7 @@ limitations under the License.
}
.inputField:focus-within {
border-color: var(--links);
border-color: var(--cpd-color-text-link-external);
}
.inputField input:focus,
@@ -117,7 +117,7 @@ limitations under the License.
.inputField textarea:focus + label,
.inputField textarea:not(:placeholder-shown) + label,
.inputField.prefix textarea + label {
background-color: var(--system);
background-color: var(--cpd-color-bg-canvas-default);
transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s,
top 0.25s ease-out 0s, background-color 0.25s ease-out 0s;
font-size: var(--font-size-micro);
@@ -128,7 +128,7 @@ limitations under the License.
.inputField input:focus + label,
.inputField textarea:focus + label {
color: var(--links);
color: var(--cpd-color-border-focused);
}
.checkboxField {
@@ -169,11 +169,11 @@ limitations under the License.
.checkboxField.disabled,
.checkboxField.disabled .description {
color: var(--quinary-content);
color: var(--cpd-color-text-disabled);
}
.checkboxField.disabled .checkbox {
border-color: var(--quinary-content);
border-color: var(--cpd-color-border-disabled);
}
.checkbox svg {
@@ -181,12 +181,12 @@ limitations under the License.
}
.checkbox svg * {
stroke: var(--primary-content);
stroke: var(--stopgap-color-on-solid-accent);
}
.checkboxField input[type="checkbox"]:checked + label > .checkbox {
background: var(--accent);
border-color: var(--accent);
background: var(--cpd-color-text-action-accent);
border-color: var(--cpd-color-text-action-accent);
}
.checkboxField input[type="checkbox"]:checked + label > .checkbox svg {
@@ -194,18 +194,18 @@ limitations under the License.
}
.checkboxField:focus-within .checkbox {
border: 1.5px solid var(--links) !important;
border: 1.5px solid var(--cpd-color-text-link-external) !important;
}
.errorMessage {
margin: 0;
font-size: var(--font-size-caption);
color: var(--alert);
color: var(--cpd-color-text-critical-primary);
font-weight: 600;
}
.description {
color: var(--secondary-content);
color: var(--cpd-color-text-secondary);
margin-left: 26px;
width: 100%; /* Ensure that it breaks onto the next row */
}

View File

@@ -31,11 +31,11 @@ limitations under the License.
align-items: center;
justify-content: space-between;
padding: 0 12px;
background-color: var(--background);
background-color: var(--cpd-color-bg-canvas-default);
border-radius: 8px;
border: 1px solid var(--quinary-content);
border: 1px solid var(--cpd-color-border-interactive-primary);
font-size: var(--font-size-body);
color: var(--primary-content);
color: var(--cpd-color-text-primary);
height: 40px;
max-width: 100%;
width: 100%;

View File

@@ -18,7 +18,7 @@ limitations under the License.
display: flex;
flex-direction: column;
width: 194px;
background: var(--system);
background: var(--cpd-color-bg-subtle-secondary);
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
border-radius: 8px;
}

View File

@@ -15,7 +15,7 @@ limitations under the License.
*/
.inspector {
background-color: var(--system);
background-color: var(--cpd-color-bg-subtle-secondary);
}
.scrollContainer {
@@ -36,6 +36,6 @@ limitations under the License.
.sequenceDiagramViewer :global(.messageText) {
font-size: var(--font-size-caption);
fill: var(--primary-content) !important;
stroke: var(--primary-content) !important;
fill: var(--cpd-color-text-primary) !important;
stroke: var(--cpd-color-text-primary) !important;
}

View File

@@ -57,14 +57,14 @@ limitations under the License.
background: linear-gradient(
360deg,
#15191e 0%,
rgba(21, 25, 30, 0.9) 37%,
rgba(21, 25, 30, 0.8) 49.68%,
rgba(21, 25, 30, 0.7) 56.68%,
rgba(21, 25, 30, 0.427397) 72.92%,
rgba(21, 25, 30, 0.257534) 81.06%,
rgba(21, 25, 30, 0.136986) 87.29%,
rgba(21, 25, 30, 0.0658079) 92.4%,
rgba(21, 25, 30, 0) 100%
rgba(16, 19, 23, 0.9) 37%,
rgba(16, 19, 23, 0.8) 49.68%,
rgba(16, 19, 23, 0.7) 56.68%,
rgba(16, 19, 23, 0.427397) 72.92%,
rgba(16, 19, 23, 0.257534) 81.06%,
rgba(16, 19, 23, 0.136986) 87.29%,
rgba(16, 19, 23, 0.0658079) 92.4%,
rgba(16, 19, 23, 0) 100%
);
}

View File

@@ -20,7 +20,7 @@ limitations under the License.
height: 50vh;
border-radius: 24px;
overflow: hidden;
background-color: var(--bgColor3);
background-color: var(--stopgap-bgColor3);
margin: 20px;
}
@@ -41,7 +41,7 @@ limitations under the License.
display: flex;
justify-content: center;
align-items: center;
background-color: var(--bgColor3);
background-color: var(--stopgap-bgColor3);
}
.cameraPermissions {
@@ -62,7 +62,7 @@ limitations under the License.
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(23, 25, 28, 0.9);
background-color: var(--stopgap-background-85);
}
.previewButtons > * {

View File

@@ -20,7 +20,7 @@ limitations under the License.
}
.settingsModal p {
color: var(--secondary-content);
color: var(--cpd-color-text-secondary);
}
.tabContainer {

View File

@@ -44,12 +44,12 @@ limitations under the License.
}
.tab > * {
color: var(--secondary-content);
color: var(--cpd-color-text-secondary);
margin: 0 8px 0 0;
}
.tab svg * {
fill: var(--secondary-content);
fill: var(--cpd-color-text-secondary);
}
.tab > :last-child {
@@ -57,15 +57,15 @@ limitations under the License.
}
.tab.selected {
background-color: var(--accent);
background-color: var(--cpd-color-text-action-accent);
}
.tab.selected * {
color: var(--primary-content);
color: var(--stopgap-color-on-solid-accent);
}
.tab.selected svg * {
fill: var(--primary-content);
fill: var(--stopgap-color-on-solid-accent);
}
.tab.disabled {

View File

@@ -37,7 +37,7 @@ limitations under the License.
}
.link {
color: var(--links);
color: var(--cpd-color-text-link-external);
}
.link:hover {
@@ -46,7 +46,7 @@ limitations under the License.
}
.primary {
color: var(--accent);
color: var(--cpd-color-text-action-accent);
}
.overflowEllipsis {

View File

@@ -53,7 +53,7 @@ limitations under the License.
bottom: -1px;
content: "";
border-radius: var(--tileRadius);
box-shadow: inset 0 0 0 4px var(--accent) !important;
box-shadow: inset 0 0 0 4px var(--cpd-color-border-accent) !important;
opacity: 0;
transition: opacity ease 0.15s;
}
@@ -77,8 +77,8 @@ limitations under the License.
position: absolute;
height: 24px;
padding: 0 8px;
color: var(--primary-content);
background-color: var(--background-85);
color: var(--cpd-color-text-primary);
background-color: var(--stopgap-background-85);
display: flex;
align-items: center;
justify-content: center;
@@ -95,6 +95,10 @@ limitations under the License.
margin-right: 4px;
}
.infoBubble > svg * {
fill: var(--cpd-color-icon-primary);
}
.toolbar {
position: absolute;
top: 0;
@@ -103,8 +107,8 @@ limitations under the License.
width: 100%;
height: 42px;
color: var(--primary-content);
background-color: var(--background-85);
color: var(--cpd-color-text-primary);
background-color: var(--stopgap-background-85);
display: flex;
align-items: center;
@@ -154,7 +158,7 @@ limitations under the License.
.videoMutedOverlay {
width: 100%;
height: 100%;
background-color: #21262c;
background-color: var(--cpd-color-bg-subtle-secondary);
}
.presenterLabel {
@@ -162,7 +166,7 @@ limitations under the License.
top: 20px;
left: 50%;
transform: translateX(-50%);
background-color: #17191c;
background-color: var(--stopgap-background-85);
border-radius: 4px;
display: flex;
justify-content: center;

View File

@@ -40,9 +40,9 @@ limitations under the License.
appearance: none;
background-color: transparent;
--slider-color: var(--quinary-content);
--slider-color: var(--cpd-color-bg-subtle-primary);
--slider-height: 4px;
--thumb-color: var(--accent);
--thumb-color: var(--cpd-color-text-action-accent);
--thumb-radius: 100%;
--thumb-size: 16px;
--thumb-margin-top: -6px;

119
yarn.lock
View File

@@ -3838,6 +3838,11 @@
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
"@trysound/sax@0.2.0":
version "0.2.0"
resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
"@types/aria-query@^4.2.0":
version "4.2.2"
resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc"
@@ -4095,6 +4100,11 @@
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
"@types/q@^1.5.1":
version "1.5.5"
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df"
integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==
"@types/qs@^6.9.5":
version "6.9.7"
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
@@ -4355,6 +4365,13 @@
dependencies:
"@use-gesture/core" "10.2.16"
"@vector-im/compound-design-tokens@^0.0.3":
version "0.0.3"
resolved "https://registry.yarnpkg.com/@vector-im/compound-design-tokens/-/compound-design-tokens-0.0.3.tgz#89214c69108a14f5d3e4a73ddc44852862531f2b"
integrity sha512-XxmySUvfjD6EuAM7f6lsGIhuv94TFfoEpKxYh+HKn1hPBFcMEKKImu/jK5tnpOv2xuZOSrK0Pm6qMLnxLwOXOw==
dependencies:
svg2vectordrawable "^2.9.1"
"@vitejs/plugin-basic-ssl@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz#48c46eab21e0730921986ce742563ae83fe7fe34"
@@ -4665,6 +4682,11 @@ abab@^2.0.6:
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
abs-svg-path@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/abs-svg-path/-/abs-svg-path-0.1.1.tgz#df601c8e8d2ba10d4a76d625e236a9a39c2723bf"
integrity sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==
accepts@~1.3.5, accepts@~1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
@@ -6016,6 +6038,15 @@ co@^4.6.0:
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
coa@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
dependencies:
"@types/q" "^1.5.1"
chalk "^2.4.1"
q "^1.1.2"
collapse-white-space@^1.0.2:
version "1.0.6"
resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287"
@@ -6090,7 +6121,7 @@ commander@2, commander@^2.19.0, commander@^2.20.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
commander@7:
commander@7, commander@^7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
@@ -6462,6 +6493,14 @@ css-select@^5.1.0:
domutils "^3.0.1"
nth-check "^2.0.1"
css-tree@^1.1.2, css-tree@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
dependencies:
mdn-data "2.0.14"
source-map "^0.6.1"
css-what@^6.0.1, css-what@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
@@ -6482,6 +6521,13 @@ cssesc@^3.0.0:
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
csso@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
dependencies:
css-tree "^1.1.2"
cssom@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36"
@@ -9807,6 +9853,11 @@ is-string@^1.0.5, is-string@^1.0.7:
dependencies:
has-tostringtag "^1.0.0"
is-svg-path@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-svg-path/-/is-svg-path-1.0.2.tgz#77ab590c12b3d20348e5c7a13d0040c87784dda0"
integrity sha512-Lj4vePmqpPR1ZnRctHv8ltSh1OrSxHkhUkd7wi+VQdcdP15/KvQFyk7LhNuM7ZW0EVbJz8kZLVmL9quLrfq4Kg==
is-symbol@^1.0.2, is-symbol@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
@@ -11007,6 +11058,11 @@ mdast-util-to-hast@10.0.1:
unist-util-position "^3.0.0"
unist-util-visit "^2.0.0"
mdn-data@2.0.14:
version "2.0.14"
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
mdurl@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
@@ -11481,6 +11537,13 @@ normalize-range@^0.1.2:
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
normalize-svg-path@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz#0e614eca23c39f0cffe821d6be6cd17e569a766c"
integrity sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==
dependencies:
svg-arc-to-cubic-bezier "^3.0.0"
normalize.css@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3"
@@ -11933,6 +11996,11 @@ parse-json@^5.0.0, parse-json@^5.2.0:
json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6"
parse-svg-path@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/parse-svg-path/-/parse-svg-path-0.1.2.tgz#7a7ec0d1eb06fa5325c7d3e009b859a09b5d49eb"
integrity sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==
parse5-htmlparser2-tree-adapter@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1"
@@ -12698,6 +12766,11 @@ pure-color@^1.2.0:
resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e"
integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
qs@6.10.3:
version "6.10.3"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
@@ -14169,11 +14242,55 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
svg-arc-to-cubic-bezier@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz#390c450035ae1c4a0104d90650304c3bc814abe6"
integrity sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==
svg-parser@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==
svg-path-bounds@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/svg-path-bounds/-/svg-path-bounds-1.0.2.tgz#00312f672b08afc432a66ddfbd06db40cec8d0d0"
integrity sha512-H4/uAgLWrppIC0kHsb2/dWUYSmb4GE5UqH06uqWBcg6LBjX2fu0A8+JrO2/FJPZiSsNOKZAhyFFgsLTdYUvSqQ==
dependencies:
abs-svg-path "^0.1.1"
is-svg-path "^1.0.1"
normalize-svg-path "^1.0.0"
parse-svg-path "^0.1.2"
svg2vectordrawable@^2.9.1:
version "2.9.1"
resolved "https://registry.yarnpkg.com/svg2vectordrawable/-/svg2vectordrawable-2.9.1.tgz#23186ff7ace7038d09c031176dbca04063a97e5d"
integrity sha512-7WJIh4SzZLyEJtn45y+f8rREkgBiQMWfb0FoYkXuioywESjDWfbSuP0FQEmIiHP2zOi0oOO8pTG4VkeWJyidWw==
dependencies:
coa "^2.0.2"
mkdirp "^1.0.4"
svg-path-bounds "^1.0.1"
svgo "^2.8.0"
svgpath "^2.5.0"
svgo@^2.8.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
dependencies:
"@trysound/sax" "0.2.0"
commander "^7.2.0"
css-select "^4.1.3"
css-tree "^1.1.3"
csso "^4.2.0"
picocolors "^1.0.0"
stable "^0.1.8"
svgpath@^2.5.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/svgpath/-/svgpath-2.6.0.tgz#5b160ef3d742b7dfd2d721bf90588d3450d7a90d"
integrity sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg==
symbol-tree@^3.2.4:
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"