Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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: 1 addition & 1 deletion dapp/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/edrm-mark.svg" />
<link rel="icon" type="image/svg+xml" href="/edrm-mark.svg?v=2" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ZDrive</title>
<meta name="description" content="Encrypted file sharing with on-chain access control. Data rooms, due diligence, confidential collaboration. Trustlessly." />
Expand Down
4 changes: 2 additions & 2 deletions dapp/public/edrm-mark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions dapp/src/components/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ export default function Layout() {
return (
<div className="min-h-screen">
<header className="border-b border-[var(--border)] px-6 py-4 flex items-center justify-between">
<Link to="/drive" className="flex items-center gap-2 text-lg font-semibold">
<Link to="/drive" className="flex items-center gap-1 text-lg font-semibold">
<BrandMark className="h-6 w-6 text-[var(--primary)]" />
ZDrive
Drive
</Link>
<nav className="flex items-center gap-6">
<button
Expand Down
2 changes: 1 addition & 1 deletion dapp/src/components/ThemeToggle.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default function ThemeToggle() {
if (typeof window === "undefined") return true;
const saved = localStorage.getItem("dr-theme");
if (saved) return saved === "dark";
return window.matchMedia("(prefers-color-scheme: dark)").matches;
return true; // Default to dark
});

useEffect(() => {
Expand Down
69 changes: 60 additions & 9 deletions dapp/src/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
--card-foreground: oklch(0.27 0.03 255);
--popover: oklch(0.99 0.005 255);
--popover-foreground: oklch(0.27 0.03 255);
--primary: oklch(0.63 0.12 265);
--primary-foreground: oklch(0.98 0.02 265);
--primary: oklch(0.55 0.25 300);
--primary-foreground: oklch(0.98 0.02 300);
--secondary: oklch(0.92 0.02 255);
--secondary-foreground: oklch(0.35 0.03 255);
--muted: oklch(0.9 0.015 255);
Expand All @@ -22,7 +22,7 @@
--destructive-foreground: oklch(0.99 0.005 255);
--border: oklch(0.86 0.005 255);
--input: oklch(0.86 0.005 255);
--ring: oklch(0.63 0.12 265);
--ring: oklch(0.55 0.25 300);

--btn-dark: oklch(0.14 0.02 255);
--btn-dark-hover: oklch(0.17 0.02 255);
Expand All @@ -37,8 +37,8 @@
--card-foreground: oklch(0.92 0.01 265);
--popover: oklch(0.26 0.015 265);
--popover-foreground: oklch(0.92 0.01 265);
--primary: oklch(0.72 0.15 265);
--primary-foreground: oklch(0.99 0.005 255);
--primary: oklch(0.72 0.28 300);
--primary-foreground: oklch(0.99 0.005 300);
--secondary: oklch(0.3 0.015 265);
--secondary-foreground: oklch(0.9 0.01 265);
--muted: oklch(0.3 0.015 265);
Expand Down Expand Up @@ -472,15 +472,44 @@ body {
position: absolute;
inset: 0;
background:
radial-gradient(ellipse 60% 50% at 50% 40%, oklch(0.63 0.12 265 / 0.12), transparent),
radial-gradient(ellipse 40% 60% at 30% 60%, oklch(0.55 0.18 290 / 0.08), transparent);
radial-gradient(ellipse 60% 50% at 50% 40%, oklch(0.8 0.08 280 / 0.2), transparent),
radial-gradient(ellipse 40% 60% at 30% 60%, oklch(0.7 0.12 300 / 0.12), transparent);
pointer-events: none;
}

/* Subtle dot grid overlay */
.landing__hero-bg::after {
content: "";
position: absolute;
inset: 0;
background-image: radial-gradient(oklch(0.5 0.02 265 / 0.18) 1px, transparent 1px);
background-size: 32px 32px;
mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, black 20%, transparent 70%);
}

.dark .landing__hero-bg {
background:
radial-gradient(ellipse 60% 50% at 50% 40%, oklch(0.45 0.2 265 / 0.2), transparent),
radial-gradient(ellipse 40% 60% at 30% 60%, oklch(0.35 0.22 290 / 0.15), transparent);
radial-gradient(ellipse 60% 50% at 50% 40%, oklch(0.45 0.2 265 / 0.25), transparent),
radial-gradient(ellipse 40% 60% at 30% 60%, oklch(0.35 0.22 290 / 0.18), transparent);
}

.dark .landing__hero-bg::after {
background-image: radial-gradient(oklch(0.7 0.05 265 / 0.12) 1px, transparent 1px);
}

/* Faint brand watermark behind hero content */
.landing__watermark {
position: absolute;
width: 20rem;
height: 20rem;
opacity: 0.06;
color: var(--primary);
pointer-events: none;
z-index: 0;
}

.dark .landing__watermark {
opacity: 0.08;
}

.landing__hero-content {
Expand Down Expand Up @@ -514,7 +543,17 @@ body {
font-size: 0.875rem;
}

/* Gradient divider between hero and features */
.landing__divider {
height: 1px;
border: none;
background: linear-gradient(90deg, transparent, oklch(0.6 0.1 280 / 0.3) 30%, oklch(0.6 0.1 280 / 0.3) 70%, transparent);
margin: 0 auto;
max-width: 48rem;
}

.landing__features {
position: relative;
padding: 4rem 2rem 6rem;
max-width: 72rem;
margin: 0 auto;
Expand All @@ -528,6 +567,18 @@ body {

.landing__feature-card {
padding: 2rem;
transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.landing__feature-card:hover {
transform: translateY(-3px);
border-color: oklch(0.7 0.1 290 / 0.3);
box-shadow: 0 12px 32px -8px oklch(0.5 0.15 280 / 0.12);
}

.dark .landing__feature-card:hover {
border-color: oklch(0.6 0.15 290 / 0.3);
box-shadow: 0 12px 32px -8px oklch(0.3 0.1 280 / 0.3);
}

.landing__footer-cta {
Expand Down
2 changes: 1 addition & 1 deletion dapp/src/main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import App from "./App";
import { config } from "./config/wagmi";

const saved = localStorage.getItem("dr-theme"); // Apply theme before render to avoid flash
const prefersDark = saved ? saved === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches;
const prefersDark = saved ? saved === "dark" : true; // Default to dark
if (prefersDark) {
document.documentElement.classList.add("dark");
}
Expand Down
9 changes: 6 additions & 3 deletions dapp/src/pages/Landing/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ export default function Landing() {
return (
<div className="landing min-h-screen">
<header className="landing__header">
<div className="flex items-center gap-2 text-lg font-semibold">
<div className="flex items-center gap-1 text-lg font-semibold">
<BrandMark className="h-6 w-6 text-[var(--primary)]" />
ZDrive
Drive
</div>
<nav className="flex items-center gap-4">
<ThemeToggle />
Expand All @@ -50,6 +50,7 @@ export default function Landing() {

<section className="landing__hero">
<div className="landing__hero-bg" aria-hidden="true" />
<BrandMark className="landing__watermark" />
<div className="landing__hero-content">
<h1 className="landing__headline">
Encrypted file sharing.
Expand All @@ -63,14 +64,16 @@ export default function Landing() {
</p>
{isConnected ? (
<Link to="/drive" className="dr-btn dr-btn--primary landing__cta">
Go to my zDrive
Go to my Drive
</Link>
) : (
<WalletButton />
)}
</div>
</section>

<hr className="landing__divider" />

<section className="landing__features">
<div className="landing__features-grid">
{FEATURES.map((f) => (
Expand Down
Loading