diff --git a/web/components/ConnectionCard.module.scss b/web/components/ConnectionCard.module.scss index 1317936e8..3369c3325 100644 --- a/web/components/ConnectionCard.module.scss +++ b/web/components/ConnectionCard.module.scss @@ -1,9 +1,7 @@ -.card { - /* Compound/Light/Background */ - background: #FFFFFF; - /* Compound/Light/Quinary Content */ - border: 1px solid #E3E8F0; +.card { + background: var(--cpd-color-bg-subtle-secondary); + border: 1px solid var(--cpd-color-border-interactive-secondary); box-sizing: border-box; border-radius: 8px; @@ -15,6 +13,13 @@ cursor: pointer; + + @media (prefers-color-scheme: dark) { + img.invert { + filter: invert(100%); + } + } + img { width: 52px; height: 52px; diff --git a/web/components/ConnectionCard.tsx b/web/components/ConnectionCard.tsx index 5bd531c23..711d872be 100644 --- a/web/components/ConnectionCard.tsx +++ b/web/components/ConnectionCard.tsx @@ -2,6 +2,7 @@ import style from "./ConnectionCard.module.scss"; interface IProps { imageSrc: string; + darkImage?: boolean; serviceName: string; description: string; key: string; @@ -10,7 +11,7 @@ interface IProps { export function ConnectionCard(props: IProps) { return
- +
{props.serviceName}

{props.description}

diff --git a/web/components/RoomConfigView.tsx b/web/components/RoomConfigView.tsx index cfe587b4e..4cdc6d8df 100644 --- a/web/components/RoomConfigView.tsx +++ b/web/components/RoomConfigView.tsx @@ -37,6 +37,7 @@ interface IConnectionProps { displayName: string, description: string, icon: string, + darkIcon?: true, component: BridgeConfig, } @@ -51,6 +52,7 @@ const connections: Record = { displayName: 'Github', description: "Connect the room to a GitHub project", icon: GitHubIcon, + darkIcon: true, component: GithubRepoConfig, }, [ConnectionType.Gitlab]: { @@ -69,6 +71,7 @@ const connections: Record = { displayName: 'Generic Webhook', description: "Create a webhook which can be used to connect any service to Matrix", icon: WebhookIcon, + darkIcon: true, component: GenericWebhookConfig, }, }; @@ -97,6 +100,7 @@ export default function RoomConfigView(props: IProps) { description={connection.description} key={connectionType} imageSrc={connection.icon} + darkImage={connection.darkIcon} onClick={() => setActiveConnectionType(connectionType)} /> })} diff --git a/web/components/ServiceCard.module.scss b/web/components/ServiceCard.module.scss index ee17923e2..5d6eedd83 100644 --- a/web/components/ServiceCard.module.scss +++ b/web/components/ServiceCard.module.scss @@ -1,9 +1,16 @@ -.icon { - width: 48px; -} .serviceCard { display: grid !important; grid-template-columns: 0.6fr 1fr 1fr; padding: 0.5rem; + + img { + width: 48px; + @media (prefers-color-scheme: dark) { + &.invert { + filter: invert(100%); + } + } + } + } \ No newline at end of file diff --git a/web/components/ServiceCard.tsx b/web/components/ServiceCard.tsx index b24534bc2..14c72ed00 100644 --- a/web/components/ServiceCard.tsx +++ b/web/components/ServiceCard.tsx @@ -4,7 +4,7 @@ import style from "./ServiceCard.module.scss"; export const ServiceCard: FunctionComponent<{serviceName: string, iconUrl: string, onConfigure: () => void}> = ({ serviceName, iconUrl, onConfigure }) => { return
- +
{serviceName} diff --git a/web/components/elements/Card.module.scss b/web/components/elements/Card.module.scss index e93973ed7..2f0585e9c 100644 --- a/web/components/elements/Card.module.scss +++ b/web/components/elements/Card.module.scss @@ -1,9 +1,6 @@ .card { - /* Compound/Light/Background */ - background: #FFFFFF; - - /* Compound/Light/Quinary Content */ - border: 1px solid #E3E8F0; + background: var(--cpd-color-bg-subtle-secondary); + border: 1px solid var(--cpd-color-border-interactive-secondary); box-sizing: border-box; border-radius: 8px; diff --git a/web/components/elements/DropdownSearch.module.scss b/web/components/elements/DropdownSearch.module.scss index a50124902..d88a05ea9 100644 --- a/web/components/elements/DropdownSearch.module.scss +++ b/web/components/elements/DropdownSearch.module.scss @@ -24,7 +24,7 @@ .value { font-weight: 400; - color: var(--light-color); + color: var(--cpd-color-text-primary); } .hasImg { diff --git a/web/components/elements/InputField.module.scss b/web/components/elements/InputField.module.scss index 0bd9a144b..d3aa901c4 100644 --- a/web/components/elements/InputField.module.scss +++ b/web/components/elements/InputField.module.scss @@ -17,8 +17,7 @@ text-overflow: ellipsis; max-width: calc(100% - 20px); padding: 0 2px; - color: var(--light-color); - background: var(--background-color); + color: var(--cpd-color-text-primary); } > ul { @@ -37,23 +36,24 @@ } input[type="text"],input[type="search"] { - border: 1px solid #E3E8F0; + border: 1px solid var(--cpd-color-border-interactive-primary); box-sizing: border-box; border-radius: 8px; width: 100%; font-size: 14px; padding: 8px 12px; - color: var(--light-color); + color: var(--cpd-color-text-primary); + background: var(--cpd-color-bg-subtle-primary); } select { - border: 1px solid #E3E8F0; + border: 1px solid var(--cpd-color-border-interactive-primary); box-sizing: border-box; border-radius: 8px; width: 100%; font-size: 14px; - background: var(--background-color); padding: 8px 12px; - color: var(--light-color); + color: var(--cpd-color-text-primary); + background: var(--cpd-color-bg-subtle-primary); } } diff --git a/web/components/roomConfig/GenericWebhookConfig.tsx b/web/components/roomConfig/GenericWebhookConfig.tsx index cf70494d2..9a78129ae 100644 --- a/web/components/roomConfig/GenericWebhookConfig.tsx +++ b/web/components/roomConfig/GenericWebhookConfig.tsx @@ -1,5 +1,5 @@ import { FunctionComponent, createRef } from "preact"; -import { useCallback, useState } from "preact/hooks" +import { useCallback, useEffect, useState } from "preact/hooks" import CodeMirror from '@uiw/react-codemirror'; import { javascript } from '@codemirror/lang-javascript'; import { BridgeConfig } from "../../BridgeAPI"; @@ -48,6 +48,21 @@ const ConnectionConfiguration: FunctionComponent("light"); + useEffect(() => { + if (!transFnEnabled) { + return; + } + const mm = window.matchMedia('(prefers-color-scheme: dark)'); + const fn = (event: MediaQueryListEvent) => { + console.log('media change!'); + setCodeMirrorTheme(event.matches ? "dark" : "light"); + }; + mm.addEventListener('change', fn); + setCodeMirrorTheme(mm.matches ? "dark" : "light"); + return () => mm.removeEventListener('change', fn); + }, [transFnEnabled]); + return
@@ -69,6 +84,7 @@ const ConnectionConfiguration: FunctionComponent @@ -98,6 +114,7 @@ const RoomConfigListItemFunc = (c: GenericHookResponseItem) => c.config.name; export const GenericWebhookConfig: BridgeConfig = ({ api, roomId, showHeader }) => { return headerImg={WebhookIcon} + darkHeaderImg={true} showHeader={showHeader} api={api} roomId={roomId} diff --git a/web/components/roomConfig/GithubRepoConfig.tsx b/web/components/roomConfig/GithubRepoConfig.tsx index eb749c44c..c894f73b9 100644 --- a/web/components/roomConfig/GithubRepoConfig.tsx +++ b/web/components/roomConfig/GithubRepoConfig.tsx @@ -197,6 +197,7 @@ export const GithubRepoConfig: BridgeConfig = ({ api, roomId, showHeader }) => { return headerImg={GitHubIcon} + darkHeaderImg={true} showHeader={showHeader} api={api} roomId={roomId} diff --git a/web/components/roomConfig/RoomConfig.module.scss b/web/components/roomConfig/RoomConfig.module.scss index a3a8351a4..98012cee6 100644 --- a/web/components/roomConfig/RoomConfig.module.scss +++ b/web/components/roomConfig/RoomConfig.module.scss @@ -8,6 +8,12 @@ height: 52px; } + @media (prefers-color-scheme: dark) { + img.invert { + filter: invert(100%); + } + } + h1 { margin-left: 10px; font-weight: 600; diff --git a/web/components/roomConfig/RoomConfig.tsx b/web/components/roomConfig/RoomConfig.tsx index 673ef8b4e..908831149 100644 --- a/web/components/roomConfig/RoomConfig.tsx +++ b/web/components/roomConfig/RoomConfig.tsx @@ -35,6 +35,7 @@ interface IRoomConfigProps { showHeader &&
- +

{text.header}

} diff --git a/web/index.html b/web/index.html index bffd552e6..40dc250b6 100644 --- a/web/index.html +++ b/web/index.html @@ -5,7 +5,7 @@ GitHub Bridge Widget - +
diff --git a/web/styling.scss b/web/styling.scss index cb96c1045..028d9d229 100644 --- a/web/styling.scss +++ b/web/styling.scss @@ -1,7 +1,6 @@ :root { --background-color: #FFFFFF; --foreground-color: #17191C; - --light-color: #737D8C; --primary-color: #0DBD8B; --primary-color-disabled: #0dbd8baf; @@ -29,6 +28,8 @@ a:visited { body { margin: 0; + height: fit-content; + block-size: fit-content !important; } @@ -56,13 +57,13 @@ button { .chevron.down::before { transform: rotate(-225deg); - border-color: var(--light-color); + border-color: var(--cpd-color-text-primary); float: right; } .chevron.up::before { transform: rotate(-45deg); - border-color: var(--light-color); + border-color: var(--cpd-color-text-primary); float: right; }