Skip to content

feat: DR-8328 Add compute page first stage#7859

Open
carlagn wants to merge 36 commits intomainfrom
feat/DR-8328-compute-page
Open

feat: DR-8328 Add compute page first stage#7859
carlagn wants to merge 36 commits intomainfrom
feat/DR-8328-compute-page

Conversation

@carlagn
Copy link
Copy Markdown
Contributor

@carlagn carlagn commented Apr 30, 2026

Summary by CodeRabbit

  • New Features

    • Launched Prisma Compute landing page with hero, features, workload comparison cards, starter templates, and a technical “How it works” section.
    • Added many interactive compute UI components: animated deploy terminal, runtime visuals, animated globe, workload/template cards, and deploy/copy actions.
  • Enhancements

    • Improved typography via local font loading and global font variables for consistent font stacks.
    • Homepage/card components support optional subtitles, images, custom children, and extra layout classes.

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 30, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
blog Ready Ready Preview, Comment May 5, 2026 4:24pm
docs Ready Ready Preview, Comment May 5, 2026 4:24pm
eclipse Ready Ready Preview, Comment May 5, 2026 4:24pm
site Ready Ready Preview, 💬 11 unresolved
✅ 10 resolved
May 5, 2026 4:24pm

Request Review

@argos-ci
Copy link
Copy Markdown

argos-ci Bot commented Apr 30, 2026

The latest updates on your projects. Learn more about Argos notifications ↗︎

Build Status Details Updated (UTC)
default (Inspect) ⚠️ Changes detected (Review) 1 changed May 5, 2026, 4:49 PM

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 30, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds local Mona Sans fonts and CSS-variable bridges across apps, introduces a new Prisma Compute landing page with many interactive UI components (including a Cobe WebGL globe and theme tokens), extends homepage card APIs, updates global CSS (token additions and reformatting), and adds the cobe dependency.

Changes

Font system & global token bridge

Layer / File(s) Summary
Font registration
apps/docs/src/app/layout.tsx, apps/eclipse/src/app/layout.tsx, apps/site/src/app/layout.tsx
Add next/font/local usage to load Mona Sans and Mona Sans Mono, exposing generated CSS variables (e.g., --font-mona-sans, --font-mona-mono) and appending them to the <html> className.
Design-token bridge
apps/docs/src/app/global.css, apps/eclipse/src/app/global.css, apps/site/src/app/global.css
Add :root CSS variables --font-sans-display and --font-mono that map to the loaded font vars with quoted fallback stacks.
Wiring / formatting
same files as above
Update HTML root class usage to include font vars and reformat related CSS/JSX without semantic changes.

Compute landing page and interactive UI

Layer / File(s) Summary
Data / tokens
apps/site/src/app/compute/tokens.ts
Add dark/light color palettes, hexToRgb01 utility, COBE_MARKER_DOT_RGB, and cobeGlobe color config.
New visual components
apps/site/src/app/compute/components.tsx, apps/site/src/app/compute/how-it-works.tsx
Add many exported UI components (WorkloadCards, TemplateCards, ThemFragmentedCard, UsUnifiedCard, StatefulExecutionCard, DeployTerminal, HowItWorks) with internal subcomponents and interactive/animated logic (timers, effects, conditional renders).
Globe integration
apps/site/src/app/compute/CobeGlobe.tsx
Add client-side CobeGlobe component using cobe for an animated WebGL globe: markers/arcs configuration, RAF animation loop, drag-to-rotate handlers, ResizeObserver sizing, optional DOM label elements, and teardown cleanup.
Page composition / metadata
apps/site/src/app/compute/page.tsx
Add Compute landing page that composes the new components, defines FEATURES/DOES_IT_WORK/WHY_FEATURES data arrays, and exports generateMetadata() and default Page() rendering all sections.

Site/global CSS adjustments

Layer / File(s) Summary
Token additions
apps/site/src/app/global.css
Add :root mappings for --font-sans-display / --font-mono, add html, body { overscroll-behavior: none; }, and compute-specific overrides (.compute-box alignment and heading sizes).
Reformat / minor style adjustments
apps/site/src/app/global.css, apps/docs/src/app/global.css, apps/eclipse/src/app/global.css
Large reindent/reflow and minor selector/format changes; most property values and selectors retained.

Homepage cards & layout API updates

Layer / File(s) Summary
Data shape / types
apps/site/src/components/homepage/bento.tsx, apps/site/src/components/homepage/card-section/card-section.tsx
Make CardData fields optional: subtitle?, image?, add children?: React.ReactNode; add optional visualClass? on TwoColumnItem; add className?: string to Card and CardSection props.
Core rendering
same files
Conditionally render subtitle and children in Card; merge optional className into container className; adjust layout behavior when item.step is present.
Tests / formatting
same files
JSX/typing reformatted to multi-line destructuring and cn(...) usage; no behavioral changes beyond new optional fields.

Dependency addition

Layer / File(s) Summary
Package manifest
apps/site/package.json
Add dependency "cobe": "^2.0.1".

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 23.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: DR-8328 Add compute page first stage' clearly and specifically identifies the main change: adding the first stage of a compute page feature, tied to ticket DR-8328.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/site/src/app/global.css (1)

3-23: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

The :root block is placed before other imports, contradicting the comment.

The comment states this block is "placed after all @import statements," but it actually appears between @import "tailwindcss" (line 1) and the remaining imports (lines 19–23). If fumadocs-ui/css/preset.css, @prisma/eclipse/styles/globals.css, or @prisma-docs/ui/styles also define --font-sans-display or --font-mono, those later imports will override your definitions due to cascade order.

Move the :root block after line 23 (after all imports) to match the comment's intent and ensure your font tokens win.

🔧 Suggested fix
 `@import` "tailwindcss";
 
-/* Promote next/font/local preloaded fonts into the design-token CSS variables.
-   This :root block is intentionally placed after all `@import` statements so it
-   wins the cascade (same :root specificity, later position = last write wins).
-   --font-mona-sans / --font-mona-mono are set on <html> by next/font/local and
-   inherited here; the quoted names act as a safe fallback if JS is disabled or
-   the font object is somehow not applied. */
-:root {
-    --font-sans-display:
-        var(--font-mona-sans, "Mona Sans VF"), "Inter", "Roboto",
-        "Helvetica Neue", "Arial Nova", "Nimbus Sans", "Arial", sans-serif;
-    --font-mono:
-        var(--font-mona-mono, "Mona Sans Mono VF"), ui-monospace,
-        "Cascadia Code", "Source Code Pro", "Menlo", "Consolas",
-        "DejaVu Sans Mono", monospace;
-}
-
 `@import` "fumadocs-ui/css/shadcn.css";
 `@import` "fumadocs-ui/css/preset.css";
 
 `@import` "@prisma/eclipse/styles/globals.css";
 `@import` "@prisma-docs/ui/styles";
+
+/* Promote next/font/local preloaded fonts into the design-token CSS variables.
+   This :root block is intentionally placed after all `@import` statements so it
+   wins the cascade (same :root specificity, later position = last write wins).
+   --font-mona-sans / --font-mona-mono are set on <html> by next/font/local and
+   inherited here; the quoted names act as a safe fallback if JS is disabled or
+   the font object is somehow not applied. */
+:root {
+    --font-sans-display:
+        var(--font-mona-sans, "Mona Sans VF"), "Inter", "Roboto",
+        "Helvetica Neue", "Arial Nova", "Nimbus Sans", "Arial", sans-serif;
+    --font-mono:
+        var(--font-mona-mono, "Mona Sans Mono VF"), ui-monospace,
+        "Cascadia Code", "Source Code Pro", "Menlo", "Consolas",
+        "DejaVu Sans Mono", monospace;
+}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/app/global.css` around lines 3 - 23, The :root block that
defines --font-sans-display and --font-mono is currently before several `@import`
statements, contradicting the comment and risking those later imports overriding
the variables; move the entire :root { ... } block so it appears after all
`@import` statements (i.e., after the `@prisma-docs/ui/styles` import) so the :root
declarations for --font-sans-display and --font-mono win the cascade and match
the file comment.
🧹 Nitpick comments (1)
apps/site/src/components/homepage/bento.tsx (1)

174-181: ⚡ Quick win

Place className last so consumer overrides reliably apply.

At Line 175, custom classes are prepended, so conflicting defaults (e.g., width/order utilities) can win. Move className to the end of cn(...).

Proposed change
       className={cn(
-        className,
         "box",
         "box-visible",
         "w-full",
         isCenterCard && "w-full md:order-0",
         color,
+        className,
       )}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/components/homepage/bento.tsx` around lines 174 - 181, The
current cn(...) call places the prop className first so consumer-provided
classes can be overridden by default utilities; update the cn invocation in the
component (the call that builds the className using cn, className, "box",
"box-visible", "w-full", isCenterCard && "w-full md:order-0", color) by moving
the className argument to the end of the argument list so consumer overrides
reliably apply (keep the rest of arguments and condition isCenterCard logic
unchanged).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/docs/src/app/global.css`:
- Around line 9-22: The :root rule block currently appears before several
`@import` rules (e.g., `@import` "fumadocs-ui/css/shadcn.css", `@import`
"fumadocs-ui/css/preset.css", `@import` "fumadocs-openapi/css/preset.css", `@import`
"@prisma-docs/ui/styles"), which violates CSS `@import` ordering; move the entire
:root { ... } block so it comes after all `@import` statements to ensure those
imports are recognized by browsers and build tools (adjust the file so all
`@import` lines appear first, then the :root block).

In `@apps/site/src/app/compute/components.tsx`:
- Around line 92-99: In DrawbackItem, the icon class string contains a double
space ("fa-regular  fa-xmark"); fix it by changing the className to use a single
space between class names (e.g., "fa-regular fa-xmark") so it matches the rest
of the codebase and avoids inconsistent formatting; update the className in the
DrawbackItem component accordingly.

In `@apps/site/src/app/compute/page.tsx`:
- Around line 273-300: The generateMetadata() function currently returns
copy-pasted Query Insights SEO values; update it to reflect the Compute page by
changing title to "Prisma Compute", replacing the description with a
Compute-relevant blurb, changing openGraph.title to "Prisma Compute",
openGraph.url to "https://www.prisma.io/compute", and openGraph.images[0].url to
the Compute image (e.g., "/og/og-compute.png"); ensure twitter/site/creator
remain correct and that all occurrences inside generateMetadata() and its
openGraph object are updated consistently.

---

Outside diff comments:
In `@apps/site/src/app/global.css`:
- Around line 3-23: The :root block that defines --font-sans-display and
--font-mono is currently before several `@import` statements, contradicting the
comment and risking those later imports overriding the variables; move the
entire :root { ... } block so it appears after all `@import` statements (i.e.,
after the `@prisma-docs/ui/styles` import) so the :root declarations for
--font-sans-display and --font-mono win the cascade and match the file comment.

---

Nitpick comments:
In `@apps/site/src/components/homepage/bento.tsx`:
- Around line 174-181: The current cn(...) call places the prop className first
so consumer-provided classes can be overridden by default utilities; update the
cn invocation in the component (the call that builds the className using cn,
className, "box", "box-visible", "w-full", isCenterCard && "w-full md:order-0",
color) by moving the className argument to the end of the argument list so
consumer overrides reliably apply (keep the rest of arguments and condition
isCenterCard logic unchanged).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 5dec4c3f-c8dc-4318-92bc-b90d00c1acdb

📥 Commits

Reviewing files that changed from the base of the PR and between 30587d8 and d7c463f.

📒 Files selected for processing (11)
  • apps/docs/src/app/global.css
  • apps/docs/src/app/layout.tsx
  • apps/eclipse/src/app/global.css
  • apps/eclipse/src/app/layout.tsx
  • apps/site/src/app/compute/components.tsx
  • apps/site/src/app/compute/how-it-works.tsx
  • apps/site/src/app/compute/page.tsx
  • apps/site/src/app/global.css
  • apps/site/src/app/layout.tsx
  • apps/site/src/components/homepage/bento.tsx
  • apps/site/src/components/homepage/card-section/card-section.tsx

Comment on lines +9 to 22
:root {
--font-sans-display:
var(--font-mona-sans, "Mona Sans VF"), "Inter", "Roboto",
"Helvetica Neue", "Arial Nova", "Nimbus Sans", "Arial", sans-serif;
--font-mono:
var(--font-mona-mono, "Mona Sans Mono VF"), ui-monospace,
"Cascadia Code", "Source Code Pro", "Menlo", "Consolas",
"DejaVu Sans Mono", monospace;
}
@import "fumadocs-ui/css/shadcn.css";
@import "fumadocs-ui/css/preset.css";
@import "fumadocs-openapi/css/preset.css";
@import "@prisma-docs/ui/styles";
@source "../../node_modules/streamdown/dist/*.js";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

In standard CSS, what happens to @importrules that appear after a qualified rule like:root { ... }? Also, for Tailwind CSS v4 with Lightning CSS/PostCSS, does the toolchain safely process late @import rules in source CSS?

💡 Result:

In standard CSS, @import rules that appear after a qualified rule like :root { ... } are invalid and ignored by user agents (browsers). The CSS specification (Cascading and Inheritance Levels 3-6) requires all @import rules to precede all other valid at-rules and style rules (except @charset, @layer statements, and @supports-condition), or else they are invalid. A qualified rule is a style rule (selector + block), so any @import after it is ignored. This is confirmed by MDN, W3C specs, and browser behavior. For Tailwind CSS v4 with Lightning CSS/PostCSS, the toolchain does not safely process late @import rules in source CSS. Tailwind v4 uses Lightning CSS for processing, which enforces the same CSS validity rules: late @import rules cause errors or are invalid. Tailwind's built-in @import handling (replacing postcss-import) processes valid @import rules at the top, inlining them while preserving order and conditions, but late @imports remain invalid per CSS rules and Lightning CSS bundling docs explicitly state they cause errors. Issues in Tailwind repos confirm late @imports (e.g., after @import "tailwindcss") are ignored or fail, requiring them at the top (e.g., before Tailwind import for fonts). No evidence of special handling for late @imports; source CSS must follow standard CSS positioning rules.

Citations:


Move the :root block below all @import rules—this placement violates CSS specifications.

Per the CSS Cascade specification (Levels 3–6), all @import rules must precede any qualified rules (like :root { ... }). Any @import that appears after a qualified rule is invalid and ignored by browsers and build tools alike. Tailwind CSS v4 with Lightning CSS enforces these same rules strictly—it doesn't provide special handling for late imports.

The current code at lines 9–17 places :root before the imports at lines 18–22, which means fumadocs-ui, fumadocs-openapi, and @prisma-docs/ui styles will be silently dropped during the build, leaving your UI incomplete.

Proposed fix
 `@import` "tailwindcss";
 `@import` "@prisma/eclipse/styles/globals.css";
-
-:root {
-    --font-sans-display:
-        var(--font-mona-sans, "Mona Sans VF"), "Inter", "Roboto",
-        "Helvetica Neue", "Arial Nova", "Nimbus Sans", "Arial", sans-serif;
-    --font-mono:
-        var(--font-mona-mono, "Mona Sans Mono VF"), ui-monospace,
-        "Cascadia Code", "Source Code Pro", "Menlo", "Consolas",
-        "DejaVu Sans Mono", monospace;
-}
 `@import` "fumadocs-ui/css/shadcn.css";
 `@import` "fumadocs-ui/css/preset.css";
 `@import` "fumadocs-openapi/css/preset.css";
 `@import` "@prisma-docs/ui/styles";
 `@source` "../../node_modules/streamdown/dist/*.js";
+
+:root {
+    --font-sans-display:
+        var(--font-mona-sans, "Mona Sans VF"), "Inter", "Roboto",
+        "Helvetica Neue", "Arial Nova", "Nimbus Sans", "Arial", sans-serif;
+    --font-mono:
+        var(--font-mona-mono, "Mona Sans Mono VF"), ui-monospace,
+        "Cascadia Code", "Source Code Pro", "Menlo", "Consolas",
+        "DejaVu Sans Mono", monospace;
+}
🧰 Tools
🪛 Stylelint (17.9.0)

[error] 18-18: Invalid position for @import rule (no-invalid-position-at-import-rule)

(no-invalid-position-at-import-rule)


[error] 19-19: Invalid position for @import rule (no-invalid-position-at-import-rule)

(no-invalid-position-at-import-rule)


[error] 20-20: Invalid position for @import rule (no-invalid-position-at-import-rule)

(no-invalid-position-at-import-rule)


[error] 21-21: Invalid position for @import rule (no-invalid-position-at-import-rule)

(no-invalid-position-at-import-rule)


[error] 22-22: Unexpected unknown at-rule "@source" (scss/at-rule-no-unknown)

(scss/at-rule-no-unknown)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/docs/src/app/global.css` around lines 9 - 22, The :root rule block
currently appears before several `@import` rules (e.g., `@import`
"fumadocs-ui/css/shadcn.css", `@import` "fumadocs-ui/css/preset.css", `@import`
"fumadocs-openapi/css/preset.css", `@import` "@prisma-docs/ui/styles"), which
violates CSS `@import` ordering; move the entire :root { ... } block so it comes
after all `@import` statements to ensure those imports are recognized by browsers
and build tools (adjust the file so all `@import` lines appear first, then the
:root block).

Comment thread apps/site/src/app/compute/components.tsx
Comment thread apps/site/src/app/compute/page.tsx
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/site/src/app/compute/how-it-works.tsx`:
- Around line 1548-1551: The TabsTrigger components (rendered with key/value
using tab.value) can become icon-only on mobile when the label span is hidden,
so add an explicit accessible name by passing aria-label={tab.label} (or
aria-labelledby pointing to the label span's id) to each TabsTrigger; update the
TabsTrigger render where value={tab.value} to include aria-label={tab.label} so
inactive mobile tabs retain an accessible name.
- Around line 460-462: The copy icon buttons (the elements rendering <i
className="fa-regular fa-copy" /> inside clickable <button> in the HowItWorks
component) are interactive but not wired; change them to be non-interactive
until the copy action is implemented by marking them disabled and removing them
from keyboard focus, add accessibility labeling and a clear disabled affordance:
add disabled and aria-disabled="true", aria-label="Copy (disabled)" (or "Copy
code (disabled)"), title="Copy disabled until implemented", and set
tabIndex={-1} or replace the <button> with a non-interactive element that still
exposes the label (e.g., a <span> with aria-label) and a visual disabled style
(e.g., cursor-not-allowed); apply the same change for both occurrences that
render the fa-copy icon so keyboard/screen-reader users aren’t presented with a
broken control.
- Line 3: The file imports only hooks (useEffect, useRef, useState) but later
uses the React namespace type React.ReactNode; update the import to include the
ReactNode type (e.g., import { useEffect, useRef, useState, ReactNode } from
"react") and replace any React.ReactNode usages if desired with the imported
ReactNode to satisfy strict TS typing (references: the existing import line and
the React.ReactNode usage in the component/type declarations).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: cdccffc5-d523-416d-90cd-b6405ebacf15

📥 Commits

Reviewing files that changed from the base of the PR and between 5621589 and bba9660.

📒 Files selected for processing (1)
  • apps/site/src/app/compute/how-it-works.tsx

@@ -0,0 +1,1626 @@
"use client";

import { useEffect, useRef, useState } from "react";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify if React namespace types are used without explicit type imports,
# and inspect TS compiler options that influence UMD global access.
rg -n --type=tsx 'React\.ReactNode|React\.[A-Z][A-Za-z]+' 
fd -i 'tsconfig*.json' -x sh -c 'echo "---- $1 ----"; sed -n "1,220p" "$1"' sh {}

Repository: prisma/web

Length of output: 5043


🏁 Script executed:

cat -n apps/site/src/app/compute/how-it-works.tsx | head -200

Repository: prisma/web

Length of output: 7300


🏁 Script executed:

grep -n 'React\.' apps/site/src/app/compute/how-it-works.tsx

Repository: prisma/web

Length of output: 127


Import ReactNode type to fix React.ReactNode reference

Line 185 references React.ReactNode, but the React namespace isn't imported on line 3—only the hooks are. With "strict": true in your tsconfig, this fails type-checking. Import the type directly instead of relying on the namespace.

Suggested fix
-import { useEffect, useRef, useState } from "react";
+import { useEffect, useRef, useState, type ReactNode } from "react";
...
-function AnimatedLine({ children }: { children: React.ReactNode }) {
+function AnimatedLine({ children }: { children: ReactNode }) {
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/app/compute/how-it-works.tsx` at line 3, The file imports only
hooks (useEffect, useRef, useState) but later uses the React namespace type
React.ReactNode; update the import to include the ReactNode type (e.g., import {
useEffect, useRef, useState, ReactNode } from "react") and replace any
React.ReactNode usages if desired with the imported ReactNode to satisfy strict
TS typing (references: the existing import line and the React.ReactNode usage in
the component/type declarations).

Comment thread apps/site/src/app/compute/how-it-works.tsx
Comment on lines +1548 to +1551
<TabsTrigger
key={tab.value}
value={tab.value}
className={cn(
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Inactive mobile tabs can lose an accessible name

Because the label is hidden on mobile for inactive tabs (Lines 1576-1582), those TabsTriggers may become icon-only with no accessible text. Add an explicit name on the trigger.

Suggested fix
 <TabsTrigger
   key={tab.value}
   value={tab.value}
+  aria-label={tab.label}
   className={cn(

Also applies to: 1576-1582

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/app/compute/how-it-works.tsx` around lines 1548 - 1551, The
TabsTrigger components (rendered with key/value using tab.value) can become
icon-only on mobile when the label span is hidden, so add an explicit accessible
name by passing aria-label={tab.label} (or aria-labelledby pointing to the label
span's id) to each TabsTrigger; update the TabsTrigger render where
value={tab.value} to include aria-label={tab.label} so inactive mobile tabs
retain an accessible name.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
apps/site/src/app/compute/page.tsx (1)

273-300: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Metadata is still for Query Insights, not Compute.

Line 275, Line 279, Line 282, and Line 287/290 still describe the Query Insights page, so SEO indexing and social previews will be incorrect for /compute.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/app/compute/page.tsx` around lines 273 - 300, The
generateMetadata function currently returns metadata for "Prisma Query Insights"
which is incorrect for the Compute page; update the title, description,
openGraph.title, openGraph.description, openGraph.url, openGraph.images (url and
alt), and twitter fields (card/site/creator if different) inside
generateMetadata to reflect the Compute page content and URL (e.g., replace
"Prisma Query Insights" strings and "https://www.prisma.io/query-insights" with
the appropriate Compute page title, description, og image and URL), ensuring all
references to Query Insights are removed so SEO and social previews target
Compute.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/site/src/app/compute/page.tsx`:
- Around line 339-343: Two anchor elements on the compute page (the <a> tags
with className="flex items-center gap-2" containing the <span>Read the
docs</span>) wrongly point to /docs/postgres/faq#query-insights; update both
occurrences to the correct Compute docs URL (replace
/docs/postgres/faq#query-insights with the appropriate compute docs path, e.g.
/docs/compute or the canonical compute docs anchor) so the "Read the docs" CTAs
link to the relevant Compute documentation.
- Line 487: Fix the Tailwind class typo in the div that renders the footer
background: replace the incorrect "bg-cente" token in the className string with
"bg-center" so the bg-contain background image is properly centered; locate the
div containing "bg-[url('/illustrations/homepage/footer_grid.svg')]" and update
its class list accordingly.

---

Duplicate comments:
In `@apps/site/src/app/compute/page.tsx`:
- Around line 273-300: The generateMetadata function currently returns metadata
for "Prisma Query Insights" which is incorrect for the Compute page; update the
title, description, openGraph.title, openGraph.description, openGraph.url,
openGraph.images (url and alt), and twitter fields (card/site/creator if
different) inside generateMetadata to reflect the Compute page content and URL
(e.g., replace "Prisma Query Insights" strings and
"https://www.prisma.io/query-insights" with the appropriate Compute page title,
description, og image and URL), ensuring all references to Query Insights are
removed so SEO and social previews target Compute.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 01665d78-4e71-4639-89c0-2e5598928e26

📥 Commits

Reviewing files that changed from the base of the PR and between bba9660 and 674de46.

📒 Files selected for processing (1)
  • apps/site/src/app/compute/page.tsx

Comment thread apps/site/src/app/compute/page.tsx
</div>
</section>
<div className="before:inset-x-20 before:inset-y-0 before:absolute relative before:content-[''] before:pointer-events-none before:-z-0 rounded-full before:bg-[radial-gradient(64.76%_75.81%_at_50%_50%,var(--color-background-ppg)_0%,var(--color-background-default)_70%)]">
<div className="inset-x-20 inset-y-0 bg-[url('/illustrations/homepage/footer_grid.svg')] bg-contain bg-cente absolute inset-0 z-1 pointer-events-none" />
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Tailwind class typo drops background centering.

Line 487 uses bg-cente, so the centering utility won’t apply.

Suggested fix
-        <div className="inset-x-20 inset-y-0 bg-[url('/illustrations/homepage/footer_grid.svg')] bg-contain bg-cente absolute inset-0 z-1 pointer-events-none" />
+        <div className="inset-x-20 inset-y-0 bg-[url('/illustrations/homepage/footer_grid.svg')] bg-contain bg-center absolute inset-0 z-1 pointer-events-none" />
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<div className="inset-x-20 inset-y-0 bg-[url('/illustrations/homepage/footer_grid.svg')] bg-contain bg-cente absolute inset-0 z-1 pointer-events-none" />
<div className="inset-x-20 inset-y-0 bg-[url('/illustrations/homepage/footer_grid.svg')] bg-contain bg-center absolute inset-0 z-1 pointer-events-none" />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/site/src/app/compute/page.tsx` at line 487, Fix the Tailwind class typo
in the div that renders the footer background: replace the incorrect "bg-cente"
token in the className string with "bg-center" so the bg-contain background
image is properly centered; locate the div containing
"bg-[url('/illustrations/homepage/footer_grid.svg')]" and update its class list
accordingly.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

🍈 Lychee Link Check Report

67 links: ✅ 2 OK | 🚫 0 errors | 🔀 0 redirects | 👻 65 excluded

✅ All links are working!


Full Statistics Table
Status Count
✅ Successful 2
🔀 Redirected 0
👻 Excluded 65
🚫 Errors 0
⛔ Unsupported 0
⏳ Timeouts 0
❓ Unknown 0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants