Skip to content

Conversation

@lukasz-hycom
Copy link
Collaborator

@lukasz-hycom lukasz-hycom commented Nov 4, 2025

What does this PR do?

  • homepage update
  • new features page
  • new starters page
  • new integrations page
  • new navigation dropdown style

Key Changes

  • updating homepage layout with new components
  • updating main navigation structure
  • creating layouts and components for products pages (features, starters, integrations)

Summary by CodeRabbit

  • New Features

    • Product navbar + new product pages (Features, Starters, Integrations)
    • Many new UI components/sections: Accordion, copy-to-clipboard button, HoverCard, FeatureTile(s), Features-with-image, Integrations blocks, StarterInfo, Homepage Starters & Features, product pages
  • Style

    • Layout, spacing and visual refinements site-wide; new badge variants and transparent card border
    • Updated hero content, CTAs and client logos
  • Chores

    • Documentation formatting cleanup

@marcinkrasowski marcinkrasowski self-requested a review November 12, 2025 07:23
@lukasz-hycom lukasz-hycom changed the title docs: readme update feat(docs): new product pages (features, starters, integrations) + homepage update Nov 12, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 13, 2025

Note

Reviews paused

Use the following commands to manage reviews:

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

Walkthrough

Adds a Product section (Features, Starters, Integrations), multiple new UI components (Accordion, CopyCommandButton, FeatureTile, HoverCard, FeaturesListWithImage, IntegrationsBlocks, StarterInfoSection, homepage sections), styling/class tweaks across many files, and a Radix accordion dependency.

Changes

Cohort / File(s) Summary
Docs config & README
apps/docs/README.md, apps/docs/docusaurus.config.ts
README whitespace cleanup; added Product dropdown (Features, Starters, Integrations) to navbar and docs sidebar; removed DXP Starter navbar link.
Dependency
apps/docs/package.json
Added @radix-ui/react-accordion ^1.2.12.
Accordion (component & styles)
apps/docs/src/components/Accordion/index.tsx, apps/docs/src/components/Accordion/Accordion.module.scss
New Accordion using Radix primitives with single/multiple modes and defaultValue; SCSS adds accordion-down/up keyframes and data-state height animations.
Copy UI
apps/docs/src/components/CopyCommandButton/index.tsx
New CopyCommandButton component (copies command, toggles 1s copied state with icon swap).
Feature tiles & lists
apps/docs/src/components/FeatureTile/index.tsx, apps/docs/src/components/FeaturesListWithImage/index.tsx
Added FeatureTile and FeatureTileList; FeaturesListWithImage with desktop active-state image panel and mobile stacked layout; internal active state for image switching.
HoverCard & Starter info
apps/docs/src/components/HoverCard/index.tsx, apps/docs/src/components/StarterInfoSection/index.tsx
New HoverCard component (CTA or badge, optional bg image) and StarterInfoSection with public prop interfaces, CLI copy wiring, and Accordion integration.
Integrations UI
apps/docs/src/components/IntegrationsBlocks/index.tsx
New IntegrationsBlocks component rendering integration cards with availability badges.
Homepage sections
apps/docs/src/components/HomepageFeaturesSection/index.tsx, apps/docs/src/components/HomepageStartersSection/index.tsx
New HomepageFeaturesSection and HomepageStartersSection components.
Badge, Card, Benefits, Guides, Hero
apps/docs/src/components/Badge/index.tsx, apps/docs/src/components/Card/index.tsx, apps/docs/src/components/BenefitsSection/index.tsx, apps/docs/src/components/GuidesSection/index.tsx, apps/docs/src/components/HeroBannerSection/index.tsx
Badge accepts ReactNode icons and new variants; Card/Benefit borderColor add 'transparent'; BenefitsSection gains optional description prop; GuidesSection now uses FeatureTile; HeroBannerSection adds badge? and containerWidth? props and replaces inline copy UI with CopyCommandButton.
Styling/class tweaks across files
apps/docs/src/components/*, apps/docs/src/pages/*
Multiple presentational classname adjustments (e.g., flex-shrink-0shrink-0, selector tweaks "[&>*]:stroke-current""*:stroke-current", spacing/class reorderings) across homepage, support, partners, dxp and other pages.
Product pages & styles
apps/docs/src/pages/product/features.tsx, apps/docs/src/pages/product/starters.tsx, apps/docs/src/pages/product/integrations.tsx, apps/docs/src/pages/product/product.module.scss
Added three new product pages and wired @use '../main.module'; in product.module.scss.
Homepage & index changes
apps/docs/src/pages/index.tsx
Homepage restructuring: new hero copy and CLI, added HomepageStartersSection & HomepageFeaturesSection, updated client logos and main wrapper.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant CopyBtn as CopyCommandButton
    participant Clipboard
    participant UI

    User->>CopyBtn: Click(command)
    activate CopyBtn
    CopyBtn->>Clipboard: navigator.clipboard.writeText(command)
    Clipboard-->>CopyBtn: Success
    Note over CopyBtn,UI: set copied = true (shows confirm icon for 1s)
    UI-->>User: visual confirmation
    CopyBtn->>CopyBtn: after 1s set copied = false
    CopyBtn->>UI: show copy icon
    deactivate CopyBtn
Loading
sequenceDiagram
    participant User
    participant Page
    participant Accordion as RadixAccordion

    User->>Accordion: Click item header (value)
    activate Accordion
    Accordion->>Accordion: toggle data-state (open/closed)
    Accordion->>Page: apply animation (accordion-down / accordion-up)
    Page-->>User: content shown/hidden
    deactivate Accordion
Loading
sequenceDiagram
    participant User
    participant FeaturesList as FeaturesListWithImage
    participant UI

    User->>FeaturesList: Click feature button (index)
    activate FeaturesList
    FeaturesList->>FeaturesList: set activeFeatureIndex = index
    FeaturesList->>UI: update selected button style
    FeaturesList->>UI: show corresponding image in right panel
    UI-->>User: image and styles updated
    deactivate FeaturesList
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

  • Focus areas:
    • Accordion integration (Radix usage, animations) — apps/docs/src/components/Accordion/*.
    • New product pages and page wiring — apps/docs/src/pages/product/*.
    • StarterInfoSection and FeaturesListWithImage interactive state and responsiveness.
    • Cross-file classname changes that may cause visual regressions (stroke selector, shrink classes).
    • New exported interfaces/components to verify typings and exports: HoverCard, IntegrationsBlocks, StarterInfoSection, FeatureTile, Accordion.

Poem

🐰 I hopped through code, a tumble of delight,
Accordions open, starters take flight.
Copy clicks sparkle — icons wink and cheer,
New pages planted, the roadmap’s near.
A rabbit nods: the docs feel light and bright.

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Description check ⚠️ Warning The PR description is incomplete and lacks required sections from the template, including related tickets, detailed change explanation, side effects analysis, testing instructions, and media. Add the missing sections: specify related ticket(s), provide detailed explanation of how changes address the issue, document side effects, include step-by-step testing instructions, and add media (Loom or gif) if applicable.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main changes: new product pages and homepage update. It accurately reflects the core modifications in the changeset.

Tip

📝 Customizable high-level summaries are now available in beta!

You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.

  • Provide your own instructions using the high_level_summary_instructions setting.
  • Format the summary however you like (bullet lists, tables, multi-section layouts, contributor stats, etc.).
  • Use high_level_summary_in_walkthrough to move the summary from the description to the walkthrough section.

Example instruction:

"Divide the high-level summary into five sections:

  1. 📝 Description — Summarize the main change in 50–60 words, explaining what was done.
  2. 📓 References — List relevant issues, discussions, documentation, or related PRs.
  3. 📦 Dependencies & Requirements — Mention any new/updated dependencies, environment variable changes, or configuration updates.
  4. 📊 Contributor Summary — Include a Markdown table showing contributions:
    | Contributor | Lines Added | Lines Removed | Files Changed |
  5. ✔️ Additional Notes — Add any extra reviewer context.
    Keep each section concise (under 200 words) and use bullet or numbered lists for clarity."

Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later.


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

@marcinkrasowski
Copy link
Collaborator

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Nov 13, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link

@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: 12

🧹 Nitpick comments (3)
apps/docs/src/components/GuidesSection/index.tsx (1)

5-6: LGTM: Excellent refactoring.

The refactoring to use the FeatureTile component simplifies the code and improves maintainability by eliminating duplication. The component delegation is clean and follows React best practices.

Also applies to: 43-48

apps/docs/src/components/Accordion/index.tsx (1)

16-21: Improve type safety for defaultValue based on accordion type.

The defaultValue prop is typed as string, but when type="multiple", Radix UI expects string[]. Line 45 converts a single string to an array, but this prevents users from specifying multiple default open items in multiple mode.

Consider using a conditional type or union:

 export interface AccordionProps {
     items: AccordionItem[];
     type?: 'single' | 'multiple';
-    defaultValue?: string;
+    defaultValue?: string | string[];
     className?: string;
 }

Then update line 45 to handle both cases:

         <AccordionPrimitive.Root
             type="multiple"
-            defaultValue={defaultValue ? [defaultValue] : undefined}
+            defaultValue={Array.isArray(defaultValue) ? defaultValue : defaultValue ? [defaultValue] : undefined}
             className={clsx('flex flex-col items-start w-full', className)}
         >
apps/docs/src/pages/index.tsx (1)

62-63: Address the TODO: placeholder URL for app starters.

The link currently points to a demo site with a TODO comment indicating it should point to the app starters page. According to the PR objectives, the starters page is still in progress.

Would you like me to help identify the correct URL once the starters page is complete, or should this be tracked in a separate issue?

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8a32384 and a89bb66.

⛔ Files ignored due to path filters (18)
  • apps/docs/src/assets/icons/ArrowLeftRightGreenTile.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/ArrowRight.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/BanGreenTile.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/Blocks.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/BlocksPurpleTile.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/CircleUser.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/FileSearch.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/GaugePurpleTile.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/LayersPurpleTile.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/LayoutDashboardGreenTile.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/Rocket.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/ScalingGreenTile.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/Star.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/TicketX.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/Wallet.svg is excluded by !**/*.svg
  • apps/docs/src/assets/icons/WaypointsPurpleTile.svg is excluded by !**/*.svg
  • apps/docs/static/img/homepage/starters-card-customer-portal.png is excluded by !**/*.png
  • apps/docs/static/img/homepage/starters-card-digital-portal.png is excluded by !**/*.png
📒 Files selected for processing (30)
  • apps/docs/README.md (0 hunks)
  • apps/docs/docusaurus.config.ts (1 hunks)
  • apps/docs/package.json (1 hunks)
  • apps/docs/src/components/Accordion/Accordion.module.scss (1 hunks)
  • apps/docs/src/components/Accordion/index.tsx (1 hunks)
  • apps/docs/src/components/BenefitsSection/index.tsx (6 hunks)
  • apps/docs/src/components/Card/index.tsx (2 hunks)
  • apps/docs/src/components/ClientsSection/index.tsx (1 hunks)
  • apps/docs/src/components/CopyCommandButton/index.tsx (1 hunks)
  • apps/docs/src/components/DXPArchitectureSection/index.tsx (1 hunks)
  • apps/docs/src/components/FeatureTile/index.tsx (1 hunks)
  • apps/docs/src/components/FeaturesListWithImage/index.tsx (1 hunks)
  • apps/docs/src/components/GuidesSection/index.tsx (2 hunks)
  • apps/docs/src/components/HeroBannerSection/index.tsx (4 hunks)
  • apps/docs/src/components/HomepageAboutSection/index.tsx (1 hunks)
  • apps/docs/src/components/HomepageArchitectureSection/index.tsx (2 hunks)
  • apps/docs/src/components/HomepageBannerSection/index.tsx (1 hunks)
  • apps/docs/src/components/HomepageFeaturesSection/index.tsx (1 hunks)
  • apps/docs/src/components/HomepageStartersSection/index.tsx (1 hunks)
  • apps/docs/src/components/HoverCard/index.tsx (1 hunks)
  • apps/docs/src/components/HubspotForm/index.tsx (2 hunks)
  • apps/docs/src/pages/dxp/index.tsx (1 hunks)
  • apps/docs/src/pages/index.tsx (2 hunks)
  • apps/docs/src/pages/partners/index.tsx (1 hunks)
  • apps/docs/src/pages/product/features.tsx (1 hunks)
  • apps/docs/src/pages/product/integrations.tsx (1 hunks)
  • apps/docs/src/pages/product/product.module.scss (1 hunks)
  • apps/docs/src/pages/product/starters.tsx (1 hunks)
  • apps/docs/src/pages/support/developers.tsx (2 hunks)
  • apps/docs/src/pages/support/enterprise.tsx (2 hunks)
💤 Files with no reviewable changes (1)
  • apps/docs/README.md
🔇 Additional comments (22)
apps/docs/src/pages/product/product.module.scss (1)

1-1: No issues found—SCSS import path is correct and all referenced styles are defined.

Verification confirms that apps/docs/src/pages/main.module.scss exists and exports all styles used by the three product components (integrations.tsx, starters.tsx, features.tsx). The @use '../main.module' directive resolves correctly, and no circular dependencies are present.

apps/docs/src/components/HomepageAboutSection/index.tsx (2)

191-191: LGTM: Improved Tailwind class consistency.

Replacing the arbitrary value left-[-16px] with the standard utility -left-4 maintains the same layout while improving code consistency.


193-193: LGTM: Improved Tailwind class consistency.

Replacing the arbitrary value w-[2px] with the standard utility w-0.5 maintains the same 2px width while improving code consistency. Note that w-0.5 equals 0.125rem (2px), not 0.5px.

apps/docs/src/pages/partners/index.tsx (1)

118-118: Note the broader CSS selector scope.

The stroke-current selector changed from [&>*]:stroke-current (direct children only) to *:stroke-current (all descendants). This broader selector will apply the stroke to all SVG descendants, not just immediate children. Verify this produces the intended visual result if the ArrowDown SVG contains nested elements.

apps/docs/src/pages/dxp/index.tsx (1)

137-137: LGTM - Consistent with PR-wide selector updates.

This stroke-current selector update matches the pattern applied across other pages in this PR. The broader selector will style all SVG descendants.

apps/docs/src/components/ClientsSection/index.tsx (1)

15-15: LGTM - Layout spacing improved.

The gap increase from 6 to 16 (1.5rem to 4rem) provides more visual breathing room between the lead text and client logos.

apps/docs/src/components/Accordion/Accordion.module.scss (1)

1-30: LGTM - Well-structured accordion animations.

The accordion animations properly leverage Radix UI's CSS custom properties for smooth height transitions. The data-state based styling and matching animation timings (0.2s ease-out) provide a polished user experience.

apps/docs/src/pages/support/developers.tsx (1)

119-119: LGTM - Consistent selector updates.

Both Icon_discord instances updated with the broader stroke-current selector, consistent with the PR-wide pattern.

Also applies to: 143-143

apps/docs/src/pages/support/enterprise.tsx (1)

37-37: LGTM - Tailwind utility modernization.

The changes modernize Tailwind syntax:

  • Important modifier positioning updated for consistency
  • shrink-0 shorthand replaces flex-shrink-0

Both produce identical output.

Also applies to: 47-47

apps/docs/src/components/HubspotForm/index.tsx (1)

377-377: I need to clarify: when developers write accent-violet without a shade suffix in Tailwind, it defaults to the 500 shade. Let me search for that specific value.

Verify that the accent color change aligns with your design system.

Tailwind's accent-violet (default 500 shade) is #8b5cf6, which differs from the previous accent-[#4c5ce5]. The original color (#4c5ce5) is a blue-purple; the new color (#8b5cf6) is a true violet. Confirm this change with your design system before merging.

apps/docs/package.json (1)

29-29: No action required. Dependency version verified as current and secure.

The @radix-ui/react-accordion@1.2.12 version is the latest available on npm, and no known security vulnerabilities were detected.

apps/docs/src/components/HomepageBannerSection/index.tsx (1)

43-43: LGTM: Tailwind utility modernization.

The update from flex-shrink-0 to shrink-0 is a modernization to use the shorter Tailwind utility. Both are functionally equivalent.

Also applies to: 47-47

apps/docs/src/components/Card/index.tsx (1)

5-5: LGTM: Clean API extension.

The addition of the transparent border option is well-implemented and follows the existing pattern. Returning card-base without additional border classes correctly achieves a transparent border.

Also applies to: 16-16

apps/docs/src/components/CopyCommandButton/index.tsx (1)

1-45: LGTM: Well-structured reusable component.

The CopyCommandButton component is well-implemented with proper state management, smooth icon transitions, and good separation of concerns. The extraction of this functionality into a reusable component improves maintainability.

apps/docs/src/components/BenefitsSection/index.tsx (3)

9-9: LGTM: Clean API enhancement.

The addition of the optional description prop enhances the component's flexibility. The updated layout structure properly accommodates the new description block while maintaining backward compatibility.

Also applies to: 81-87


26-26: LGTM: Consistent with Card component update.

The addition of 'transparent' to the borderColor union aligns with the same update in the Card component, ensuring type consistency across components.


44-44: LGTM: Tailwind utility modernization.

The update from flex-shrink-0 to shrink-0 modernizes the Tailwind utilities. Both are functionally equivalent.

Also applies to: 53-53, 63-63

apps/docs/docusaurus.config.ts (1)

338-356: LGTM: Navigation structure enhanced.

The new Product dropdown is well-structured and aligns with the PR's objective to add product pages. The navigation items are properly configured with correct paths.

apps/docs/src/components/HeroBannerSection/index.tsx (2)

12-15: LGTM: Badge feature is well-implemented.

The optional badge prop with icon support is cleanly integrated and follows good typing practices.

Also applies to: 60-69


85-85: LGTM: Good refactor to use CopyCommandButton.

Replacing inline clipboard logic with a dedicated component improves code reusability and maintainability.

apps/docs/src/pages/index.tsx (2)

38-38: LGTM: Good semantic HTML improvement.

Using <main> instead of <div> for the primary content wrapper improves accessibility and document structure.


76-103: LGTM: Homepage restructure aligns with PR objectives.

The addition of HomepageStartersSection and HomepageFeaturesSection, along with the restructured layout, aligns well with the stated PR goals of updating the homepage and creating new product pages.

Copy link

@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/docs/src/pages/product/starters.tsx (1)

308-308: Fix missing space in description text.

The description contains "project.We're" which renders without proper spacing between sentences.

Apply this diff to fix the spacing:

-                                description="Tell us what kind of frontend starter would help your next project.We're planning more — and we want your input."
+                                description="Tell us what kind of frontend starter would help your next project. We're planning more — and we want your input."
🧹 Nitpick comments (4)
apps/docs/src/components/StarterInfoSection/index.tsx (2)

44-53: Consider using a more stable key.

Using linkItem.label as the React key assumes labels are unique. If duplicate labels are ever passed, React will issue warnings and rendering may be unpredictable.

Apply this diff to use the array index combined with the label for a more stable key:

-                        {links.map((linkItem) => (
+                        {links.map((linkItem, index) => (
                             <a
-                                key={linkItem.label}
+                                key={`${index}-${linkItem.label}`}
                                 href={linkItem.link}
                                 className="text-white! underline! hover:no-underline! text-sm font-medium"
                                 target={linkItem.target}

63-65: Consider more flexible image sizing.

The fixed heights (h-[562px] md:h-[762px]) combined with absolute positioning and max-w-none! may cause images to overflow horizontally or distort on different screen sizes or aspect ratios.

Consider one of these approaches:

  • Use object-fit: cover or object-fit: contain with defined dimensions
  • Allow the container to size based on the image's intrinsic aspect ratio
  • Add horizontal constraints (e.g., max-w-full) to prevent overflow

Example with aspect ratio and object-fit:

-            <div className="relative h-[562px] md:h-[762px]">
-                <img src={img.src} alt={img.alt} className="absolute top-0 left-0 h-full max-w-none!" />
+            <div className="relative h-[562px] md:h-[762px] overflow-hidden">
+                <img src={img.src} alt={img.alt} className="absolute top-0 left-0 h-full w-full object-cover" />
             </div>
apps/docs/src/pages/product/starters.tsx (2)

65-132: Consider extracting list item styling to reduce duplication.

The accordion items contain repetitive JSX patterns with identical className strings for list items. While not critical, extracting these could improve maintainability.

Consider creating a helper component or constant for the repeated list styling:

const ListItem = ({ children, bold }: { children: ReactNode; bold?: string }) => (
    <li className="text-white text-sm leading-[1.3] py-1.5">
        {bold && <span className="font-semibold">{bold}:</span>} {children}
    </li>
);

Or define className constants:

const LIST_ITEM_CLASS = "text-white text-sm leading-[1.3] py-1.5";
const ICON_LIST_CLASS = "list-none! p-0! m-0!";

50-55: Consider adding security attributes for external links.

Links with target="_blank" should include rel="noopener" to prevent potential security issues (tab-napping) and performance concerns.

This should be handled in the StarterInfoSection component. Add this to the anchor tag in apps/docs/src/components/StarterInfoSection/index.tsx:

                             <a
                                 key={linkItem.label}
                                 href={linkItem.link}
                                 className="text-white! underline! hover:no-underline! text-sm font-medium"
                                 target={linkItem.target}
+                                rel={linkItem.target === '_blank' ? 'noopener noreferrer' : undefined}
                             >

Also applies to: 140-148

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a89bb66 and 7a2f4df.

⛔ Files ignored due to path filters (3)
  • apps/docs/src/assets/icons/RefreshCw.svg is excluded by !**/*.svg
  • apps/docs/static/img/starterspage/customer-portal.png is excluded by !**/*.png
  • apps/docs/static/img/starterspage/digital-portal.png is excluded by !**/*.png
📒 Files selected for processing (5)
  • apps/docs/src/components/Accordion/index.tsx (1 hunks)
  • apps/docs/src/components/FeaturesListWithImage/index.tsx (1 hunks)
  • apps/docs/src/components/StarterInfoSection/index.tsx (1 hunks)
  • apps/docs/src/pages/product/features.tsx (1 hunks)
  • apps/docs/src/pages/product/starters.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/docs/src/components/Accordion/index.tsx
🧰 Additional context used
🧬 Code graph analysis (4)
apps/docs/src/pages/product/features.tsx (5)
apps/docs/src/components/HeroBannerSection/index.tsx (1)
  • HeroBannerSection (45-148)
apps/docs/src/components/Typography/index.tsx (3)
  • Body (25-27)
  • H2 (13-15)
  • H3 (17-19)
apps/docs/src/components/FeatureTile/index.tsx (1)
  • FeatureTileList (42-55)
apps/docs/src/components/FeaturesListWithImage/index.tsx (1)
  • FeaturesListWithImage (15-72)
apps/docs/src/components/FooterSection/index.tsx (1)
  • FooterSection (24-61)
apps/docs/src/components/StarterInfoSection/index.tsx (3)
apps/docs/src/components/Accordion/index.tsx (1)
  • AccordionItem (9-13)
apps/docs/src/components/Typography/index.tsx (2)
  • H2 (13-15)
  • Body (25-27)
apps/docs/src/components/CopyCommandButton/index.tsx (1)
  • CopyCommandButton (11-45)
apps/docs/src/pages/product/starters.tsx (5)
apps/docs/src/components/BenefitsSection/index.tsx (2)
  • BenefitCardProps (13-27)
  • BenefitsSection (81-96)
apps/docs/src/components/StarterInfoSection/index.tsx (2)
  • StarterInfoSectionProps (18-27)
  • StarterInfoSection (29-68)
apps/docs/src/components/Typography/index.tsx (2)
  • BodySmall (33-35)
  • Body (25-27)
apps/docs/src/components/HeroBannerSection/index.tsx (1)
  • HeroBannerSection (45-148)
apps/docs/src/components/FooterSection/index.tsx (1)
  • FooterSection (24-61)
apps/docs/src/components/FeaturesListWithImage/index.tsx (1)
apps/docs/src/components/Typography/index.tsx (2)
  • H3 (17-19)
  • BodyBold (29-31)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: deploy-preview
🔇 Additional comments (6)
apps/docs/src/components/StarterInfoSection/index.tsx (1)

7-27: LGTM!

The type definitions are clean and well-structured. The optional fields provide good flexibility for the component's use cases.

apps/docs/src/pages/product/starters.tsx (5)

1-47: LGTM!

The imports are organized clearly, and the benefits configuration is well-structured with appropriate icon and title pairings.


50-55: LGTM! Past issue resolved.

The links array now contains proper URLs with no empty href attributes. The previous concern about broken navigation has been addressed.


250-251: Address TODO comments before launch.

Two TODO comments remain in the code that should be resolved:

  • Line 250-251: "add new gradient circle here"
  • Line 311: "confirm link" for the contact page URL

Please confirm:

  1. Whether the gradient circle should be added or if the TODO can be removed
  2. Whether /contact is the correct destination for the "Submit your idea" button

Also applies to: 311-311


238-240: Image file verified.

The customer-portal.png image exists at the correct path: apps/docs/static/img/starterspage/customer-portal.png. No action needed.


134-135: Image file verified.

The file exists at the correct location (apps/docs/static/img/starterspage/digital-portal.png), matching the path referenced in the code.

Copy link

@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 (3)
apps/docs/src/pages/product/features.tsx (1)

93-99: Fix incomplete Technical Capabilities copy (previously flagged).

The issues from the previous review remain unaddressed:

  • Line 94's description still ends mid-sentence with "with."
  • Line 98 still uses "Ui" instead of "UI"

Apply this diff to fix the copy:

             {
                 title: 'Next-intl',
-                description: 'for Internationalization and localization with.',
+                description: 'Internationalization and localization powered by next-intl.',
             },
             {
                 title: 'Tailwind + UI tokens',
-                description: 'for Ui customization, theming and branding.',
+                description: 'For UI customization, theming, and branding.',
             },
apps/docs/src/pages/product/starters.tsx (1)

303-313: Fix missing space in CTA description copy.

The description currently renders project.We're without a space; it should be project. We're.

-                                description="Tell us what kind of frontend starter would help your next project.We're planning more — and we want your input."
+                                description="Tell us what kind of frontend starter would help your next project. We're planning more — and we want your input."
apps/docs/src/pages/product/integrations.tsx (1)

14-195: Placeholder content and TODOs still present.

The INTEGRATION_SECTIONS data structure still contains the previously flagged issues:

  • TODO comments for descriptions at lines 41, 65, 95, 113, 137, and 161
  • Generic "integration description" placeholder text for all integrations
  • Placeholder BanGreenTileIcon for all integration icons

These items should be addressed before merging to production.

🧹 Nitpick comments (5)
apps/docs/src/pages/product/features.tsx (3)

76-177: Consider polishing description styles for consistency.

Many descriptions in technicalCapabilities start with lowercase adjectives or past participles without subjects, creating an inconsistent style. For example:

  • Line 82: "based frontend" → "A Next.js-based frontend" or "Next.js-based frontend"
  • Line 86: "full-stack TypeScript support" → "Full-stack TypeScript support" (capitalize)
  • Line 128: "normalized frontend data model" → "Provides a normalized frontend data model"

Consider revising for a more polished, uniform tone across all capability descriptions.


179-238: Multiple placeholder images awaiting replacement.

The functionalBlocks array contains several TODO comments indicating placeholder images that need to be replaced with actual feature screenshots or graphics.

Would you like me to generate a checklist or open a tracking issue for the remaining image replacements?


246-247: TODO: Additional gradient styling planned.

The comment indicates a new gradient circle should be added here. This appears to be a styling enhancement that's still pending.

Would you like help determining the appropriate gradient styling or tracking this as a separate task?

apps/docs/src/pages/product/starters.tsx (1)

49-56: Harden external links opened in a new tab.

Several links here set target="_blank" via StarterInfoSection, but the underlying anchor in StarterInfoSection does not add rel="noopener", unlike FooterSection/HeroBannerSection which already set rel="noopener" on external CTAs. To avoid window.opener issues and keep behavior consistent, consider updating StarterInfoSection to add rel when opening a new tab:

// apps/docs/src/components/StarterInfoSection/index.tsx
-                        {links.map((linkItem) => (
-                            <a
-                                key={linkItem.label}
-                                href={linkItem.link}
-                                className="text-white! underline! hover:no-underline! text-sm font-medium"
-                                target={linkItem.target}
-                            >
+                        {links.map((linkItem) => (
+                            <a
+                                key={linkItem.label}
+                                href={linkItem.link}
+                                className="text-white! underline! hover:no-underline! text-sm font-medium"
+                                target={linkItem.target}
+                                rel={linkItem.target === '_blank' ? 'noopener' : undefined}
+                            >

Also applies to: 139-148

apps/docs/src/pages/product/integrations.tsx (1)

203-203: Track or resolve the TODO comment.

The TODO comment indicates a gradient circle element is planned. Consider tracking this in an issue or completing it before merging.

Would you like me to open a tracking issue for this visual enhancement?

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 32a6e3a and 8d03fad.

📒 Files selected for processing (4)
  • apps/docs/src/components/HeroBannerSection/index.tsx (4 hunks)
  • apps/docs/src/pages/product/features.tsx (1 hunks)
  • apps/docs/src/pages/product/integrations.tsx (1 hunks)
  • apps/docs/src/pages/product/starters.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/docs/src/components/HeroBannerSection/index.tsx
🧰 Additional context used
🧬 Code graph analysis (3)
apps/docs/src/pages/product/features.tsx (5)
apps/docs/src/components/HeroBannerSection/index.tsx (1)
  • HeroBannerSection (46-154)
apps/docs/src/components/Typography/index.tsx (4)
  • Body (25-27)
  • H2 (13-15)
  • H3 (17-19)
  • BodySmall (33-35)
apps/docs/src/components/FeatureTile/index.tsx (1)
  • FeatureTileList (42-55)
apps/docs/src/components/FeaturesListWithImage/index.tsx (1)
  • FeaturesListWithImage (15-72)
apps/docs/src/components/FooterSection/index.tsx (1)
  • FooterSection (24-61)
apps/docs/src/pages/product/integrations.tsx (4)
apps/docs/src/components/HeroBannerSection/index.tsx (1)
  • HeroBannerSection (46-154)
apps/docs/src/components/Typography/index.tsx (2)
  • Body (25-27)
  • BodyBold (29-31)
apps/docs/src/components/IntegrationsBlocks/index.tsx (1)
  • IntegrationsBlocks (15-54)
apps/docs/src/components/FooterSection/index.tsx (1)
  • FooterSection (24-61)
apps/docs/src/pages/product/starters.tsx (5)
apps/docs/src/components/BenefitsSection/index.tsx (2)
  • BenefitCardProps (13-27)
  • BenefitsSection (81-96)
apps/docs/src/components/StarterInfoSection/index.tsx (2)
  • StarterInfoSectionProps (18-27)
  • StarterInfoSection (29-68)
apps/docs/src/components/Typography/index.tsx (2)
  • BodySmall (33-35)
  • Body (25-27)
apps/docs/src/components/HeroBannerSection/index.tsx (1)
  • HeroBannerSection (46-154)
apps/docs/src/components/FooterSection/index.tsx (1)
  • FooterSection (24-61)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: deploy-preview
🔇 Additional comments (5)
apps/docs/src/pages/product/starters.tsx (1)

244-321: Overall page composition and reuse look solid.

The layout cleanly composes the hero, two starter sections, shared benefits, and CTA footer using the common components and gradient wrapper. Prop shapes match the shared components, and the structure is coherent and extensible.

apps/docs/src/pages/product/integrations.tsx (4)

1-12: LGTM!

Import structure is clean and follows consistent patterns.


206-240: Well-structured component implementation.

The HeroBannerSection and IntegrationsBlocks integration is clean and follows the established component patterns. The layout hierarchy is logical and the mapping of INTEGRATION_SECTIONS data is correctly implemented.


245-266: Footer CTA section looks great.

The FooterSection is well-configured with clear calls-to-action for both viewing documentation and submitting integration requests. The copy is engaging and properly encourages community participation.


255-258: Internal documentation link verified.

The documentation file exists at apps/docs/docs/guides/integrations/adding-new-integrations.md, confirming the link target is valid.

@coderabbitai
Copy link

coderabbitai bot commented Nov 14, 2025

✅ Actions performed

Reviews paused.

@vercel
Copy link

vercel bot commented Nov 19, 2025

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

1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
o2s-docs Skipped Skipped Nov 19, 2025 8:38am

@vercel vercel bot temporarily deployed to Preview – o2s-docs November 19, 2025 08:38 Inactive
@lukasz-hycom lukasz-hycom merged commit 3618027 into main Nov 19, 2025
9 checks passed
@lukasz-hycom lukasz-hycom deleted the feature/product_pages branch November 19, 2025 08:51
@coderabbitai coderabbitai bot mentioned this pull request Nov 19, 2025
1 task
@coderabbitai coderabbitai bot mentioned this pull request Dec 2, 2025
1 task
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.

4 participants