From f2e3ed6958c2164e2f4c6c8695ad9990d96467e3 Mon Sep 17 00:00:00 2001 From: Arnaud Date: Fri, 25 Oct 2024 19:36:49 +0200 Subject: [PATCH] Update dashboard --- package-lock.json | 10 +-- package.json | 2 +- public/img/avatar.png | Bin 0 -> 2973 bytes public/img/avatar.webp | Bin 0 -> 774 bytes public/img/avatar@1.5x.png | Bin 0 -> 5049 bytes public/img/avatar@1.5x.webp | Bin 0 -> 1194 bytes public/img/avatar@2x.png | Bin 0 -> 7622 bytes public/img/avatar@2x.webp | Bin 0 -> 1700 bytes public/img/avatar@3x.png | Bin 0 -> 14012 bytes public/img/avatar@3x.webp | Bin 0 -> 2614 bytes public/img/avatar@4x.png | Bin 0 -> 21186 bytes public/img/avatar@4x.webp | Bin 0 -> 3520 bytes src/components/AlphaText/AlphaText.tsx | 31 ++++---- src/components/AppBar/AppBar.tsx | 33 +++++---- src/components/AppBar/appBar.css | 38 ++++++++-- .../DashboardIcon/DashboardIcon.tsx | 15 ++++ .../HttpNetworkIndicator.css | 24 +++++++ .../HttpNetworkIndicator.tsx | 14 ++-- src/components/Menu/NodesIcon.tsx | 18 ++++- .../NetworkFlashIcon/NetworkFlashIcon.tsx | 18 +++++ src/components/NetworkIcon/NetworkIcon.tsx | 4 +- .../NodeIndicator/NodeIndicator.css | 24 +++++++ .../NodeIndicator/NodeIndicator.tsx | 20 +++--- src/components/OnBoarding/AlphaIcon.tsx | 4 +- src/components/OnBoarding/OnBoardingImage.tsx | 24 +++---- .../OnBoarding/OnBoardingStepOne.tsx | 4 +- src/components/Page/Page.tsx | 6 +- src/routes/dashboard.css | 30 ++++++++ src/routes/dashboard.tsx | 12 +--- src/routes/dashboard/index.css | 34 +++++++++ src/routes/dashboard/index.tsx | 67 +++++++++++++++++- src/routes/index.tsx | 3 +- 32 files changed, 346 insertions(+), 89 deletions(-) create mode 100644 public/img/avatar.png create mode 100644 public/img/avatar.webp create mode 100644 public/img/avatar@1.5x.png create mode 100644 public/img/avatar@1.5x.webp create mode 100644 public/img/avatar@2x.png create mode 100644 public/img/avatar@2x.webp create mode 100644 public/img/avatar@3x.png create mode 100644 public/img/avatar@3x.webp create mode 100644 public/img/avatar@4x.png create mode 100644 public/img/avatar@4x.webp create mode 100644 src/components/DashboardIcon/DashboardIcon.tsx create mode 100644 src/components/HttpNetworkIndicator/HttpNetworkIndicator.css create mode 100644 src/components/NetworkFlashIcon/NetworkFlashIcon.tsx create mode 100644 src/components/NodeIndicator/NodeIndicator.css create mode 100644 src/routes/dashboard/index.css diff --git a/package-lock.json b/package-lock.json index dee7ce7..f07ccd0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.7", "license": "MIT", "dependencies": { - "@codex-storage/marketplace-ui-components": "^0.0.26", + "@codex-storage/marketplace-ui-components": "^0.0.27", "@codex-storage/sdk-js": "^0.0.12", "@sentry/browser": "^8.32.0", "@sentry/react": "^8.31.0", @@ -374,9 +374,9 @@ "dev": true }, "node_modules/@codex-storage/marketplace-ui-components": { - "version": "0.0.26", - "resolved": "https://registry.npmjs.org/@codex-storage/marketplace-ui-components/-/marketplace-ui-components-0.0.26.tgz", - "integrity": "sha512-x8niBv1HRJU6VnKJ5+tv3+yYMxOj0tnMdNaPGzHVXMTHpj5WeHRcqUR1UhxxxnIlnsOjhmjX2tVUYPxpAz+OEw==", + "version": "0.0.27", + "resolved": "https://registry.npmjs.org/@codex-storage/marketplace-ui-components/-/marketplace-ui-components-0.0.27.tgz", + "integrity": "sha512-jCNUFeHNUptKSupSCQriwTXjK0zC8Yi7kcVWI20p9GtfNKPMRykhrpqGgQ6AdMMB9ZAliY5m+PH9ie3J/PWicw==", "dependencies": { "lucide-react": "^0.453.0" }, @@ -384,7 +384,7 @@ "node": ">=18" }, "peerDependencies": { - "@codex-storage/sdk-js": ">=0.0.7", + "@codex-storage/sdk-js": ">=0.0.12", "react": "^18.3.1", "react-dom": "^18.3.1" } diff --git a/package.json b/package.json index ee72e3e..27fc147 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "React" ], "dependencies": { - "@codex-storage/marketplace-ui-components": "^0.0.26", + "@codex-storage/marketplace-ui-components": "^0.0.27", "@codex-storage/sdk-js": "^0.0.12", "@sentry/browser": "^8.32.0", "@sentry/react": "^8.31.0", diff --git a/public/img/avatar.png b/public/img/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..1b14108ae547fecbf89338ee12ee3c125940cd6c GIT binary patch literal 2973 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 T-BpR000000NkvXXu0mjfc;t-n literal 0 HcmV?d00001 diff --git a/public/img/avatar.webp b/public/img/avatar.webp new file mode 100644 index 0000000000000000000000000000000000000000..2d800fdffdb41d2386c191624aa81aa19310d7ff GIT binary patch literal 774 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

iV^)QFJhreTl>36TVag4}5Y<%Ob%RaC%L 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 literal 0 HcmV?d00001 diff --git a/public/img/avatar@2x.webp b/public/img/avatar@2x.webp new file mode 100644 index 0000000000000000000000000000000000000000..453ee11953b9e582bba1b6320a2af8c8f7cb9c08 GIT binary patch literal 1700 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 Y9At}&rfRvKo(-xcT5R7q)j$9M0Nii;DgXcg literal 0 HcmV?d00001 diff --git a/public/img/avatar@4x.png b/public/img/avatar@4x.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0d5a2cef83678bb2659b5e85b0157f6f92d22b GIT binary patch literal 21186 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 lIAV~#q0Jr)1?AGuvx5002ovPDHLkV1lSS34;It literal 0 HcmV?d00001 diff --git a/public/img/avatar@4x.webp b/public/img/avatar@4x.webp new file mode 100644 index 0000000000000000000000000000000000000000..610e555b665a655092a8467562c334f4f21d13c7 GIT binary patch literal 3520 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 literal 0 HcmV?d00001 diff --git a/src/components/AlphaText/AlphaText.tsx b/src/components/AlphaText/AlphaText.tsx index 6a679f7..94c33b7 100644 --- a/src/components/AlphaText/AlphaText.tsx +++ b/src/components/AlphaText/AlphaText.tsx @@ -1,35 +1,40 @@ -export function AlphaText() { +type Props = { + variant: "default" | "failure"; + className?: string; + width?: number; +}; + +export function AlphaText({ variant, className = "", width = 72 }: Props) { + const attr = + variant === "default" + ? { opacity: "0.6", fill: "white" } + : { fill: "#CC6C6C" }; return ( ); diff --git a/src/components/AppBar/AppBar.tsx b/src/components/AppBar/AppBar.tsx index f5c8c1c..2abbac9 100644 --- a/src/components/AppBar/AppBar.tsx +++ b/src/components/AppBar/AppBar.tsx @@ -1,6 +1,7 @@ -import { Menu } from "lucide-react"; import "./appBar.css"; -import { ReactNode } from "react"; +import { DashboardIcon } from "../DashboardIcon/DashboardIcon"; +import { NodeIndicator } from "../NodeIndicator/NodeIndicator"; +import { HttpNetworkIndicator } from "../HttpNetworkIndicator/HttpNetworkIndicator"; type Props = { /** @@ -8,23 +9,31 @@ type Props = { * menu button. */ onExpand: () => void; - - /** - * React node to add to the right part of the application bar - */ - Right: ReactNode; }; -export function AppBar({ onExpand, Right }: Props) { +export function AppBar(props: Props) { + console.info(props); return (

- + {/* - - Home + */} + +
+ +
+
+
Dashboard
+
+ Get Overview of your Codex Vault +
+
+
+
+ +
-
{Right}
); } diff --git a/src/components/AppBar/appBar.css b/src/components/AppBar/appBar.css index f2be905..90ad824 100644 --- a/src/components/AppBar/appBar.css +++ b/src/components/AppBar/appBar.css @@ -1,10 +1,13 @@ .appBar { - height: 40px; + height: 80px; justify-content: space-between; border-bottom: 1px solid var(--codex-border-color); view-transition-name: main-header; display: flex; - padding: 0.75rem 1.5rem; + padding: 20px 40px 20px 40px; + border-bottom: 1px solid #2b303b; + box-sizing: border-box; + background-color: #1c1c1c; } .appBar-burger { @@ -18,11 +21,36 @@ .appBar-right { display: flex; align-items: center; + gap: 16px; } -.appBar-left, -.appBar-right { - gap: 0.75rem; +.appBar-icon { + background: #141414; + height: 48px; + width: 48px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid #353639; + border-radius: 50%; +} + +.appBar-title { + font-family: Inter; + font-size: 18px; + font-weight: 500; + line-height: 24px; + letter-spacing: -0.015em; + color: white; +} + +.appBar-subtitle { + font-family: Inter; + font-size: 14px; + font-weight: 400; + line-height: 20px; + letter-spacing: -0.006em; + color: #969696cc; } @media (min-width: 1000px) { diff --git a/src/components/DashboardIcon/DashboardIcon.tsx b/src/components/DashboardIcon/DashboardIcon.tsx new file mode 100644 index 0000000..b64ed92 --- /dev/null +++ b/src/components/DashboardIcon/DashboardIcon.tsx @@ -0,0 +1,15 @@ +export function DashboardIcon() { + return ( + + + + ); +} diff --git a/src/components/HttpNetworkIndicator/HttpNetworkIndicator.css b/src/components/HttpNetworkIndicator/HttpNetworkIndicator.css new file mode 100644 index 0000000..1125719 --- /dev/null +++ b/src/components/HttpNetworkIndicator/HttpNetworkIndicator.css @@ -0,0 +1,24 @@ +.network-indicator { + display: flex; + align-items: center; + gap: 16px; +} + +.network-indicator-icon { + background-color: #141414; + border-radius: var(--codex-border-radius); + height: 40px; + width: 40px; + display: flex; + align-items: center; + justify-content: center; +} + +.network-indicator-text { + font-family: Inter; + font-size: 14px; + font-weight: 500; + line-height: 20px; + letter-spacing: -0.006em; + color: #8d8d8d; +} diff --git a/src/components/HttpNetworkIndicator/HttpNetworkIndicator.tsx b/src/components/HttpNetworkIndicator/HttpNetworkIndicator.tsx index f06a392..d0c98df 100644 --- a/src/components/HttpNetworkIndicator/HttpNetworkIndicator.tsx +++ b/src/components/HttpNetworkIndicator/HttpNetworkIndicator.tsx @@ -1,10 +1,16 @@ -import { NetworkIndicator } from "@codex-storage/marketplace-ui-components"; import { useNetwork } from "../../network/useNetwork"; +import { NetworkFlashIcon } from "../NetworkFlashIcon/NetworkFlashIcon"; +import "./HttpNetworkIndicator.css"; export function HttpNetworkIndicator() { const online = useNetwork(); - const text = online ? "Online" : "Offline"; - - return ; + return ( +
+
+ +
+ Network +
+ ); } diff --git a/src/components/Menu/NodesIcon.tsx b/src/components/Menu/NodesIcon.tsx index 37e02af..241836a 100644 --- a/src/components/Menu/NodesIcon.tsx +++ b/src/components/Menu/NodesIcon.tsx @@ -1,4 +1,18 @@ -export function NodesIcon() { +type Props = { + variant: "default" | "success" | "failure"; +}; + +export function NodesIcon({ variant }: Props) { + let color = "currentColor"; + + if (variant === "success") { + color = "#3EE089"; + } + + if (variant === "failure") { + color = "var(--codex-color-error-hexa)"; + } + return ( ); diff --git a/src/components/NetworkFlashIcon/NetworkFlashIcon.tsx b/src/components/NetworkFlashIcon/NetworkFlashIcon.tsx new file mode 100644 index 0000000..2aa98ed --- /dev/null +++ b/src/components/NetworkFlashIcon/NetworkFlashIcon.tsx @@ -0,0 +1,18 @@ +type Props = { + online: boolean; +}; + +export function NetworkFlashIcon({ online }: Props) { + const color = online ? "#3EE089" : "var(--codex-color-error-hexa)"; + + return ( + + + + ); +} diff --git a/src/components/NetworkIcon/NetworkIcon.tsx b/src/components/NetworkIcon/NetworkIcon.tsx index 4b62669..e1cf31b 100644 --- a/src/components/NetworkIcon/NetworkIcon.tsx +++ b/src/components/NetworkIcon/NetworkIcon.tsx @@ -3,9 +3,7 @@ type Props = { }; export function NetworkIcon({ active }: Props) { - const stroke = active - ? "var(--codex-color-primary)" - : "rgb(var(--codex-color-error))"; + const stroke = active ? "#3EE089" : "rgb(var(--codex-color-error))"; return ( { @@ -23,8 +17,12 @@ export function NodeIndicator() { return ( <> - - +
+
+ +
+ Node +
); } diff --git a/src/components/OnBoarding/AlphaIcon.tsx b/src/components/OnBoarding/AlphaIcon.tsx index 3675507..7970537 100644 --- a/src/components/OnBoarding/AlphaIcon.tsx +++ b/src/components/OnBoarding/AlphaIcon.tsx @@ -1,14 +1,16 @@ type Props = { variant: "primary" | "error"; + className?: string; }; -export function AlphaIcon({ variant }: Props) { +export function AlphaIcon({ variant, className = "" }: Props) { const color = variant === "primary" ? "var(--codex-color-primary)" : "var(--codex-color-error-hexa)"; return (
- +

- +

diff --git a/src/components/Page/Page.tsx b/src/components/Page/Page.tsx index 95d5578..94a3fd4 100644 --- a/src/components/Page/Page.tsx +++ b/src/components/Page/Page.tsx @@ -6,14 +6,12 @@ import "./page.css"; type Props = { children: ReactNode; - Right: ReactNode; - items: MenuItem[]; version?: string; }; -export function Page({ children, Right, items, version = "" }: Props) { +export function Page({ children, items, version = "" }: Props) { const [open, setOpen] = useState(false); const onClose = () => setOpen(false); @@ -29,7 +27,7 @@ export function Page({ children, Right, items, version = "" }: Props) { version={version}>

- + {children}
diff --git a/src/routes/dashboard.css b/src/routes/dashboard.css index 98eea6f..cd5ea62 100644 --- a/src/routes/dashboard.css +++ b/src/routes/dashboard.css @@ -22,6 +22,36 @@ margin-bottom: 0; } +.dashboard-welcome-versions { + display: flex; + gap: 32px; +} + +.dashboard-welcome-versionContainer { + width: 50px; + text-align: right; +} + +.dashboard-welcome-versionTitle { + font-family: Inter; + font-size: 16px; + font-weight: 500; + line-height: 24px; + letter-spacing: -0.011em; + color: #99a0ae; +} + +.dashboard-welcome-versionValue { + font-family: Inter; + font-size: 10px; + font-weight: 400; + line-height: 12.1px; + letter-spacing: 0.01em; + color: white; + text-transform: uppercase; + white-space: nowrap; +} + @media (min-width: 1000px) { .dashboard { grid-template-columns: repeat(2, minmax(0, 1fr)); diff --git a/src/routes/dashboard.tsx b/src/routes/dashboard.tsx index dafd139..aa0e0ed 100644 --- a/src/routes/dashboard.tsx +++ b/src/routes/dashboard.tsx @@ -1,7 +1,5 @@ import { createFileRoute, Link, Outlet } from "@tanstack/react-router"; import "./dashboard.css"; -import { NodeIndicator } from "../components/NodeIndicator/NodeIndicator"; -import { HttpNetworkIndicator } from "../components/HttpNetworkIndicator/HttpNetworkIndicator"; import { Page } from "../components/Page/Page"; import { HomeIcon } from "../components/Menu/HomeIcon"; import { WalletIcon } from "../components/Menu/WalletIcon"; @@ -19,13 +17,6 @@ import { HostIcon } from "../components/Menu/HostIcon"; import { DeviceIcon } from "../components/Menu/DeviceIcon"; const Layout = () => { - const Right = ( - <> - - - - ); - const items = [ { type: "item", @@ -70,7 +61,7 @@ const Layout = () => { aria-disabled={true} data-title="Coming soon"> - + Nodes @@ -202,7 +193,6 @@ const Layout = () => { } items={items} - Right={Right} version={import.meta.env.PACKAGE_VERSION} /> ); diff --git a/src/routes/dashboard/index.css b/src/routes/dashboard/index.css new file mode 100644 index 0000000..ab107e6 --- /dev/null +++ b/src/routes/dashboard/index.css @@ -0,0 +1,34 @@ +.dashboard-welcomeContainer { + padding: 24px 48px; + display: flex; + justify-content: space-between; +} + +.dashboard-welcome-avatarContainer { + display: flex; + gap: 16px; +} + +.dashboard-welcome-avatarTitle { + font-family: Inter; + font-size: 12px; + font-weight: 700; + line-height: 14.52px; + letter-spacing: 0.01em; + color: #969696cc; + text-transform: uppercase; +} + +.dashboard-welcome-avatarSubtitle { + font-family: Inter; + font-size: 32px; + font-weight: 400; + line-height: 38.73px; + letter-spacing: 0.01em; + color: white; +} + +.dashboard-welcome-alpha { + position: relative; + top: 6px; +} diff --git a/src/routes/dashboard/index.tsx b/src/routes/dashboard/index.tsx index c644acc..52c5d74 100644 --- a/src/routes/dashboard/index.tsx +++ b/src/routes/dashboard/index.tsx @@ -8,20 +8,83 @@ import { ErrorBoundary } from "@sentry/react"; import { useQueryClient } from "@tanstack/react-query"; import { Download } from "../../components/Download/Download.tsx"; import { ManifestFetch } from "../../components/ManifestFetch/ManifestFetch.tsx"; +import { OnBoardingUtils } from "../../utils/onboarding.ts"; +import "./index.css"; +import { AlphaIcon } from "../../components/OnBoarding/AlphaIcon.tsx"; +import { AlphaText } from "../../components/AlphaText/AlphaText.tsx"; +import { useDebug } from "../../hooks/useDebug.ts"; export const Route = createFileRoute("/dashboard/")({ - component: About, + component: Dashboard, }); -function About() { +const throwOnError = false; + +function Dashboard() { const queryClient = useQueryClient(); + const debug = useDebug(throwOnError); const onSuccess = () => { queryClient.invalidateQueries({ queryKey: ["cids"] }); }; + const username = OnBoardingUtils.getDisplayName(); + + const parts = debug.data?.codex.version.split("\n") || [""]; + const version = parts[parts.length - 1]; + return ( <> +
+
+ + + + Avatar + +
+
Welcome back,
+
{username}
+
+
+
+ +
+

Client

+

VER. {version}

+
+
+

Vault

+

+ VER. {import.meta.env.PACKAGE_VERSION} +

+ +
+
+
setIsStepValid(valid);