From 1bdcacc2805e651d906e1c1148647dc86152ed70 Mon Sep 17 00:00:00 2001 From: Carla Goncalves Date: Mon, 13 Apr 2026 12:34:34 +0200 Subject: [PATCH 01/14] Fix issues with website --- .../app/mcp/_components/mcp-hero-section.tsx | 4 +- apps/site/src/app/newsletter/page.tsx | 2 +- apps/site/src/app/oss-friends/page.tsx | 2 +- apps/site/src/app/typedsql/page.tsx | 41 +++++++++++-------- 4 files changed, 29 insertions(+), 20 deletions(-) diff --git a/apps/site/src/app/mcp/_components/mcp-hero-section.tsx b/apps/site/src/app/mcp/_components/mcp-hero-section.tsx index a251113925..2dca4d0641 100644 --- a/apps/site/src/app/mcp/_components/mcp-hero-section.tsx +++ b/apps/site/src/app/mcp/_components/mcp-hero-section.tsx @@ -22,9 +22,9 @@ export function McpHeroSection({ features: readonly McpHeroFeature[]; }) { return ( -
+
-
+

diff --git a/apps/site/src/app/newsletter/page.tsx b/apps/site/src/app/newsletter/page.tsx index 7b1321a046..0c804cb52b 100644 --- a/apps/site/src/app/newsletter/page.tsx +++ b/apps/site/src/app/newsletter/page.tsx @@ -86,7 +86,7 @@ export default async function NewsletterPage() { return (

-
+

diff --git a/apps/site/src/app/oss-friends/page.tsx b/apps/site/src/app/oss-friends/page.tsx index d2a534d773..c1f1a5c6c2 100644 --- a/apps/site/src/app/oss-friends/page.tsx +++ b/apps/site/src/app/oss-friends/page.tsx @@ -32,7 +32,7 @@ export default async function OSSFriendsPage() { return (

-
+

diff --git a/apps/site/src/app/typedsql/page.tsx b/apps/site/src/app/typedsql/page.tsx index 49506bc70c..e8501a3430 100644 --- a/apps/site/src/app/typedsql/page.tsx +++ b/apps/site/src/app/typedsql/page.tsx @@ -12,9 +12,10 @@ const twoCol = [ End-to-end
type-safety

- All TypedSQL queries have typed inputs and outputs preventing errors related to incorrect - types and improving DX. Any type mismatches can be caught right away, while type-safety - significantly improves ergonomics while developing. + All TypedSQL queries have typed inputs and outputs preventing errors + related to incorrect types and improving DX. Any type mismatches can + be caught right away, while type-safety significantly improves + ergonomics while developing.

From 65495bc5d900ef3573845123d5b1baf57f0385a9 Mon Sep 17 00:00:00 2001 From: Carla Goncalves Date: Thu, 16 Apr 2026 15:48:05 +0100 Subject: [PATCH 02/14] Fix some stuff for all pages --- .../icons/technologies/apollo_light.svg | 1 + .../icons/technologies/express_light.svg | 1 + .../public/icons/technologies/planetscale.svg | 2 +- .../icons/technologies/planetscale_light.svg | 1 + .../typedsql/end-to-end-type-safety_light.svg | 2 +- .../typedsql/full-controll-sql_light.svg | 2 +- .../illustrations/typedsql/great-dx_light.svg | 2 +- apps/site/src/app/(index)/page.tsx | 51 ++---- apps/site/src/app/client/page.tsx | 145 +++++++++++++----- apps/site/src/app/community/page.tsx | 15 +- .../app/mcp/_components/mcp-cta-section.tsx | 49 ++---- apps/site/src/app/orm/page.tsx | 43 ++---- apps/site/src/app/postgres/page.tsx | 45 ++---- apps/site/src/app/typedsql/page.tsx | 47 ++---- .../site/src/components/client/technology.tsx | 9 +- .../src/components/console-cta-button.tsx | 9 +- .../homepage/card-section/card-section.tsx | 10 +- apps/site/src/components/page-footer-cta.tsx | 96 ++++++++++++ 18 files changed, 304 insertions(+), 226 deletions(-) create mode 100644 apps/site/public/icons/technologies/apollo_light.svg create mode 100644 apps/site/public/icons/technologies/express_light.svg create mode 100644 apps/site/public/icons/technologies/planetscale_light.svg create mode 100644 apps/site/src/components/page-footer-cta.tsx diff --git a/apps/site/public/icons/technologies/apollo_light.svg b/apps/site/public/icons/technologies/apollo_light.svg new file mode 100644 index 0000000000..1f5b26adef --- /dev/null +++ b/apps/site/public/icons/technologies/apollo_light.svg @@ -0,0 +1 @@ + diff --git a/apps/site/public/icons/technologies/express_light.svg b/apps/site/public/icons/technologies/express_light.svg new file mode 100644 index 0000000000..358ff84ac6 --- /dev/null +++ b/apps/site/public/icons/technologies/express_light.svg @@ -0,0 +1 @@ + diff --git a/apps/site/public/icons/technologies/planetscale.svg b/apps/site/public/icons/technologies/planetscale.svg index 969c4ae9c3..706477879c 100644 --- a/apps/site/public/icons/technologies/planetscale.svg +++ b/apps/site/public/icons/technologies/planetscale.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/site/public/icons/technologies/planetscale_light.svg b/apps/site/public/icons/technologies/planetscale_light.svg new file mode 100644 index 0000000000..969c4ae9c3 --- /dev/null +++ b/apps/site/public/icons/technologies/planetscale_light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/site/public/illustrations/typedsql/end-to-end-type-safety_light.svg b/apps/site/public/illustrations/typedsql/end-to-end-type-safety_light.svg index dc3bd736ab..f7d269a7b6 100644 --- a/apps/site/public/illustrations/typedsql/end-to-end-type-safety_light.svg +++ b/apps/site/public/illustrations/typedsql/end-to-end-type-safety_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/apps/site/public/illustrations/typedsql/full-controll-sql_light.svg b/apps/site/public/illustrations/typedsql/full-controll-sql_light.svg index 0bdae437cb..987cc45bcf 100644 --- a/apps/site/public/illustrations/typedsql/full-controll-sql_light.svg +++ b/apps/site/public/illustrations/typedsql/full-controll-sql_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/apps/site/public/illustrations/typedsql/great-dx_light.svg b/apps/site/public/illustrations/typedsql/great-dx_light.svg index 641ee98d6d..9180a24609 100644 --- a/apps/site/public/illustrations/typedsql/great-dx_light.svg +++ b/apps/site/public/illustrations/typedsql/great-dx_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/apps/site/src/app/(index)/page.tsx b/apps/site/src/app/(index)/page.tsx index 50a3286202..b8df60e736 100644 --- a/apps/site/src/app/(index)/page.tsx +++ b/apps/site/src/app/(index)/page.tsx @@ -5,6 +5,7 @@ import { CopyCode } from "@/components/homepage/copy-btn"; import { Bento } from "@/components/homepage/bento"; import { CardSection } from "@/components/homepage/card-section/card-section"; import { ConsoleCtaButton } from "@/components/console-cta-button"; +import { PageFooterCta } from "@/components/page-footer-cta"; import review from "../../data/homepage.json"; import Testimonials from "../../components/homepage/testimonials"; // Antigravity is a purely decorative particle animation — skip SSR to keep @@ -229,42 +230,20 @@ export default function SiteHome() { )} {/* Footer CTA Section */} -
- -
+
); } diff --git a/apps/site/src/app/client/page.tsx b/apps/site/src/app/client/page.tsx index 844bb0d66f..b765eaba21 100644 --- a/apps/site/src/app/client/page.tsx +++ b/apps/site/src/app/client/page.tsx @@ -29,7 +29,8 @@ const databases = { }, { name: "MariaDB", - icon: "/icons/technologies/mariadb.svg", + icon: "/icons/technologies/mariadbdark.svg", + icon_light: "/icons/technologies/mariadb.svg", url: "/", }, { @@ -49,7 +50,8 @@ const databases = { }, { name: "PlanetScale", - icon: "/icons/companies/planetscale.svg", + icon: "/icons/technologies/planetscale.svg", + icon_light: "/icons/companies/planetscale.svg", url: "/", }, { @@ -71,7 +73,8 @@ const frameworks = { }, { name: "Next.js", - icon: "/icons/technologies/nextjs.svg", + icon: "/icons/technologies/nextjs-light.svg", + icon_light: "/icons/technologies/nextjs.svg", url: "/nextjs", }, { @@ -82,6 +85,7 @@ const frameworks = { { name: "Apollo", icon: "/icons/technologies/apollo.svg", + icon_light: "/icons/technologies/apollo_light.svg", url: "/apollo", }, { @@ -97,6 +101,7 @@ const frameworks = { { name: "ExpressJS", icon: "/icons/technologies/express.svg", + icon_light: "/icons/technologies/express_light.svg", url: "/express", }, { @@ -109,7 +114,7 @@ const frameworks = { const twoCol = [ { content: ( -
+
Editor Integration @@ -119,13 +124,14 @@ const twoCol = [

- The best code is the code that writes itself. Prisma Client gives you a fantastic - autocomplete experience so you can move quickly and be sure you don't write an invalid - query. Our obsession with type safety means you can rest assured that your code works as - expected, every time. + The best code is the code that writes itself. Prisma Client gives you + a fantastic autocomplete experience so you can move quickly and be + sure you don't write an invalid query. Our obsession with type safety + means you can rest assured that your code works as expected, every + time.

-
), @@ -140,7 +146,7 @@ const twoCol = [ }, { content: ( -
+
TypedSQL @@ -150,12 +156,13 @@ const twoCol = [

- Execute SQL queries directly against your database without losing the benefits of Prisma’s - type-checking and auto-completion. TypedSQL leverages the capabilities of Prisma Client to - write raw SQL queries that are type-checked at compile time. + Execute SQL queries directly against your database without losing the + benefits of Prisma’s type-checking and auto-completion. TypedSQL + leverages the capabilities of Prisma Client to write raw SQL queries + that are type-checked at compile time.

-
), @@ -174,21 +181,22 @@ const twoCol = [ export default function Client() { return (
-
+
Prisma Client
-

+

Intuitive database client for TypeScript and Node.js
Database Migrations

- The Prisma Client works seamlessly across languages and databases. Ship faster by writing - less SQL. Avoid mistakes with a fully type-safe API tailored specifically for your app. + The Prisma Client works seamlessly across languages and databases. + Ship faster by writing less SQL. Avoid mistakes with a fully type-safe + API tailored specifically for your app.

@@ -198,7 +206,7 @@ export default function Client() {
- {db.name} +
+ {db.name} + {db.icon_light && ( + {db.name} + )} +
))} @@ -244,7 +275,9 @@ export default function Client() {
{frameworks.title}
-

{frameworks.description}

+

+ {frameworks.description} +

{frameworks.list.map((fw) => ( @@ -254,7 +287,32 @@ export default function Client() { size="4xl" className="h-[75px]! w-[75px]! hover:bg-background-neutral-strong" > - {fw.name} +
+ {fw.name} + {fw.icon_light && ( + {fw.name} + )} +
))} @@ -263,11 +321,11 @@ export default function Client() {
@@ -280,15 +338,14 @@ export default function Client() { Visual database browser

- Prisma Studio is the easiest way to explore and manipulate data in your Prisma - projects. Understand your data by browsing across tables, filter, paginate, traverse - relations and edit your data with safety. + Prisma Studio is the easiest way to explore and manipulate data + in your Prisma projects. Understand your data by browsing across + tables, filter, paginate, traverse relations and edit your data + with safety.

-
@@ -299,15 +356,19 @@ export default function Client() { Hassle-free migrations

- Prisma Migrate auto-generates SQL migrations from your Prisma schema. These - migration files are fully customizable, giving you full control and ultimate - flexibility — from local development to production environments. + Prisma Migrate auto-generates SQL migrations from your Prisma + schema. These migration files are fully customizable, giving you + full control and ultimate flexibility — from local development + to production environments.

-
diff --git a/apps/site/src/app/community/page.tsx b/apps/site/src/app/community/page.tsx index ab0a83230c..d8c2c8208a 100644 --- a/apps/site/src/app/community/page.tsx +++ b/apps/site/src/app/community/page.tsx @@ -102,10 +102,10 @@ export default function CommunityPage() {
-

+

- Community -

+ Community +

Join the Prisma Community

@@ -153,7 +153,10 @@ export default function CommunityPage() { rel="noopener noreferrer" > Join Discord - + @@ -365,13 +368,13 @@ export default function CommunityPage() { rel="noopener noreferrer" > Join Discord - +
diff --git a/apps/site/src/app/mcp/_components/mcp-cta-section.tsx b/apps/site/src/app/mcp/_components/mcp-cta-section.tsx index 54157df717..fb0584ef77 100644 --- a/apps/site/src/app/mcp/_components/mcp-cta-section.tsx +++ b/apps/site/src/app/mcp/_components/mcp-cta-section.tsx @@ -1,4 +1,4 @@ -import { Button } from "@prisma/eclipse"; +import { PageFooterCta } from "@/components/page-footer-cta"; export function McpCtaSection({ docsHref, @@ -8,43 +8,14 @@ export function McpCtaSection({ readDocsHref: string; }) { return ( -
-
-
-
-
-

- Start Building with AI -

-

- Join thousands of developers, and agents, already using Prisma MCP for faster, more - intuitive database workflows. -

-
- -
- - -

- 2-minute setup • Works with all MCP tools -

-
-
-
-
-
+ ); } diff --git a/apps/site/src/app/orm/page.tsx b/apps/site/src/app/orm/page.tsx index 926c84ef9a..9113beeb5d 100644 --- a/apps/site/src/app/orm/page.tsx +++ b/apps/site/src/app/orm/page.tsx @@ -1,6 +1,7 @@ import { createSoftwareApplicationStructuredData } from "@/lib/structured-data"; import { createPageMetadata } from "@/lib/page-metadata"; import { Action, Button, Separator } from "@prisma/eclipse"; +import { PageFooterCta } from "@/components/page-footer-cta"; import { JsonLd } from "@prisma-docs/ui/components/json-ld"; import { CardSection } from "@/components/homepage/card-section/card-section"; import review from "../../data/homepage.json"; @@ -435,38 +436,16 @@ export default function ORM() {
)} -
-
-
-
-

- Ready to get started? -

-

- Start from scratch, add Prisma ORM to your existing project, or - explore how to build an app using your favorite framework. -

-
- -
- Free to get started, no credit card needed. -
-
-
-
+
); } diff --git a/apps/site/src/app/postgres/page.tsx b/apps/site/src/app/postgres/page.tsx index 104efadc34..cc8213451e 100644 --- a/apps/site/src/app/postgres/page.tsx +++ b/apps/site/src/app/postgres/page.tsx @@ -1,6 +1,7 @@ import { createSoftwareApplicationStructuredData } from "@/lib/structured-data"; import { createPageMetadata } from "@/lib/page-metadata"; import { Button, Card, Action } from "@prisma/eclipse"; +import { PageFooterCta } from "@/components/page-footer-cta"; import { cn } from "@/lib/cn"; import { CardSection } from "@/components/homepage/card-section/card-section"; import { PostgresTabs } from "../../components/postgres"; @@ -313,37 +314,19 @@ export default async function SiteHome() {
-
-
-
-
-

- Try Prisma Postgres -

-

- Deploy a Postgres database instantly. -

-
- -
- Free to get started, no credit card needed. -
-
-
-
+ ); } diff --git a/apps/site/src/app/typedsql/page.tsx b/apps/site/src/app/typedsql/page.tsx index e8501a3430..9b97f7a61b 100644 --- a/apps/site/src/app/typedsql/page.tsx +++ b/apps/site/src/app/typedsql/page.tsx @@ -1,5 +1,6 @@ import { createPageMetadata } from "@/lib/page-metadata"; import { Button } from "@prisma/eclipse"; +import { PageFooterCta } from "@/components/page-footer-cta"; import { CardSection } from "@/components/homepage/card-section/card-section"; import { VideoSection } from "@/components/typedsql/video-section"; import { ExpandCapabilities } from "@/components/typedsql/expand-capabilities"; @@ -164,36 +165,22 @@ export default function TypedSQLPage() { -
-
-
-
-

- Raw SQL with type-safety and autocompletion -

-

- TypedSQL gives you even more flexibility and control in your - database queries. Start using TypedSQL in any new or existing - Prisma project. -

-
- -
-
-
+ ); } diff --git a/apps/site/src/components/client/technology.tsx b/apps/site/src/components/client/technology.tsx index 429c01097d..73f1534673 100644 --- a/apps/site/src/components/client/technology.tsx +++ b/apps/site/src/components/client/technology.tsx @@ -1,6 +1,11 @@ "use client"; -import { Button, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@prisma/eclipse"; -import { useState } from "react"; +import { + Button, + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@prisma/eclipse"; export const Technology = ({ children, diff --git a/apps/site/src/components/console-cta-button.tsx b/apps/site/src/components/console-cta-button.tsx index 010616df44..382ea687a3 100644 --- a/apps/site/src/components/console-cta-button.tsx +++ b/apps/site/src/components/console-cta-button.tsx @@ -11,7 +11,10 @@ interface ConsoleCtaButtonProps extends Omit { rel?: string; } -function buildConsoleHref(consolePath: "/login" | "/sign-up", utmParams: UtmParams) { +function buildConsoleHref( + consolePath: "/login" | "/sign-up", + utmParams: UtmParams, +) { const href = new URL(`https://console.prisma.io${consolePath}`); for (const [key, value] of Object.entries(utmParams)) { @@ -31,7 +34,9 @@ export function ConsoleCtaButton({ rel, ...props }: ConsoleCtaButtonProps) { - const [href, setHref] = useState(() => buildConsoleHref(consolePath, defaultUtm)); + const [href, setHref] = useState(() => + buildConsoleHref(consolePath, defaultUtm), + ); useEffect(() => { const currentUtmParams = getUtmParams(new URLSearchParams(window.location.search)); diff --git a/apps/site/src/components/homepage/card-section/card-section.tsx b/apps/site/src/components/homepage/card-section/card-section.tsx index 227e2b8297..79f15507fe 100644 --- a/apps/site/src/components/homepage/card-section/card-section.tsx +++ b/apps/site/src/components/homepage/card-section/card-section.tsx @@ -98,7 +98,10 @@ const ThemeImagePair = ({ }: ThemeImagePairProps) => (
{alt} {alt} +
+
+
+

+ {description && ( +

+ {description} +

+ )} +

+
+ {children ?? + btns?.map((btn, i) => { + if (btn.defaultUtm) { + return ( + + {btn.text} + + + ); + } + + return ( + + ); + })} +
+ {footer && ( +
+ {footer} +
+ )} +
+
+
+ ); +} From 0acc5032fe89343deb5d0d1d46a43f5e2c10fc48 Mon Sep 17 00:00:00 2001 From: Carla Goncalves Date: Thu, 16 Apr 2026 15:57:38 +0100 Subject: [PATCH 03/14] Update build --- apps/site/src/app/client/page.tsx | 16 +++++++++------- apps/site/src/components/page-footer-cta.tsx | 18 +++++++++++------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/apps/site/src/app/client/page.tsx b/apps/site/src/app/client/page.tsx index b765eaba21..83eb071d98 100644 --- a/apps/site/src/app/client/page.tsx +++ b/apps/site/src/app/client/page.tsx @@ -130,8 +130,8 @@ const twoCol = [ means you can rest assured that your code works as expected, every time.

- ), @@ -161,8 +161,8 @@ const twoCol = [ leverages the capabilities of Prisma Client to write raw SQL queries that are type-checked at compile time.

- ), @@ -343,9 +343,11 @@ export default function Client() { tables, filter, paginate, traverse relations and edit your data with safety.

-
diff --git a/apps/site/src/components/page-footer-cta.tsx b/apps/site/src/components/page-footer-cta.tsx index 638cfbfc69..2e7a786afe 100644 --- a/apps/site/src/components/page-footer-cta.tsx +++ b/apps/site/src/components/page-footer-cta.tsx @@ -70,16 +70,20 @@ export function PageFooterCta({ return ( ); })} From cb754fb5bec52e53486b0c30a4f433b45b910c59 Mon Sep 17 00:00:00 2001 From: Carla Goncalves Date: Thu, 16 Apr 2026 16:08:01 +0100 Subject: [PATCH 04/14] Tentative build fix --- apps/site/src/app/client/page.tsx | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/apps/site/src/app/client/page.tsx b/apps/site/src/app/client/page.tsx index 83eb071d98..4e2915c83a 100644 --- a/apps/site/src/app/client/page.tsx +++ b/apps/site/src/app/client/page.tsx @@ -363,14 +363,11 @@ export default function Client() { full control and ultimate flexibility — from local development to production environments.

-
From fcb04c28440ed7d57298108b95c05c3e46fdceba Mon Sep 17 00:00:00 2001 From: Carla Goncalves Date: Thu, 16 Apr 2026 16:24:46 +0100 Subject: [PATCH 05/14] Update variant --- apps/site/src/components/page-footer-cta.tsx | 4 ++-- packages/eclipse/src/components/button.tsx | 17 +++++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/apps/site/src/components/page-footer-cta.tsx b/apps/site/src/components/page-footer-cta.tsx index 2e7a786afe..290d72f6c5 100644 --- a/apps/site/src/components/page-footer-cta.tsx +++ b/apps/site/src/components/page-footer-cta.tsx @@ -54,7 +54,7 @@ export function PageFooterCta({ key={btn.url} consolePath={btn.consolePath ?? "/sign-up"} defaultUtm={btn.defaultUtm} - variant={i === 0 ? color : "default-stronger"} + variant={i === 0 ? color : "default-strong"} size="2xl" {...(btn.external && { target: "_blank", @@ -71,7 +71,7 @@ export function PageFooterCta({