diff --git a/vibn-frontend/_onboarding/onboarding-entrepreneur.tsx b/vibn-frontend/_onboarding/onboarding-entrepreneur.tsx index 3384627..dff0cd1 100644 --- a/vibn-frontend/_onboarding/onboarding-entrepreneur.tsx +++ b/vibn-frontend/_onboarding/onboarding-entrepreneur.tsx @@ -173,22 +173,556 @@ function EntrepType({ value, onChange }) { } function LayoutPreview({ styleId }: { styleId: string }) { - // Styles are 100% width, 104px tall absolute layouts resembling the wireframes. + // Ultra-high-fidelity CSS-rendered miniatures representing your actual page-dashboard.jsx designs! const isDark = styleId === "rail"; const accentColor = "var(--accent)"; + // Theme palettes from page-dashboard.jsx + const c = isDark + ? { + bg: "#0e0f12", + panel: "#16171d", + border: "rgba(255,255,255,0.06)", + text: "#f5f4f2", + subtext: "#a09fa6", + muted: "#686972", + accent: "var(--accent)", + up: "#22c55e", + down: "#ff4d5e", + } + : { + bg: "#fafaf9", + panel: "#ffffff", + border: "#ebebe6", + text: "#1a1a1a", + subtext: "#5a5a5e", + muted: "#a09a90", + accent: "var(--accent)", + up: "#2e7d32", + down: "#d32f2f", + }; + const wireLine = (w: string | number, opacity = 0.25) => (
); + // High-fidelity Avatars matching your screenshots (MR, TR, DP, SK) + const MiniAvatar = ({ + text: label, + color, + }: { + text: string; + color: string; + }) => ( +
+ {label} +
+ ); + + // Common high-fidelity dashboard body matching page-dashboard.jsx + const renderDashboardMockup = () => ( +
+ {/* Header */} +
+
+ + Workspace dashboard + + + Good afternoon, Mira + + + 3 deals moved stage today · 12 unread in Inbox · 1 task overdue + +
+
+
+
+
+
+
+
+
+ + {/* KPI Strip */} +
+ {[ + { l: "Revenue · MTD", v: "€286,420", d: "+18.4%", up: true }, + { l: "Active deals", v: "168", d: "+12", up: true }, + { l: "Win rate · 30d", v: "34.2%", d: "−1.1%", up: false }, + { l: "Pipeline ratio", v: "4.8×", d: "healthy", up: true }, + ].map((k, i) => ( +
+
+ + {k.l} + + + {k.d} + +
+
+ {k.v} +
+ + + +
+ ))} +
+ + {/* Main Grid: charts, activity and leaderboards */} +
+ {/* Left column: Daily Revenue Chart + Recent Activity */} +
+ {/* Revenue Daily Chart */} +
+ + Revenue, daily + +
+ {[10, 16, 22, 18, 25, 8, 6, 14, 20, 26, 22, 28, 12, 10].map( + (h, idx) => ( +
+ ), + )} +
+
+ + {/* Recent Activity Card */} +
+ + Recent activity + +
+ {[ + { + av: "MR", + col: "#d4b8a8", + name: "Mira Reyes", + action: "moved Q3 to ", + highlight: "Negotiation", + hlCol: c.accent, + }, + { + av: "TR", + col: "#c2d3a8", + name: "Theo Roux", + action: "logged call with ", + highlight: "Sun Kim", + hlCol: c.text, + }, + { + av: "DP", + col: "#b8d4e8", + name: "Devi Patel", + action: "closed ", + highlight: "Halcyon", + hlCol: c.text, + }, + ].map((act, i) => ( +
+ +
+
+ {act.name} +
+
+ {act.action} + + {act.highlight} + +
+
+
+ ))} +
+
+
+ + {/* Right column: Pipeline Funnel + Team leaderboard */} +
+ {/* Pipeline Funnel */} +
+ + Pipeline funnel + +
+ {[ + { s: "New", w: "100%", col: "#5e5cff" }, + { s: "Qual", w: "80%", col: "#6d5cff" }, + { s: "Prop", w: "60%", col: "#7c5cff" }, + { s: "Nego", w: "40%", col: "#8c5cff" }, + { s: "Won", w: "20%", col: "#22c55e" }, + ].map((f, i) => ( +
+ + {f.s} + +
+
+
+
+ ))} +
+
+ + {/* Team Leaders Card */} +
+ + Team · this month + +
+ {[ + { av: "MR", col: "#d4b8a8", name: "Mira Reyes", val: "€124k" }, + { av: "DP", col: "#b8d4e8", name: "Devi Patel", val: "€86k" }, + { av: "TR", col: "#c2d3a8", name: "Theo Roux", val: "€62k" }, + ].map((team, i) => ( +
+ +
+
+ + {team.name} + + + {team.val} + +
+
+
+
+
+
+ ))} +
+
+
+
+
+ ); + let content; if (styleId === "sidebar") { // Left-side menu column + main dashboard area — Light/Minimal CRM theme (Screen 3) @@ -204,7 +738,7 @@ function LayoutPreview({ styleId }: { styleId: string }) { {/* Sidebar */}
- {/* Logo */} -
+ {/* Logo / Workspace Selector */} +
- {wireLine(18, 0.55)} +
+ + Lattice Studio + + + Free · 4 members + +
{/* Mini Search box */}
- {/* Menu items */} + > + {wireLine(16, 0.15)} +
+ {/* Menu Sections (VIEWS, TOOLS, ADMIN) */}
- {wireLine(24, 0.45)} - {wireLine(20, 0.3)} - {wireLine(26, 0.3)} -
-
- {/* Main Dashboard (Light) */} -
- {/* Header */} -
- {wireLine(36, 0.65)} -
-
- {/* 4 Mini Cards Grid */} -
- {[1, 2, 3, 4].map((i) => ( -
- {wireLine("50%", 0.3)} + {/* Standard Links */} +
+
+ {wireLine(12, 0.55)}
- ))} -
- {/* Charts/Table Row */} -
-
- {wireLine("40%", 0.4)} - {/* Simulated bars */}
- {[6, 12, 10, 16, 20, 14, 8].map((h, idx) => ( -
- ))} + {wireLine(14, 0.35)} +
+
+ {wireLine(16, 0.35)}
-
- {wireLine("70%", 0.4)} - {wireLine("100%", 0.15)} - {wireLine("90%", 0.15)} + + {/* Views */} +
+ + VIEWS + + {["Companies", "People", "Opportunities"].map((v) => ( +
+ {wireLine(24, 0.35)} +
+ ))} +
+ + {/* Tools */} +
+ + TOOLS + + {["Insights", "Automations", "Docs"].map((v) => ( +
+ {wireLine(20, 0.35)} +
+ ))} +
+ + {/* Admin */} +
+ + ADMIN + +
+ {wireLine(18, 0.35)} +
+ {/* Main Dashboard (Light) */} + {renderDashboardMockup()}
); } else if (styleId === "topbar") { @@ -388,7 +947,7 @@ function LayoutPreview({ styleId }: { styleId: string }) { style={{ height: 20, borderBottom: "1px solid rgba(255,255,255,0.08)", - padding: "0 8px", + padding: "0 10px", display: "flex", alignItems: "center", justifyContent: "space-between", @@ -405,17 +964,56 @@ function LayoutPreview({ styleId }: { styleId: string }) { opacity: 0.9, }} /> -
-
+ + Lattice + + + / + +
+
+ + mira-reyes + +
+ + / + + + dashboard +
{/* Miniature ⌘K Bar */}
- {/* Light Dashboard below */} + + {/* Page tabs secondary bar */}
- {/* Header */} + {["Overview", "Reports", "Goals", "Anomalies", "Custom"].map( + (tab, idx) => ( + + {tab} + + ), + )} +
+ + {/* Light Dashboard below */} + {renderDashboardMockup()} +
+ ); + } else if (styleId === "rail") { + // Icon rail + secondary vertical list panel — Complete Dark-mode Dashboard (Screen 1) + content = ( +
+ {/* Far-left Icon Rail (Black) */} +
+
+ {[1, 2, 3, 4].map((i) => ( +
+ ))} +
+ {/* Secondary List Panel (Dark) */} +
+ {/* Group Header */}
- {wireLine(36, 0.65)} - {wireLine(24, 0.35)} + + MY DASHBOARDS +
- {/* 4 Mini Cards Grid */} -
- {[1, 2, 3, 4].map((i) => ( + {/* Active lists */} +
+ {[ + { n: "Workspace overview", s: "default", active: true }, + { n: "Revenue · weekly", s: "shared by Theo" }, + { n: "Pipeline health", s: "auto-refresh" }, + { n: "Team performance", s: "private" }, + ].map((dash, idx) => (
- {wireLine("50%", 0.3)} -
+ > + {dash.n} + + {dash.s}
))}
- {/* Charts Row */} -
-
-
- {[6, 12, 10, 16, 20, 14, 8].map((h, idx) => ( -
- ))} -
-
-
- {wireLine("70%", 0.4)} - {wireLine("100%", 0.15)} -
-
+ {/* Main Content Area (Dark) */} + {renderDashboardMockup()}
); - } else if (styleId === "rail") { + } else if (styleId === "flux") { // Icon rail + secondary vertical list panel — Complete Dark-mode Dashboard (Screen 1) content = (