Skip to content

Commit afdb2b2

Browse files
authored
Merge branch 'main' into refactor/composer-api-changes
2 parents b9364bb + 4b0f82e commit afdb2b2

3 files changed

Lines changed: 37 additions & 46 deletions

File tree

apps/site/src/components/brand-kit/content.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
// Brand-kit content. Data-only; the sections compose it. Copy that the client
2-
// still owes us is marked `TBC` — the same placeholder convention the pricing
3-
// and use-case pages use, so the page reads as complete while the real words
4-
// land. Grep `TBC` before shipping.
1+
// Brand-kit content. Data-only; the sections compose it. Every string here is
2+
// real copy — there are no `TBC` placeholders left on this page or on pricing,
3+
// so don't add one back: fill the real words in, or leave the entry out.
54

65
export type LogoFormat = "svg" | "png" | "transparent" | "jpg";
76

apps/site/src/components/sections/pricing-cost-bar.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ const TRACK = "h-2 w-full overflow-hidden rounded-full bg-foreground/[0.07]";
2525
//
2626
// A null fraction is not zero — it means we have no figure for that column yet,
2727
// and renders as a dashed empty track so it reads as "pending" rather than
28-
// "free". Same distinction the spec table draws between TBC and an em dash.
28+
// "free". No column currently passes null; the branch exists so a future
29+
// comparison column can be added before its figures land.
2930
export function CostBar({ fraction, spectrum = false, delay = 0, className }: CostBarProps) {
3031
const reduceMotion = useReducedMotion();
3132

apps/site/src/components/sections/pricing-spec-table.tsx

Lines changed: 32 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,19 @@ const HALO =
2929
//
3030
// Rows and values are taken from the live "Compare plans" table
3131
// (https://www.prisma.io/pricing, read 2026-07-29) so the structure matches
32-
// what their users already know. Two items still need a ruling:
32+
// what their users already know.
3333
//
34-
// - BACKUPS is not in their live table at all. Starter/Pro/Business come from
35-
// the approved V2 plan cards; Free's retention has never been supplied, so
36-
// it is left as PENDING rather than guessed.
37-
// - GLOBAL CACHE rows are published under "included with Prisma Postgres",
38-
// but Gregory said Accelerate is being deprecated and should come off the
39-
// page. Confirm whether the cache rows stay.
40-
// - SUPPORT reads Community / Community / Standard / Premium on the live
41-
// page, where Gregory's May notes said Community / Community / 24h / 2h.
42-
// The live page wins here, as with every other figure.
34+
// Every cell carries a real figure — there are no placeholders. The four rows
35+
// that once read "TBC" (cache tag invalidations, cache purge requests, Free
36+
// backups, support tiers) were restored from the pre-rebrand pricing table at
37+
// apps/site/src/app/pricing/pricing-data.ts (commit 528ab05fc^), which is the
38+
// same live table this one was modelled on. If a figure genuinely moves, edit
39+
// it — don't reintroduce a placeholder, since the page has no legend
40+
// explaining one (that note was pulled on the client's instruction 2026-07-30).
4341
//
44-
// The reader-facing legend under this table ("TBC — awaiting confirmation…, an
45-
// em dash means not included") was removed on the client's instruction
46-
// (2026-07-30). It was half internal note anyway and shouldn't ship to Prisma's
47-
// users. Consequence: nothing on the page now spells out the TBC-vs-em-dash
48-
// distinction, so the badge's title tooltip is the only affordance left. The
49-
// three open questions above are tracked here and in the project's open-items
50-
// list — they are NOT resolved just because the note is gone.
51-
const PENDING = "TBC";
52-
42+
// One open question remains, and it is about the group, not a value: Gregory
43+
// said Accelerate is being deprecated, so confirm whether the GLOBAL CACHE
44+
// rows belong on the page at all.
5345
const YES = "yes";
5446

5547
type Row = { label: string; values: [string, string, string, string] };
@@ -183,16 +175,21 @@ const GROUPS: Group[] = [
183175
icon: Layers,
184176
color: "text-prism-cyan-500",
185177
rows: [
186-
// Live values are $0.0020 / $0.0010 per 1,000 and 5/5/10/20 purges per
187-
// hour, but Gregory said Accelerate is being deprecated — so whether
188-
// this group belongs on the page at all is unresolved. Placeholder.
178+
// Live-page values, restored from the pre-rebrand table
179+
// (apps/site/src/app/pricing/pricing-data.ts at 528ab05fc^). Free and
180+
// Starter get no tag invalidations at all, hence the em dash.
189181
{
190182
label: "Cache tag invalidations",
191-
values: [PENDING, PENDING, PENDING, PENDING],
183+
values: [
184+
"—",
185+
"—",
186+
"$0.002 per 1,000, max 10,000 per day",
187+
"$0.001 per 1,000, max 100,000 per day",
188+
],
192189
},
193190
{
194191
label: "Cache purge requests",
195-
values: [PENDING, PENDING, PENDING, PENDING],
192+
values: ["5 per hour", "5 per hour", "10 per hour", "20 per hour"],
196193
},
197194
],
198195
},
@@ -205,10 +202,12 @@ const GROUPS: Group[] = [
205202
rows: [
206203
{ label: "Query insights", values: [YES, YES, YES, YES] },
207204
{ label: "View and edit your data", values: [YES, YES, YES, YES] },
205+
// Free has no backups: /postgres/database/backups says snapshots are a
206+
// Starter, Pro, and Business feature, so the em dash is the right cell.
208207
{
209208
label: "Backups",
210209
values: [
211-
PENDING,
210+
"—",
212211
"Daily, 7-day retention",
213212
"Daily, 7-day retention",
214213
"Daily, 30-day retention",
@@ -221,9 +220,13 @@ const GROUPS: Group[] = [
221220
icon: Shield,
222221
color: "text-prism-red-500",
223222
rows: [
224-
// live page: Community / Community / Standard / Premium
225-
// Gregory (May): Community / Community / 24h / 2h — unresolved, so placeholder
226-
{ label: "Support", values: [PENDING, PENDING, PENDING, PENDING] },
223+
// Live page: Community / Community / Standard / Premium. Gregory's May
224+
// notes said Community / Community / 24h / 2h; the live page wins, as
225+
// with every other figure in this table.
226+
{
227+
label: "Support",
228+
values: ["Community", "Community", "Standard", "Premium"],
229+
},
227230
{
228231
label: "Compliance",
229232
values: ["GDPR", "GDPR", "GDPR, HIPAA", "GDPR, HIPAA, SOC 2, ISO 27001"],
@@ -241,18 +244,6 @@ function Cell({ value, highlight }: { value: string; highlight: boolean }) {
241244
if (value === YES) {
242245
return <CheckBold className="size-4 text-prism-cyan-500" aria-label="Included" />;
243246
}
244-
// A placeholder means "we have not been given this" — it must never read as
245-
// "not included", which is what the em-dash means.
246-
if (value === PENDING) {
247-
return (
248-
<span
249-
title="Awaiting confirmation from Prisma"
250-
className="inline-flex rounded border border-dashed border-black/20 px-1.5 py-0.5 text-xs font-medium text-muted-foreground/70"
251-
>
252-
{PENDING}
253-
</span>
254-
);
255-
}
256247
return (
257248
<span
258249
className={cn(
@@ -381,7 +372,7 @@ export function PricingSpecTable() {
381372
together, which keeps the comparison the table exists to make.
382373
The uniform-row collapse is what makes that affordable. Roughly
383374
half the rows are identical across all four plans (every
384-
"Unlimited", every all-plans check, every four-way TBC), so
375+
"Unlimited", every all-plans check, every flat per-unit price), so
385376
those render as one line instead of a four-cell grid. Without it the pivot would be roughly twice as
386377
long for no added information — and it has the side effect of
387378
making the rows where plans actually DIFFER the visually

0 commit comments

Comments
 (0)