diff --git a/apps/compliance-portal/index.html b/apps/compliance-portal/index.html
index 83ed320a3..a2c4ffedd 100644
--- a/apps/compliance-portal/index.html
+++ b/apps/compliance-portal/index.html
@@ -13,12 +13,15 @@
diff --git a/apps/compliance-portal/src/_locales/de-DE.json b/apps/compliance-portal/src/_locales/de-DE.json
index 7731eb4a7..87cb15da3 100644
--- a/apps/compliance-portal/src/_locales/de-DE.json
+++ b/apps/compliance-portal/src/_locales/de-DE.json
@@ -16,7 +16,9 @@
"subscribe": "Aktualisierungen abonnieren",
"subscribed": "Aktualisierungen abonniert",
"signOut": "Abmelden",
- "signOutFailed": "Abmelden nicht möglich"
+ "signOutFailed": "Abmelden nicht möglich",
+ "switchToDarkMode": "Zum dunklen Modus wechseln",
+ "switchToLightMode": "Zum hellen Modus wechseln"
},
"common": {
"cancel": "Abbrechen",
diff --git a/apps/compliance-portal/src/_locales/en-US.json b/apps/compliance-portal/src/_locales/en-US.json
index 453cfa103..04a2e59da 100644
--- a/apps/compliance-portal/src/_locales/en-US.json
+++ b/apps/compliance-portal/src/_locales/en-US.json
@@ -16,7 +16,9 @@
"subscribe": "Subscribe to updates",
"subscribed": "Subscribed to updates",
"signOut": "Sign out",
- "signOutFailed": "Cannot sign out"
+ "signOutFailed": "Cannot sign out",
+ "switchToDarkMode": "Switch to dark mode",
+ "switchToLightMode": "Switch to light mode"
},
"locale": {
"label": "Language",
diff --git a/apps/compliance-portal/src/_locales/es-ES.json b/apps/compliance-portal/src/_locales/es-ES.json
index 2f6f611bd..9f792e358 100644
--- a/apps/compliance-portal/src/_locales/es-ES.json
+++ b/apps/compliance-portal/src/_locales/es-ES.json
@@ -16,7 +16,9 @@
"subscribe": "Suscribirse a las actualizaciones",
"subscribed": "Suscrito a las actualizaciones",
"signOut": "Cerrar sesión",
- "signOutFailed": "No se puede cerrar sesión"
+ "signOutFailed": "No se puede cerrar sesión",
+ "switchToDarkMode": "Cambiar a modo oscuro",
+ "switchToLightMode": "Cambiar a modo claro"
},
"common": {
"cancel": "Cancelar",
diff --git a/apps/compliance-portal/src/_locales/fr-FR.json b/apps/compliance-portal/src/_locales/fr-FR.json
index f504ad2ed..c03e76b59 100644
--- a/apps/compliance-portal/src/_locales/fr-FR.json
+++ b/apps/compliance-portal/src/_locales/fr-FR.json
@@ -16,7 +16,9 @@
"subscribe": "S'abonner aux mises à jour",
"subscribed": "Abonné aux mises à jour",
"signOut": "Se déconnecter",
- "signOutFailed": "Impossible de se déconnecter"
+ "signOutFailed": "Impossible de se déconnecter",
+ "switchToDarkMode": "Passer en mode sombre",
+ "switchToLightMode": "Passer en mode clair"
},
"common": {
"cancel": "Annuler",
diff --git a/apps/compliance-portal/src/_locales/id-ID.json b/apps/compliance-portal/src/_locales/id-ID.json
index 144ac7860..7dd938dfd 100644
--- a/apps/compliance-portal/src/_locales/id-ID.json
+++ b/apps/compliance-portal/src/_locales/id-ID.json
@@ -16,7 +16,9 @@
"subscribe": "Berlangganan pembaruan",
"subscribed": "Sudah berlangganan pembaruan",
"signOut": "Keluar",
- "signOutFailed": "Tidak dapat keluar"
+ "signOutFailed": "Tidak dapat keluar",
+ "switchToDarkMode": "Beralih ke mode gelap",
+ "switchToLightMode": "Beralih ke mode terang"
},
"common": {
"cancel": "Batal",
diff --git a/apps/compliance-portal/src/_locales/it-IT.json b/apps/compliance-portal/src/_locales/it-IT.json
index 29be537c5..a8baf0968 100644
--- a/apps/compliance-portal/src/_locales/it-IT.json
+++ b/apps/compliance-portal/src/_locales/it-IT.json
@@ -16,7 +16,9 @@
"subscribe": "Iscriviti agli aggiornamenti",
"subscribed": "Iscritto agli aggiornamenti",
"signOut": "Esci",
- "signOutFailed": "Impossibile uscire"
+ "signOutFailed": "Impossibile uscire",
+ "switchToDarkMode": "Passa alla modalità scura",
+ "switchToLightMode": "Passa alla modalità chiara"
},
"common": {
"cancel": "Annulla",
diff --git a/apps/compliance-portal/src/_locales/ja-JP.json b/apps/compliance-portal/src/_locales/ja-JP.json
index 596679c21..e15eaf6c9 100644
--- a/apps/compliance-portal/src/_locales/ja-JP.json
+++ b/apps/compliance-portal/src/_locales/ja-JP.json
@@ -16,7 +16,9 @@
"subscribe": "アップデートを購読",
"subscribed": "アップデート購読中",
"signOut": "サインアウト",
- "signOutFailed": "サインアウトできません"
+ "signOutFailed": "サインアウトできません",
+ "switchToDarkMode": "ダークモードに切り替え",
+ "switchToLightMode": "ライトモードに切り替え"
},
"common": {
"cancel": "キャンセル",
diff --git a/apps/compliance-portal/src/_locales/ko-KR.json b/apps/compliance-portal/src/_locales/ko-KR.json
index 9ac725e0a..fc07107fb 100644
--- a/apps/compliance-portal/src/_locales/ko-KR.json
+++ b/apps/compliance-portal/src/_locales/ko-KR.json
@@ -16,7 +16,9 @@
"subscribe": "업데이트 구독",
"subscribed": "업데이트 구독 중",
"signOut": "로그아웃",
- "signOutFailed": "로그아웃할 수 없습니다"
+ "signOutFailed": "로그아웃할 수 없습니다",
+ "switchToDarkMode": "다크 모드로 전환",
+ "switchToLightMode": "라이트 모드로 전환"
},
"common": {
"cancel": "취소",
diff --git a/apps/compliance-portal/src/_locales/pl-PL.json b/apps/compliance-portal/src/_locales/pl-PL.json
index 5b500d7f9..e0203a311 100644
--- a/apps/compliance-portal/src/_locales/pl-PL.json
+++ b/apps/compliance-portal/src/_locales/pl-PL.json
@@ -16,7 +16,9 @@
"subscribe": "Subskrybuj aktualizacje",
"subscribed": "Subskrybowano aktualizacje",
"signOut": "Wyloguj się",
- "signOutFailed": "Nie można się wylogować"
+ "signOutFailed": "Nie można się wylogować",
+ "switchToDarkMode": "Przełącz na tryb ciemny",
+ "switchToLightMode": "Przełącz na tryb jasny"
},
"common": {
"cancel": "Anuluj",
diff --git a/apps/compliance-portal/src/_locales/pt-PT.json b/apps/compliance-portal/src/_locales/pt-PT.json
index cf2e2a883..9bfa4ad45 100644
--- a/apps/compliance-portal/src/_locales/pt-PT.json
+++ b/apps/compliance-portal/src/_locales/pt-PT.json
@@ -16,7 +16,9 @@
"subscribe": "Subscrever atualizações",
"subscribed": "Subscrito às atualizações",
"signOut": "Terminar sessão",
- "signOutFailed": "Não é possível terminar a sessão"
+ "signOutFailed": "Não é possível terminar a sessão",
+ "switchToDarkMode": "Mudar para o modo escuro",
+ "switchToLightMode": "Mudar para o modo claro"
},
"common": {
"cancel": "Cancelar",
diff --git a/apps/compliance-portal/src/_locales/tr-TR.json b/apps/compliance-portal/src/_locales/tr-TR.json
index 74918721d..b9892b765 100644
--- a/apps/compliance-portal/src/_locales/tr-TR.json
+++ b/apps/compliance-portal/src/_locales/tr-TR.json
@@ -16,7 +16,9 @@
"subscribe": "Güncellemelere abone ol",
"subscribed": "Güncellemelere abone olundu",
"signOut": "Çıkış yap",
- "signOutFailed": "Çıkış yapılamıyor"
+ "signOutFailed": "Çıkış yapılamıyor",
+ "switchToDarkMode": "Karanlık moda geç",
+ "switchToLightMode": "Aydınlık moda geç"
},
"common": {
"cancel": "İptal",
diff --git a/apps/compliance-portal/src/_locales/uk-UA.json b/apps/compliance-portal/src/_locales/uk-UA.json
index 1904b71dc..1db13c4b2 100644
--- a/apps/compliance-portal/src/_locales/uk-UA.json
+++ b/apps/compliance-portal/src/_locales/uk-UA.json
@@ -16,7 +16,9 @@
"subscribe": "Підписатися на оновлення",
"subscribed": "Підписано на оновлення",
"signOut": "Вийти",
- "signOutFailed": "Не вдалося вийти"
+ "signOutFailed": "Не вдалося вийти",
+ "switchToDarkMode": "Перейти в темний режим",
+ "switchToLightMode": "Перейти у світлий режим"
},
"common": {
"cancel": "Скасувати",
diff --git a/apps/compliance-portal/src/_locales/zh-CN.json b/apps/compliance-portal/src/_locales/zh-CN.json
index 9d8eb9012..ca0e71a04 100644
--- a/apps/compliance-portal/src/_locales/zh-CN.json
+++ b/apps/compliance-portal/src/_locales/zh-CN.json
@@ -16,7 +16,9 @@
"subscribe": "订阅更新",
"subscribed": "已订阅更新",
"signOut": "退出登录",
- "signOutFailed": "无法退出登录"
+ "signOutFailed": "无法退出登录",
+ "switchToDarkMode": "切换到深色模式",
+ "switchToLightMode": "切换到浅色模式"
},
"common": {
"cancel": "取消",
diff --git a/apps/compliance-portal/src/components/TopBar/TopBarMobileNav.tsx b/apps/compliance-portal/src/components/TopBar/TopBarMobileNav.tsx
index d360604ec..0fa32ab1b 100644
--- a/apps/compliance-portal/src/components/TopBar/TopBarMobileNav.tsx
+++ b/apps/compliance-portal/src/components/TopBar/TopBarMobileNav.tsx
@@ -23,7 +23,9 @@ import {
BellRingingIcon,
ListIcon,
LockSimpleIcon,
+ MoonIcon,
SignOutIcon,
+ SunIcon,
XIcon,
} from "@phosphor-icons/react";
import { Button } from "@probo/ui/src/v2/Button/Button";
@@ -45,6 +47,7 @@ import { useLocation } from "react-router";
import { getSafeContinueUrl, redirectToInitiate } from "#/lib/auth/continueUrl";
import { useSignOut } from "#/lib/auth/useSignOut";
+import { useDisplayMode } from "#/lib/displayMode/useDisplayMode";
import { useLocalizedPath } from "#/lib/i18n/useLocale";
import { useSubscribeDialog } from "#/lib/mailingList/subscribeDialogContext";
@@ -75,6 +78,7 @@ export function TopBarMobileNav({ identityKey }: TopBarMobileNavProps) {
const { pathname } = useLocation();
const { openSubscribe, isSubscribed, unsubscribe, isUnsubscribing } = useSubscribeDialog();
const [signOut, isSigningOut] = useSignOut();
+ const { displayMode, toggleDisplayMode } = useDisplayMode();
const [open, setOpen] = useState(false);
// Select menus portal to body at z-3 by default; mount them on the drawer
// popup so they stack inside the modal layer (z-5) instead of under it.
@@ -202,6 +206,20 @@ export function TopBarMobileNav({ identityKey }: TopBarMobileNavProps) {
>
{isSubscribed ? t("userMenu.subscribed") : t("userMenu.subscribe")}
+ : }
+ onClick={() => {
+ toggleDisplayMode();
+ }}
+ >
+ {displayMode === "dark"
+ ? t("userMenu.switchToLightMode")
+ : t("userMenu.switchToDarkMode")}
+