From 285d15b7396cb62bd5698362b14ac1257caa32d6 Mon Sep 17 00:00:00 2001 From: Angie Jones Date: Mon, 5 May 2025 20:29:45 -0700 Subject: [PATCH] docs: update home page (#2441) --- documentation/docusaurus.config.ts | 15 ++- .../src/components/HomepageFeatures/index.tsx | 46 +------- documentation/src/css/custom.css | 14 ++- documentation/src/pages/index.module.css | 100 +++++++++++++++--- documentation/src/pages/index.tsx | 33 +++--- .../static/img/logo-codename-goose.svg | 1 + .../static/img/logo_codename_goose.png | Bin 0 -> 17956 bytes 7 files changed, 128 insertions(+), 81 deletions(-) create mode 100644 documentation/static/img/logo-codename-goose.svg create mode 100644 documentation/static/img/logo_codename_goose.png diff --git a/documentation/docusaurus.config.ts b/documentation/docusaurus.config.ts index 5b8e5a23c8..86ad7a4e58 100644 --- a/documentation/docusaurus.config.ts +++ b/documentation/docusaurus.config.ts @@ -14,7 +14,7 @@ const inkeepOrgId = process.env.INKEEP_ORG_ID; const config: Config = { title: "codename goose", tagline: - "Your on-machine AI agent, automating engineering tasks seamlessly.", + "Your local AI agent, automating engineering tasks seamlessly.", favicon: "img/favicon.ico", // Set the production url of your site here @@ -131,17 +131,11 @@ const config: Config = { label: "Quickstart", position: "left", }, - { - to: "/extensions", - label: "Extensions", - position: "left", - }, { to: "/docs/category/getting-started", position: "left", label: "Docs", }, - { to: "/docs/category/tutorials", position: "left", @@ -150,7 +144,12 @@ const config: Config = { { to: "/prompt-library", position: "left", - label: "Prompt Library", + label: "Prompts", + }, + { + to: "/extensions", + label: "Extensions", + position: "left", }, { to: "/blog", label: "Blog", position: "left" }, diff --git a/documentation/src/components/HomepageFeatures/index.tsx b/documentation/src/components/HomepageFeatures/index.tsx index f8479d5bff..47bef96bc5 100644 --- a/documentation/src/components/HomepageFeatures/index.tsx +++ b/documentation/src/components/HomepageFeatures/index.tsx @@ -146,7 +146,6 @@ function Quote({ name, github, role, testimonial }: FeatureQuote) { alignItems: "left", }} > -

{testimonial}

{role}
+

{testimonial}

); @@ -168,54 +168,12 @@ export default function HomepageFeatures(): ReactNode {
-
- - -
+ {FeatureList.map((props, idx) => ( ))} - {/* YouTube Video Section */} -
-

- Meet Codename Goose -

-
-
- -
-
-
{/* Testimonials Section */}

Loved by engineers

diff --git a/documentation/src/css/custom.css b/documentation/src/css/custom.css index 46be7475b9..28d8f6ac2c 100644 --- a/documentation/src/css/custom.css +++ b/documentation/src/css/custom.css @@ -241,8 +241,6 @@ html { padding-top: 24px; } -/* net new */ - .hero--logo svg { height: 220px; width: 220px; @@ -257,6 +255,17 @@ html { margin: 0; } +.ctaButton { + display: inline-block; + padding: 0.75rem 1.5rem; + background: var(--background-app); + color: var(--text-standard); + font-weight: bold; + border-radius: 999px; + text-decoration: none; + font-size: 0.9rem; +} + /* Enable word-wrap for code blocks */ .theme-code-block pre { white-space: pre-wrap; @@ -306,3 +315,4 @@ html[data-theme="light"] .hide-in-light { object-fit: cover; /* Ensure the image covers the area while maintaining aspect ratio */ border-radius: 8px; /* Optional: rounded corners */ } + diff --git a/documentation/src/pages/index.module.css b/documentation/src/pages/index.module.css index 025f2064f8..45d1683d2e 100644 --- a/documentation/src/pages/index.module.css +++ b/documentation/src/pages/index.module.css @@ -1,24 +1,98 @@ /** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. - */ +* CSS files with the .module.css suffix will be treated as CSS modules +* and scoped locally. +*/ -.heroBanner { - padding: 4rem 0; - text-align: center; - position: relative; - overflow: hidden; - padding-bottom: 0; +.header { + padding: 4rem 2rem; } + +.wrapper { + max-width: 1200px; + margin: 0 auto; + display: flex; + flex-wrap: wrap; + gap: 3rem; + justify-content: center; + align-items: center; + min-height: 400px; +} + +.textColumn { + flex: 1 1 300px; + max-width: 500px; + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + margin-top: -40px; +} + +.logo { + display: flex; + align-items: center; +} + +.subtitle { + font-size: 1.25rem; + margin-bottom: 1.5rem; + max-width: 30ch; +} + +.videoColumn { + flex: 1 1 400px; + aspect-ratio: 16 / 9; + width: 100%; + max-width: 640px; +} + +.aspect-ratio{ + aspect-ratio: 16 / 9; + width: 100%; +} + + + @media screen and (max-width: 996px) { .heroBanner { padding: 2rem; } } -.buttons { - display: flex; - align-items: center; - justify-content: center; +@media screen and (max-width: 768px) { + .header { + padding: 1rem 1rem; + } + + .wrapper { + flex-direction: column; + text-align: center; + gap: 1rem; + padding: 1rem 1rem; + } + + .textColumn { + text-align: center; + max-width: 100%; + flex: 1 1 400px; + margin-top: 0; + } + + .subtitle { + font-size: 1.1rem; + line-height: 1.5; + margin: 0 auto 1.5rem; + } + + .ctaButton { + font-size: 1rem; + width: auto; + } + + .videoColumn { + flex: 1 1 180px; + aspect-ratio: 16 / 9; + width: 100%; + } } diff --git a/documentation/src/pages/index.tsx b/documentation/src/pages/index.tsx index 163b5bac6a..ea0eafdfd6 100644 --- a/documentation/src/pages/index.tsx +++ b/documentation/src/pages/index.tsx @@ -1,37 +1,42 @@ import type { ReactNode } from "react"; -import clsx from "clsx"; import Link from "@docusaurus/Link"; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; import Layout from "@theme/Layout"; import HomepageFeatures from "@site/src/components/HomepageFeatures"; -import Heading from "@theme/Heading"; import styles from "./index.module.css"; -import { IconDownload } from "../components/icons/download"; import { GooseWordmark } from "../components/gooseWordmark"; function HomepageHeader() { const { siteConfig } = useDocusaurusContext(); return ( -
-
-
- -
-

{siteConfig.tagline}

-
- +
+
+
+
+ +
+

{siteConfig.tagline}

+ install goose
+ +
+ +
); } + export default function Home(): ReactNode { const { siteConfig } = useDocusaurusContext(); return ( diff --git a/documentation/static/img/logo-codename-goose.svg b/documentation/static/img/logo-codename-goose.svg new file mode 100644 index 0000000000..3cbb0ce666 --- /dev/null +++ b/documentation/static/img/logo-codename-goose.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/documentation/static/img/logo_codename_goose.png b/documentation/static/img/logo_codename_goose.png new file mode 100644 index 0000000000000000000000000000000000000000..3fdbc65cd13f6b5b24284a4e63ccfb5bff470420 GIT binary patch literal 17956 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