Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (7)
✅ Files skipped from review due to trivial changes (3)
🚧 Files skipped from review as they are similar to previous changes (4)
WalkthroughUpdated Tailwind/CSS input paths in several app component configs and added a new MCP feature page with a set of reusable React components (agent cards, capability cards, bubble UI, hero/CTA/video sections), plus a barrel export to compose the page. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment Tip CodeRabbit can enforce grammar and style rules using `languagetool`.Configure the |
|
The latest updates on your projects. Learn more about Argos notifications ↗︎
|
There was a problem hiding this comment.
🧹 Nitpick comments (5)
apps/site/src/app/mcp/_components/mcp-bubble.tsx (1)
63-69: Minor cleanup: remove duplicate utility tokens in shell config strings.Line 63 and Line 69 repeat
py-2; trimming duplicates makes these variant definitions easier to maintain.Suggested cleanup
"prompt-wide": { fill: fillTeal, monoPrompt: true, shell: - "items-center rounded-[10px] border border-stroke-ppg px-3.5 py-2 shadow-none sm:px-4 min-h-[41px] py-2 md:min-h-[45px]", + "items-center rounded-[10px] border border-stroke-ppg px-3.5 py-2 shadow-none sm:px-4 min-h-[41px] md:min-h-[45px]", }, "prompt-compact": { fill: fillTeal, monoPrompt: true, shell: - "items-center rounded-[10px] border border-stroke-ppg px-3.5 py-2 shadow-none sm:px-4 min-h-[44px] py-2 md:min-h-[50px]", + "items-center rounded-[10px] border border-stroke-ppg px-3.5 py-2 shadow-none sm:px-4 min-h-[44px] md:min-h-[50px]", },🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/site/src/app/mcp/_components/mcp-bubble.tsx` around lines 63 - 69, The shell variant strings contain duplicate utility tokens ("py-2")—update the "shell" value in both the default variant and the "prompt-compact" variant (referencing the "shell" keys inside the component config and the "prompt-compact" object) to remove the repeated "py-2" so each utility class appears only once; ensure you keep the rest of the classes (e.g., "items-center", "rounded-[10px]", "border-stroke-ppg", "px-3.5", "min-h-[...]") intact and preserve the "fill: fillTeal" and "monoPrompt: true" properties for "prompt-compact".apps/site/src/app/mcp/_components/mcp-video-section.tsx (1)
6-13: Consider privacy/performance hardening for the iframe embed.Line 8 currently uses standard YouTube embed; switching to
youtube-nocookie.comand addingloading="lazy"reduces early third-party tracking/cost.Suggested update
<iframe className="size-full" - src="https://www.youtube.com/embed/jFm41OPnOUc" + src="https://www.youtube-nocookie.com/embed/jFm41OPnOUc" title="Prisma MCP video" + loading="lazy" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerPolicy="strict-origin-when-cross-origin" allowFullScreen />🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/site/src/app/mcp/_components/mcp-video-section.tsx` around lines 6 - 13, Update the iframe in the mcp-video-section component to use the privacy-enhanced YouTube domain and lazy loading: change the src from "https://www.youtube.com/embed/jFm41OPnOUc" to "https://www.youtube-nocookie.com/embed/jFm41OPnOUc" and add loading="lazy" to the <iframe> element (keep existing attributes like title, referrerPolicy, and allowFullScreen intact).apps/site/src/app/mcp/_components/mcp-cta-section.tsx (1)
33-56: Optional: split CTA destinations instead of reusing one URL.Lines 33-56 wire both “Add MCP server” and “Read Docs” to
docsHref. Consider separate props (e.g.,setupHref+docsHref) so each CTA can point to the most specific target and be tracked independently.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/site/src/app/mcp/_components/mcp-cta-section.tsx` around lines 33 - 56, The two CTAs currently both use docsHref; change the component API to accept a separate setupHref (or setupUrl) prop and use that for the “Add MCP server” anchor while leaving docsHref for “Read Docs”; update the component props/interface (e.g., the MCP CTA component in mcp-cta-section.tsx), replace the first anchor's href to setupHref (falling back to docsHref if undefined), and update any call sites/tests to pass a setupHref where appropriate so tracking and destinations are independent.apps/site/src/app/mcp/_components/capability-cards.tsx (1)
17-40: Consider extracting a shared card shell to remove duplication.Both components repeat nearly identical container/header/description markup; extracting a shared internal primitive would reduce drift risk when styles evolve.
Also applies to: 60-81
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/site/src/app/mcp/_components/capability-cards.tsx` around lines 17 - 40, The container/header/description layout is duplicated—extract a shared internal primitive (e.g., CapabilityCardShell or CardShell) that accepts props: icon, title, description, prompt (or children), and mobileTall; move the repeated JSX (outer div with className, inner header block with icon and h4, description paragraph, and the bottom McpBubble wrapper) into that component, preserve the exact className strings and aria-hidden on the icon, and then refactor the two places (the current capability-cards rendering and the other block at lines 60-81) to render this new primitive, passing through mobileTall to choose the height variant and the prompt content to the McpBubble.apps/site/src/app/mcp/_components/mcp-hero-section.tsx (1)
5-10: Use a stable id for feature keys instead of mutable text.On line 60 and line 112,
key={line1}ties component identity to text that could change. React keys should be stable and unique—when UI text becomes a key, any change to that text breaks component state preservation. Add an explicitidfield toMcpHeroFeatureand key by that instead.♻️ Suggested update
export type McpHeroFeature = { + id: string; icon: LucideIcon; line1: string; line2: string; mobileText?: string; }; @@ - <div key={feature.line1} className="flex items-center gap-4 text-left"> + <div key={feature.id} className="flex items-center gap-4 text-left"> @@ - <div key={line1} className="flex items-center gap-4 text-left"> + <div key={id} className="flex items-center gap-4 text-left">Update the features array in
page.tsxto includeidvalues for each feature:const heroFeatures: McpHeroFeature[] = [ { + id: "natural-language", icon: MessagesSquare, line1: "Natural language", line2: "database operations", mobileText: "Natural language db operations", }, { + id: "works-any-agent", icon: Rocket, line1: "Works with any", line2: "AI agent" }, { + id: "quick-setup", icon: Zap, line1: "Super quick", line2: "2-minute setup" }, { + id: "enterprise-security", icon: Lock, line1: "Enterprise-grade", line2: "security & OAuth" }, ];🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/site/src/app/mcp/_components/mcp-hero-section.tsx` around lines 5 - 10, The McpHeroFeature type and the render that uses key={line1} must use a stable unique id: add an id: string field to the McpHeroFeature type, update the features data (where the features array is created, e.g., in page.tsx) to include stable id values for each feature, and change the component render to use key={feature.id} (or feature.id as the key) instead of key={line1}; update any places that destructure McpHeroFeature (e.g., mapping callback parameters) to accept the id as well so type-checking passes.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@apps/site/src/app/mcp/_components/capability-cards.tsx`:
- Around line 17-40: The container/header/description layout is
duplicated—extract a shared internal primitive (e.g., CapabilityCardShell or
CardShell) that accepts props: icon, title, description, prompt (or children),
and mobileTall; move the repeated JSX (outer div with className, inner header
block with icon and h4, description paragraph, and the bottom McpBubble wrapper)
into that component, preserve the exact className strings and aria-hidden on the
icon, and then refactor the two places (the current capability-cards rendering
and the other block at lines 60-81) to render this new primitive, passing
through mobileTall to choose the height variant and the prompt content to the
McpBubble.
In `@apps/site/src/app/mcp/_components/mcp-bubble.tsx`:
- Around line 63-69: The shell variant strings contain duplicate utility tokens
("py-2")—update the "shell" value in both the default variant and the
"prompt-compact" variant (referencing the "shell" keys inside the component
config and the "prompt-compact" object) to remove the repeated "py-2" so each
utility class appears only once; ensure you keep the rest of the classes (e.g.,
"items-center", "rounded-[10px]", "border-stroke-ppg", "px-3.5", "min-h-[...]")
intact and preserve the "fill: fillTeal" and "monoPrompt: true" properties for
"prompt-compact".
In `@apps/site/src/app/mcp/_components/mcp-cta-section.tsx`:
- Around line 33-56: The two CTAs currently both use docsHref; change the
component API to accept a separate setupHref (or setupUrl) prop and use that for
the “Add MCP server” anchor while leaving docsHref for “Read Docs”; update the
component props/interface (e.g., the MCP CTA component in mcp-cta-section.tsx),
replace the first anchor's href to setupHref (falling back to docsHref if
undefined), and update any call sites/tests to pass a setupHref where
appropriate so tracking and destinations are independent.
In `@apps/site/src/app/mcp/_components/mcp-hero-section.tsx`:
- Around line 5-10: The McpHeroFeature type and the render that uses key={line1}
must use a stable unique id: add an id: string field to the McpHeroFeature type,
update the features data (where the features array is created, e.g., in
page.tsx) to include stable id values for each feature, and change the component
render to use key={feature.id} (or feature.id as the key) instead of
key={line1}; update any places that destructure McpHeroFeature (e.g., mapping
callback parameters) to accept the id as well so type-checking passes.
In `@apps/site/src/app/mcp/_components/mcp-video-section.tsx`:
- Around line 6-13: Update the iframe in the mcp-video-section component to use
the privacy-enhanced YouTube domain and lazy loading: change the src from
"https://www.youtube.com/embed/jFm41OPnOUc" to
"https://www.youtube-nocookie.com/embed/jFm41OPnOUc" and add loading="lazy" to
the <iframe> element (keep existing attributes like title, referrerPolicy, and
allowFullScreen intact).
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 2088231c-2575-49b3-9a94-9b4bb392be20
📒 Files selected for processing (14)
apps/blog/components.jsonapps/docs/components.jsonapps/eclipse/components.jsonapps/site/components.jsonapps/site/src/app/mcp/_components/agent-card.tsxapps/site/src/app/mcp/_components/capability-cards.tsxapps/site/src/app/mcp/_components/index.tsapps/site/src/app/mcp/_components/mcp-agents-section.tsxapps/site/src/app/mcp/_components/mcp-bubble.tsxapps/site/src/app/mcp/_components/mcp-capabilities-section.tsxapps/site/src/app/mcp/_components/mcp-cta-section.tsxapps/site/src/app/mcp/_components/mcp-hero-section.tsxapps/site/src/app/mcp/_components/mcp-video-section.tsxapps/site/src/app/mcp/page.tsx
Summary by CodeRabbit
New Features
Chores