diff --git a/apps/blog/content/blog/the-next-evolution-of-prisma-orm/index.mdx b/apps/blog/content/blog/the-next-evolution-of-prisma-orm/index.mdx index 84c2599800..5ecd5c7d72 100644 --- a/apps/blog/content/blog/the-next-evolution-of-prisma-orm/index.mdx +++ b/apps/blog/content/blog/the-next-evolution-of-prisma-orm/index.mdx @@ -442,11 +442,13 @@ Today we’re publishing the Prisma Next repo so you can follow the work as it h If you want to stay close to the work, **star + watch** the repo. If you want to build alongside us, join `#prisma-next` on [Discord](http://pris.ly/discord?utm_campaign=prisma-next). diff --git a/apps/blog/content/blog/try-prisma-announcment-Kv6bwRcdjd/index.mdx b/apps/blog/content/blog/try-prisma-announcment-Kv6bwRcdjd/index.mdx index 5cd6af5cb6..2b65e682b3 100644 --- a/apps/blog/content/blog/try-prisma-announcment-Kv6bwRcdjd/index.mdx +++ b/apps/blog/content/blog/try-prisma-announcment-Kv6bwRcdjd/index.mdx @@ -96,10 +96,14 @@ Open up the new project and head to the README for information on how to start e If you are curious about all of the options available via the CLI, head over to the [`try-prisma` repository](https://github.com/prisma/try-prisma) and check out the README. +> + + Head over to the try-prisma repository + + If you run into any issues, feel free to leave an issue in the repository's [issues](https://github.com/prisma/try-prisma/issues) tab. diff --git a/apps/docs/content/docs/orm/prisma-client/special-fields-and-types/working-with-geometry-fields.mdx b/apps/docs/content/docs/orm/prisma-client/special-fields-and-types/working-with-geometry-fields.mdx index 0699a20b13..75e7134993 100644 --- a/apps/docs/content/docs/orm/prisma-client/special-fields-and-types/working-with-geometry-fields.mdx +++ b/apps/docs/content/docs/orm/prisma-client/special-fields-and-types/working-with-geometry-fields.mdx @@ -756,8 +756,7 @@ All native geometry filters (`near`, `within`, `intersects`) are optimized to us :::warning PostgreSQL 16 users with large datasets -If you're using **PostgreSQL 16** with datasets containing thousands of records, you may encounter slow spatial queries (3-5 seconds instead of < 100ms) due to a query planner bug that was fixed in PostgreSQL 17+. - +If you're using **PostgreSQL 16** with datasets containing thousands of records, you may encounter slow spatial queries (3-5 seconds instead of `<100ms`) due to a query planner bug that was fixed in PostgreSQL 17+. **Symptom:** Queries with `near`, `within`, or `intersects` are unexpectedly slow despite having GIST indexes. **Cause:** PostgreSQL 16 underestimates the number of rows returned by spatial Common Table Expressions (CTEs), causing it to choose Nested Loop joins instead of Hash Joins. This results in thousands of unnecessary loop iterations. diff --git a/apps/docs/cspell.json b/apps/docs/cspell.json index dd77711409..6d46d3a553 100644 --- a/apps/docs/cspell.json +++ b/apps/docs/cspell.json @@ -24,8 +24,8 @@ "Baselining", "behaviour", "betterauth", - "BIGSERIAL", "bigserial", + "BIGSERIAL", "bindefault", "biograpy", "blobshape", @@ -39,8 +39,8 @@ "bytea", "BYTEA", "Candycane", - "Cerbos", "cerbos", + "Cerbos", "citext", "Citext", "cloudflare", @@ -59,8 +59,8 @@ "datetimeoffset", "dbgenerated", "dblink", - "DBML", "dbml", + "DBML", "dbname", "distancesphere", "Distroless", @@ -70,14 +70,14 @@ "dotenvx", "Dreamies", "earthdistance", - "Ecommerce", "ecommerce", + "Ecommerce", "edouardb", - "Elysia", - "epsg", "elysia", + "Elysia", "Emelie", "Enya", + "epsg", "everytime", "extralight", "favorited", @@ -92,11 +92,11 @@ "Fumadocs", "fuzzystrmatch", "Galera", + "geoexample", "geofencing", "Geofencing", - "geoexample", - "Glassmorphism", "glassmorphism", + "Glassmorphism", "gofmt", "Graphile", "Haines", @@ -119,8 +119,8 @@ "jaegertracing", "janedoe", "johndoe", - "Koyeb", "koyeb", + "Koyeb", "kysely", "Kysely", "lastname", @@ -133,8 +133,8 @@ "libsql", "LIBSQL", "libz", - "Linktree", "linktree", + "Linktree", "llms", "localdb", "LONGBLOB", @@ -174,15 +174,15 @@ "nvarchar", "NVARCHAR", "nzpppscrldfwlzfalbrf", - "Ollama", "ollama", + "Ollama", "onrender", "orms", - "ossp", "OSGB", + "ossp", "Overfetching", - "Pacman", "packagemanager", + "Pacman", "pageinspect", "permitio", "pgbouncer", @@ -208,8 +208,8 @@ "postgresql", "PostgreSQL", "Postico", - "Prisma", "prisma", + "Prisma", "prismabox", "Prismabox", "Prismas", @@ -242,23 +242,24 @@ "schemaname", "secondtolastproduct", "serverful", - "Sevalla", "sevalla", + "Sevalla", + "shopt", "Silverlake", "slonik", "smalldatetime", "smallmoney", "smallserial", "SMALLSERIAL", - "Solidstart", "solidstart", + "Solidstart", "Sonali", "Sorcha", "specialised", "SPGIST", "sqlcommenter", - "SRID", "srid", + "SRID", "sslaccept", "sslcert", "sslidentity", @@ -266,29 +267,29 @@ "sslmode", "sslpassword", "Stammerjohann", - "Sunsetting", - "Streamdal", "streamdal", + "Streamdal", "Subtacts", - "Supabase", + "Sunsetting", "supabase", + "Supabase", "Supavisor", "Superblog", "Svetlana", "tablefunc", "tablename", "tablenames", - "Tabnine", "tabnine", + "Tabnine", "timestamptz", "Timestamptz", "TIMESTAMPTZ", + "timetz", "Timetz", "TIMETZ", - "timetz", "TINYBLOB", - "TINYINT", "tinyint", + "TINYINT", "TINYTEXT", "traceparent", "Treatos", @@ -308,8 +309,8 @@ "typegraphql", "unaccent", "unexecutable", - "unikernels", "unikernel", + "unikernels", "unindexed", "unixepoch", "uploadthing", @@ -344,6 +345,8 @@ "pattern": "/videoId=\"[A-Za-z0-9_-]{6,}\"/g" } ], - "ignoreRegExpList": ["mdxVideoIdAttribute"], + "ignoreRegExpList": [ + "mdxVideoIdAttribute" + ], "ignorePaths": [] } diff --git a/apps/docs/src/components/eclipse-showcase.tsx b/apps/docs/src/components/eclipse-showcase.tsx index 479fe5d2a2..87a4d64194 100644 --- a/apps/docs/src/components/eclipse-showcase.tsx +++ b/apps/docs/src/components/eclipse-showcase.tsx @@ -18,9 +18,7 @@ export function EclipseShowcase() {
{/* Dark Mode Toggle */}
- - Theme Mode - + Theme Mode - - + +
{/* Button Sizes */}
-

- Button Sizes -

+

Button Sizes

- +
{/* Color Palette - Backgrounds */}
-

- Background Colors -

+

Background Colors

- - Neutral - + Neutral
- - PPG - + PPG
- - ORM - + ORM
- - Error - + Error
- - Success - + Success
- - Warning - + Warning
- - Cyan - + Cyan
- - Fuchsia - + Fuchsia
{/* Foreground Colors */}
-

- Foreground Colors -

+

Foreground Colors

PPG @@ -120,43 +94,29 @@ export function EclipseShowcase() { ORM
- - Error - + Error
- - Success - + Success
- - Warning - + Warning
- - Cyan - + Cyan
- - Violet - + Violet
- - Pink - + Pink
{/* Typography */}
-

- Typography -

+

Typography

2XS - 11px

XS - 12px

@@ -171,58 +131,40 @@ export function EclipseShowcase() {

Normal (400)

Medium (500)

-

- Semibold (600) -

+

Semibold (600)

Bold (750)

-

- Ultra Bold (900) -

+

Ultra Bold (900)

{/* Border Radius */}
-

- Border Radius- -

+

Border Radius

- - Low (3px) - + Low (3px)
- - Square (6px) - + Square (6px)
- - High (12px) - + High (12px)
- - Circle - + Circle
{/* Semantic Patterns */}
-

- Semantic Patterns -

+

Semantic Patterns

⚠️
-

- Error Message -

+

Error Message

This is an example error message using semantic tokens.

@@ -234,9 +176,7 @@ export function EclipseShowcase() {
-

- Success Message -

+

Success Message

This is an example success message using semantic tokens.

@@ -248,9 +188,7 @@ export function EclipseShowcase() {
!
-

- Warning Message -

+

Warning Message

This is an example warning message using semantic tokens.

@@ -261,19 +199,13 @@ export function EclipseShowcase() { {/* Gradients */}
-

- Gradients -

+

Gradients

- - ORM Gradient - + ORM Gradient
- - PPG Gradient - + PPG Gradient
diff --git a/apps/eclipse/content/design-system/components/button.mdx b/apps/eclipse/content/design-system/components/button.mdx index bd84ba0e82..9b8f6b3acd 100644 --- a/apps/eclipse/content/design-system/components/button.mdx +++ b/apps/eclipse/content/design-system/components/button.mdx @@ -32,8 +32,8 @@ export function ButtonVariants() { return (
- - + + @@ -48,8 +48,8 @@ export function ButtonVariants() {
- - + + @@ -68,7 +68,7 @@ export function ButtonSizes() { - +
); } @@ -77,10 +77,52 @@ export function ButtonSizes() { **Live Example:**
- + - + +
+ +**With Icons** + +```tsx +import { Button } from "@prisma/eclipse"; + +export function ButtonSizes() { + return ( +
+
+ + + + +
+
+ + + + +
+
+ ); +} +``` + +**Live Example:** + +
+
+ + + + +
+
+ + + + +
**With onClick Handler** @@ -109,10 +151,22 @@ Use the `href` prop to render the button as an anchor element: import { Button } from "@prisma/eclipse"; export function LinkButton() { - return ; + return ( + + ); } ``` +**Live Example:** + +
+ +
+ **Disabled State** ```tsx @@ -121,9 +175,15 @@ import { Button } from "@prisma/eclipse"; export function DisabledButton() { return (
- - - + + +
); } @@ -132,9 +192,15 @@ export function DisabledButton() { **Live Example:**
- - - + + +
**Full Width Button** @@ -165,27 +231,31 @@ export function FullWidthButton() { ### Variants #### default + Standard button style with neutral colors. ```tsx ``` -#### default-stronger +#### default-strong + Stronger emphasis version of the default variant. ```tsx - + ``` -#### default-weaker +#### default-weak + Weaker emphasis version of the default variant. ```tsx - + ``` #### ppg + Prisma Pulse & Accelerate brand colors for product-specific actions. ```tsx @@ -193,6 +263,7 @@ Prisma Pulse & Accelerate brand colors for product-specific actions. ``` #### orm + Prisma ORM brand colors for ORM-specific actions. ```tsx @@ -200,6 +271,7 @@ Prisma ORM brand colors for ORM-specific actions. ``` #### error + Error or danger variant for destructive actions. ```tsx @@ -207,6 +279,7 @@ Error or danger variant for destructive actions. ``` #### success + Success variant for positive actions and confirmations. ```tsx @@ -214,6 +287,7 @@ Success variant for positive actions and confirmations. ``` #### link + Link-styled button for navigation that looks like a text link. ```tsx @@ -222,18 +296,22 @@ Link-styled button for navigation that looks like a text link. ### Sizes -The Button component supports four sizes: +The Button component supports four sizes, plus four icon-only sizes: - `lg` - Large button (default) - `xl` - Extra large button - `2xl` - 2X large button -- `4xl` - 4X large button +- `3xl` - 3X large button +- `icon-lg` - Icon-only large +- `icon-xl` - Icon-only extra large +- `icon-2xl` - Icon-only 2X large +- `icon-3xl` - Icon-only 3X large ```tsx - + ``` ### Features @@ -250,8 +328,8 @@ The Button component supports four sizes: ### Best Practices - Use **default** for standard actions and form submissions -- Use **default-stronger** for primary calls-to-action -- Use **default-weaker** for secondary or tertiary actions +- Use **default-strong** for primary calls-to-action +- Use **default-weak** for secondary or tertiary actions - Use **ppg** for Prisma Pulse & Accelerate specific features - Use **orm** for Prisma ORM specific features - Use **error** for destructive actions (delete, remove, etc.) @@ -269,8 +347,8 @@ The Button component supports four sizes: ```tsx
- - + +
``` @@ -279,7 +357,7 @@ The Button component supports four sizes: ```tsx
- +
``` @@ -298,8 +376,12 @@ The Button component supports four sizes:
{/* form fields */}
- - + +
``` @@ -321,7 +403,7 @@ The Button component works seamlessly with HTML forms: ```tsx
-
diff --git a/apps/eclipse/content/design-system/components/card.mdx b/apps/eclipse/content/design-system/components/card.mdx index a33b493224..aef23ee659 100644 --- a/apps/eclipse/content/design-system/components/card.mdx +++ b/apps/eclipse/content/design-system/components/card.mdx @@ -3,7 +3,14 @@ title: Card description: A versatile container component for grouping related content with optional header, footer, title, description, and content sections. --- -import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from "@prisma/eclipse"; +import { + Card, + CardHeader, + CardTitle, + CardDescription, + CardContent, + CardFooter, +} from "@prisma/eclipse"; import { Button } from "@prisma/eclipse"; ### Usage @@ -14,9 +21,7 @@ import { Button } from "@prisma/eclipse"; import { Card } from "@prisma/eclipse"; export function MyComponent() { - return ( - Card content goes here - ); + return Card content goes here; } ``` @@ -52,20 +57,16 @@ export function CardWithHeader() { Getting Started - This card demonstrates the header and content sections working together. + + This card demonstrates the header and content sections working together. +
**Card with Description** ```tsx -import { - Card, - CardHeader, - CardTitle, - CardDescription, - CardContent -} from "@prisma/eclipse"; +import { Card, CardHeader, CardTitle, CardDescription, CardContent } from "@prisma/eclipse"; export function CardWithDescription() { return ( @@ -73,7 +74,10 @@ export function CardWithDescription() { Prisma ORM - Prisma unlocks a new level of developer experience when working with databases thanks to its intuitive data model, automated migrations, type-safety & auto-completion. + + Prisma unlocks a new level of developer experience when working with databases thanks to its + intuitive data model, automated migrations, type-safety & auto-completion. + ); } @@ -86,22 +90,23 @@ export function CardWithDescription() { Prisma ORM - Prisma unlocks a new level of developer experience when working - with databases thanks to its intuitive data model, automated migrations, - type-safety & auto-completion. + + Prisma unlocks a new level of developer experience when working with databases thanks to its + intuitive data model, automated migrations, type-safety & auto-completion. +
**Card with Footer** ```tsx -import { - Card, - CardHeader, - CardTitle, - CardDescription, - CardContent, - CardFooter +import { + Card, + CardHeader, + CardTitle, + CardDescription, + CardContent, + CardFooter, } from "@prisma/eclipse"; import { Button } from "@prisma/eclipse"; @@ -111,10 +116,14 @@ export function CardWithFooter() { Deploy your project - Your project is ready to be deployed to production. Click the button below to get started. + + Your project is ready to be deployed to production. Click the button below to get started. + - - + + ); @@ -128,10 +137,14 @@ export function CardWithFooter() { Deploy your project - Your project is ready to be deployed to production. Click the button below to get started. + + Your project is ready to be deployed to production. Click the button below to get started. + - - + +
@@ -292,7 +305,7 @@ export function CustomCard() { This update includes new features and bug fixes. - + @@ -318,7 +331,10 @@ export function CustomCard() { Getting Started with Prisma - Learn how to set up Prisma ORM in your Next.js application and start building type-safe database queries. + + Learn how to set up Prisma ORM in your Next.js application and start building type-safe database + queries. + @@ -340,8 +356,12 @@ export function CustomCard() { - - + + ``` diff --git a/apps/eclipse/content/design-system/components/empty.mdx b/apps/eclipse/content/design-system/components/empty.mdx index bafcc6b9e6..2291fcf767 100644 --- a/apps/eclipse/content/design-system/components/empty.mdx +++ b/apps/eclipse/content/design-system/components/empty.mdx @@ -22,13 +22,7 @@ import { A simple empty state with an icon, title, and description: ```tsx -import { - Empty, - EmptyHeader, - EmptyMedia, - EmptyTitle, - EmptyDescription, -} from "@prisma/eclipse"; +import { Empty, EmptyHeader, EmptyMedia, EmptyTitle, EmptyDescription } from "@prisma/eclipse"; export function BasicEmpty() { return ( @@ -145,7 +139,7 @@ export function EmptyMultipleActions() {
- +
Learn More @@ -173,7 +167,7 @@ export function EmptyMultipleActions() {
- +
Learn More @@ -224,7 +218,7 @@ export function OutlineEmpty() { - + Cloud Storage Empty @@ -265,7 +259,7 @@ export function BackgroundEmpty() { - + ); @@ -279,15 +273,13 @@ export function BackgroundEmpty() { - + No Notifications - - You're all caught up. New notifications will appear here. - + You're all caught up. New notifications will appear here. - +
@@ -316,7 +308,7 @@ export function SimpleEmpty() { - + ); @@ -335,7 +327,7 @@ export function SimpleEmpty() { - +
@@ -385,7 +377,7 @@ export function SearchEmpty() { - + 404 - Not Found @@ -424,9 +416,7 @@ export function LargeIconEmpty() { No Team Members - - Invite your team to collaborate on this project. - + Invite your team to collaborate on this project. @@ -445,9 +435,7 @@ export function LargeIconEmpty() { No Team Members - - Invite your team to collaborate on this project. - + Invite your team to collaborate on this project. @@ -462,6 +450,7 @@ export function LargeIconEmpty() { The main container component for the empty state. Wraps the `EmptyHeader` and `EmptyContent` components. **Props:** + - `className` - Additional CSS classes (string, optional) - All standard HTML div attributes @@ -477,6 +466,7 @@ The main container component for the empty state. Wraps the `EmptyHeader` and `E Container for the empty state header, including the media, title, and description. **Props:** + - `className` - Additional CSS classes (string, optional) - All standard HTML div attributes @@ -493,6 +483,7 @@ Container for the empty state header, including the media, title, and descriptio Displays the media element of the empty state, such as an icon, image, or avatar. **Props:** + - `variant` - Visual variant ("default" | "icon", default: "default") - `"default"` - No background, transparent - `"icon"` - Muted background with rounded corners, sized for icons @@ -516,6 +507,7 @@ Displays the media element of the empty state, such as an icon, image, or avatar Displays the title of the empty state. **Props:** + - `className` - Additional CSS classes (string, optional) - All standard HTML div attributes @@ -528,6 +520,7 @@ Displays the title of the empty state. Displays the description text of the empty state. Supports links with automatic styling. **Props:** + - `className` - Additional CSS classes (string, optional) - All standard HTML p attributes @@ -543,6 +536,7 @@ Displays the description text of the empty state. Supports links with automatic Container for action elements like buttons, inputs, or links in the empty state. **Props:** + - `className` - Additional CSS classes (string, optional) - All standard HTML div attributes @@ -638,6 +632,7 @@ Customize by passing `className` props: ### Design Patterns **Progressive Disclosure:** + ```tsx @@ -645,9 +640,7 @@ Customize by passing `className` props: Get Started - - Create your first item to begin. - + Create your first item to begin. @@ -660,6 +653,7 @@ Customize by passing `className` props: ``` **Error Recovery:** + ```tsx @@ -667,9 +661,7 @@ Customize by passing `className` props: Connection Error - - Unable to load data. Check your connection and try again. - + Unable to load data. Check your connection and try again. @@ -678,23 +670,26 @@ Customize by passing `className` props: ``` **Loading to Empty Transition:** + ```tsx -{isLoading ? ( - -) : items.length === 0 ? ( - - - - - - No Items - Add your first item to get started. - - - - - -) : ( - -)} +{ + isLoading ? ( + + ) : items.length === 0 ? ( + + + + + + No Items + Add your first item to get started. + + + + + + ) : ( + + ); +} ``` diff --git a/apps/eclipse/content/design-system/components/field.mdx b/apps/eclipse/content/design-system/components/field.mdx index efe3475e38..003dfbfae3 100644 --- a/apps/eclipse/content/design-system/components/field.mdx +++ b/apps/eclipse/content/design-system/components/field.mdx @@ -3,7 +3,15 @@ title: Field description: A flexible field component for building accessible forms with labels, descriptions, and error messages. --- -import { Field, FieldLabel, FieldDescription, FieldError, FieldGroup, Input, Button } from "@prisma/eclipse"; +import { + Field, + FieldLabel, + FieldDescription, + FieldError, + FieldGroup, + Input, + Button, +} from "@prisma/eclipse"; ### Usage @@ -72,12 +80,7 @@ export function FieldWithError() { return ( Email - + We'll send updates to this address. Please enter a valid email address @@ -90,12 +93,7 @@ export function FieldWithError() {
Email - + We'll send updates to this address. Please enter a valid email address @@ -121,7 +119,9 @@ export function FieldGroupExample() { We'll send updates to this address.
- +
@@ -143,7 +143,9 @@ export function FieldGroupExample() { We'll send updates to this address.
- +
@@ -224,18 +226,13 @@ export function MultipleErrors() { const errors = [ { message: "Password must be at least 8 characters" }, { message: "Password must contain a number" }, - { message: "Password must contain a special character" } + { message: "Password must contain a special character" }, ]; return ( Password - + ); @@ -247,17 +244,14 @@ export function MultipleErrors() {
Password - + -
@@ -266,7 +260,15 @@ export function MultipleErrors() { A full form using all Field features: ```tsx -import { Field, FieldLabel, FieldDescription, FieldError, FieldGroup, Input, Button } from "@prisma/eclipse"; +import { + Field, + FieldLabel, + FieldDescription, + FieldError, + FieldGroup, + Input, + Button, +} from "@prisma/eclipse"; export function CompleteForm() { return ( @@ -276,21 +278,23 @@ export function CompleteForm() { Full Name - + Email We'll never share your email with anyone. - + Message Tell us how we can help you. - +
- +
@@ -308,24 +312,27 @@ export function CompleteForm() { Full Name - + Email We'll never share your email with anyone. - + Message Tell us how we can help you. - +
- +
+
diff --git a/apps/eclipse/content/design-system/components/pagination.mdx b/apps/eclipse/content/design-system/components/pagination.mdx index e9db1db626..fd89c84704 100644 --- a/apps/eclipse/content/design-system/components/pagination.mdx +++ b/apps/eclipse/content/design-system/components/pagination.mdx @@ -281,11 +281,7 @@ export function DynamicPagination({ } // Show pages around current page - for ( - let i = Math.max(2, currentPage - 1); - i <= Math.min(totalPages - 1, currentPage + 1); - i++ - ) { + for (let i = Math.max(2, currentPage - 1); i <= Math.min(totalPages - 1, currentPage + 1); i++) { pages.push(i); } @@ -361,6 +357,7 @@ export function DynamicPagination({ The root container for pagination navigation. **Props:** + - Extends all standard HTML `
- + - +

Section 2

@@ -135,15 +147,16 @@ export function SectionDivider() { This is the first section of content with some description text.
- + - +

Section 2

This is the second section of content with some description text.
+
@@ -161,17 +174,17 @@ export function CustomSeparator() {
Default separator
- +
Thicker separator
- +
Colored separator
- +
Dashed separator
@@ -189,21 +202,22 @@ export function CustomSeparator() {
Default separator
- +
Thicker separator
- +
Colored separator
- +
Dashed separator
+ @@ -219,13 +233,11 @@ export function CardSeparator() {

Card Title

-
- Subtitle or description text -
+
Subtitle or description text
- + - +
Item 1 @@ -236,9 +248,9 @@ export function CardSeparator() { $15.00
- + - +
Total $25.00 @@ -254,13 +266,11 @@ export function CardSeparator() {

Card Title

-
- Subtitle or description text -
+
Subtitle or description text
- + - +
Item 1 @@ -271,13 +281,14 @@ export function CardSeparator() { $15.00
- + - +
Total $25.00
+
@@ -292,18 +303,30 @@ import { Button } from "@prisma/eclipse"; export function ToolbarSeparator() { return (
- - - + + + - - - - + + + + - - - + + +
); } @@ -313,18 +336,31 @@ export function ToolbarSeparator() {
- - - + + + - - - - + + + + - - - + + + +
@@ -342,16 +378,16 @@ export function ListSeparator() {

Item 1

Description for item 1
- + - +

Item 2

Description for item 2
- + - +

Item 3

Description for item 3
@@ -368,16 +404,16 @@ export function ListSeparator() {

Item 1

Description for item 1
- - - -
-

Item 2

-
Description for item 2
-
- - - + + + +
+

Item 2

+
Description for item 2
+
+ + +

Item 3

Description for item 3
diff --git a/apps/eclipse/src/components/eclipse-showcase.tsx b/apps/eclipse/src/components/eclipse-showcase.tsx index 479fe5d2a2..87a4d64194 100644 --- a/apps/eclipse/src/components/eclipse-showcase.tsx +++ b/apps/eclipse/src/components/eclipse-showcase.tsx @@ -18,9 +18,7 @@ export function EclipseShowcase() {
{/* Dark Mode Toggle */}
- - Theme Mode - + Theme Mode - - + +
{/* Button Sizes */}
-

- Button Sizes -

+

Button Sizes

- +
{/* Color Palette - Backgrounds */}
-

- Background Colors -

+

Background Colors

- - Neutral - + Neutral
- - PPG - + PPG
- - ORM - + ORM
- - Error - + Error
- - Success - + Success
- - Warning - + Warning
- - Cyan - + Cyan
- - Fuchsia - + Fuchsia
{/* Foreground Colors */}
-

- Foreground Colors -

+

Foreground Colors

PPG @@ -120,43 +94,29 @@ export function EclipseShowcase() { ORM
- - Error - + Error
- - Success - + Success
- - Warning - + Warning
- - Cyan - + Cyan
- - Violet - + Violet
- - Pink - + Pink
{/* Typography */}
-

- Typography -

+

Typography

2XS - 11px

XS - 12px

@@ -171,58 +131,40 @@ export function EclipseShowcase() {

Normal (400)

Medium (500)

-

- Semibold (600) -

+

Semibold (600)

Bold (750)

-

- Ultra Bold (900) -

+

Ultra Bold (900)

{/* Border Radius */}
-

- Border Radius- -

+

Border Radius

- - Low (3px) - + Low (3px)
- - Square (6px) - + Square (6px)
- - High (12px) - + High (12px)
- - Circle - + Circle
{/* Semantic Patterns */}
-

- Semantic Patterns -

+

Semantic Patterns

⚠️
-

- Error Message -

+

Error Message

This is an example error message using semantic tokens.

@@ -234,9 +176,7 @@ export function EclipseShowcase() {
-

- Success Message -

+

Success Message

This is an example success message using semantic tokens.

@@ -248,9 +188,7 @@ export function EclipseShowcase() {
!
-

- Warning Message -

+

Warning Message

This is an example warning message using semantic tokens.

@@ -261,19 +199,13 @@ export function EclipseShowcase() { {/* Gradients */}
-

- Gradients -

+

Gradients

- - ORM Gradient - + ORM Gradient
- - PPG Gradient - + PPG Gradient
diff --git a/apps/site/src/app/(index)/page.tsx b/apps/site/src/app/(index)/page.tsx index d3cfedb915..83d24742cf 100644 --- a/apps/site/src/app/(index)/page.tsx +++ b/apps/site/src/app/(index)/page.tsx @@ -23,8 +23,8 @@ const twoCol = [ Postgres that
fits your stack.

- Works with your existing stack, wherever you deploy.Your choice of - ORM, frameworks, and tools, they all just connect. + Works with your existing stack, wherever you deploy.Your choice of ORM, frameworks, and + tools, they all just connect.

), @@ -44,9 +44,8 @@ const twoCol = [ Real Postgres.
Better experience.

- The PostgreSQL millions know and trust in production, ready in seconds - with zero configuration. Automatic backups, observability and - compliance. + The PostgreSQL millions know and trust in production, ready in seconds with zero + configuration. Automatic backups, observability and compliance.

), @@ -117,8 +116,7 @@ export default function SiteHome() {

- Real Postgres with the developer experience and infrastructure to - ship faster. + Real Postgres with the developer experience and infrastructure to ship faster.

$ - -  npx prisma init - +  npx prisma init
@@ -158,8 +154,7 @@ export default function SiteHome() { }, { title: "Manage databases", - subtitle: - "Create, manage and explore databases directly in your IDE.", + subtitle: "Create, manage and explore databases directly in your IDE.", imageUrl: "/illustrations/homepage/ide", imageAlt: "IDE", icon: "fa-light fa-screwdriver-wrench", @@ -183,8 +178,7 @@ export default function SiteHome() { }, { title: "Browse your data", - subtitle: - "Explore, filter, and edit your data with an interface.", + subtitle: "Explore, filter, and edit your data with an interface.", imageUrl: "/illustrations/homepage/data", imageAlt: "Data browsing", icon: "fa-light fa-magnifying-glass-arrow-right", @@ -210,12 +204,14 @@ export default function SiteHome() {

- Give your users instant production-ready Postgres, create - databases, add a built-in data browser, and personalize it. + Give your users instant production-ready Postgres, create databases, add a built-in + data browser, and personalize it.

-
@@ -263,9 +259,11 @@ export default function SiteHome() { Create your first Database -
diff --git a/apps/site/src/app/about/page.tsx b/apps/site/src/app/about/page.tsx index ab3c4f7bf1..ee461328fa 100644 --- a/apps/site/src/app/about/page.tsx +++ b/apps/site/src/app/about/page.tsx @@ -503,9 +503,11 @@ export default function About() { We’re always excited to talk to more people who share our vision to empower developers to build data-driven applications.

-
diff --git a/apps/site/src/app/careers/page.tsx b/apps/site/src/app/careers/page.tsx index 8a594a39a2..36b6b41ea5 100644 --- a/apps/site/src/app/careers/page.tsx +++ b/apps/site/src/app/careers/page.tsx @@ -208,14 +208,11 @@ export default function Careers() { Help us empower developers to build data-driven applications.

-
diff --git a/apps/site/src/app/client/page.tsx b/apps/site/src/app/client/page.tsx index c401e25828..8b913f2637 100644 --- a/apps/site/src/app/client/page.tsx +++ b/apps/site/src/app/client/page.tsx @@ -119,14 +119,13 @@ 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.

-
), @@ -151,13 +150,12 @@ 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.

- ), @@ -189,9 +187,8 @@ export default function Client() {

- 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.

@@ -253,9 +250,7 @@ export default function Client() {
{frameworks.title}
-

- {frameworks.description} -

+

{frameworks.description}

{frameworks.list.map((fw) => ( @@ -278,13 +273,13 @@ export default function Client() {
-
@@ -297,14 +292,15 @@ 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.

-
@@ -315,19 +311,15 @@ 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 f26eaa40b9..bceebf7383 100644 --- a/apps/site/src/app/community/page.tsx +++ b/apps/site/src/app/community/page.tsx @@ -169,16 +169,11 @@ export default function CommunityPage() {

- @@ -310,9 +305,11 @@ export default function CommunityPage() { ))}
-
@@ -380,19 +377,17 @@ export default function CommunityPage() {

- -
diff --git a/apps/site/src/app/ecosystem/page.tsx b/apps/site/src/app/ecosystem/page.tsx index 7fc1e81fe2..4b8be1b634 100644 --- a/apps/site/src/app/ecosystem/page.tsx +++ b/apps/site/src/app/ecosystem/page.tsx @@ -76,16 +76,11 @@ export default function SiteHome() { Explore the wide variety of tools created by our amazing community.

-
diff --git a/apps/site/src/app/enterprise/page.tsx b/apps/site/src/app/enterprise/page.tsx index 238da379bc..659f65024b 100644 --- a/apps/site/src/app/enterprise/page.tsx +++ b/apps/site/src/app/enterprise/page.tsx @@ -371,14 +371,11 @@ export default function EnterprisePage() { developers can focus on business logic.

-
diff --git a/apps/site/src/app/events/page.tsx b/apps/site/src/app/events/page.tsx index f7d18c7d06..d8dc1438f9 100644 --- a/apps/site/src/app/events/page.tsx +++ b/apps/site/src/app/events/page.tsx @@ -49,9 +49,9 @@ export default function EventsPage() {
{/* Hero */} -
+
-

+

Events

@@ -167,14 +167,11 @@ export default function EventsPage() {

Want to partner on an event? Send us your sponsorship deck.

-
@@ -200,7 +197,9 @@ export default function EventsPage() {

{event.name}

- {event.virtual && } + {event.virtual && ( + + )}
diff --git a/apps/site/src/app/mcp/_components/mcp-agents-section.tsx b/apps/site/src/app/mcp/_components/mcp-agents-section.tsx index fda9499d2f..d78bc0dea5 100644 --- a/apps/site/src/app/mcp/_components/mcp-agents-section.tsx +++ b/apps/site/src/app/mcp/_components/mcp-agents-section.tsx @@ -18,7 +18,7 @@ export type McpAgent = { copyText?: string; }; -export function McpAgentsSection({ agents }: { docsHref: string; agents: readonly McpAgent[] }) { +export function McpAgentsSection({ agents }: { agents: readonly McpAgent[] }) { const tallyHref = "https://tally.so/r/wA1R1N"; return ( 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 0d549037eb..54157df717 100644 --- a/apps/site/src/app/mcp/_components/mcp-cta-section.tsx +++ b/apps/site/src/app/mcp/_components/mcp-cta-section.tsx @@ -24,18 +24,17 @@ export function McpCtaSection({
- -
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 0a4bdeb24a..e0280a1a42 100644 --- a/apps/site/src/app/mcp/_components/mcp-hero-section.tsx +++ b/apps/site/src/app/mcp/_components/mcp-hero-section.tsx @@ -80,17 +80,14 @@ export function McpHeroSection({
- diff --git a/apps/site/src/app/mcp/page.tsx b/apps/site/src/app/mcp/page.tsx index 9c51ebea90..52be4339e2 100644 --- a/apps/site/src/app/mcp/page.tsx +++ b/apps/site/src/app/mcp/page.tsx @@ -180,7 +180,7 @@ export default function McpPage() {
- +
diff --git a/apps/site/src/app/migrate/page.tsx b/apps/site/src/app/migrate/page.tsx index 94cef4441a..6fd0761de3 100644 --- a/apps/site/src/app/migrate/page.tsx +++ b/apps/site/src/app/migrate/page.tsx @@ -92,19 +92,17 @@ export default function Migrate() {

- Prisma Migrate uses Prisma schema changes to automatically generate - fully customizable database schema migrations + Prisma Migrate uses Prisma schema changes to automatically generate fully customizable + database schema migrations

- {/*

- Migrations are automatically generated so you don't have to - write the SQL by hand. + Migrations are automatically generated so you don't have to write the SQL by hand.

@@ -146,8 +143,8 @@ export default function Migrate() {

- Migrate generates SQL migrations, ensuring migrations will - always result in the same database schema across environments. + Migrate generates SQL migrations, ensuring migrations will always result in the same + database schema across environments.

@@ -160,8 +157,8 @@ export default function Migrate() {

- Generated SQL migrations can be fully customized giving you full - control over the exact changes. + Generated SQL migrations can be fully customized giving you full control over the + exact changes.

@@ -185,9 +182,8 @@ export default function Migrate() { Prototype fast without migrations

- While prototyping you can create the database schema - quickly using the prisma db push command without creating - migrations. + While prototyping you can create the database schema quickly using the prisma + db push command without creating migrations.

@@ -199,8 +195,8 @@ export default function Migrate() { Integrated seeding

- Quickly seed your database with data by defining a seed - script in JavaScript, TypeScript or Shell. + Quickly seed your database with data by defining a seed script in JavaScript, + TypeScript or Shell.

@@ -211,8 +207,7 @@ export default function Migrate() { Smart problem resolution

- Migrate detects database schema drift and assists you in - resolving them. + Migrate detects database schema drift and assists you in resolving them.

@@ -233,8 +228,8 @@ export default function Migrate() { Dedicated production workflows

- Migrate supports dedicated workflows for carrying out - migrations safely in production. + Migrate supports dedicated workflows for carrying out migrations safely in + production.

@@ -245,9 +240,8 @@ export default function Migrate() { CI/CD Integration

- Migrate can be integrated into CI/CD pipelines, e.g. - GitHub Actions, to automate applying migrations before - deployment. + Migrate can be integrated into CI/CD pipelines, e.g. GitHub Actions, to + automate applying migrations before deployment.

@@ -258,9 +252,8 @@ export default function Migrate() { Conflict detection and resolution

- Migrate keeps track of applied migrations and provides - tools to detect and resolve conflicts and drifts between - migrations and the database schema. + Migrate keeps track of applied migrations and provides tools to detect and + resolve conflicts and drifts between migrations and the database schema.

@@ -283,10 +276,9 @@ export default function Migrate() {

- When using Prisma Migrate with Prisma Client, schema changes are - type checked in your application code. This eliminates errors - that arise when database schema changes require changes to the - application code. + When using Prisma Migrate with Prisma Client, schema changes are type checked in + your application code. This eliminates errors that arise when database schema + changes require changes to the application code.

@@ -301,10 +293,9 @@ export default function Migrate() {

- Prisma Migrate generates migrations based on changes in the - Prisma schema – a human-readable declarative definition of your - database schema. This allows you to focus on your desired - database schema rather than the steps to get there. + Prisma Migrate generates migrations based on changes in the Prisma schema – a + human-readable declarative definition of your database schema. This allows you to + focus on your desired database schema rather than the steps to get there.

@@ -319,9 +310,9 @@ export default function Migrate() {

- With Prisma Migrate, generated migrations are tracked in your - Git repository, allowing you to make changes to your database - schema in tandem with your application code. + With Prisma Migrate, generated migrations are tracked in your Git repository, + allowing you to make changes to your database schema in tandem with your application + code.

@@ -336,9 +327,9 @@ export default function Migrate() {

- With Prisma Migrate, generated migrations are tracked in your - Git repository, allowing you to make changes to your database - schema in tandem with your application code. + With Prisma Migrate, generated migrations are tracked in your Git repository, + allowing you to make changes to your database schema in tandem with your application + code.

@@ -353,8 +344,8 @@ export default function Migrate() {

- Prisma Migrate can be adopted in any existing project that uses - PostgreSQL, MySQL, MariaDB, SQL Server, CockroachDB or SQLite. + Prisma Migrate can be adopted in any existing project that uses PostgreSQL, MySQL, + MariaDB, SQL Server, CockroachDB or SQLite.

diff --git a/apps/site/src/app/orm/page.tsx b/apps/site/src/app/orm/page.tsx index ec994d75c9..fc70d9dd29 100644 --- a/apps/site/src/app/orm/page.tsx +++ b/apps/site/src/app/orm/page.tsx @@ -57,13 +57,8 @@ const CardFooter = () => (
{badge.list && badge.list.map((item: any) => ( - ))}
@@ -152,9 +147,11 @@ const twoCol_2 = [ A meaningful comparison of database query latencies across database providers and ORM libraries in the Node.js & TypeScript ecosystem.

- ), @@ -271,9 +268,9 @@ const ormStructuredData = createSoftwareApplicationStructuredData({ }); export const metadata = createPageMetadata({ - title: "Prisma | Next-generation ORM for Node.js & TypeScript", + title: "Prisma ORM | Next-generation database toolkit for TypeScript", description: - "Prisma is a next-generation Node.js and TypeScript ORM for PostgreSQL, MySQL, SQL Server, SQLite, MongoDB, and CockroachDB. It provides type-safety, automated migrations, and an intuitive data model.", + "Prisma ORM combines a clean schema, type-safe queries, and developer-friendly workflows for building with Postgres and other databases in TypeScript.", path: "/orm", ogImage: "/og/og-orm.png", }); @@ -299,17 +296,14 @@ export default function ORM() { migrations, and type-safety.

- {/*
))} @@ -378,9 +367,11 @@ export default function ORM() { Integrate Prisma into your development ecosystem and focus on your team’s core competencies

- @@ -426,19 +417,17 @@ export default function ORM() {

- -
diff --git a/apps/site/src/app/postgres/page.tsx b/apps/site/src/app/postgres/page.tsx index e0bf2ee3f3..bccbf90382 100644 --- a/apps/site/src/app/postgres/page.tsx +++ b/apps/site/src/app/postgres/page.tsx @@ -21,9 +21,9 @@ const twoCol = [ you already know

- This is the mature, proven, and production-tested PostgreSQL millions - of developers already rely on. Standard SQL and wire protocol, - Postgres extensions like pgvector, and data import with pg_dump. + This is the mature, proven, and production-tested PostgreSQL millions of developers + already rely on. Standard SQL and wire protocol, Postgres extensions like pgvector, and + data import with pg_dump.

), @@ -47,8 +47,8 @@ const twoCol = [ zero configuration

- Handles connection pooling automatically, and runs on bare metal and - unikernels for maximum performance. + Handles connection pooling automatically, and runs on bare metal and unikernels for + maximum performance.

), @@ -71,9 +71,9 @@ const twoCol = [ from day one

- Automated backups, encryption at rest and in transit, full tenant - isolation and enterprise-grade compliance. Everything you need to ship - with confidence, managed automatically. + Automated backups, encryption at rest and in transit, full tenant isolation and + enterprise-grade compliance. Everything you need to ship with confidence, managed + automatically.

), @@ -139,25 +139,17 @@ export default async function SiteHome() { Build, test and ship faster with zero infrastructure to manage.

- -
@@ -185,9 +177,7 @@ export default async function SiteHome() { "first:md:col-span-2 overflow-hidden", )} > -
+
@@ -202,8 +192,7 @@ export default async function SiteHome() { {card.subtitle}

- {typeof card.image === "string" && - card.image === "logo-grid" ? ( + {typeof card.image === "string" && card.image === "logo-grid" ? (
) : null}
- {typeof card.image === "string" && - card.image === "logo-bar" && - card.logos ? ( + {typeof card.image === "string" && card.image === "logo-bar" && card.logos ? (
- +
) : null}
@@ -254,12 +237,14 @@ export default async function SiteHome() {

- Usage-based pricing, with a generous free tier. Spend limits - included, so you never get surprised. + Usage-based pricing, with a generous free tier. Spend limits included, so you never + get surprised.

-
@@ -288,20 +273,15 @@ export default async function SiteHome() { See Postgres in action

- See how to get started in just a couple of minutes, with Prisma - Postgres. + See how to get started in just a couple of minutes, with Prisma Postgres.

-
@@ -322,28 +302,20 @@ export default async function SiteHome() {

Try Prisma Postgres

-

- Deploy a Postgres database instantly. -

+

Deploy a Postgres database instantly.

- -
diff --git a/apps/site/src/app/pricing/page.tsx b/apps/site/src/app/pricing/page.tsx index ef74b73830..4d37b6eaf6 100644 --- a/apps/site/src/app/pricing/page.tsx +++ b/apps/site/src/app/pricing/page.tsx @@ -51,7 +51,6 @@ export default function PricingPage() {
{/* Try Prisma Postgres */} -
@@ -65,17 +64,17 @@ export default function PricingPage() {

- -
diff --git a/apps/site/src/app/pricing/pricing-calculator.tsx b/apps/site/src/app/pricing/pricing-calculator.tsx index d55509e459..0ba87c0094 100644 --- a/apps/site/src/app/pricing/pricing-calculator.tsx +++ b/apps/site/src/app/pricing/pricing-calculator.tsx @@ -74,9 +74,7 @@ const PRESETS: Record< }, }; -const CALCULATOR_PLAN_ORDER = Object.keys( - usagePricing, -) as BillablePricingPlanKey[]; +const CALCULATOR_PLAN_ORDER = Object.keys(usagePricing) as BillablePricingPlanKey[]; function formatNumber(value: number) { return new Intl.NumberFormat("en-US").format(Math.round(value)); @@ -162,16 +160,11 @@ function calculatePlanBreakdown( billingCycle: BillingCycle, ): CostBreakdown { const details = usagePricing[plan]; - const billableOperations = Math.max( - 0, - databaseOperations - details.includedOperations, - ); + const billableOperations = Math.max(0, databaseOperations - details.includedOperations); const billableStorageGb = Math.max(0, storageGb - details.includedStorageGb); - const operationsCost = - (billableOperations / 1_000) * details.operationPricePerThousand; + const operationsCost = (billableOperations / 1_000) * details.operationPricePerThousand; const storageCost = billableStorageGb * details.storagePricePerGb; - const yearlyMultiplier = - billingCycle === "yearly" ? 1 - details.yearlyDiscount : 1; + const yearlyMultiplier = billingCycle === "yearly" ? 1 - details.yearlyDiscount : 1; return { basePlanFee: details.baseMonthlyPrice * yearlyMultiplier, @@ -209,28 +202,16 @@ function getRecommendedPlan( }); } -function getMatchingPreset( - databaseOperations: number, - storageGb: number, -): PresetKey | null { - const match = ( - Object.entries(PRESETS) as Array<[PresetKey, (typeof PRESETS)[PresetKey]]> - ).find( +function getMatchingPreset(databaseOperations: number, storageGb: number): PresetKey | null { + const match = (Object.entries(PRESETS) as Array<[PresetKey, (typeof PRESETS)[PresetKey]]>).find( ([, preset]) => - preset.databaseOperations === databaseOperations && - preset.storageGb === storageGb, + preset.databaseOperations === databaseOperations && preset.storageGb === storageGb, ); return match?.[0] ?? null; } -function InputShell({ - children, - className, -}: { - children: React.ReactNode; - className?: string; -}) { +function InputShell({ children, className }: { children: React.ReactNode; className?: string }) { return (
{formatLineItemCost(breakdown.operationsCost, currency)} @@ -466,12 +446,9 @@ function SummaryCard({ } export function PricingCalculator({ currency }: { currency: Symbol }) { - const [lastAppliedPreset, setLastAppliedPreset] = - React.useState("scaleup"); - const [billingCycle, setBillingCycle] = - React.useState("monthly"); - const [expandedPlan, setExpandedPlan] = - React.useState(null); + const [lastAppliedPreset, setLastAppliedPreset] = React.useState("scaleup"); + const [billingCycle, setBillingCycle] = React.useState("monthly"); + const [expandedPlan, setExpandedPlan] = React.useState(null); const [databaseOperations, setDatabaseOperations] = React.useState( PRESETS.scaleup.databaseOperations, ); @@ -524,7 +501,7 @@ export function PricingCalculator({ currency }: { currency: Symbol }) {
@@ -666,15 +643,12 @@ export function PricingCalculator({ currency }: { currency: Symbol }) { */}
-
- Data Transfer -
+
Data Transfer
Unlimited included for free

- Ingress, egress, sidewaysgress, it's all covered. Just - Ship It. + Ingress, egress, sidewaysgress, it's all covered. Just Ship It.

@@ -698,7 +672,7 @@ export function PricingCalculator({ currency }: { currency: Symbol }) { )} @@ -127,15 +121,10 @@ export function PricingHeroPlans({ {plan.price[currency]} / month

-
    {plan.points.map((item, index) => ( diff --git a/apps/site/src/app/startups/page.tsx b/apps/site/src/app/startups/page.tsx index 668df6da2e..7f949ea7ab 100644 --- a/apps/site/src/app/startups/page.tsx +++ b/apps/site/src/app/startups/page.tsx @@ -57,8 +57,8 @@ const testimonials = [ { quote: ( <> - We adopted Prisma conventions as our standard, and it saves lots - of time from having to reinvent things ourselves. + We adopted Prisma conventions as our standard, and it saves lots of time from having + to reinvent things ourselves. ), author: "Yuval Hazaz", @@ -70,8 +70,8 @@ const testimonials = [ { quote: ( <> - Thanks to Prisma, we can seamlessly scale our applications{" "} - without concerns about data layer performance. + Thanks to Prisma, we can seamlessly scale our applications without concerns about + data layer performance. ), author: "Matti Nannt", @@ -83,9 +83,8 @@ const testimonials = [ { quote: ( <> - Entire SaaS businesses have been built on top of the Prisma ecosystem— - including OSS ones like Dub.co. Have been loving the recent performance - improvements as well + Entire SaaS businesses have been built on top of the Prisma ecosystem— including OSS ones + like Dub.co. Have been loving the recent performance improvements as well ), author: "Steven Tey", @@ -106,13 +105,14 @@ export default function StartupsPage() { Fuel your startup's success with Prisma

    - Get exclusive 1:1 guidance from Prisma's database - experts, and have your database bill covered for a year and up to - $10,000. + Get exclusive 1:1 guidance from Prisma's database experts, and have your + database bill covered for a year and up to $10,000.

    -