From dec2d861ecf58e60a140fce27589dde27ffa36b5 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Mon, 28 Sep 2026 12:04:15 +0100 Subject: [PATCH] Add a Philosophy section to the homepage (#5538) * feat(website): add Philosophy section to homepage * feat(website): reshape Philosophy section to the homepage's FeatureSection pattern --- .../website/src/components/landing-page.tsx | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/packages/website/src/components/landing-page.tsx b/packages/website/src/components/landing-page.tsx index 248fa58675..d2d6684c93 100644 --- a/packages/website/src/components/landing-page.tsx +++ b/packages/website/src/components/landing-page.tsx @@ -1,13 +1,18 @@ import * as React from "react"; import { ArrowRight, + Blocks, Bot, BookOpen, Braces, Coffee, + Compass, ExternalLink, + Gem, GitFork, Laptop, + Lock, + Merge, Monitor, Puzzle, Smartphone, @@ -124,6 +129,7 @@ export function LandingPage({ title, subtitle }: LandingPageProps) { + @@ -875,6 +881,63 @@ function ExtensibleCard({ ); } +const PRINCIPLES: ReadonlyArray<{ icon: LucideIcon; title: string; description: string }> = [ + { + icon: Lock, + title: "Private", + description: "No telemetry, tracking, or forced login. Code stays on your machine.", + }, + { + icon: Compass, + title: "Independent", + description: "Paseo doesn't answer to investors. Its users guide what gets built.", + }, + { + icon: Gem, + title: "Polished", + description: "Install the app and start working. No need to know what a daemon is.", + }, + { + icon: Merge, + title: "Unified", + description: "Claude Code, Codex, OpenCode, Pi, and more, all used the same way.", + }, + { + icon: Blocks, + title: "Composable", + description: "Run agents on your laptop or a server, and connect from any device.", + }, + { + icon: Puzzle, + title: "Extensible", + description: "If Paseo doesn't fit how you work, change it with a plugin or fork.", + }, +]; + +function PhilosophySection() { + return ( + +
+ {PRINCIPLES.map((principle) => ( +
+
+ +
+

{principle.title}

+

{principle.description}

+
+ ))} +
+
+ ); +} + function GetStarted() { const platform = useVisitorPlatform(); return (