- Describe the app.
-
- Fulling handles the rest.
-
-
-
- {/* Subtitle */}
-
- Import an existing repo or start from scratch. Agents set up the workspace, runtime,
- optional database, and project automation in the background.
-
-
- {/* Error message */}
- {authError && (
-
- {authError}
-
- )}
-
- {/* CTA Buttons */}
-
-
-
-
-
-
- {/* Features */}
- {FEATURES_JSX}
-
-
- );
-}
-
-// Static JSX hoisted outside component to avoid recreation on every render
-const FEATURES_JSX = (
-
-
-
- Start from a prompt or import from GitHub
-
-
-
- Add PostgreSQL only when you need it
-
-
-
- Agents handle runtime and project setup automatically
-
-
-);
diff --git a/app/(landing)/_components/landing-client.tsx b/app/(landing)/_components/landing-client.tsx
index 9a16e83..00a0e79 100644
--- a/app/(landing)/_components/landing-client.tsx
+++ b/app/(landing)/_components/landing-client.tsx
@@ -1,65 +1,154 @@
-'use client';
+import {
+ MdCheckCircleOutline,
+ MdLockOutline,
+ MdOutlineShield,
+} from 'react-icons/md';
+import Image from 'next/image';
+import Link from 'next/link';
-import { useCallback, useState } from 'react';
-import { useRouter } from 'next/navigation';
+const navItems = ['Product', 'Templates', 'Solutions', 'Resources', 'Pricing'];
-import { HeroSection } from './hero-section';
-import { LandingHeader } from './landing-header';
-import { TerminalDemo } from './terminal-demo';
-
-interface LandingClientProps {
- starCount: number | null;
-}
+const proofItems = [
+ {
+ icon: MdOutlineShield,
+ title: 'Enterprise ready',
+ detail: 'SSO, RBAC, audit logs',
+ },
+ {
+ icon: MdLockOutline,
+ title: 'Your data, your control',
+ detail: 'Private by default',
+ },
+ {
+ icon: MdCheckCircleOutline,
+ title: 'Built for reliability',
+ detail: 'Observability & retries',
+ },
+];
/**
- * Client-side landing page shell.
- *
- * Handles all interactive logic (auth, navigation) while receiving
- * server-fetched data (starCount) as props.
- *
- * Authentication Flow (v2.0.0):
- * - Sealos environment: Auto-trigger auth on page load if unauthenticated
- * - Non-Sealos + Authenticated: Show "Go to Projects" button
- * - Non-Sealos + Unauthenticated: Show "Start Building Now" → /login
- * - Authentication success: Update button text, user clicks to navigate
+ * Landing page shell.
*/
-export function LandingClient({ starCount }: LandingClientProps) {
- const router = useRouter();
+export function LandingClient() {
+ return (
+