Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UpEase-Framework Section #5

Open
wants to merge 15 commits into
base: main
Choose a base branch
from
Open

UpEase-Framework Section #5

wants to merge 15 commits into from

Conversation

theeatch
Copy link
Collaborator

@theeatch theeatch commented May 20, 2024

Add Framework Section to the main site
Remove Pricing Page
Improve introduction animation
Add Aceternity UI library

Summary by CodeRabbit

  • New Features

    • Introduced FrameworkSection and IntroductionFramework components.
    • Added MacbookScroll component with dynamic scrolling effects.
    • Introduced Graph component for interactive product animations.
    • Added Boxes component for animated grid display.
  • Bug Fixes

    • Removed the "pricing" link from the NavbarBlack component.
  • Enhancements

    • Updated dependencies for improved performance and security.
    • Adjusted section IDs and commented out the Pricing component for better page structure.
  • Style

    • Updated styles and classNames across various components for a more polished look.
  • Chores

    • Updated .vscode/settings.json for explicit code actions on save.

Copy link

vercel bot commented May 20, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
upease-front-facing ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 11, 2024 4:15am

@Crimson-Blade
Copy link
Owner

Screenshot 2024-05-28 at 12 13 23 PM @theeatch could you fix?

Copy link

coderabbitai bot commented May 28, 2024

Walkthrough

The recent updates introduce several enhancements and adjustments across various files. Key changes include dependency updates in package.json, modifications to .vscode/settings.json, and the addition of new React components like FrameworkSection, IntroductionFramework, and MacbookScroll. Components were reorganized and enhanced with new features, while some were commented out or removed. These changes aim to improve the codebase's functionality, maintainability, and user experience.

Changes

Files/Paths Change Summary
.vscode/settings.json Changed "source.fixAll" value from true to "explicit" affecting code actions on save.
package.json Updated versions of multiple dependencies including clsx, framer-motion, react-icons, etc.
src/app/page.tsx Added new import statements, inserted FrameworkSection and IntroductionFramework components, adjusted section IDs, and commented out Pricing component.
src/app/sections/ams-section.tsx Commented out and added imports, modified component structure within StudentApp, and adjusted element rendering.
src/app/sections/framework-section.tsx Introduced FrameworkSection component rendering product information with descriptions.
src/app/sections/introduction-ams-section.tsx Removed commented-out code related to scroll animations and updated text content.
src/app/sections/introduction-framework-section.tsx Introduced IntroductionFramework component with Framer Motion animations and scroll effects.
src/app/sections/introduction-sla-section.tsx Removed useScroll and useTransform hooks and updated text content.
src/components/Graph.tsx Introduced Graph component displaying a dynamic graph of products with interactive animations.
src/components/Navbarblack.tsx Removed the link for "pricing" in the NavbarBlack component.
src/components/ui/macbook-scroll.tsx Added MacbookScroll component implementing scrolling effect with dynamic transformations.
src/app/sections/hero-section.tsx Added new functions for scrolling to specific elements, updated classNames and styles.
src/components/Navbar.tsx Added z-50 class for z-index control, adjusted image dimensions and styling.
src/components/ui/background-boxes.tsx Introduced Boxes component rendering a grid of animated boxes with random colors and icons.

Poem

In the land where code does thrive,
New components come alive.
Dependencies now up-to-date,
With animations smooth and great.
Sections, scrolls, and boxes bright,
A coder's dream, a pure delight.
🎉✨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

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: 9

Review Details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits Files that changed from the base of the PR and between 7c1773c and fccaa57.
Files ignored due to path filters (1)
  • public/svg/downarrow.svg is excluded by !**/*.svg
Files selected for processing (12)
  • .vscode/settings.json (1 hunks)
  • package.json (2 hunks)
  • src/app/page.tsx (2 hunks)
  • src/app/sections/framework-section.tsx (1 hunks)
  • src/app/sections/introduction-ams-section.tsx (1 hunks)
  • src/app/sections/introduction-sla-section.tsx (2 hunks)
  • src/components/Graph.tsx (1 hunks)
  • src/components/ui/Sticky-scroll-reveal.tsx (1 hunks)
  • src/components/ui/sparkles.tsx (1 hunks)
  • src/components/ui/tracing-beam.tsx (1 hunks)
  • src/styles/globals.css (3 hunks)
  • tailwind.config.ts (2 hunks)
Files skipped from review due to trivial changes (1)
  • src/app/sections/introduction-ams-section.tsx
Additional Context Used
Biome (26)
.vscode/settings.json (9)

8-8: Expected a property but instead found '// Tailwind CSS Autocomplete, add more if used in projects'.


9-9: End of file expected


9-9: End of file expected


9-14: End of file expected


14-14: End of file expected


15-15: End of file expected


15-15: End of file expected


15-15: End of file expected


15-16: End of file expected

src/app/page.tsx (1)

31-31: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing.

src/app/sections/introduction-sla-section.tsx (3)

37-45: Alternative text title element cannot be empty


75-75: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing.


44-44: Use Number.Infinity instead of the equivalent global.

src/components/Graph.tsx (3)

17-17: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing.


34-34: Avoid using the index of an array as key property in an element.


39-39: Avoid using the index of an array as key property in an element.

src/components/ui/Sticky-scroll-reveal.tsx (2)

21-21: Unexpected any. Specify a different type.


62-62: Avoid using the index of an array as key property in an element.

src/components/ui/sparkles.tsx (1)

84-84: Unexpected any. Specify a different type.

src/components/ui/tracing-beam.tsx (7)

90-98: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing.


99-108: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing.


118-118: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing.


119-119: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing.


120-120: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing.


121-121: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing.


8-9: The default import is only used as a type.

Additional comments not posted (12)
.vscode/settings.json (1)

6-6: Change in source.fixAll setting to "explicit" may require developers to manually trigger fixes.

src/app/page.tsx (3)

8-8: Import of FrameworkSection added. Ensure it is used appropriately in the component.


35-40: New section for FrameworkSection added. Verify alignment and styling with the rest of the page.

Verification successful

The recent script execution successfully identified the CSS classes applied to various sections in the JSX/TSX files. However, it did not provide the definitions of these classes from the CSS files. To ensure the new FrameworkSection aligns with the rest of the page, we need to verify the definitions of these CSS classes.


The previous script encountered a syntax error due to an unmatched quotation mark. Let's correct this and re-run the script to gather the necessary information about the CSS class definitions.


The recent script execution successfully identified the CSS class definitions used in the sections. The classes applied to the new FrameworkSection are consistent with those used in other sections of the page, ensuring alignment and styling consistency.

  • The class h-screen snap-mandatory snap-center bg-black is used in other sections, indicating consistent styling.
Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Check for consistent styling in sections.

# Test: Search for inconsistent styling in CSS files.
rg --type css 'section' | rg 'style'

Length of output: 34



Script:

#!/bin/bash
# Description: Identify all sections in JSX/TSX files and their CSS classes.

# Find all JSX/TSX files containing section elements and extract their class names.
rg --type-add 'jsx:*.{jsx,tsx}' --type jsx 'section' -l | xargs -I {} rg --no-filename --type jsx 'className=.*' {}

# Find the definitions of these CSS classes in CSS files.
rg --type css 'className=.*'

Length of output: 402



Script:

#!/bin/bash
# Description: Identify all sections in JSX/TSX files and their CSS classes.

# Find all JSX/TSX files containing section elements and extract their class names.
rg --glob '*.{jsx,tsx}' 'section' -l | xargs -I {} rg --no-filename 'className=.*' {}

# Find the definitions of these CSS classes in CSS files.
rg --type css 'className=.*'

Length of output: 10584



Script:

#!/bin/bash
# Description: Find the definitions of CSS classes used in sections.

# Extract unique class names from the previous output.
class_names=$(rg --glob '*.{jsx,tsx}' 'section' -l | xargs -I {} rg --no-filename 'className=.*' {} | grep -oP 'className=["\']\K[^"\']+' | sort | uniq)

# Search for these class names in CSS files.
for class in $class_names; do
  rg --type css "\.${class}"
done

Length of output: 93



Script:

#!/bin/bash
# Description: Find the definitions of CSS classes used in sections.

# Extract unique class names from the previous output.
class_names=$(rg --glob '*.{jsx,tsx}' 'section' -l | xargs -I {} rg --no-filename 'className=.*' {} | grep -oP 'className=["'"'"']\K[^"'"'"']+' | sort | uniq)

# Search for these class names in CSS files.
for class in $class_names; do
  rg --type css "\.${class}"
done

Length of output: 28069


50-55: Commented out Pricing section. Confirm this is intentional and check for related dead code.

package.json (1)

21-33: New dependencies added. Ensure they are necessary and check for potential version conflicts.

tailwind.config.ts (1)

60-60: Plugins configuration updated. Verify that all plugins are configured correctly and are necessary.

src/app/sections/framework-section.tsx (1)

6-6: FrameworkSection component added. Ensure it integrates well with the rest of the application.

src/app/sections/introduction-sla-section.tsx (3)

7-7: Ensure the type annotation for targetRef is appropriate for its usage throughout the component.


14-21: The handleClick function is a good addition for smooth scrolling. Ensure that it's being called correctly in the component.


33-33: The onClick handler is correctly attached to trigger handleClick. Good implementation.

src/styles/globals.css (2)

19-25: Good implementation of styles to hide scrollbars across different browsers.


Line range hint 44-73: New color variables have been added. Ensure these colors are consistent with the design system of the project.

/>

{/* Radial Gradient to prevent sharp edges */}
<div className='absolute inset-0 h-full w-full bg-black [mask-image:radial-gradient(350px_200px_at_top,transparent_20%,white)]'></div>
Copy link

Choose a reason for hiding this comment

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

JSX elements without children should be self-closing to follow best practices.

- <div className='absolute inset-0 h-full w-full bg-black [mask-image:radial-gradient(350px_200px_at_top,transparent_20%,white)]'></div>
+ <div className='absolute inset-0 h-full w-full bg-black [mask-image:radial-gradient(350px_200px_at_top,transparent_20%,white)]' />

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.

Suggested change
<div className='absolute inset-0 h-full w-full bg-black [mask-image:radial-gradient(350px_200px_at_top,transparent_20%,white)]'></div>
<div className='absolute inset-0 h-full w-full bg-black [mask-image:radial-gradient(350px_200px_at_top,transparent_20%,white)]' />

Comment on lines 37 to 45
<motion.svg
className='hover:cursor-pointer'
xmlns='http://www.w3.org/2000/svg'
height='30'
width='20'
viewBox='0 0 320 512'
animate={{ y: [0, -10, 0, -5, 0, -2.5, 0] }}
transition={{ repeat: Infinity, duration: 1 }}
>
Copy link

Choose a reason for hiding this comment

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

The SVG element should have an accessible name or title for better accessibility.

<svg
  className='hover:cursor-pointer'
  xmlns='http://www.w3.org/2000/svg'
  height='30'
  width='20'
  viewBox='0 0 320 512'
  animate={{ y: [0, -10, 0, -5, 0, -2.5, 0] }}
  transition={{ repeat: Infinity, duration: 1 }}
+ aria-label="Scroll indicator"
>

Committable suggestion was skipped due low confidence.

className?: string;
}) => {
const ref = useRef<HTMLDivElement>(null);
const { scrollYProgress } = useScroll({
Copy link

Choose a reason for hiding this comment

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

Avoid using any as a type for refs. Specify a more precise type.

- const ref = useRef<any>(null);
+ const ref = useRef<HTMLDivElement>(null);

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.

Suggested change
const { scrollYProgress } = useScroll({
const { scrollYProgress } = useScroll({
const ref = useRef<HTMLDivElement>(null);

delay: 0.5,
}}
animate={{
boxShadow:
Copy link

Choose a reason for hiding this comment

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

Using the index as a key in React lists can lead to performance issues and bugs if the order of items changes. Consider using a unique identifier.

- <div key={item.title + index} className='my-64'>
+ <div key={item.title} className='my-64'>

Committable suggestion was skipped due low confidence.

<motion.div className='div relative flex h-[40rem] justify-center px-4'>
<div className='max-w-full'>
{content.map((item, index) => (
<div key={item.title + index} className='my-64'>
Copy link

Choose a reason for hiding this comment

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

Using the index as a key in React lists can lead to performance issues and bugs if the order of items changes. Consider using a unique identifier.

- <div key={item.title + index} className='my-64'>
+ <div key={item.title} className='my-64'>

Committable suggestion was skipped due low confidence.

}) => {
const [activeCard, setActiveCard] = React.useState(0);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const ref = useRef<any>(null);
Copy link

Choose a reason for hiding this comment

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

Avoid using any as a type for refs. Specify a more precise type.

- const ref = useRef<any>(null);
+ const ref = useRef<HTMLDivElement>(null);

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.

Suggested change
const ref = useRef<any>(null);
const ref = useRef<HTMLDivElement>(null);

enable: false,
mode: 'repulse',
},
resize: true as any,
Copy link

Choose a reason for hiding this comment

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

Avoid using any as a type for dynamic properties. Specify a more precise type.

- resize: true as any,
+ resize: true as boolean,

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.

Suggested change
resize: true as any,
resize: true as boolean,

import { motion } from 'framer-motion';
import React from 'react';

function Graph({ highlightedNumber }: { highlightedNumber: number }) {
Copy link

Choose a reason for hiding this comment

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

Tip

Codebase Verification

The verification process did not reveal any tests specifically targeting edge cases for highlightedNumber in the Graph component. Additionally, the inspection of the Graph component's implementation did not show explicit handling for edge cases of highlightedNumber.

  • Ensure that the Graph component includes logic to handle edge cases for highlightedNumber, such as when it is out of the expected range or when it is not a valid number.
  • Add tests to cover these edge cases to ensure the robustness of the component.
Analysis chain

Graph component added. Ensure it handles edge cases for highlightedNumber.

Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify edge case handling for `highlightedNumber`.

# Test: Search for tests related to `highlightedNumber`.
rg 'highlightedNumber' --type js | rg 'test'

Length of output: 42



Script:

#!/bin/bash
# Description: Verify edge case handling for `highlightedNumber` in the Graph component.

# Step 1: Search for tests related to the Graph component.
rg 'Graph' --type js | rg 'test'

# Step 2: Inspect the Graph component for edge case handling logic.
ast-grep --lang tsx --pattern $'function Graph({ highlightedNumber }: { highlightedNumber: number }) {
  $$$
}' --debug

# Step 3: Check for any related utility functions or components that might handle edge cases.
rg 'highlightedNumber' --type js

Length of output: 391



Script:

#!/bin/bash
# Description: Verify edge case handling for `highlightedNumber` in the Graph component.

# Step 1: Search for tests related to the Graph component.
rg 'Graph' --type js | rg 'test'

# Step 2: Inspect the Graph component for edge case handling logic.
ast-grep --lang tsx --pattern $'function Graph({ highlightedNumber }: { highlightedNumber: number }) {
  $$$
}' --debug-query

# Step 3: Check for any related utility functions or components that might handle edge cases.
rg 'highlightedNumber' --type js

Length of output: 4121

theeatch added 2 commits June 1, 2024 12:21
refactor: remove graph
style: appply different style to framework
Repository owner deleted a comment from coderabbitai bot Jun 2, 2024
style(framework): change from stickyreveal to parallax
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: 4

Outside diff range and nitpick comments (2)
src/components/Navbar.tsx (1)

Line range hint 14-73: Updated the Navbar component with new links and accessibility improvements. Ensure that all links are correctly pointing to the intended sections and that the tabIndex issues are addressed.

- <label tabIndex={0} className='btn btn-ghost z-50 lg:hidden'>
+ <button className='btn btn-ghost z-50 lg:hidden'>
- <ul tabIndex={0} className='menu menu-sm dropdown-content  bg-base-100 rounded-box z-[1] mt-3 w-52 p-2 shadow'>
+ <ul className='menu menu-sm dropdown-content  bg-base-100 rounded-box z-[1] mt-3 w-52 p-2 shadow'>
- <li tabIndex={0}>
+ <li>
Tools
Biome

[error] 15-15: The HTML element label is non-interactive. Do not use tabIndex. (lint/a11y/noNoninteractiveTabindex)

Adding non-interactive elements to the keyboard navigation flow can confuse users.
Unsafe fix: Remove the tabIndex attribute.

src/components/Graph.tsx (1)

26-33: Consider removing or clarifying the purpose of the commented-out code related to translateX and translateXReverse.

This helps maintain the cleanliness and readability of the codebase.

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between fccaa57 and ed30df1.

Files selected for processing (9)
  • src/app/page.tsx (2 hunks)
  • src/app/sections/framework-section.tsx (1 hunks)
  • src/app/sections/hero-section.tsx (6 hunks)
  • src/app/sections/introduction-sla-section.tsx (2 hunks)
  • src/components/Graph.tsx (1 hunks)
  • src/components/Navbar.tsx (4 hunks)
  • src/components/ui/background-boxes.tsx (1 hunks)
  • src/styles/globals.css (3 hunks)
  • tailwind.config.ts (2 hunks)
Files skipped from review due to trivial changes (2)
  • src/styles/globals.css
  • tailwind.config.ts
Additional context used
Biome
src/components/ui/background-boxes.tsx

[error] 48-55: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 32-32: Avoid using the index of an array as key property in an element. (lint/suspicious/noArrayIndexKey)

This is the source of the key value.

The order of the items may change, and this also affects performances and component state.
Check the React documentation.


[error] 44-44: Avoid using the index of an array as key property in an element. (lint/suspicious/noArrayIndexKey)

This is the source of the key value.

The order of the items may change, and this also affects performances and component state.
Check the React documentation.

src/app/sections/introduction-sla-section.tsx

[error] 35-43: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

src/components/Navbar.tsx

[error] 15-15: The HTML element label is non-interactive. Do not use tabIndex. (lint/a11y/noNoninteractiveTabindex)

Adding non-interactive elements to the keyboard navigation flow can confuse users.
Unsafe fix: Remove the tabIndex attribute.


[error] 16-22: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 32-32: The HTML element ul is non-interactive. Do not use tabIndex. (lint/a11y/noNoninteractiveTabindex)

Adding non-interactive elements to the keyboard navigation flow can confuse users.
Unsafe fix: Remove the tabIndex attribute.


[error] 80-80: The HTML element li is non-interactive. Do not use tabIndex. (lint/a11y/noNoninteractiveTabindex)

Adding non-interactive elements to the keyboard navigation flow can confuse users.
Unsafe fix: Remove the tabIndex attribute.


[error] 93-93: The HTML element li is non-interactive. Do not use tabIndex. (lint/a11y/noNoninteractiveTabindex)

Adding non-interactive elements to the keyboard navigation flow can confuse users.
Unsafe fix: Remove the tabIndex attribute.

src/components/Graph.tsx

[error] 138-142: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 153-157: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 67-73: Missing key property for this element in iterable. (lint/correctness/useJsxKeyInIterable)

The order of the items may change, and having a key can help React identify which item was moved.
Check the React documentation.

Additional comments not posted (12)
src/app/page.tsx (4)

8-8: Added import for FrameworkSection. Ensure that this component is properly tested and documented.


38-44: Ensure that the reordering of section IDs does not break any existing JavaScript functionality or CSS styling that relies on these IDs.

Verification successful

"""

"""


The search for references to the section IDs upease-section-4, upease-section-5, and upease-section-6 in JavaScript, CSS, and HTML files, as well as dynamic references in JavaScript files, did not produce any output. This indicates that there are no direct or dynamic dependencies on these section IDs in the codebase.

Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Check for any JavaScript or CSS that relies on old section IDs.

# Test: Search for old section IDs in JavaScript and CSS files.
rg --type js --type css 'upease-section-4|upease-section-5|upease-section-6'

Length of output: 78



Script:

#!/bin/bash
# Description: Check for any JavaScript, CSS, or HTML that relies on old section IDs.

# Test: Search for old section IDs in JavaScript, CSS, and HTML files.
rg --type js --type css --type html 'upease-section-4|upease-section-5|upease-section-6'

# Test: Search for dynamic references to section IDs in JavaScript files.
rg --type js 'getElementById|querySelector' | rg 'upease-section-4|upease-section-5|upease-section-6'

Length of output: 194


35-37: Added a new FrameworkSection in the page layout. Verify that the section integrates well with the rest of the page and adheres to the site's responsive design principles.


47-52: The Pricing section has been commented out. Confirm that this is intentional and check if there are any related backend or frontend functionalities that should also be disabled or removed.

src/components/ui/background-boxes.tsx (1)

7-71: Introduced BoxesCore and Boxes components. Ensure that the random color generation function is efficient and does not cause re-renders that could affect performance.

Tools
Biome

[error] 48-55: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 32-32: Avoid using the index of an array as key property in an element. (lint/suspicious/noArrayIndexKey)

This is the source of the key value.

The order of the items may change, and this also affects performances and component state.
Check the React documentation.


[error] 44-44: Avoid using the index of an array as key property in an element. (lint/suspicious/noArrayIndexKey)

This is the source of the key value.

The order of the items may change, and this also affects performances and component state.
Check the React documentation.

src/app/sections/introduction-sla-section.tsx (3)

5-5: Added type annotation to targetRef. This is a good practice for better type safety in TypeScript.


12-19: Added a new handleClick function to handle smooth scrolling. Ensure that this function is tested, especially its interaction with the targetRef.


35-48: The SVG element should have an accessible name or title for better accessibility. This was previously flagged and should be addressed.

Tools
Biome

[error] 35-43: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

src/app/sections/framework-section.tsx (1)

3-84: Introduced FrameworkSection with a dependency on the Graph component. Ensure that the Graph component is robust and well-integrated within this section. Also, verify that the hardcoded lorem ipsum text is intended to be placeholder text or if it needs to be replaced with actual content.

src/app/sections/hero-section.tsx (2)

7-7: Added the Boxes component to the Hero section. Ensure this component's animations do not affect the performance of the hero section.


55-72: Updated text content and added new buttons with accessibility improvements. Ensure that the text meets the branding guidelines and that the buttons are accessible.

src/components/Graph.tsx (1)

99-112: LGTM! The Header component is well-implemented.

Comment on lines 67 to 73
<>
<ProductCard
product={product}
// translate={translateX}
key={product.title}
/>
</>
Copy link

Choose a reason for hiding this comment

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

Add a key property to the React element in the iterable.

- <>
+ <React.Fragment key={product.title}>

This helps React identify which items have changed, are added, or are removed, which can improve performance and prevent potential issues with component state.

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.

Suggested change
<>
<ProductCard
product={product}
// translate={translateX}
key={product.title}
/>
</>
<React.Fragment key={product.title}>
<ProductCard
product={product}
// translate={translateX}
key={product.title}
/>
</React.Fragment>
Tools
Biome

[error] 67-73: Missing key property for this element in iterable. (lint/correctness/useJsxKeyInIterable)

The order of the items may change, and having a key can help React identify which item was moved.
Check the React documentation.

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

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between ed30df1 and 1ec486d.

Files selected for processing (2)
  • src/app/sections/framework-section.tsx (1 hunks)
  • src/components/Graph.tsx (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • src/app/sections/framework-section.tsx
Additional context used
Biome
src/components/Graph.tsx

[error] 138-142: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 153-157: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 67-73: Missing key property for this element in iterable. (lint/correctness/useJsxKeyInIterable)

The order of the items may change, and having a key can help React identify which item was moved.
Check the React documentation.

Additional comments not posted (2)
src/components/Graph.tsx (2)

5-96: The implementation of the Graph component looks solid, but consider cleaning up any commented-out code if it's not intended for future use.

Tools
Biome

[error] 67-73: Missing key property for this element in iterable. (lint/correctness/useJsxKeyInIterable)

The order of the items may change, and having a key can help React identify which item was moved.
Check the React documentation.


99-112: The Header component is implemented correctly and follows best practices for styling and structure.

Comment on lines 138 to 142
<svg
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 448 512'
className=' h-12 w-12 text-white drop-shadow-md '
>
Copy link

Choose a reason for hiding this comment

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

Add alternative text or titles to SVG elements for accessibility.

+ <title>Forward Icon</title>
+ <title>Backward Icon</title>

For accessibility purposes, SVGs should have an alternative text, provided via a title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

Also applies to: 153-157

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.

Suggested change
<svg
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 448 512'
className=' h-12 w-12 text-white drop-shadow-md '
>
<svg
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 448 512'
className=' h-12 w-12 text-white drop-shadow-md '
>
<title>Forward Icon</title>
```
Additionally, the same change should be applied to lines 153-157 as mentioned in the review comment. Here is the updated code snippet for those lines:
```suggestion
<svg
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 448 512'
className=' h-12 w-12 text-white drop-shadow-md '
>
<title>Backward Icon</title>
Tools
Biome

[error] 138-142: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

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: 11

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 1ec486d and 53eb82e.

Files ignored due to path filters (8)
  • public/images/STUDENT.png is excluded by !**/*.png
  • public/images/STUDENT.svg is excluded by !**/*.svg
  • public/svg/dArrow.svg is excluded by !**/*.svg
  • public/svg/lArrow.svg is excluded by !**/*.svg
  • public/svg/leftarrow.svg is excluded by !**/*.svg
  • public/svg/rArrow.svg is excluded by !**/*.svg
  • public/svg/upDownArrow.svg is excluded by !**/*.svg
  • yarn.lock is excluded by !**/*.lock
Files selected for processing (10)
  • package.json (2 hunks)
  • src/app/page.tsx (2 hunks)
  • src/app/sections/ams-section.tsx (2 hunks)
  • src/app/sections/framework-section.tsx (1 hunks)
  • src/app/sections/introduction-ams-section.tsx (1 hunks)
  • src/app/sections/introduction-framework-section.tsx (1 hunks)
  • src/app/sections/introduction-sla-section.tsx (1 hunks)
  • src/components/Graph.tsx (1 hunks)
  • src/components/Navbarblack.tsx (1 hunks)
  • src/components/ui/macbook-scroll.tsx (1 hunks)
Files skipped from review due to trivial changes (1)
  • src/app/sections/introduction-ams-section.tsx
Files skipped from review as they are similar to previous changes (2)
  • src/app/sections/framework-section.tsx
  • src/app/sections/introduction-sla-section.tsx
Additional context used
Biome
src/app/page.tsx

[error] 32-32: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead

src/app/sections/introduction-framework-section.tsx

[error] 35-43: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

src/components/Graph.tsx

[error] 81-93: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 101-113: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 121-133: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 159-170: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 178-184: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 192-203: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 235-242: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 253-259: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 285-297: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 306-318: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 327-339: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

src/components/ui/macbook-scroll.tsx

[error] 116-116: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead


[error] 183-188: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead


[error] 513-513: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead


[error] 605-612: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead


[error] 618-625: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 652-659: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

Additional comments not posted (6)
src/app/page.tsx (1)

8-8: Review of added imports and structural changes.

The additions of FrameworkSection and IntroductionFramework align with the PR's objectives to enhance the site's structure. The structural changes, including the reordering of section IDs and the commenting out of the Pricing component, are correctly implemented.

Also applies to: 11-11, 32-32, 34-38, 42-42, 45-45, 48-48, 56-56

package.json (1)

21-34: Review of dependency updates.

The updates and additions to the dependencies in package.json are aligned with the PR's objectives to update and enhance the project's functionality. All version changes are correctly formatted and the new additions are appropriately placed within the dependencies object.

Also applies to: 61-61

src/app/sections/ams-section.tsx (2)

4-5: Ensure that the new imports are used appropriately in the component.

The addition of NavbarBlack and MacbookScroll seems to be correctly integrated into the component's structure.


96-107: Review the integration of MacbookScroll component.

The MacbookScroll component is integrated well with appropriate props. Ensure that the src and title props are correctly fetching and displaying data.

src/components/Graph.tsx (2)

15-36: Ensure animation variants are optimized for performance.

The animation variants are well-defined. Consider checking the performance impact on different devices.


385-409: Review the DescriptionBox component for potential improvements.

The DescriptionBox component is implemented with appropriate styling and transitions. Ensure that the translate prop is being used correctly to position the component as expected.

@@ -1,16 +1,19 @@
import Image from 'next/image';
// import Image from 'next/image';
Copy link

Choose a reason for hiding this comment

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

Remove commented-out imports if they are no longer needed.

This helps in keeping the codebase clean and maintainable.

Also applies to: 6-6, 8-8

Comment on lines +5 to +12
export const Graph = ({
products,
}: {
products: {
title: string;
description: string;
}[];
}) => {
Copy link

Choose a reason for hiding this comment

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

Define PropTypes or TypeScript interfaces for better type safety.

The Graph component accepts products as props but does not have PropTypes or TypeScript interfaces defined, which can lead to potential bugs if incorrect props are passed.

Comment on lines +81 to +93
<motion.svg
variants={variants.fromLeft}
initial='initial'
whileInView='animate'
transition={{ duration: 0.7 }}
viewport={{ once: true }}
width='44'
height='55'
viewBox='0 0 44 55'
fill='none'
xmlns='http://www.w3.org/2000/svg'
className='hidden md:h-auto md:w-auto lg:block'
>
Copy link

Choose a reason for hiding this comment

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

Add alternative text to SVG elements for accessibility.

+ <title>Descriptive Title</title>

For accessibility, ensure that all SVG elements contain a <title> element or other appropriate attributes like aria-label to provide alternative text.

Also applies to: 101-113, 121-133, 159-170, 178-184, 192-203, 235-242, 253-259, 285-297, 306-318, 327-339

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
<motion.svg
variants={variants.fromLeft}
initial='initial'
whileInView='animate'
transition={{ duration: 0.7 }}
viewport={{ once: true }}
width='44'
height='55'
viewBox='0 0 44 55'
fill='none'
xmlns='http://www.w3.org/2000/svg'
className='hidden md:h-auto md:w-auto lg:block'
>
<motion.svg
variants={variants.fromLeft}
initial='initial'
whileInView='animate'
transition={{ duration: 0.7 }}
viewport={{ once: true }}
width='44'
height='55'
viewBox='0 0 44 55'
fill='none'
xmlns='http://www.w3.org/2000/svg'
className='hidden md:h-auto md:w-auto lg:block'
>
<title>Descriptive Title</title>
Tools
Biome

[error] 81-93: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

src/app/page.tsx Outdated
@@ -28,25 +29,31 @@ export default function HomePage() {
<section id='upease-section-1'>
<Hero />
</section>
<div className='spacer' style={{ height: '100vh' }}></div>
<div className='spacer h-screen'></div>
Copy link

Choose a reason for hiding this comment

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

Use self-closing tags for elements without children.

- <div className='spacer h-screen'></div>
+ <div className='spacer h-screen' />

This change addresses the linting error regarding the use of self-closing elements for JSX elements without children.

Committable suggestion

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

Suggested change
<div className='spacer h-screen'></div>
<div className='spacer h-screen' />
Tools
Biome

[error] 32-32: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead

<span className='block'>command</span>
</div>
</KBtn>
<KBtn className='w-[8.2rem]'></KBtn>
Copy link

Choose a reason for hiding this comment

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

Convert the JSX element to a self-closing tag for better readability and adherence to JSX best practices.

- <KBtn className='w-[8.2rem]'></KBtn>
+ <KBtn className='w-[8.2rem]' />
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
<KBtn className='w-[8.2rem]'></KBtn>
<KBtn className='w-[8.2rem]' />
Tools
Biome

[error] 513-513: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead

…to hero section

style: improve graph and navbar styling
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: 13

Outside diff range and nitpick comments (2)
src/app/page.tsx (1)

51-57: The commented-out Pricing section should be removed if it is no longer needed to keep the codebase clean.

src/components/Navbar.tsx (1)

Line range hint 18-22: SVG elements should have an accessible name or title for better accessibility. Add aria-label or aria-labelledby to improve accessibility.

<svg
  xmlns='http://www.w3.org/2000/svg'
  className='mt-2 h-5 w-5'
  fill='none'
  viewBox='0 0 24 24'
  stroke='currentColor'
+ aria-label="Menu Icon"
>
  <path
    strokeLinecap='round'
    strokeLinejoin='round'
    strokeWidth='2'
    d='M4 6h16M4 12h8m-8 6h16'
  />
</svg>
Tools
Biome

[error] 15-15: The HTML element label is non-interactive. Do not use tabIndex. (lint/a11y/noNoninteractiveTabindex)

Adding non-interactive elements to the keyboard navigation flow can confuse users.
Unsafe fix: Remove the tabIndex attribute.

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 53eb82e and 267c720.

Files selected for processing (9)
  • src/app/page.tsx (2 hunks)
  • src/app/sections/hero-section.tsx (7 hunks)
  • src/app/sections/introduction-framework-section.tsx (1 hunks)
  • src/app/sections/introduction-sla-section.tsx (1 hunks)
  • src/components/Graph.tsx (1 hunks)
  • src/components/Navbar.tsx (5 hunks)
  • src/components/Navbarblack.tsx (2 hunks)
  • src/components/ui/background-boxes.tsx (1 hunks)
  • src/components/ui/macbook-scroll.tsx (1 hunks)
Files skipped from review as they are similar to previous changes (2)
  • src/app/sections/introduction-sla-section.tsx
  • src/components/Navbarblack.tsx
Additional context used
Biome
src/app/page.tsx

[error] 32-32: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead

src/components/ui/background-boxes.tsx

[error] 48-55: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 32-32: Avoid using the index of an array as key property in an element. (lint/suspicious/noArrayIndexKey)

This is the source of the key value.

The order of the items may change, and this also affects performances and component state.
Check the React documentation.


[error] 44-44: Avoid using the index of an array as key property in an element. (lint/suspicious/noArrayIndexKey)

This is the source of the key value.

The order of the items may change, and this also affects performances and component state.
Check the React documentation.

src/app/sections/introduction-framework-section.tsx

[error] 35-43: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

src/components/Navbar.tsx

[error] 15-15: The HTML element label is non-interactive. Do not use tabIndex. (lint/a11y/noNoninteractiveTabindex)

Adding non-interactive elements to the keyboard navigation flow can confuse users.
Unsafe fix: Remove the tabIndex attribute.


[error] 16-22: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 32-32: The HTML element ul is non-interactive. Do not use tabIndex. (lint/a11y/noNoninteractiveTabindex)

Adding non-interactive elements to the keyboard navigation flow can confuse users.
Unsafe fix: Remove the tabIndex attribute.


[error] 80-80: The HTML element li is non-interactive. Do not use tabIndex. (lint/a11y/noNoninteractiveTabindex)

Adding non-interactive elements to the keyboard navigation flow can confuse users.
Unsafe fix: Remove the tabIndex attribute.


[error] 93-93: The HTML element li is non-interactive. Do not use tabIndex. (lint/a11y/noNoninteractiveTabindex)

Adding non-interactive elements to the keyboard navigation flow can confuse users.
Unsafe fix: Remove the tabIndex attribute.

src/app/sections/hero-section.tsx

[error] 83-83: Provide an explicit type prop for the button element. (lint/a11y/useButtonType)

The default type of a button is submit, which causes the submission of a form when placed inside a form element. This is likely not the behaviour that you want inside a React application.
Allowed button types are: submit, button or reset

src/components/Graph.tsx

[error] 81-93: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 101-113: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 121-133: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 159-170: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 178-184: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 192-203: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 235-242: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 253-259: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 285-297: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 306-318: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 327-339: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

src/components/ui/macbook-scroll.tsx

[error] 122-122: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead


[error] 189-194: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead


[error] 519-519: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead


[error] 611-618: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead


[error] 624-631: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.


[error] 658-665: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

Additional comments not posted (8)
src/app/page.tsx (3)

8-8: Ensure that the new imports are used correctly in the component.

Also applies to: 11-11


34-34: The new components IntroductionFramework and FrameworkSection are correctly placed within their respective sections.

Also applies to: 37-37


42-42: Sections are correctly updated with new IDs following the removal of the Pricing section.

Also applies to: 45-45, 48-48

src/app/sections/hero-section.tsx (3)

7-7: The addition of the Boxes component enhances the visual appeal of the hero section. Ensure it aligns with the overall design and performance goals.


35-43: The function handleClick2 is well-implemented for smooth scrolling. Ensure that the target element ID corresponds to the correct section.


45-53: The function handleClick7 is similar to handleClick2 and correctly implements smooth scrolling. Verify that the target section ID exists and is correctly assigned.

src/components/Graph.tsx (1)

5-12: The Graph component is well-structured with clear prop types. Ensure that the products array is always provided to avoid runtime errors.

src/components/ui/macbook-scroll.tsx (1)

519-519: Convert the JSX element to a self-closing tag for better readability and adherence to JSX best practices.

- <KBtn className='w-[8.2rem]'></KBtn>
+ <KBtn className='w-[8.2rem]' />

Likely invalid or redundant comment.

Tools
Biome

[error] 519-519: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead

>
Read: Introducing UpEase
<button onClick={handleClick2}>Read: Introducing UpEase</button>
Copy link

Choose a reason for hiding this comment

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

Specify the button type to prevent unintended form submissions.

- <button onClick={handleClick2}>Read: Introducing UpEase</button>
+ <button type="button" onClick={handleClick2}>Read: Introducing UpEase</button>
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
<button onClick={handleClick2}>Read: Introducing UpEase</button>
<button type="button" onClick={handleClick2}>Read: Introducing UpEase</button>
Tools
Biome

[error] 83-83: Provide an explicit type prop for the button element. (lint/a11y/useButtonType)

The default type of a button is submit, which causes the submission of a form when placed inside a form element. This is likely not the behaviour that you want inside a React application.
Allowed button types are: submit, button or reset

Comment on lines +189 to +194
<div
className='mx-auto my-1 h-32 w-[40%] rounded-xl'
style={{
boxShadow: '0px 0px 1px 1px #00000020 inset',
}}
></div>
Copy link

Choose a reason for hiding this comment

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

Convert the JSX element to a self-closing tag for better readability and adherence to JSX best practices.

- <div className='mx-auto my-1 h-32  w-[40%] rounded-xl' style={{ boxShadow: '0px 0px 1px 1px #00000020 inset', }}></div>
+ <div className='mx-auto my-1 h-32  w-[40%] rounded-xl' style={{ boxShadow: '0px 0px 1px 1px #00000020 inset', }} />
Committable suggestion

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

Suggested change
<div
className='mx-auto my-1 h-32 w-[40%] rounded-xl'
style={{
boxShadow: '0px 0px 1px 1px #00000020 inset',
}}
></div>
<div
className='mx-auto my-1 h-32 w-[40%] rounded-xl'
style={{
boxShadow: '0px 0px 1px 1px #00000020 inset',
}}
/>
Tools
Biome

[error] 189-194: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead

Comment on lines +624 to +631
<svg
fill='none'
version='1.1'
id='icon'
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 32 32'
className={className}
>
Copy link

Choose a reason for hiding this comment

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

Add an alternative text or title element to the SVG for accessibility.

<svg
  fill='none'
  version='1.1'
  id='icon'
  xmlns='http://www.w3.org/2000/svg'
  viewBox='0 0 32 32'
  className={className}
>
+ <title>Option Key Icon</title>
  <rect
    stroke='currentColor'
    strokeWidth={2}
    x='18'
    y='5'
    width='10'
    height='2'
  />
  <polygon
    stroke='currentColor'
    strokeWidth={2}
    points='10.6,5 4,5 4,7 9.4,7 18.4,27 28,27 28,25 19.6,25 '
  />
  <rect
    id='_Transparent_Rectangle_'
    className='st0'
    width='32'
    height='32'
    stroke='none'
  />
</svg>
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
<svg
fill='none'
version='1.1'
id='icon'
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 32 32'
className={className}
>
<svg
fill='none'
version='1.1'
id='icon'
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 32 32'
className={className}
>
<title>Option Key Icon</title>
<rect
stroke='currentColor'
strokeWidth={2}
x='18'
y='5'
width='10'
height='2'
/>
<polygon
stroke='currentColor'
strokeWidth={2}
points='10.6,5 4,5 4,7 9.4,7 18.4,27 28,27 28,25 19.6,25 '
/>
<rect
id='_Transparent_Rectangle_'
className='st0'
width='32'
height='32'
stroke='none'
/>
</svg>
Tools
Biome

[error] 624-631: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

<section className=' bg-black' id='upease-section-3'>
<FrameworkSection />
</section>
<section className=' bg-black' id='upease-section-3'>
Copy link

Choose a reason for hiding this comment

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

Duplicate ID 'upease-section-3' used for multiple sections. Consider using unique IDs for each section to avoid potential issues with CSS and JavaScript.

@@ -28,26 +29,32 @@
<section id='upease-section-1'>
<Hero />
</section>
<div className='spacer' style={{ height: '100vh' }}></div>
<section className='bg-black ' id='upease-section-2'>
<div className='spacer z-0 h-screen'></div>
Copy link

Choose a reason for hiding this comment

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

Use a self-closing tag for the div element since it has no children.

- <div className='spacer z-0 h-screen'></div>
+ <div className='spacer z-0 h-screen' />
Committable suggestion

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

Suggested change
<div className='spacer z-0 h-screen'></div>
<div className='spacer z-0 h-screen' />
Tools
Biome

[error] 32-32: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead

Comment on lines +385 to +409
export const DescriptionBox = ({
products,
translate,
}: {
products: {
title: string;
description: string;
};
translate: number;
}) => {
return (
<motion.div
className='absolute mt-4 flex h-[10rem] w-[20rem] flex-col gap-2 rounded-xl bg-gray-400 p-2 opacity-0 transition-opacity duration-500 group-hover:opacity-100'
style={{ x: translate }}
transition={{ duration: 1 }}
>
<div className='text-primary-600 text-2xl font-semibold '>
{products.title}
</div>
<div className='text-center text-base text-black '>
{products.description}
</div>
</motion.div>
);
};
Copy link

Choose a reason for hiding this comment

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

The DescriptionBox component is implemented with dynamic styling based on the translate prop. Consider adding PropTypes or TypeScript interfaces for better type safety.

- export const DescriptionBox = ({
+ export const DescriptionBox: React.FC<{ products: { title: string; description: string; }; translate: number; }> = ({
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
export const DescriptionBox = ({
products,
translate,
}: {
products: {
title: string;
description: string;
};
translate: number;
}) => {
return (
<motion.div
className='absolute mt-4 flex h-[10rem] w-[20rem] flex-col gap-2 rounded-xl bg-gray-400 p-2 opacity-0 transition-opacity duration-500 group-hover:opacity-100'
style={{ x: translate }}
transition={{ duration: 1 }}
>
<div className='text-primary-600 text-2xl font-semibold '>
{products.title}
</div>
<div className='text-center text-base text-black '>
{products.description}
</div>
</motion.div>
);
};
export const DescriptionBox: React.FC<{ products: { title: string; description: string; }; translate: number; }> = ({
products,
translate,
}: {
products: {
title: string;
description: string;
};
translate: number;
}) => {
return (
<motion.div
className='absolute mt-4 flex h-[10rem] w-[20rem] flex-col gap-2 rounded-xl bg-gray-400 p-2 opacity-0 transition-opacity duration-500 group-hover:opacity-100'
style={{ x: translate }}
transition={{ duration: 1 }}
>
<div className='text-primary-600 text-2xl font-semibold '>
{products.title}
</div>
<div className='text-center text-base text-black '>
{products.description}
</div>
</motion.div>
);
};

<Trackpad />
<div className='absolute inset-x-0 bottom-0 mx-auto h-2 w-20 rounded-tl-3xl rounded-tr-3xl bg-gradient-to-t from-[#272729] to-[#050505]' />
{showGradient && (
<div className='absolute inset-x-0 bottom-0 z-50 h-40 w-full bg-gradient-to-t from-white via-white to-transparent dark:from-black dark:via-black'></div>
Copy link

Choose a reason for hiding this comment

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

Convert the JSX element to a self-closing tag for better readability and adherence to JSX best practices.

- <div className='absolute inset-x-0 bottom-0 z-50 h-40 w-full bg-gradient-to-t from-white via-white to-transparent dark:from-black dark:via-black'></div>
+ <div className='absolute inset-x-0 bottom-0 z-50 h-40 w-full bg-gradient-to-t from-white via-white to-transparent dark:from-black dark:via-black' />
Committable suggestion

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

Suggested change
<div className='absolute inset-x-0 bottom-0 z-50 h-40 w-full bg-gradient-to-t from-white via-white to-transparent dark:from-black dark:via-black'></div>
<div className='absolute inset-x-0 bottom-0 z-50 h-40 w-full bg-gradient-to-t from-white via-white to-transparent dark:from-black dark:via-black' />
Tools
Biome

[error] 122-122: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead

Comment on lines +611 to +618
<div
className='mt-2 flex h-52 gap-[2px] px-[0.5px]'
style={{
backgroundImage:
'radial-gradient(circle, #08080A 0.5px, transparent 0.5px)',
backgroundSize: '3px 3px',
}}
></div>
Copy link

Choose a reason for hiding this comment

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

Convert the JSX element to a self-closing tag for better readability and adherence to JSX best practices.

- <div className='mt-2 flex h-52 gap-[2px] px-[0.5px]' style={{ backgroundImage: 'radial-gradient(circle, #08080A 0.5px, transparent 0.5px)', backgroundSize: '3px 3px', }}></div>
+ <div className='mt-2 flex h-52 gap-[2px] px-[0.5px]' style={{ backgroundImage: 'radial-gradient(circle, #08080A 0.5px, transparent 0.5px)', backgroundSize: '3px 3px', }} />
Committable suggestion

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

Suggested change
<div
className='mt-2 flex h-52 gap-[2px] px-[0.5px]'
style={{
backgroundImage:
'radial-gradient(circle, #08080A 0.5px, transparent 0.5px)',
backgroundSize: '3px 3px',
}}
></div>
<div
className='mt-2 flex h-52 gap-[2px] px-[0.5px]'
style={{
backgroundImage:
'radial-gradient(circle, #08080A 0.5px, transparent 0.5px)',
backgroundSize: '3px 3px',
}}
/>
Tools
Biome

[error] 611-618: JSX elements without children should be marked as self-closing. In JSX, it is valid for any element to be self-closing. (lint/style/useSelfClosingElements)

Unsafe fix: Use a SelfClosingElement instead

Comment on lines +35 to +43
<motion.svg
className='hover:cursor-pointer'
xmlns='http://www.w3.org/2000/svg'
height='30'
width='20'
viewBox='0 0 320 512'
animate={{ y: [0, -10, 0, -5, 0, -2.5, 0] }}
transition={{ repeat: Infinity, duration: 1 }}
>
Copy link

Choose a reason for hiding this comment

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

Add alternative text to SVG for accessibility.

+ <title>UpEase Framework Icon</title>

Insert a <title> tag within the <svg> element to provide alternative text, enhancing accessibility.

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
<motion.svg
className='hover:cursor-pointer'
xmlns='http://www.w3.org/2000/svg'
height='30'
width='20'
viewBox='0 0 320 512'
animate={{ y: [0, -10, 0, -5, 0, -2.5, 0] }}
transition={{ repeat: Infinity, duration: 1 }}
>
<motion.svg
className='hover:cursor-pointer'
xmlns='http://www.w3.org/2000/svg'
height='30'
width='20'
viewBox='0 0 320 512'
animate={{ y: [0, -10, 0, -5, 0, -2.5, 0] }}
transition={{ repeat: Infinity, duration: 1 }}
>
<title>UpEase Framework Icon</title>
Tools
Biome

[error] 35-43: Alternative text title element cannot be empty (lint/a11y/noSvgWithoutTitle)

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

<div className='dropdown'>
<label tabIndex={0} className='btn btn-ghost md:hidden'>
<div className='dropdown z-50'>
<label tabIndex={0} className='btn btn-ghost z-50 lg:hidden'>
Copy link

Choose a reason for hiding this comment

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

The HTML element label and ul are non-interactive. Do not use tabIndex. Remove the tabIndex attribute to avoid confusing users.

- <label tabIndex={0} className='btn btn-ghost z-50 lg:hidden'>
+ <label className='btn btn-ghost z-50 lg:hidden'>
- <ul tabIndex={0} className='menu menu-sm dropdown-content  bg-base-100 rounded-box z-[1] mt-3 w-52 p-2 shadow'>
+ <ul className='menu menu-sm dropdown-content  bg-base-100 rounded-box z-[1] mt-3 w-52 p-2 shadow'>

Also applies to: 32-32, 80-80, 93-93

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
<label tabIndex={0} className='btn btn-ghost z-50 lg:hidden'>
<label className='btn btn-ghost z-50 lg:hidden'>
Tools
Biome

[error] 15-15: The HTML element label is non-interactive. Do not use tabIndex. (lint/a11y/noNoninteractiveTabindex)

Adding non-interactive elements to the keyboard navigation flow can confuse users.
Unsafe fix: Remove the tabIndex attribute.

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.

2 participants