Skip to content

Feat/new UI#35

Merged
JosueBrenes merged 14 commits intodevelopfrom
feat/new-ui
Mar 20, 2026
Merged

Feat/new UI#35
JosueBrenes merged 14 commits intodevelopfrom
feat/new-ui

Conversation

@JosueBrenes
Copy link
Copy Markdown
Contributor

@JosueBrenes JosueBrenes commented Mar 19, 2026

This pull request makes significant updates to the landing page and supporting components, focusing on modernizing the design, improving branding consistency, and removing unused or redundant code. The landing page layout is streamlined with new hero and animation components, while several effect and UI components that are no longer needed are removed. Additionally, branding and accessibility improvements are made to the footer and overall layout.

Landing Page Redesign and Feature Updates:

  • The landing page (src/app/page.tsx) is refactored to use new hero components (HeroParallaxDemo, ACTAScrollDown), a new animated headline with TextAnimate, and updated sections for value propositions, use cases, and trusted startups. Old components and decorative effects (like Particles, AnimatedActa, and ScrollProgress) are removed, resulting in a cleaner and more modern layout. Section dividers and improved typography are added for better visual separation and readability. [1] [2] [3] [4]

Component and Code Cleanup:

  • Unused effect and UI components (Aurora, StarsBackground, ScrollProgress, alert-dialog.tsx, and alert.tsx) are deleted, reducing codebase clutter and improving maintainability. [1] [2] [3] [4] [5]

Branding and Accessibility Improvements:

  • The footer (src/components/layout/Footer.tsx) is updated for consistent branding (changing "ACTA" to "Acta"), improved link styling, and simplified layout for official links.
  • The root layout (src/app/layout.tsx) adds suppressHydrationWarning to <html> and <body> tags to address hydration mismatches caused by browser extensions.

Linting Configuration:

  • The ESLint scripts in package.json are updated to fail on any warnings by adding the --max-warnings 0 flag, enforcing stricter code quality during development and CI.

Summary by CodeRabbit

  • New Features

    • New parallax hero demo, trusted-startups logos, and an interactive scroll-driven demo
  • Bug Fixes

    • Suppressed hydration warnings in initial layout rendering
  • Chores

    • Enforced zero lint warnings
    • Removed large set of unused UI primitives, visual effects, and deprecated hooks/providers
  • Style

    • Updated footer branding and link styling; simplified page layout and hero visuals

Deleted several unused UI components including AlertDialog, Alert, AnimatedShinyText, AspectRatio, Avatar, Breadcrumb, Calendar, Carousel, Chart, Checkbox, Collapsible, Command, ContextMenu, and Dialog to streamline the codebase.
Added "peer": true to several dependencies in package-lock.json and modified lint scripts in package.json to enforce zero warnings.
…perience

Added a new ACTAScrollDown component that features a scroll-based animation with dynamic opacity for multiple panels. The component includes structured step data for issuers, holders, and verifiers, enhancing user engagement through visual storytelling.
Deleted the ValueDetails and ValueProposition components to streamline the codebase and eliminate unused code. This change helps improve maintainability and reduces the overall bundle size.
Introduced a new TrustedStartups component that displays logos of fast-growing startups, enhancing social proof on the platform. The component features a responsive layout and integrates with Next.js for optimized image handling.
…rallax component

Deleted the AnimatedActa and HeroSubtitle components to clean up the codebase. Introduced the HeroParallax component to enhance the hero section with a parallax effect showcasing multiple credentials, improving visual engagement.
…mponent

Modified the Footer component to improve layout and styling, including adjustments to spacing and text casing. Removed the ScrollProgress component to streamline the codebase, as it was no longer needed.
…codebase

Deleted the Aurora and StarsBackground components to clean up the codebase and eliminate unused code, improving maintainability and reducing bundle size.
Updated the ActaLanding component by removing unused imports and components, and integrating the HeroParallaxDemo for improved visual engagement. Added TextAnimate for dynamic text presentation and included TrustedStartups to showcase partner logos, enhancing the overall user experience and maintainability of the codebase.
Deleted the use-mobile and use-toast hooks to eliminate unused code, improving maintainability and reducing bundle size.
Deleted the ThemeProvider component to eliminate unused code, improving maintainability and reducing bundle size.
@vercel
Copy link
Copy Markdown
Contributor

vercel bot commented Mar 19, 2026

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

Project Deployment Actions Updated (UTC)
acta-web Ready Ready Preview, Comment Mar 19, 2026 0:43am

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 19, 2026

📝 Walkthrough

Walkthrough

Large refactor: strict linting enforced; hydration warnings suppressed; homepage reworked with new parallax and scroll-driven hero components; many decorative/effects components and a broad Radix-based UI component library, several hooks, and providers were removed.

Changes

Cohort / File(s) Summary
Build Configuration
package.json
Added --max-warnings 0 to scripts.lint and scripts.lint:check to treat lint warnings as errors.
App Layout & Hydration
src/app/layout.tsx
Added suppressHydrationWarning attributes to <html> and <body> (commented rationale).
Home Page
src/app/page.tsx
Reworked hero and top-of-page: removed heavy visuals (Particles, ScrollProgress, AnimatedActa, HeroSubtitle) and integrated new components (HeroParallaxDemo, ACTAScrollDown, TrustedStartups, TextAnimate); simplified layout and separators; adjusted headings and content flow.
New Hero & Scroll Features
src/components/ui/hero-parallax.tsx, src/features/hero/HeroParallax.tsx, src/features/acta-scroll/ACTAScrollDown.tsx, src/features/social-proof/TrustedByStartups.tsx
Added HeroParallax (three-row, scroll-driven parallax gallery + Header/ProductCard exports), HeroParallaxDemo wrapper, ACTAScrollDown (three-step full-page scroll interaction with SVG overlays), and TrustedStartups social-proof grid.
Footer
src/components/layout/Footer.tsx
Replaced "Official Links" block with inline flex-wrap links, reduced vertical spacing, and updated branding text/alt from “ACTA” → “Acta”.
Removed Visual Effects
src/components/effects/Aurora.tsx, src/components/effects/StarsBackground.tsx, src/components/ui/particles.tsx, src/components/layout/ScrollProgress.tsx
Deleted animated background/effect components: Aurora, StarsBackground, canvas Particles, and ScrollProgress.
Removed Feature Components
src/features/hero/AnimatedActa.tsx, src/features/hero/HeroSubtitle.tsx, src/features/value-proposition/ValueProposition.tsx, src/features/value-proposition/ValueDetails.tsx
Removed several hero/value-proposition feature components (melting word, subtitle, feature cards, persona panels).
Removed UI Library (many files)
src/components/ui/... (alert*, avatar, breadcrumb, calendar, carousel, chart, checkbox, collapsible, command, context-menu, dialog, drawer, dropdown-menu, form, hover-card, input-otp, label, menubar, navigation-menu, pagination, popover, progress, radio-group, resizable, scroll-area, select, separator, sheet, sidebar, skeleton, slider, sonner, switch, table, tabs, toast, toaster, toggle*, tooltip)
Removed a large Radix/primitive-based UI component set (dialogs, menus, forms, controls, layout primitives, toast system, sidebar, etc.), eliminating many exported components and helpers.
Removed Hooks & Providers
src/hooks/use-mobile.ts, src/hooks/use-toast.ts, src/providers/theme-provider.tsx
Removed useIsMobile hook, custom useToast/toast system, and ThemeProvider wrapper.

Sequence Diagram(s)

sequenceDiagram
    participant User as Browser (scroll)
    participant Hero as HeroParallax
    participant Motion as FramerMotion
    participant Card as ProductCard

    User->>Hero: scroll event (container ref)
    Hero->>Motion: derive scrollYProgress → transforms (translateX/rotate/opacity)
    Motion-->>Hero: updated MotionValues
    Hero->>Card: pass MotionValues to each ProductCard
    Card->>Motion: apply translate/hover animations
    Card-->>User: visual movement (parallax rows)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰
I hopped through lines, trimmed leaves of code,
A parallax dawn where credentials glow,
Old sparks fell silent, the stage grows clear,
New scrolls now dance — a spring in my hop! ✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'Feat/new UI' is vague and generic, using non-descriptive language that does not convey the actual scope of changes in this substantial refactor. Use a more descriptive title that captures the main change, such as 'Refactor landing page with new hero components and remove legacy UI' or 'Modernize homepage with HeroParallax and ACTAScrollDown components'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/new-ui
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Tip

CodeRabbit can generate a title for your PR based on the changes.

Add @coderabbitai placeholder anywhere in the title of your PR and CodeRabbit will replace it with a title based on the changes in the PR. You can change the placeholder by changing the reviews.auto_title_placeholder setting.

Copy link
Copy Markdown

@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

Caution

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

⚠️ Outside diff range comments (1)
package.json (1)

89-97: ⚠️ Potential issue | 🟡 Minor

Inconsistency: lint-staged ESLint command doesn't enforce --max-warnings 0.

The lint and lint:check scripts now enforce zero warnings, but the lint-staged config (line 95) still uses eslint --fix without --max-warnings 0. This allows commits with warnings to pass pre-commit but fail in CI.

🔧 Proposed fix
   "lint-staged": {
     "*.{js,jsx,ts,tsx,json,css,md}": [
       "prettier --write",
       "git add"
     ],
     "*.{js,jsx,ts,tsx}": [
-      "eslint --fix",
+      "eslint --fix --max-warnings 0",
       "git add"
     ]
   }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@package.json` around lines 89 - 97, Update the lint-staged ESLint command so
it enforces zero warnings: in the package.json "lint-staged" block replace the
existing "eslint --fix" invocation with "eslint --fix --max-warnings 0" for the
"*.{js,jsx,ts,tsx}" entry so pre-commit behavior matches the lint and lint:check
scripts and prevents commits that would fail CI.
🧹 Nitpick comments (6)
src/components/ui/hero-parallax.tsx (1)

70-96: Consider using index-based keys if product titles may not be unique.

ProductCard uses product.title as the React key. If consumers pass products with duplicate titles, this will cause key collisions. Consider using a combination of title and index, or requiring a unique id field.

♻️ Alternative key approach
-{firstRow.map(product => (
+{firstRow.map((product, index) => (
   <ProductCard
     product={product}
     translate={translateX}
-    key={product.title}
+    key={`row1-${index}-${product.title}`}
   />
 ))}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ui/hero-parallax.tsx` around lines 70 - 96, The ProductCard
list items currently use product.title as the React key which can collide if
titles are not unique; update the three map calls over firstRow, secondRow, and
thirdRow to use a stable unique key such as combining product.title with the map
index (e.g., `${product.title}-${index}`) or preferably product.id if available,
ensuring you reference the map callback parameter (index) when rendering
ProductCard and set key accordingly for each ProductCard instance.
src/app/page.tsx (2)

28-30: Empty <nav> container appears to be dead code.

The navigation element contains only an empty flex container with no children. If the navbar was intentionally removed as part of the UI refactor, this empty shell should also be removed.

♻️ Remove empty nav
-      <nav className="relative z-10 px-6 py-4">
-        <div className="max-w-7xl mx-auto flex items-center justify-between"></div>
-      </nav>
-
       <section className="relative z-10">
         <HeroParallaxDemo />
       </section>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/app/page.tsx` around lines 28 - 30, The <nav> element in the JSX is an
empty shell (nav with className "relative z-10 px-6 py-4" containing an empty
div with "max-w-7xl mx-auto flex items-center justify-between"), which is dead
code; either remove the entire <nav> and its empty inner <div> or restore the
intended navbar content into that container (e.g., logo, links, or mobile
button). Locate the JSX block that defines nav (the element with className
"relative z-10 px-6 py-4" and the inner div with className "max-w-7xl mx-auto
flex items-center justify-between") and delete it if unused, or replace the
empty div children with the appropriate navbar components.

36-38: Consider extracting the repeated separator pattern into a reusable component.

The separator <div className="w-full h-px bg-white/[0.08]" /> appears 7 times throughout the page. Extracting it would reduce repetition and make styling changes easier.

♻️ Example separator component
const Separator = () => (
  <div className="relative z-10 w-full" aria-hidden="true">
    <div className="w-full h-px bg-white/[0.08]" />
  </div>
);

Also applies to: 44-46, 64-66

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

In `@src/app/page.tsx` around lines 36 - 38, Extract the repeated separator div
into a new React component (e.g., Separator) that returns the existing structure
(<div className="relative z-10 w-full" aria-hidden="true"> with inner <div
className="w-full h-px bg-white/[0.08]" />) and replace all seven inline
occurrences in page.tsx with <Separator />; ensure you export/import the
Separator where needed and preserve accessibility attributes and classes so
styling and semantics remain identical.
src/components/layout/Footer.tsx (1)

19-76: Consider extracting repetitive link rendering into a mapped array.

The seven Link components share identical props (target, rel, className). This can be simplified by mapping over an array.

♻️ Proposed refactor to reduce repetition
+const footerLinks = [
+  { href: ACTA_OFFICIAL_LINKS.github, label: "GitHub" },
+  { href: ACTA_OFFICIAL_LINKS.twitter, label: "X" },
+  { href: ACTA_OFFICIAL_LINKS.instagram, label: "Instagram" },
+  { href: ACTA_OFFICIAL_LINKS.linkedin, label: "LinkedIn" },
+  { href: ACTA_OFFICIAL_LINKS.docs, label: "Docs" },
+  { href: ACTA_OFFICIAL_LINKS.dapp, label: "DApp" },
+  { href: ACTA_OFFICIAL_LINKS.demo, label: "Demo" },
+];

// Then in the component:
 <div className="flex flex-wrap justify-center gap-x-4 gap-y-1 text-xs text-muted-foreground">
-  <Link
-    href={ACTA_OFFICIAL_LINKS.github}
-    target="_blank"
-    rel="noopener noreferrer"
-    className="hover:text-foreground transition-colors"
-  >
-    GitHub
-  </Link>
-  {/* ... other links ... */}
+  {footerLinks.map(({ href, label }) => (
+    <Link
+      key={label}
+      href={href}
+      target="_blank"
+      rel="noopener noreferrer"
+      className="hover:text-foreground transition-colors"
+    >
+      {label}
+    </Link>
+  ))}
 </div>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/layout/Footer.tsx` around lines 19 - 76, The Link list in
Footer.tsx repeats identical props; refactor by creating an array of link
definitions (e.g., const footerLinks = [{href: ACTA_OFFICIAL_LINKS.github,
label: 'GitHub'}, ...] or Object.entries(ACTA_OFFICIAL_LINKS] with a defined
order) and map over it to render a single Link element, passing the shared props
(target="_blank", rel="noopener noreferrer", className="hover:text-foreground
transition-colors") and using href and label from each item; update the render
in the Footer component to use footerLinks.map(...) so all seven Link instances
are generated from that array.
src/features/social-proof/TrustedByStartups.tsx (1)

30-46: Fixed 3-column grid may be cramped on smaller screens.

The grid uses grid-cols-3 without responsive breakpoints. On narrow viewports (below lg), three logos side-by-side in a constrained space may appear cramped or overflow.

♻️ Proposed responsive grid
-<div className="grid grid-cols-3 gap-12 items-center justify-items-center">
+<div className="grid grid-cols-1 sm:grid-cols-3 gap-8 sm:gap-12 items-center justify-items-center">
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/features/social-proof/TrustedByStartups.tsx` around lines 30 - 46, The
three-column layout in TrustedByStartups.tsx is fixed and can be cramped on
small screens; update the container div that currently uses "grid grid-cols-3
gap-12 items-center justify-items-center" to use responsive grid classes (for
example grid-cols-1 sm:grid-cols-2 md:grid-cols-3) and adjust spacing if needed
(e.g., reduce gap on small screens) so the startups.map rendering and each logo
wrapper (the div with key={startup.name} and the Image component) flow properly
on narrow viewports; ensure the Image retains object-contain and max-height
behavior to avoid overflow.
src/features/acta-scroll/ACTAScrollDown.tsx (1)

184-248: Native <img> elements bypass Next.js image optimization.

Three images use native <img> with eslint-disable comments. While this may be intentional for animation purposes, it bypasses Next.js image optimization (lazy loading, srcset, format negotiation).

If the parallax behavior requires native <img>, consider at minimum adding width and height attributes to prevent layout shifts, or using <Image> with unoptimized prop to retain some benefits.

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

In `@src/features/acta-scroll/ACTAScrollDown.tsx` around lines 184 - 248, The
three native <img> elements in ACTAScrollDown (the images with src "/ACTA1.png",
"/ACTA2.png", "/ACTA3.png" that use loading="eager" and className="select-none
pointer-events-none") bypass Next.js optimization; either replace them with
next/image (import Image and use <Image src=... unoptimized priority /> to
preserve animation while keeping format negotiation and srcset) or, if you must
keep native <img>, add explicit width and height attributes on each tag
(matching the displayed dimensions or intrinsic image size) and keep
loading="eager" to avoid layout shifts and retain some performance; update the
three img instances accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/components/ui/hero-parallax.tsx`:
- Around line 146-157: The className on the motion.p element contains an invalid
Tailwind token "-20"; locate the motion.p in hero-parallax.tsx (the paragraph
with text "Issue trust at the speed of light.") and remove or replace the stray
"-20" with the intended Tailwind utility (e.g., a width constraint like
max-w-2xl or a margin/padding class) so the className becomes valid (for example
"mt-6 text-center text-lg sm:text-xl md:text-2xl text-white/80 font-medium
max-w-2xl" or simply drop "-20" if it was accidental).

In `@src/features/hero/HeroParallax.tsx`:
- Around line 8-49: The products array only has 10 items but HeroParallax
expects 15 because it renders three rows using slice(0,5), slice(5,10), and
slice(10,15); add five more product objects to the exported products array
(matching existing shape with title and thumbnail) so the third slice
(slice(10,15)) returns items and the layout displays three full rows.

---

Outside diff comments:
In `@package.json`:
- Around line 89-97: Update the lint-staged ESLint command so it enforces zero
warnings: in the package.json "lint-staged" block replace the existing "eslint
--fix" invocation with "eslint --fix --max-warnings 0" for the
"*.{js,jsx,ts,tsx}" entry so pre-commit behavior matches the lint and lint:check
scripts and prevents commits that would fail CI.

---

Nitpick comments:
In `@src/app/page.tsx`:
- Around line 28-30: The <nav> element in the JSX is an empty shell (nav with
className "relative z-10 px-6 py-4" containing an empty div with "max-w-7xl
mx-auto flex items-center justify-between"), which is dead code; either remove
the entire <nav> and its empty inner <div> or restore the intended navbar
content into that container (e.g., logo, links, or mobile button). Locate the
JSX block that defines nav (the element with className "relative z-10 px-6 py-4"
and the inner div with className "max-w-7xl mx-auto flex items-center
justify-between") and delete it if unused, or replace the empty div children
with the appropriate navbar components.
- Around line 36-38: Extract the repeated separator div into a new React
component (e.g., Separator) that returns the existing structure (<div
className="relative z-10 w-full" aria-hidden="true"> with inner <div
className="w-full h-px bg-white/[0.08]" />) and replace all seven inline
occurrences in page.tsx with <Separator />; ensure you export/import the
Separator where needed and preserve accessibility attributes and classes so
styling and semantics remain identical.

In `@src/components/layout/Footer.tsx`:
- Around line 19-76: The Link list in Footer.tsx repeats identical props;
refactor by creating an array of link definitions (e.g., const footerLinks =
[{href: ACTA_OFFICIAL_LINKS.github, label: 'GitHub'}, ...] or
Object.entries(ACTA_OFFICIAL_LINKS] with a defined order) and map over it to
render a single Link element, passing the shared props (target="_blank",
rel="noopener noreferrer", className="hover:text-foreground transition-colors")
and using href and label from each item; update the render in the Footer
component to use footerLinks.map(...) so all seven Link instances are generated
from that array.

In `@src/components/ui/hero-parallax.tsx`:
- Around line 70-96: The ProductCard list items currently use product.title as
the React key which can collide if titles are not unique; update the three map
calls over firstRow, secondRow, and thirdRow to use a stable unique key such as
combining product.title with the map index (e.g., `${product.title}-${index}`)
or preferably product.id if available, ensuring you reference the map callback
parameter (index) when rendering ProductCard and set key accordingly for each
ProductCard instance.

In `@src/features/acta-scroll/ACTAScrollDown.tsx`:
- Around line 184-248: The three native <img> elements in ACTAScrollDown (the
images with src "/ACTA1.png", "/ACTA2.png", "/ACTA3.png" that use
loading="eager" and className="select-none pointer-events-none") bypass Next.js
optimization; either replace them with next/image (import Image and use <Image
src=... unoptimized priority /> to preserve animation while keeping format
negotiation and srcset) or, if you must keep native <img>, add explicit width
and height attributes on each tag (matching the displayed dimensions or
intrinsic image size) and keep loading="eager" to avoid layout shifts and retain
some performance; update the three img instances accordingly.

In `@src/features/social-proof/TrustedByStartups.tsx`:
- Around line 30-46: The three-column layout in TrustedByStartups.tsx is fixed
and can be cramped on small screens; update the container div that currently
uses "grid grid-cols-3 gap-12 items-center justify-items-center" to use
responsive grid classes (for example grid-cols-1 sm:grid-cols-2 md:grid-cols-3)
and adjust spacing if needed (e.g., reduce gap on small screens) so the
startups.map rendering and each logo wrapper (the div with key={startup.name}
and the Image component) flow properly on narrow viewports; ensure the Image
retains object-contain and max-height behavior to avoid overflow.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ed624cca-1cc4-4115-aeef-0d3c802faef0

📥 Commits

Reviewing files that changed from the base of the PR and between 9153066 and 09c7a2c.

⛔ Files ignored due to path filters (7)
  • package-lock.json is excluded by !**/package-lock.json
  • public/ACTA1.png is excluded by !**/*.png
  • public/ACTA2.png is excluded by !**/*.png
  • public/ACTA3.png is excluded by !**/*.png
  • public/startups/baf.png is excluded by !**/*.png
  • public/startups/grantfox.png is excluded by !**/*.png
  • public/startups/interactuar.png is excluded by !**/*.png
📒 Files selected for processing (62)
  • package.json
  • src/app/layout.tsx
  • src/app/page.tsx
  • src/components/effects/Aurora.tsx
  • src/components/effects/StarsBackground.tsx
  • src/components/layout/Footer.tsx
  • src/components/layout/ScrollProgress.tsx
  • src/components/ui/alert-dialog.tsx
  • src/components/ui/alert.tsx
  • src/components/ui/animated-shiny-text.tsx
  • src/components/ui/aspect-ratio.tsx
  • src/components/ui/avatar.tsx
  • src/components/ui/breadcrumb.tsx
  • src/components/ui/calendar.tsx
  • src/components/ui/carousel.tsx
  • src/components/ui/chart.tsx
  • src/components/ui/checkbox.tsx
  • src/components/ui/collapsible.tsx
  • src/components/ui/command.tsx
  • src/components/ui/context-menu.tsx
  • src/components/ui/dialog.tsx
  • src/components/ui/drawer.tsx
  • src/components/ui/dropdown-menu.tsx
  • src/components/ui/form.tsx
  • src/components/ui/hero-parallax.tsx
  • src/components/ui/hover-card.tsx
  • src/components/ui/input-otp.tsx
  • src/components/ui/label.tsx
  • src/components/ui/menubar.tsx
  • src/components/ui/navigation-menu.tsx
  • src/components/ui/pagination.tsx
  • src/components/ui/particles.tsx
  • src/components/ui/popover.tsx
  • src/components/ui/progress.tsx
  • src/components/ui/radio-group.tsx
  • src/components/ui/resizable.tsx
  • src/components/ui/scroll-area.tsx
  • src/components/ui/select.tsx
  • src/components/ui/separator.tsx
  • src/components/ui/sheet.tsx
  • src/components/ui/sidebar.tsx
  • src/components/ui/skeleton.tsx
  • src/components/ui/slider.tsx
  • src/components/ui/sonner.tsx
  • src/components/ui/switch.tsx
  • src/components/ui/table.tsx
  • src/components/ui/tabs.tsx
  • src/components/ui/toast.tsx
  • src/components/ui/toaster.tsx
  • src/components/ui/toggle-group.tsx
  • src/components/ui/toggle.tsx
  • src/components/ui/tooltip.tsx
  • src/features/acta-scroll/ACTAScrollDown.tsx
  • src/features/hero/AnimatedActa.tsx
  • src/features/hero/HeroParallax.tsx
  • src/features/hero/HeroSubtitle.tsx
  • src/features/social-proof/TrustedByStartups.tsx
  • src/features/value-proposition/ValueDetails.tsx
  • src/features/value-proposition/ValueProposition.tsx
  • src/hooks/use-mobile.ts
  • src/hooks/use-toast.ts
  • src/providers/theme-provider.tsx
💤 Files with no reviewable changes (54)
  • src/components/layout/ScrollProgress.tsx
  • src/components/ui/progress.tsx
  • src/components/effects/Aurora.tsx
  • src/components/ui/calendar.tsx
  • src/components/ui/select.tsx
  • src/components/ui/checkbox.tsx
  • src/components/ui/label.tsx
  • src/components/ui/toaster.tsx
  • src/hooks/use-mobile.ts
  • src/features/hero/HeroSubtitle.tsx
  • src/components/ui/drawer.tsx
  • src/components/ui/toggle-group.tsx
  • src/components/ui/table.tsx
  • src/components/ui/form.tsx
  • src/components/ui/switch.tsx
  • src/components/ui/popover.tsx
  • src/components/ui/toggle.tsx
  • src/components/ui/separator.tsx
  • src/components/ui/aspect-ratio.tsx
  • src/components/ui/carousel.tsx
  • src/components/ui/breadcrumb.tsx
  • src/components/ui/slider.tsx
  • src/components/ui/animated-shiny-text.tsx
  • src/components/ui/collapsible.tsx
  • src/components/ui/command.tsx
  • src/components/ui/input-otp.tsx
  • src/hooks/use-toast.ts
  • src/components/ui/alert.tsx
  • src/components/ui/radio-group.tsx
  • src/features/hero/AnimatedActa.tsx
  • src/components/ui/skeleton.tsx
  • src/components/ui/sonner.tsx
  • src/components/ui/particles.tsx
  • src/components/effects/StarsBackground.tsx
  • src/components/ui/avatar.tsx
  • src/components/ui/navigation-menu.tsx
  • src/components/ui/sheet.tsx
  • src/components/ui/context-menu.tsx
  • src/features/value-proposition/ValueProposition.tsx
  • src/components/ui/alert-dialog.tsx
  • src/features/value-proposition/ValueDetails.tsx
  • src/components/ui/tooltip.tsx
  • src/components/ui/chart.tsx
  • src/components/ui/tabs.tsx
  • src/components/ui/hover-card.tsx
  • src/components/ui/resizable.tsx
  • src/components/ui/toast.tsx
  • src/components/ui/dialog.tsx
  • src/components/ui/scroll-area.tsx
  • src/components/ui/dropdown-menu.tsx
  • src/providers/theme-provider.tsx
  • src/components/ui/menubar.tsx
  • src/components/ui/pagination.tsx
  • src/components/ui/sidebar.tsx

Updated the ProductCard component to utilize unoptimized image loading for the product thumbnail, improving performance and ensuring compatibility with AVIF format. Added a comment for clarity on the optimization approach.
Copy link
Copy Markdown

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

♻️ Duplicate comments (1)
src/components/ui/hero-parallax.tsx (1)

146-147: ⚠️ Potential issue | 🟡 Minor

Duplicate of prior finding: remove invalid -20 class token.

Line 147 still includes -20, which is not a valid standalone Tailwind utility and should be replaced/removed.

Is `-20` a valid standalone Tailwind CSS utility class (without a property prefix like `-mt-20`), and what should be used instead for width constraints?
🔧 Suggested fix
-        className="mt-6 text-center text-lg sm:text-xl md:text-2xl text-white/80 font-medium -20"
+        className="mt-6 text-center text-lg sm:text-xl md:text-2xl text-white/80 font-medium max-w-2xl mx-auto"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ui/hero-parallax.tsx` around lines 146 - 147, The className on
the motion.p element in the HeroParallax component contains an invalid
standalone token "-20"; remove that token and replace it with an appropriate
width/constraint utility such as a max-width class (e.g., "max-w-2xl") or a
margin/negative spacing utility with a prefix if negative spacing was intended
(e.g., "-mt-20"), updating the className on the motion.p element to only include
valid Tailwind utilities.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/components/ui/hero-parallax.tsx`:
- Around line 20-22: The current hard-coded slices (firstRow, secondRow,
thirdRow) truncate or underfill the gallery; replace them by computing rows
dynamically from products using a single itemsPerRow constant (e.g., 5) and
partitioning products into chunks (e.g., via a loop or helper) so you generate
as many rows as needed and include any remainder items; update any place that
references firstRow/secondRow/thirdRow to iterate over the new rows array to
avoid empty/trimmed rows and maintain consistent UI.

---

Duplicate comments:
In `@src/components/ui/hero-parallax.tsx`:
- Around line 146-147: The className on the motion.p element in the HeroParallax
component contains an invalid standalone token "-20"; remove that token and
replace it with an appropriate width/constraint utility such as a max-width
class (e.g., "max-w-2xl") or a margin/negative spacing utility with a prefix if
negative spacing was intended (e.g., "-mt-20"), updating the className on the
motion.p element to only include valid Tailwind utilities.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1c706e19-c8b4-4a5c-a5e4-4e834a48dd80

📥 Commits

Reviewing files that changed from the base of the PR and between 09c7a2c and d927b73.

📒 Files selected for processing (1)
  • src/components/ui/hero-parallax.tsx

Comment on lines +20 to +22
const firstRow = products.slice(0, 5);
const secondRow = products.slice(5, 10);
const thirdRow = products.slice(10, 15);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Hard-coded row slicing drops/underfills products.

Line 20–22 hard-limit the gallery to 15 items and can leave rows empty depending on input length. This causes avoidable UI inconsistency.

🔧 Suggested fix
-  const firstRow = products.slice(0, 5);
-  const secondRow = products.slice(5, 10);
-  const thirdRow = products.slice(10, 15);
+  const rowSize = Math.ceil(products.length / 3);
+  const firstRow = products.slice(0, rowSize);
+  const secondRow = products.slice(rowSize, rowSize * 2);
+  const thirdRow = products.slice(rowSize * 2);
📝 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
const firstRow = products.slice(0, 5);
const secondRow = products.slice(5, 10);
const thirdRow = products.slice(10, 15);
const rowSize = Math.ceil(products.length / 3);
const firstRow = products.slice(0, rowSize);
const secondRow = products.slice(rowSize, rowSize * 2);
const thirdRow = products.slice(rowSize * 2);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ui/hero-parallax.tsx` around lines 20 - 22, The current
hard-coded slices (firstRow, secondRow, thirdRow) truncate or underfill the
gallery; replace them by computing rows dynamically from products using a single
itemsPerRow constant (e.g., 5) and partitioning products into chunks (e.g., via
a loop or helper) so you generate as many rows as needed and include any
remainder items; update any place that references firstRow/secondRow/thirdRow to
iterate over the new rows array to avoid empty/trimmed rows and maintain
consistent UI.

@JosueBrenes
Copy link
Copy Markdown
Contributor Author

2026-03-18.18-57-39.mp4

@JosueBrenes JosueBrenes merged commit 1f981bb into develop Mar 20, 2026
6 checks passed
@JosueBrenes JosueBrenes deleted the feat/new-ui branch March 20, 2026 15:40
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.

1 participant