Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
009d12d
user_dashboard: add service shutdown notice modal
Ryz0nd Apr 23, 2026
f1732ae
user_dashboard: set service shutdown date to June 1 in notice modal
Ryz0nd Apr 24, 2026
8e10123
user_dashboard: add key export prompt modal and sidebar nav item
Ryz0nd Apr 28, 2026
76c1260
customer_dashboard: add service shutdown notice modal
Ryz0nd Apr 28, 2026
9111696
customer_dashboard: update shutdown modal content and add sidebar notice
Ryz0nd Apr 28, 2026
2599006
user_dashboard, customer_dashboard: update service shutdown date to J…
Ryz0nd Apr 28, 2026
1f11327
customer_dashboard: fix shutdown modal centering on desktop
Ryz0nd Apr 28, 2026
507d0ee
customer_dashboard: move shutdown notice above profile in sidebar
Ryz0nd Apr 28, 2026
3523a2c
oko_attached: add account backup link to sign_with_oko_box
Ryz0nd Apr 28, 2026
9c07256
customer_dashboard: add missing viewport variables for service shutdo…
Ryz0nd Apr 28, 2026
6380d48
oko_attached: update backup link to english with shutdown context
Ryz0nd Apr 28, 2026
ef853f6
wind-down: add shutdown notice to login screens
Ryz0nd Apr 28, 2026
79d340a
Revert "wind-down: add shutdown notice to login screens"
Ryz0nd Apr 28, 2026
232ed15
wind-down: center signing modal notice and align sign/export on one row
Ryz0nd Apr 28, 2026
38b3c49
wind-down: add shutdown notice to demo_web login widget
Ryz0nd Apr 28, 2026
0a90557
wind-down: hide signing modal shutdown notice for demo_web host
Ryz0nd Apr 28, 2026
324497f
Revert "wind-down: add shutdown notice to demo_web login widget"
Ryz0nd Apr 28, 2026
85639e3
wind-down: use isDemoOrSandboxOrigin to hide signing notice in demo/s…
Ryz0nd Apr 28, 2026
3fb3758
wind-down: show friendly message for SIGNUP_DISABLED error in attached
Ryz0nd Apr 28, 2026
c3370cd
sign_with_oko_box: hardcode backup URL to home.oko.app/export_private…
Ryz0nd Apr 29, 2026
9c47102
sign_with_oko_box: pass mobile native context into isDemoOrSandboxOri…
Ryz0nd Apr 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions apps/customer_dashboard/src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { DashboardBody } from "@oko-wallet-ct-dashboard/components/dashboard_bod
import { DashboardHeader } from "@oko-wallet-ct-dashboard/components/dashboard_header/dashboard_header";
import { HomeBanner } from "@oko-wallet-ct-dashboard/components/home_banner/home_banner";
import { LeftBar } from "@oko-wallet-ct-dashboard/components/left_bar/left_bar";
import { ServiceShutdownModal } from "@oko-wallet-ct-dashboard/components/service_shutdown_modal/service_shutdown_modal";
import { ToastContainer } from "@oko-wallet-ct-dashboard/components/toast";

export default function Home() {
Expand Down Expand Up @@ -41,6 +42,7 @@ export default function Home() {
</DashboardBody>
</div>
</div>
<ServiceShutdownModal />
</Authorized>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,36 @@
background-color: var(--bg-primary-hover);
}
}

.shutdownNotice {
display: flex;
flex-direction: column;
gap: 6px;
padding: 12px;
border-radius: 8px;
background: #fff8ed;
border: 1px solid #f9c86a;
}

.shutdownNoticeHeader {
display: flex;
align-items: center;
gap: 6px;
}

.shutdownNoticeTitle {
font-family: Inter, sans-serif;
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
color: #dc6803;
line-height: 18px;
}

.shutdownNoticeBody {
font-family: Inter, sans-serif;
font-size: var(--font-size-xs);
font-weight: var(--font-weight-medium);
color: #b54708;
line-height: 18px;
margin: 0;
}
12 changes: 12 additions & 0 deletions apps/customer_dashboard/src/components/left_bar/left_bar.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use client";

import { Badge } from "@oko-wallet/oko-common-ui/badge";
import { AlertTriangleIcon } from "@oko-wallet/oko-common-ui/icons/alert_triangle_icon";
import { HomeOutlinedIcon } from "@oko-wallet/oko-common-ui/icons/home_outlined";
import { UsersIcon } from "@oko-wallet/oko-common-ui/icons/users";
import { MenuItem } from "@oko-wallet/oko-common-ui/menu";
Expand Down Expand Up @@ -49,6 +50,17 @@ export const LeftBar: FC = () => {
</ul>

<div className={styles.subMenu}>
<div className={styles.shutdownNotice}>
<div className={styles.shutdownNoticeHeader}>
<AlertTriangleIcon size={14} color="#dc6803" />
<span className={styles.shutdownNoticeTitle}>Important Notice</span>
</div>
<p className={styles.shutdownNoticeBody}>
Oko is shutting down on June 1, 2026. Please remove Oko from your
dapp and inform your users to export their private keys.
</p>
</div>

<AccountInfoWithSubMenu />

<div>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
@use "../../styles/viewport.module.scss" as *;

.modalBackground {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
background: rgba(0, 0, 0, 0.4);
}

.modal {
position: relative;
width: 100%;
max-width: 90vw;
max-height: 90vh;

@media (min-width: $desktop_min_width) {
width: auto;
}
}

.modalCard {
background: var(--bg-primary);
border: 1px solid var(--border-primary);
border-radius: 16px;
box-shadow: var(--shadow-xl);
width: 100%;
max-width: 400px;
box-sizing: border-box;
padding: 0;
}

.header {
display: flex;
justify-content: flex-end;
align-items: center;
padding: 20px 20px 0;
}

.closeButton {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
padding: 6px;
border: none;
background: none;
border-radius: 8px;
cursor: pointer;
color: var(--fg-quaternary);

&:hover {
background: var(--bg-secondary);
}
}

.content {
display: flex;
flex-direction: column;
align-items: center;
padding: 0 20px 8px;
}

.logoWrapper {
display: flex;
justify-content: center;
width: 100%;
}

.title {
text-align: center;
width: 100%;
}

.body {
text-align: center;
width: 100%;
}

.warningBox {
display: flex;
align-items: flex-start;
gap: 8px;
width: 100%;
padding: 12px;
border-radius: 12px;
background: #fef0c7;
box-sizing: border-box;
}

.warningText {
flex: 1;
color: #dc6803;
font-family: Inter, sans-serif;
font-size: var(--font-size-sm);
font-weight: var(--font-weight-medium);
line-height: 20px;
text-align: center;
}

.footer {
display: flex;
width: 100%;
padding: 12px 24px 16px;
box-sizing: border-box;
}

.footerButton {
flex: 1;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
"use client";

import { Button } from "@oko-wallet/oko-common-ui/button";
import { Card } from "@oko-wallet/oko-common-ui/card";
import { OkoLogoIcon } from "@oko-wallet/oko-common-ui/icons/oko_logo_icon";
import { XCloseIcon } from "@oko-wallet/oko-common-ui/icons/x_close";
import { Spacing } from "@oko-wallet/oko-common-ui/spacing";
import { Typography } from "@oko-wallet/oko-common-ui/typography";
import { type FC, useEffect, useState } from "react";

import styles from "./service_shutdown_modal.module.scss";

const SESSION_KEY = "oko_ct_shutdown_noticed";

export const ServiceShutdownModal: FC = () => {
const [isOpen, setIsOpen] = useState(false);

useEffect(() => {
if (!sessionStorage.getItem(SESSION_KEY)) {
setIsOpen(true);
sessionStorage.setItem(SESSION_KEY, "1");
}
}, []);

const onClose = () => setIsOpen(false);

if (!isOpen) {
return null;
}

return (
<div className={styles.modalBackground} onClick={onClose}>
<div
className={styles.modal}
role="dialog"
aria-modal="true"
aria-labelledby="ct-shutdown-title"
onClick={(e) => e.stopPropagation()}
>
<Card className={styles.modalCard} variant="elevated" padding="none">
<div className={styles.header}>
<button
type="button"
className={styles.closeButton}
onClick={onClose}
aria-label="Close modal"
>
<XCloseIcon color="var(--fg-quaternary)" size={20} />
</button>
</div>

<div className={styles.content}>
<div className={styles.logoWrapper}>
<OkoLogoIcon width={72} height={28} />
</div>

<Spacing height={12} />

<div className={styles.title} id="ct-shutdown-title">
<Typography size="lg" weight="semibold" color="secondary">
Service Shutdown Notice
</Typography>
</div>

<Spacing height={28} />

<div className={styles.body}>
<Typography size="sm" weight="medium" color="primary">
Oko is shutting down its service on June 1, 2026.
</Typography>
</div>

<Spacing height={8} />

<div className={styles.warningBox}>
<p className={styles.warningText}>
Please remove Oko SDK and API integrations from your dapp before
the shutdown date.
</p>
</div>

<Spacing height={8} />

<div className={styles.body}>
<Typography size="sm" weight="medium" color="primary">
Also, please inform your users to export their private keys and
migrate to another wallet. After June 1, Oko API and SDK will no
longer be available.
</Typography>
</div>

<Spacing height={8} />
</div>

<div className={styles.footer}>
<Button
variant="secondary"
size="md"
fullWidth
onClick={onClose}
className={styles.footerButton}
>
Close
</Button>
</div>
</Card>
</div>
</div>
);
};
2 changes: 2 additions & 0 deletions apps/customer_dashboard/src/styles/viewport.module.scss
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
$width_360: 360px;
$tablet_min_width: 361px;
$desktop_min_width: 769px;
6 changes: 5 additions & 1 deletion apps/user_dashboard/src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import "@oko-wallet/oko-common-ui/styles/shadow.scss";
import "@oko-wallet/oko-common-ui/styles/animation.scss";

import { Providers } from "@oko-wallet-user-dashboard/components/providers/providers";
import { ServiceShutdownModal } from "@oko-wallet-user-dashboard/components/service_shutdown_modal/service_shutdown_modal";

import "./globals.scss";

Expand Down Expand Up @@ -62,7 +63,10 @@ export default function RootLayout({
className={`${geistSans.variable} ${geistMono.variable} ${inter.variable} ${robotoMono.variable}`}
suppressHydrationWarning
>
<Providers>{children}</Providers>
<Providers>
{children}
<ServiceShutdownModal />
Comment thread
Ryz0nd marked this conversation as resolved.
</Providers>
</body>
</html>
);
Expand Down
2 changes: 2 additions & 0 deletions apps/user_dashboard/src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Authorized } from "@oko-wallet-user-dashboard/components/authorized/aut
import { ConnectedApps } from "@oko-wallet-user-dashboard/components/connected_apps/connected_apps";
import { DashboardBody } from "@oko-wallet-user-dashboard/components/dashboard_body/dashboard_body";
import { DashboardHeader } from "@oko-wallet-user-dashboard/components/dashboard_header/dashboard_header";
import { KeyExportPromptModal } from "@oko-wallet-user-dashboard/components/key_export_prompt_modal/key_export_prompt_modal";
import { LeftBar } from "@oko-wallet-user-dashboard/components/left_bar/left_bar";
import { MyAssets } from "@oko-wallet-user-dashboard/components/my_assets/my_assets";
import { ToastContainer } from "@oko-wallet-user-dashboard/components/toast";
Expand All @@ -25,6 +26,7 @@ export default function Home() {
</div>
</div>
<ToastContainer />
<KeyExportPromptModal />
</Authorized>
);
}
Loading
Loading