Skip to content

Refactor and enhance Services and SupportCard components#50

Draft
JMG3000 wants to merge 2 commits intomasterfrom
JacobG/SearchBar
Draft

Refactor and enhance Services and SupportCard components#50
JMG3000 wants to merge 2 commits intomasterfrom
JacobG/SearchBar

Conversation

@JMG3000
Copy link
Contributor

@JMG3000 JMG3000 commented Feb 23, 2026

Update layout with Chakra UI, add image support, and introduce new properties for enhanced service options. Include new images and descriptions to improve user engagement.

…ra UI, add image support, and enhance service options with new images and descriptions
…pdate layout with new SectionTemplate, and include new image for services
Copilot AI review requested due to automatic review settings February 23, 2026 08:42
@JMG3000 JMG3000 requested a review from BorDevTech February 23, 2026 08:44
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR refactors the Services and SupportCard components to use Chakra UI layout components, adds image support to cards, and introduces a new "Volunteer" support option. The refactoring consolidates the previously separate volunteer section into the support options grid, creating a more consistent user experience.

Changes:

  • Added iconLink, image, and imageAlt properties to Service and SupportOption interfaces
  • Refactored ServiceCard and SupportCard components to display images and make icons clickable links
  • Added a new "Volunteer" support option to replace the standalone volunteer section
  • Updated the services page layout to use SectionTemplate consistently

Reviewed changes

Copilot reviewed 4 out of 7 changed files in this pull request and generated 15 comments.

Show a summary per file
File Description
tsconfig.json Added Next.js development type paths for better TypeScript support
data/services.ts Added iconLink, image, and imageAlt properties to interfaces; added new Volunteer support option
components/services/support-card.tsx Refactored to display images and make icons clickable with external links
components/services/service-card.tsx Refactored to display images and make icons clickable with external links
app/(Pages)/services/page.tsx Removed standalone volunteer section, wrapped support options in SectionTemplate
public/assets/services/1112.jpg Added image file (not currently referenced in code)
public/Image-1-1.jpg Image file used elsewhere in the application

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +33 to +50
<ChakraLink asChild>
<NextLink
href={iconLink}
target="_blank"
rel="noopener noreferrer"
>
<Icon
name={icon}
bg={"teal.focusRing"}
borderRadius={"lg"}
p={4}
boxSize={14}
position={"absolute"}
right={10}
top={255}
/>
</NextLink>
</ChakraLink>
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

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

The icon link lacks accessible text. While the icon is wrapped in a link, screen reader users won't know what the link does. Consider adding an aria-label attribute to the NextLink component (e.g., aria-label="Learn more about {title}") or using a visually-hidden text span to describe the link's purpose.

Copilot uses AI. Check for mistakes.
title: "Partnership Opportunities",
description:
"We welcome partnerships with businesses, educational institutions, state agencies, and other nonprofits. Join us in creating meaningful change through collaborative projects and shared resources.",
image: "/assets/services/partnership.jpg",
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

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

The image file "/assets/services/partnership.jpg" referenced here does not exist in the public directory. This will cause a broken image in the UI when the Partnership Opportunities card is rendered.

Suggested change
image: "/assets/services/partnership.jpg",
image: "/assets/services/volunteer.jpg",

Copilot uses AI. Check for mistakes.
position={"absolute"}
right={10}
top={255}
/>
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

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

There is trailing whitespace after the closing angle bracket on this line. This should be removed to maintain code cleanliness.

Copilot uses AI. Check for mistakes.
import { IconName } from "../ui/icons/icon-registry";
import { Icon } from "../ui/icons/icon";
import { Card, Image as ChakraImage, Heading } from "@chakra-ui/react";
import { Link as ChakraLink, SimpleGrid } from "@chakra-ui/react";
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

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

SimpleGrid is imported but never used in this component. This import should be removed to keep the code clean and avoid unused dependencies.

Suggested change
import { Link as ChakraLink, SimpleGrid } from "@chakra-ui/react";
import { Link as ChakraLink } from "@chakra-ui/react";

Copilot uses AI. Check for mistakes.
import { IconName } from "../ui/icons/icon-registry";
import { Icon } from "../ui/icons/icon";
import { Card, Image as ChakraImage, Heading } from "@chakra-ui/react";
import { Link as ChakraLink, SimpleGrid } from "@chakra-ui/react";
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

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

SimpleGrid is imported but never used in this component. This import should be removed to keep the code clean and avoid unused dependencies.

Suggested change
import { Link as ChakraLink, SimpleGrid } from "@chakra-ui/react";
import { Link as ChakraLink } from "@chakra-ui/react";

Copilot uses AI. Check for mistakes.
import { Card, Image as ChakraImage, Heading } from "@chakra-ui/react";
import { Link as ChakraLink, SimpleGrid } from "@chakra-ui/react";


Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

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

There is an extra blank line here that should be removed for consistency with the rest of the codebase. The import section should not have multiple consecutive blank lines.

Suggested change

Copilot uses AI. Check for mistakes.
Comment on lines +39 to 43



</section>
<section>
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

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

This empty section element serves no purpose and should be removed. It contains only whitespace and no content, adding unnecessary markup to the page structure.

Suggested change
</section>
<section>

Copilot uses AI. Check for mistakes.
Comment on lines +30 to +55
<ChakraImage asChild borderTopRadius={8}>
<Image src={image} alt={imageAlt} width={384} height={286} />
</ChakraImage>
<Card.Body height={400}>
<ChakraLink asChild>
<NextLink
href={iconLink}
target="_blank"
rel="noopener noreferrer"
>
<Icon
name={icon}
bg={"teal.focusRing"}
borderRadius={"lg"}
p={4}
boxSize={14}
position={"absolute"}
right={10}
top={255}
/>
</NextLink>
</ChakraLink>
<Heading as={"h4"}>{title}</Heading>
<Card.Description>{description}</Card.Description>
</Card.Body>
</Card.Root>
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

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

The indentation is inconsistent here. The ChakraImage component and Card.Body should be indented at the same level as siblings within Card.Root. Currently, they have extra indentation (10 spaces instead of 6), which is inconsistent with the indentation pattern used in the rest of the codebase.

Suggested change
<ChakraImage asChild borderTopRadius={8}>
<Image src={image} alt={imageAlt} width={384} height={286} />
</ChakraImage>
<Card.Body height={400}>
<ChakraLink asChild>
<NextLink
href={iconLink}
target="_blank"
rel="noopener noreferrer"
>
<Icon
name={icon}
bg={"teal.focusRing"}
borderRadius={"lg"}
p={4}
boxSize={14}
position={"absolute"}
right={10}
top={255}
/>
</NextLink>
</ChakraLink>
<Heading as={"h4"}>{title}</Heading>
<Card.Description>{description}</Card.Description>
</Card.Body>
</Card.Root>
<ChakraImage asChild borderTopRadius={8}>
<Image src={image} alt={imageAlt} width={384} height={286} />
</ChakraImage>
<Card.Body height={400}>
<ChakraLink asChild>
<NextLink
href={iconLink}
target="_blank"
rel="noopener noreferrer"
>
<Icon
name={icon}
bg={"teal.focusRing"}
borderRadius={"lg"}
p={4}
boxSize={14}
position={"absolute"}
right={10}
top={255}
/>
</NextLink>
</ChakraLink>
<Heading as={"h4"}>{title}</Heading>
<Card.Description>{description}</Card.Description>
</Card.Body>
</Card.Root>

Copilot uses AI. Check for mistakes.
position={"absolute"}
right={10}
top={255}
/>
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

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

There is trailing whitespace after the closing angle bracket on this line. This should be removed to maintain code cleanliness.

Copilot uses AI. Check for mistakes.
@JMG3000 JMG3000 closed this Feb 23, 2026
@JMG3000 JMG3000 reopened this Feb 24, 2026
@JMG3000 JMG3000 marked this pull request as draft February 24, 2026 01:41
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.

3 participants