diff --git a/apps/wallet/src/ui/app/components/iota-apps/IotaAppEmpty.tsx b/apps/wallet/src/ui/app/components/iota-apps/IotaAppEmpty.tsx
index 4dc7b6021d8..094721b1587 100644
--- a/apps/wallet/src/ui/app/components/iota-apps/IotaAppEmpty.tsx
+++ b/apps/wallet/src/ui/app/components/iota-apps/IotaAppEmpty.tsx
@@ -9,7 +9,7 @@ const appEmptyStyle = cva(['flex gap-3 p-lg h-28'], {
variants: {
displayType: {
full: 'w-full',
- card: 'bg-neutral-100 flex flex-col p-lg w-full rounded-2xl h-32 box-border w-full rounded-2xl border border-solid border-shader-primary-dark',
+ card: 'bg-neutral-100 dark:bg-neutral-6 flex flex-col p-lg w-full rounded-2xl h-32 box-border w-full rounded-2xl border border-solid border-shader-primary-dark',
},
},
defaultVariants: {
diff --git a/apps/wallet/src/ui/app/components/ledger/ConnectLedgerModal.tsx b/apps/wallet/src/ui/app/components/ledger/ConnectLedgerModal.tsx
index 9b0020b1185..ae47a317ea1 100644
--- a/apps/wallet/src/ui/app/components/ledger/ConnectLedgerModal.tsx
+++ b/apps/wallet/src/ui/app/components/ledger/ConnectLedgerModal.tsx
@@ -55,7 +55,7 @@ export function ConnectLedgerModal({ onClose, onConfirm, onError }: ConnectLedge
ampli.viewedLedgerTutorial()}
- className="text-body-lg text-primary-30 no-underline"
+ className="text-body-lg text-primary-30 no-underline dark:text-primary-80"
target="_blank"
rel="noreferrer"
>
@@ -91,10 +91,11 @@ function LedgerLogo() {
height="82"
viewBox="0 0 244 82"
fill="none"
+ className="text-neutral-10 dark:text-neutral-92"
>
);
diff --git a/apps/wallet/src/ui/app/components/menu/content/ThemeSettings.tsx b/apps/wallet/src/ui/app/components/menu/content/ThemeSettings.tsx
new file mode 100644
index 00000000000..42b14994da6
--- /dev/null
+++ b/apps/wallet/src/ui/app/components/menu/content/ThemeSettings.tsx
@@ -0,0 +1,29 @@
+// Copyright (c) 2024 IOTA Stiftung
+// SPDX-License-Identifier: Apache-2.0
+
+import { RadioButton } from '@iota/apps-ui-kit';
+import { Theme, useTheme } from '@iota/core';
+import { Overlay } from '_components';
+import { useNavigate } from 'react-router-dom';
+
+export function ThemeSettings() {
+ const { theme, setTheme } = useTheme();
+
+ const navigate = useNavigate();
+
+ return (
+
navigate('/')} showBackButton>
+
+ {Object.entries(Theme).map(([key, value]) => (
+
+ setTheme(value)}
+ />
+
+ ))}
+
+
+ );
+}
diff --git a/apps/wallet/src/ui/app/components/menu/content/WalletSettingsMenuList.tsx b/apps/wallet/src/ui/app/components/menu/content/WalletSettingsMenuList.tsx
index c325f3b7df8..51ab79d6a45 100644
--- a/apps/wallet/src/ui/app/components/menu/content/WalletSettingsMenuList.tsx
+++ b/apps/wallet/src/ui/app/components/menu/content/WalletSettingsMenuList.tsx
@@ -4,7 +4,6 @@
import { useNextMenuUrl, Overlay } from '_components';
import { useAppSelector } from '_hooks';
-import { getCustomNetwork } from '@iota/core';
import { FAQ_LINK, ToS_LINK } from '_src/shared/constants';
import { formatAutoLock, useAutoLockMinutes } from '_src/ui/app/hooks/useAutoLockMinutes';
import FaucetRequestButton from '_src/ui/app/shared/faucet/FaucetRequestButton';
@@ -29,12 +28,15 @@ import {
ImageType,
} from '@iota/apps-ui-kit';
import { ampli } from '_src/shared/analytics/ampli';
+import { useTheme, getCustomNetwork } from '@iota/core';
function MenuList() {
+ const { theme } = useTheme();
const navigate = useNavigate();
const activeAccount = useActiveAccount();
const networkUrl = useNextMenuUrl(true, '/network');
const autoLockUrl = useNextMenuUrl(true, '/auto-lock');
+ const themeUrl = useNextMenuUrl(true, '/theme');
const network = useAppSelector((state) => state.app.network);
const networkConfig = network === Network.Custom ? getCustomNetwork() : getNetwork(network);
const version = Browser.runtime.getManifest().version;
@@ -73,11 +75,16 @@ function MenuList() {
navigate(autoLockUrl);
}
+ function onThemeClick() {
+ navigate(themeUrl);
+ }
+
function onFAQClick() {
window.open(FAQ_LINK, '_blank', 'noopener noreferrer');
}
const autoLockSubtitle = handleAutoLockSubtitle();
+ const themeSubtitle = theme.charAt(0).toUpperCase() + theme.slice(1);
const MENU_ITEMS = [
{
title: 'Network',
@@ -99,8 +106,8 @@ function MenuList() {
{
title: 'Themes',
icon:
,
- onClick: () => {},
- isDisabled: true,
+ subtitle: themeSubtitle,
+ onClick: onThemeClick,
},
{
title: 'Reset',
@@ -114,14 +121,9 @@ function MenuList() {
{MENU_ITEMS.map((item, index) => (
-
+
-
+
{item.icon}
diff --git a/apps/wallet/src/ui/app/components/menu/content/index.tsx b/apps/wallet/src/ui/app/components/menu/content/index.tsx
index 114a4591ff2..ef5b55515fd 100644
--- a/apps/wallet/src/ui/app/components/menu/content/index.tsx
+++ b/apps/wallet/src/ui/app/components/menu/content/index.tsx
@@ -16,6 +16,7 @@ import { Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-
import { AutoLockAccounts } from './AutoLockAccounts';
import { NetworkSettings } from './NetworkSettings';
import WalletSettingsMenuList from './WalletSettingsMenuList';
+import { ThemeSettings } from './ThemeSettings';
const CLOSE_KEY_CODES: string[] = ['Escape'];
@@ -42,13 +43,14 @@ function MenuContent() {
}
return (
-
+
} />
} />
} />
+ } />
} />
diff --git a/apps/wallet/src/ui/app/components/navigation/index.tsx b/apps/wallet/src/ui/app/components/navigation/index.tsx
index 04a8230e317..17abcb0d65e 100644
--- a/apps/wallet/src/ui/app/components/navigation/index.tsx
+++ b/apps/wallet/src/ui/app/components/navigation/index.tsx
@@ -48,7 +48,7 @@ export function Navigation() {
}
return (
-
+
);
diff --git a/apps/wallet/src/ui/app/components/nft-display/index.tsx b/apps/wallet/src/ui/app/components/nft-display/index.tsx
index d5038c40c7d..dec1953fc94 100644
--- a/apps/wallet/src/ui/app/components/nft-display/index.tsx
+++ b/apps/wallet/src/ui/app/components/nft-display/index.tsx
@@ -65,7 +65,11 @@ export function NFTDisplayCard({
onIconClick={onIconClick}
/>
)}
- {wideView &&
{nftName}}
+ {wideView && (
+
+ {nftName}
+
+ )}
diff --git a/apps/wallet/src/ui/app/components/receipt-card/TxnAmount.tsx b/apps/wallet/src/ui/app/components/receipt-card/TxnAmount.tsx
index a993b4657ca..912937bde97 100644
--- a/apps/wallet/src/ui/app/components/receipt-card/TxnAmount.tsx
+++ b/apps/wallet/src/ui/app/components/receipt-card/TxnAmount.tsx
@@ -28,7 +28,7 @@ export function TxnAmount({ amount, coinType, subtitle, approximation }: TxnAmou
return Number(amount) !== 0 ? (
-
+
diff --git a/apps/wallet/src/ui/app/components/user-approve-container/index.tsx b/apps/wallet/src/ui/app/components/user-approve-container/index.tsx
index 3ab12353295..3a994d63f6b 100644
--- a/apps/wallet/src/ui/app/components/user-approve-container/index.tsx
+++ b/apps/wallet/src/ui/app/components/user-approve-container/index.tsx
@@ -71,7 +71,7 @@ export function UserApproveContainer({
diff --git a/apps/wallet/src/ui/app/pages/accounts/BackupMnemonicPage.tsx b/apps/wallet/src/ui/app/pages/accounts/BackupMnemonicPage.tsx
index 53192a4ac0c..3c0d667ddc0 100644
--- a/apps/wallet/src/ui/app/pages/accounts/BackupMnemonicPage.tsx
+++ b/apps/wallet/src/ui/app/pages/accounts/BackupMnemonicPage.tsx
@@ -48,7 +48,7 @@ export function BackupMnemonicPage() {
-
+
Wallet Created Successfully!
- Looking for Accounts...
+
+ Looking for Accounts...
+
);
}
@@ -151,7 +153,9 @@ function LedgerViewAllAccountsImported() {
return (
- Imported all Ledger Accounts
+
+ Imported all Ledger Accounts
+
);
}
diff --git a/apps/wallet/src/ui/app/pages/accounts/ImportPassphrasePage.tsx b/apps/wallet/src/ui/app/pages/accounts/ImportPassphrasePage.tsx
index 7f982d4ea32..6a3a60a2f6e 100644
--- a/apps/wallet/src/ui/app/pages/accounts/ImportPassphrasePage.tsx
+++ b/apps/wallet/src/ui/app/pages/accounts/ImportPassphrasePage.tsx
@@ -36,7 +36,7 @@ export function ImportPassphrasePage() {
);
}
- const BUTTON_ICON_CLASSES = 'w-5 h-5 text-neutral-10';
+ const BUTTON_ICON_CLASSES = 'w-5 h-5 text-neutral-10 dark:text-neutral-92';
return (
diff --git a/apps/wallet/src/ui/app/pages/accounts/WelcomePage.tsx b/apps/wallet/src/ui/app/pages/accounts/WelcomePage.tsx
index d2b5bcad7e8..a9ac8919e66 100644
--- a/apps/wallet/src/ui/app/pages/accounts/WelcomePage.tsx
+++ b/apps/wallet/src/ui/app/pages/accounts/WelcomePage.tsx
@@ -22,12 +22,14 @@ export function WelcomePage() {
return (
-
+
Welcome to
-
IOTA Wallet
+
+ IOTA Wallet
+
Your Gateway to the IOTA Ecosystem
diff --git a/apps/wallet/src/ui/app/pages/accounts/forgot-password/RecoverManyPage.tsx b/apps/wallet/src/ui/app/pages/accounts/forgot-password/RecoverManyPage.tsx
index a7528e4814c..61ae8475f46 100644
--- a/apps/wallet/src/ui/app/pages/accounts/forgot-password/RecoverManyPage.tsx
+++ b/apps/wallet/src/ui/app/pages/accounts/forgot-password/RecoverManyPage.tsx
@@ -125,7 +125,7 @@ export function RecoverManyPage() {
}
setRecoverInfo(null);
}}
- background="bg-neutral-100"
+ background="bg-neutral-100 dark:bg-neutral-6"
>
{recoverInfo?.type === AccountSourceType.Mnemonic ? (
diff --git a/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroup.tsx b/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroup.tsx
index b8877caba83..b6cd64ae3b6 100644
--- a/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroup.tsx
+++ b/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroup.tsx
@@ -113,13 +113,15 @@ export function AccountGroup({
-
{getGroupTitle(accounts[0])}
+
+ {getGroupTitle(accounts[0])}
+
{(isMnemonicDerivedGroup || isSeedDerivedGroup) && accountSource ? (
@@ -127,7 +129,9 @@ export function AccountGroup({
size={ButtonSize.Small}
type={ButtonType.Ghost}
onClick={handleAdd}
- icon={
}
+ icon={
+
+ }
/>
) : null}
{showMoreButton && (
@@ -139,7 +143,9 @@ export function AccountGroup({
e.stopPropagation();
setDropdownOpen(true);
}}
- icon={
}
+ icon={
+
+ }
/>
)}
@@ -161,7 +167,7 @@ export function AccountGroup({
))}
setDropdownOpen(false)}>
diff --git a/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroupItem.tsx b/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroupItem.tsx
index 2f0269bdc4a..6762b389280 100644
--- a/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroupItem.tsx
+++ b/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroupItem.tsx
@@ -150,7 +150,7 @@ export function AccountGroupItem({
top: dropdownPosition.y,
}}
className={clsx(
- `absolute right-0 z-[99] rounded-lg bg-white`,
+ `absolute right-0 z-[99] rounded-lg bg-neutral-100 shadow-md dark:bg-neutral-6`,
showDropdownOptionsBottom ? '-translate-y-full' : '',
)}
>
@@ -198,7 +198,7 @@ function AccountAvatar({ account }: { account: SerializedUIAccount }) {
}
return (
{logo}
diff --git a/apps/wallet/src/ui/app/pages/home/assets/HiddenAssetsProvider.tsx b/apps/wallet/src/ui/app/pages/home/assets/HiddenAssetsProvider.tsx
index 7e01a7c3ebd..ff94f428a74 100644
--- a/apps/wallet/src/ui/app/pages/home/assets/HiddenAssetsProvider.tsx
+++ b/apps/wallet/src/ui/app/pages/home/assets/HiddenAssetsProvider.tsx
@@ -188,7 +188,7 @@ function MovedAssetNotification({ t, destination, onUndo }: MovedAssetNotificati
className="flex w-full flex-row items-baseline gap-x-xxs"
onClick={() => toast.dismiss(t.id)}
>
-
+
Moved to {destination}
UNDO
diff --git a/apps/wallet/src/ui/app/pages/home/nft-details/index.tsx b/apps/wallet/src/ui/app/pages/home/nft-details/index.tsx
index 00792a40e54..ab9508a19f0 100644
--- a/apps/wallet/src/ui/app/pages/home/nft-details/index.tsx
+++ b/apps/wallet/src/ui/app/pages/home/nft-details/index.tsx
@@ -125,7 +125,7 @@ function NFTDetailsPage() {
-
+
{nftDisplayData?.name}
{nftDisplayData?.description ? (
diff --git a/apps/wallet/src/ui/app/pages/home/tokens/TokenStakingOverview.tsx b/apps/wallet/src/ui/app/pages/home/tokens/TokenStakingOverview.tsx
index 15c72d92bb1..1c164c4a9d6 100644
--- a/apps/wallet/src/ui/app/pages/home/tokens/TokenStakingOverview.tsx
+++ b/apps/wallet/src/ui/app/pages/home/tokens/TokenStakingOverview.tsx
@@ -59,7 +59,7 @@ export function TokenStakingOverview({
return (
-
+
-
+
{formatted}
{symbol}
diff --git a/apps/wallet/src/ui/app/pages/home/tokens/icon-link/index.tsx b/apps/wallet/src/ui/app/pages/home/tokens/icon-link/index.tsx
index 272284b6d49..2b3d21fca68 100644
--- a/apps/wallet/src/ui/app/pages/home/tokens/icon-link/index.tsx
+++ b/apps/wallet/src/ui/app/pages/home/tokens/icon-link/index.tsx
@@ -23,7 +23,12 @@ function IconLink({ to, icon, disabled = false, text }: IconLinkProps) {
tabIndex={disabled ? -1 : undefined}
>
{icon}
-
+
{text}
diff --git a/apps/wallet/src/ui/app/pages/restricted/index.tsx b/apps/wallet/src/ui/app/pages/restricted/index.tsx
index b794fdeced2..8571e51a6c5 100644
--- a/apps/wallet/src/ui/app/pages/restricted/index.tsx
+++ b/apps/wallet/src/ui/app/pages/restricted/index.tsx
@@ -13,7 +13,7 @@ export function RestrictedPage() {
return (
-
+
diff --git a/apps/wallet/src/ui/app/shared/ButtonConnectedTo.tsx b/apps/wallet/src/ui/app/shared/ButtonConnectedTo.tsx
index 29e5c03cf4a..c26f80bed6c 100644
--- a/apps/wallet/src/ui/app/shared/ButtonConnectedTo.tsx
+++ b/apps/wallet/src/ui/app/shared/ButtonConnectedTo.tsx
@@ -19,7 +19,7 @@ export const ButtonConnectedTo = forwardRef
{iconBefore}
diff --git a/apps/wallet/src/ui/app/shared/card-layout/index.tsx b/apps/wallet/src/ui/app/shared/card-layout/index.tsx
index 55ab6622f49..c77416b4082 100644
--- a/apps/wallet/src/ui/app/shared/card-layout/index.tsx
+++ b/apps/wallet/src/ui/app/shared/card-layout/index.tsx
@@ -35,7 +35,9 @@ export function CardLayout({ children, title, subtitle, headerCaption, icon }: C
) : null}
{subtitle ? (
- {subtitle}
+
+ {subtitle}
+
) : null}
{children}
diff --git a/apps/wallet/src/ui/app/shared/dapp-status/index.tsx b/apps/wallet/src/ui/app/shared/dapp-status/index.tsx
index dd6901acbb8..42cb18e8598 100644
--- a/apps/wallet/src/ui/app/shared/dapp-status/index.tsx
+++ b/apps/wallet/src/ui/app/shared/dapp-status/index.tsx
@@ -103,7 +103,7 @@ function DappStatus() {
duration: 0.3,
ease: 'anticipate',
}}
- className="absolute right-6 top-[48px] z-50 max-w-72 rounded-2xl bg-neutral-96 p-sm shadow-xl"
+ className="absolute right-6 top-[48px] z-50 max-w-72 rounded-2xl bg-neutral-96 p-sm shadow-xl dark:bg-neutral-12"
style={{ top: y || 0, left: x || 0 }}
{...getFloatingProps()}
ref={refs.setFloating}
@@ -123,7 +123,7 @@ function DappStatus() {
Connected to
-
diff --git a/apps/wallet/src/ui/app/shared/header/Header.tsx b/apps/wallet/src/ui/app/shared/header/Header.tsx
index 3ee58883a15..e93445edcc2 100644
--- a/apps/wallet/src/ui/app/shared/header/Header.tsx
+++ b/apps/wallet/src/ui/app/shared/header/Header.tsx
@@ -18,7 +18,7 @@ interface HeaderProps {
*/
export function Header({ network, leftContent, middleContent, rightContent }: HeaderProps) {
return (
-
+
{leftContent && {leftContent}
}
{middleContent && {middleContent}
}
{rightContent && {rightContent}
}
diff --git a/apps/wallet/src/ui/app/shared/page-main-layout/PageMainLayout.tsx b/apps/wallet/src/ui/app/shared/page-main-layout/PageMainLayout.tsx
index 6b725d2b75a..9896be915fb 100644
--- a/apps/wallet/src/ui/app/shared/page-main-layout/PageMainLayout.tsx
+++ b/apps/wallet/src/ui/app/shared/page-main-layout/PageMainLayout.tsx
@@ -64,7 +64,7 @@ export function PageMainLayout({
/>
) : null}
-
+
{isLedgerAccount ? : }
-
{accountName}
+
+ {accountName}
+
);
}
diff --git a/apps/wallet/src/ui/app/staking/validators/StatsDetail.tsx b/apps/wallet/src/ui/app/staking/validators/StatsDetail.tsx
index 8a33d355cec..ba8a478c00e 100644
--- a/apps/wallet/src/ui/app/staking/validators/StatsDetail.tsx
+++ b/apps/wallet/src/ui/app/staking/validators/StatsDetail.tsx
@@ -14,12 +14,16 @@ export function StatsDetail({ balance, title }: DisplayStatsProps) {
const [formatted, symbol] = useFormatCoin(balance, IOTA_TYPE_ARG);
return (
-
-
{title}
+
+
{title}
-
{formatted}
-
{symbol}
+
+ {formatted}
+
+
+ {symbol}
+
);
diff --git a/apps/wallet/src/ui/assets/images/no_data.svg b/apps/wallet/src/ui/assets/images/no_data.svg
index fcc781d2e8e..388b9a8f428 100644
--- a/apps/wallet/src/ui/assets/images/no_data.svg
+++ b/apps/wallet/src/ui/assets/images/no_data.svg
@@ -1,4 +1,8 @@
\ No newline at end of file
diff --git a/apps/wallet/src/ui/assets/images/no_data_darkmode.svg b/apps/wallet/src/ui/assets/images/no_data_darkmode.svg
new file mode 100644
index 00000000000..c3502ecf4c6
--- /dev/null
+++ b/apps/wallet/src/ui/assets/images/no_data_darkmode.svg
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/apps/wallet/src/ui/index.tsx b/apps/wallet/src/ui/index.tsx
index 49dff3a6b7d..8598908f346 100644
--- a/apps/wallet/src/ui/index.tsx
+++ b/apps/wallet/src/ui/index.tsx
@@ -13,7 +13,7 @@ import { setAttributes } from '_src/shared/experimentation/features';
import initSentry from '_src/ui/app/helpers/sentry';
import store from '_store';
import { thunkExtras } from '_store/thunk-extras';
-import { KioskClientProvider } from '@iota/core';
+import { KioskClientProvider, ThemeProvider } from '@iota/core';
import { GrowthBookProvider } from '@growthbook/growthbook-react';
import { IotaClientProvider } from '@iota/dapp-kit';
import { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';
@@ -96,20 +96,22 @@ function AppWrapper() {
>
-
-
-
+
+
+
+
+
diff --git a/apps/wallet/src/ui/styles/global.scss b/apps/wallet/src/ui/styles/global.scss
index 7b0ad608988..61d13ed2261 100644
--- a/apps/wallet/src/ui/styles/global.scss
+++ b/apps/wallet/src/ui/styles/global.scss
@@ -61,7 +61,7 @@ body {
display: flex;
align-items: center;
justify-content: center;
- @apply rounded-xl bg-neutral-100;
+ @apply rounded-xl bg-neutral-100 dark:bg-neutral-6;
}
* {