Conversation
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.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughLarge 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
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)
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
📝 Coding Plan
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. Comment Tip CodeRabbit can generate a title for your PR based on the changes.Add |
There was a problem hiding this comment.
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 | 🟡 MinorInconsistency:
lint-stagedESLint command doesn't enforce--max-warnings 0.The
lintandlint:checkscripts now enforce zero warnings, but thelint-stagedconfig (line 95) still useseslint --fixwithout--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.
ProductCardusesproduct.titleas 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 uniqueidfield.♻️ 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
Linkcomponents 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-3without responsive breakpoints. On narrow viewports (belowlg), 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 addingwidthandheightattributes to prevent layout shifts, or using<Image>withunoptimizedprop 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
⛔ Files ignored due to path filters (7)
package-lock.jsonis excluded by!**/package-lock.jsonpublic/ACTA1.pngis excluded by!**/*.pngpublic/ACTA2.pngis excluded by!**/*.pngpublic/ACTA3.pngis excluded by!**/*.pngpublic/startups/baf.pngis excluded by!**/*.pngpublic/startups/grantfox.pngis excluded by!**/*.pngpublic/startups/interactuar.pngis excluded by!**/*.png
📒 Files selected for processing (62)
package.jsonsrc/app/layout.tsxsrc/app/page.tsxsrc/components/effects/Aurora.tsxsrc/components/effects/StarsBackground.tsxsrc/components/layout/Footer.tsxsrc/components/layout/ScrollProgress.tsxsrc/components/ui/alert-dialog.tsxsrc/components/ui/alert.tsxsrc/components/ui/animated-shiny-text.tsxsrc/components/ui/aspect-ratio.tsxsrc/components/ui/avatar.tsxsrc/components/ui/breadcrumb.tsxsrc/components/ui/calendar.tsxsrc/components/ui/carousel.tsxsrc/components/ui/chart.tsxsrc/components/ui/checkbox.tsxsrc/components/ui/collapsible.tsxsrc/components/ui/command.tsxsrc/components/ui/context-menu.tsxsrc/components/ui/dialog.tsxsrc/components/ui/drawer.tsxsrc/components/ui/dropdown-menu.tsxsrc/components/ui/form.tsxsrc/components/ui/hero-parallax.tsxsrc/components/ui/hover-card.tsxsrc/components/ui/input-otp.tsxsrc/components/ui/label.tsxsrc/components/ui/menubar.tsxsrc/components/ui/navigation-menu.tsxsrc/components/ui/pagination.tsxsrc/components/ui/particles.tsxsrc/components/ui/popover.tsxsrc/components/ui/progress.tsxsrc/components/ui/radio-group.tsxsrc/components/ui/resizable.tsxsrc/components/ui/scroll-area.tsxsrc/components/ui/select.tsxsrc/components/ui/separator.tsxsrc/components/ui/sheet.tsxsrc/components/ui/sidebar.tsxsrc/components/ui/skeleton.tsxsrc/components/ui/slider.tsxsrc/components/ui/sonner.tsxsrc/components/ui/switch.tsxsrc/components/ui/table.tsxsrc/components/ui/tabs.tsxsrc/components/ui/toast.tsxsrc/components/ui/toaster.tsxsrc/components/ui/toggle-group.tsxsrc/components/ui/toggle.tsxsrc/components/ui/tooltip.tsxsrc/features/acta-scroll/ACTAScrollDown.tsxsrc/features/hero/AnimatedActa.tsxsrc/features/hero/HeroParallax.tsxsrc/features/hero/HeroSubtitle.tsxsrc/features/social-proof/TrustedByStartups.tsxsrc/features/value-proposition/ValueDetails.tsxsrc/features/value-proposition/ValueProposition.tsxsrc/hooks/use-mobile.tssrc/hooks/use-toast.tssrc/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.
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
src/components/ui/hero-parallax.tsx (1)
146-147:⚠️ Potential issue | 🟡 MinorDuplicate of prior finding: remove invalid
-20class 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
📒 Files selected for processing (1)
src/components/ui/hero-parallax.tsx
| const firstRow = products.slice(0, 5); | ||
| const secondRow = products.slice(5, 10); | ||
| const thirdRow = products.slice(10, 15); |
There was a problem hiding this comment.
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.
| 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.
2026-03-18.18-57-39.mp4 |
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:
src/app/page.tsx) is refactored to use new hero components (HeroParallaxDemo,ACTAScrollDown), a new animated headline withTextAnimate, and updated sections for value propositions, use cases, and trusted startups. Old components and decorative effects (likeParticles,AnimatedActa, andScrollProgress) 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:
Aurora,StarsBackground,ScrollProgress,alert-dialog.tsx, andalert.tsx) are deleted, reducing codebase clutter and improving maintainability. [1] [2] [3] [4] [5]Branding and Accessibility Improvements:
src/components/layout/Footer.tsx) is updated for consistent branding (changing "ACTA" to "Acta"), improved link styling, and simplified layout for official links.src/app/layout.tsx) addssuppressHydrationWarningto<html>and<body>tags to address hydration mismatches caused by browser extensions.Linting Configuration:
package.jsonare updated to fail on any warnings by adding the--max-warnings 0flag, enforcing stricter code quality during development and CI.Summary by CodeRabbit
New Features
Bug Fixes
Chores
Style