From 8877426f5c9ef3e56a5646ce0f58ca69e2410ae8 Mon Sep 17 00:00:00 2001 From: Owen Stepan <106773727+ostepan8@users.noreply.github.com> Date: Tue, 27 Jan 2026 13:28:02 -0500 Subject: [PATCH 1/5] implemented the frontend ticket with bodie added search bar added next and previous buttons added filtering with search bar added dummy data to simulate searching --- apps/frontend/src/components/PageCounter.tsx | 87 ++++++++ .../src/components/PageTransitionButton.tsx | 41 ++++ apps/frontend/src/components/Searchbar.tsx | 52 +++++ apps/frontend/src/containers/root.tsx | 200 +++++++++++++++++- 4 files changed, 375 insertions(+), 5 deletions(-) create mode 100644 apps/frontend/src/components/PageCounter.tsx create mode 100644 apps/frontend/src/components/PageTransitionButton.tsx create mode 100644 apps/frontend/src/components/Searchbar.tsx diff --git a/apps/frontend/src/components/PageCounter.tsx b/apps/frontend/src/components/PageCounter.tsx new file mode 100644 index 000000000..d5d84d27c --- /dev/null +++ b/apps/frontend/src/components/PageCounter.tsx @@ -0,0 +1,87 @@ +interface PageCounterProps { + page: number; + setPage: (page: number) => void; + maxPages: number; +} + +function PageCounter({ page, setPage, maxPages }: PageCounterProps) { + const getPageNumbers = () => { + const pages: (number | string)[] = []; + + if (maxPages <= 4) { + // Show all pages if 4 or fewer + for (let i = 1; i <= maxPages; i++) { + pages.push(i); + } + } else { + // Always show first 3 pages when near the start + if (page <= 3) { + pages.push(1, 2, 3); + pages.push('...'); + pages.push(maxPages); + } + // Show last 3 pages when near the end + else if (page >= maxPages - 2) { + pages.push(1); + pages.push('...'); + pages.push(maxPages - 2, maxPages - 1, maxPages); + } + // Show current page with neighbors in the middle + else { + pages.push(1); + pages.push('...'); + pages.push(page - 1, page, page + 1); + pages.push('...'); + pages.push(maxPages); + } + } + + return pages; + }; + + return ( +
+ {getPageNumbers().map((p, index) => + typeof p === 'string' ? ( + + {p} + + ) : ( + + ), + )} +
+ ); +} + +export default PageCounter; diff --git a/apps/frontend/src/components/PageTransitionButton.tsx b/apps/frontend/src/components/PageTransitionButton.tsx new file mode 100644 index 000000000..bc847112f --- /dev/null +++ b/apps/frontend/src/components/PageTransitionButton.tsx @@ -0,0 +1,41 @@ +import { IoChevronBack, IoChevronForward } from 'react-icons/io5'; + +function PageTransitionButton({ + buttonType, + onClick, +}: { + buttonType: 'previous' | 'next'; + onClick: () => void; +}) { + return ( + + ); +} + +export default PageTransitionButton; diff --git a/apps/frontend/src/components/Searchbar.tsx b/apps/frontend/src/components/Searchbar.tsx new file mode 100644 index 000000000..0bbe1e366 --- /dev/null +++ b/apps/frontend/src/components/Searchbar.tsx @@ -0,0 +1,52 @@ +import { IoSearch } from 'react-icons/io5'; + +interface SearchbarProps { + value: string; + onChange: (e: React.ChangeEvent) => void; +} + +function Searchbar({ value, onChange }: SearchbarProps) { + return ( +
+ + +
+ ); +} + +export default Searchbar; diff --git a/apps/frontend/src/containers/root.tsx b/apps/frontend/src/containers/root.tsx index 4f55def13..c36040f35 100644 --- a/apps/frontend/src/containers/root.tsx +++ b/apps/frontend/src/containers/root.tsx @@ -6,14 +6,160 @@ import clockIcon from '../assets/icons/clock.svg'; import crossIcon from '../assets/icons/cross.svg'; import checkmarkIcon from '../assets/icons/checkmark.svg'; import { Box } from '@chakra-ui/react'; -import ApplicationTable from '@components/ApplicationTable'; +import { useState } from 'react'; +import PageTransitionButton from '@components/PageTransitionButton'; +import Searchbar from '@components/Searchbar'; +import PageCounter from '@components/PageCounter'; + +interface UserData { + id: number; + name: string; + email: string; +} const Root: React.FC = () => { + const [searchQuery, setSearchQuery] = useState(''); + const pageSize = 25; + const data = [ + { id: 1, name: 'Alice Johnson', email: 'alice.johnson@email.com' }, + { id: 2, name: 'Bob Martinez', email: 'bob.martinez@email.com' }, + { id: 3, name: 'Carol Williams', email: 'carol.williams@email.com' }, + { id: 4, name: 'David Chen', email: 'david.chen@email.com' }, + { id: 5, name: 'Emma Thompson', email: 'emma.thompson@email.com' }, + { id: 6, name: 'Frank Garcia', email: 'frank.garcia@email.com' }, + { id: 7, name: 'Grace Lee', email: 'grace.lee@email.com' }, + { id: 8, name: 'Henry Wilson', email: 'henry.wilson@email.com' }, + { id: 9, name: 'Ivy Patel', email: 'ivy.patel@email.com' }, + { id: 10, name: 'Jack Robinson', email: 'jack.robinson@email.com' }, + { id: 11, name: 'Karen Davis', email: 'karen.davis@email.com' }, + { id: 12, name: 'Liam Brown', email: 'liam.brown@email.com' }, + { id: 13, name: 'Mia Anderson', email: 'mia.anderson@email.com' }, + { id: 14, name: 'Noah Taylor', email: 'noah.taylor@email.com' }, + { id: 15, name: 'Olivia Thomas', email: 'olivia.thomas@email.com' }, + { id: 16, name: 'Peter Jackson', email: 'peter.jackson@email.com' }, + { id: 17, name: 'Quinn White', email: 'quinn.white@email.com' }, + { id: 18, name: 'Rachel Harris', email: 'rachel.harris@email.com' }, + { id: 19, name: 'Sam Martin', email: 'sam.martin@email.com' }, + { id: 20, name: 'Tina Clark', email: 'tina.clark@email.com' }, + { id: 21, name: 'Uma Rodriguez', email: 'uma.rodriguez@email.com' }, + { id: 22, name: 'Victor Lewis', email: 'victor.lewis@email.com' }, + { id: 23, name: 'Wendy Walker', email: 'wendy.walker@email.com' }, + { id: 24, name: 'Xavier Hall', email: 'xavier.hall@email.com' }, + { id: 25, name: 'Yara Allen', email: 'yara.allen@email.com' }, + { id: 26, name: 'Zach Young', email: 'zach.young@email.com' }, + { id: 27, name: 'Amber King', email: 'amber.king@email.com' }, + { id: 28, name: 'Brian Scott', email: 'brian.scott@email.com' }, + { id: 29, name: 'Chloe Green', email: 'chloe.green@email.com' }, + { id: 30, name: 'Derek Adams', email: 'derek.adams@email.com' }, + { id: 1, name: 'Alice Johnson', email: 'alice.johnson@email.com' }, + { id: 2, name: 'Bob Martinez', email: 'bob.martinez@email.com' }, + { id: 3, name: 'Carol Williams', email: 'carol.williams@email.com' }, + { id: 4, name: 'David Chen', email: 'david.chen@email.com' }, + { id: 5, name: 'Emma Thompson', email: 'emma.thompson@email.com' }, + { id: 6, name: 'Frank Garcia', email: 'frank.garcia@email.com' }, + { id: 7, name: 'Grace Lee', email: 'grace.lee@email.com' }, + { id: 8, name: 'Henry Wilson', email: 'henry.wilson@email.com' }, + { id: 9, name: 'Ivy Patel', email: 'ivy.patel@email.com' }, + { id: 10, name: 'Jack Robinson', email: 'jack.robinson@email.com' }, + { id: 11, name: 'Karen Davis', email: 'karen.davis@email.com' }, + { id: 12, name: 'Liam Brown', email: 'liam.brown@email.com' }, + { id: 13, name: 'Mia Anderson', email: 'mia.anderson@email.com' }, + { id: 14, name: 'Noah Taylor', email: 'noah.taylor@email.com' }, + { id: 15, name: 'Olivia Thomas', email: 'olivia.thomas@email.com' }, + { id: 16, name: 'Peter Jackson', email: 'peter.jackson@email.com' }, + { id: 17, name: 'Quinn White', email: 'quinn.white@email.com' }, + { id: 18, name: 'Rachel Harris', email: 'rachel.harris@email.com' }, + { id: 19, name: 'Sam Martin', email: 'sam.martin@email.com' }, + { id: 20, name: 'Tina Clark', email: 'tina.clark@email.com' }, + { id: 21, name: 'Uma Rodriguez', email: 'uma.rodriguez@email.com' }, + { id: 22, name: 'Victor Lewis', email: 'victor.lewis@email.com' }, + { id: 23, name: 'Wendy Walker', email: 'wendy.walker@email.com' }, + { id: 24, name: 'Xavier Hall', email: 'xavier.hall@email.com' }, + { id: 25, name: 'Yara Allen', email: 'yara.allen@email.com' }, + { id: 26, name: 'Zach Young', email: 'zach.young@email.com' }, + { id: 27, name: 'Amber King', email: 'amber.king@email.com' }, + { id: 28, name: 'Brian Scott', email: 'brian.scott@email.com' }, + { id: 29, name: 'Chloe Green', email: 'chloe.green@email.com' }, + { id: 30, name: 'Derek Adams', email: 'derek.adams@email.com' }, + { id: 1, name: 'Alice Johnson', email: 'alice.johnson@email.com' }, + { id: 2, name: 'Bob Martinez', email: 'bob.martinez@email.com' }, + { id: 3, name: 'Carol Williams', email: 'carol.williams@email.com' }, + { id: 4, name: 'David Chen', email: 'david.chen@email.com' }, + { id: 5, name: 'Emma Thompson', email: 'emma.thompson@email.com' }, + { id: 6, name: 'Frank Garcia', email: 'frank.garcia@email.com' }, + { id: 7, name: 'Grace Lee', email: 'grace.lee@email.com' }, + { id: 8, name: 'Henry Wilson', email: 'henry.wilson@email.com' }, + { id: 9, name: 'Ivy Patel', email: 'ivy.patel@email.com' }, + { id: 10, name: 'Jack Robinson', email: 'jack.robinson@email.com' }, + { id: 11, name: 'Karen Davis', email: 'karen.davis@email.com' }, + { id: 12, name: 'Liam Brown', email: 'liam.brown@email.com' }, + { id: 13, name: 'Mia Anderson', email: 'mia.anderson@email.com' }, + { id: 14, name: 'Noah Taylor', email: 'noah.taylor@email.com' }, + { id: 15, name: 'Olivia Thomas', email: 'olivia.thomas@email.com' }, + { id: 16, name: 'Peter Jackson', email: 'peter.jackson@email.com' }, + { id: 17, name: 'Quinn White', email: 'quinn.white@email.com' }, + { id: 18, name: 'Rachel Harris', email: 'rachel.harris@email.com' }, + { id: 19, name: 'Sam Martin', email: 'sam.martin@email.com' }, + { id: 20, name: 'Tina Clark', email: 'tina.clark@email.com' }, + { id: 21, name: 'Uma Rodriguez', email: 'uma.rodriguez@email.com' }, + { id: 22, name: 'Victor Lewis', email: 'victor.lewis@email.com' }, + { id: 23, name: 'Wendy Walker', email: 'wendy.walker@email.com' }, + { id: 24, name: 'Xavier Hall', email: 'xavier.hall@email.com' }, + { id: 25, name: 'Yara Allen', email: 'yara.allen@email.com' }, + { id: 26, name: 'Zach Young', email: 'zach.young@email.com' }, + { id: 27, name: 'Amber King', email: 'amber.king@email.com' }, + { id: 28, name: 'Brian Scott', email: 'brian.scott@email.com' }, + { id: 29, name: 'Chloe Green', email: 'chloe.green@email.com' }, + { id: 30, name: 'Derek Adams', email: 'derek.adams@email.com' }, + { id: 1, name: 'Alice Johnson', email: 'alice.johnson@email.com' }, + { id: 2, name: 'Bob Martinez', email: 'bob.martinez@email.com' }, + { id: 3, name: 'Carol Williams', email: 'carol.williams@email.com' }, + { id: 4, name: 'David Chen', email: 'david.chen@email.com' }, + { id: 5, name: 'Emma Thompson', email: 'emma.thompson@email.com' }, + { id: 6, name: 'Frank Garcia', email: 'frank.garcia@email.com' }, + { id: 7, name: 'Grace Lee', email: 'grace.lee@email.com' }, + { id: 8, name: 'Henry Wilson', email: 'henry.wilson@email.com' }, + { id: 9, name: 'Ivy Patel', email: 'ivy.patel@email.com' }, + { id: 10, name: 'Jack Robinson', email: 'jack.robinson@email.com' }, + { id: 11, name: 'Karen Davis', email: 'karen.davis@email.com' }, + { id: 12, name: 'Liam Brown', email: 'liam.brown@email.com' }, + { id: 13, name: 'Mia Anderson', email: 'mia.anderson@email.com' }, + { id: 14, name: 'Noah Taylor', email: 'noah.taylor@email.com' }, + { id: 15, name: 'Olivia Thomas', email: 'olivia.thomas@email.com' }, + { id: 16, name: 'Peter Jackson', email: 'peter.jackson@email.com' }, + { id: 17, name: 'Quinn White', email: 'quinn.white@email.com' }, + { id: 18, name: 'Rachel Harris', email: 'rachel.harris@email.com' }, + { id: 19, name: 'Sam Martin', email: 'sam.martin@email.com' }, + { id: 20, name: 'Tina Clark', email: 'tina.clark@email.com' }, + { id: 21, name: 'Uma Rodriguez', email: 'uma.rodriguez@email.com' }, + { id: 22, name: 'Victor Lewis', email: 'victor.lewis@email.com' }, + { id: 23, name: 'Wendy Walker', email: 'wendy.walker@email.com' }, + { id: 24, name: 'Xavier Hall', email: 'xavier.hall@email.com' }, + { id: 25, name: 'Yara Allen', email: 'yara.allen@email.com' }, + { id: 26, name: 'Zach Young', email: 'zach.young@email.com' }, + { id: 27, name: 'Amber King', email: 'amber.king@email.com' }, + { id: 28, name: 'Brian Scott', email: 'brian.scott@email.com' }, + { id: 29, name: 'Chloe Green', email: 'chloe.green@email.com' }, + { id: 30, name: 'Derek Adams', email: 'derek.adams@email.com' }, + ]; + const [userData] = useState(data); + const [page, setPage] = useState(1); + + function onChange(e: React.ChangeEvent) { + setSearchQuery(e.target.value); + } return ( -
+
- - + + { icon={checkmarkIcon} /> - +
+

Recent Applications

+
+ + +
+ {userData + .filter((item) => + item.name.toLowerCase().includes(searchQuery.toLowerCase()), + ) + .slice((page - 1) * pageSize, page * pageSize) + .map((item) => ( +
+

+ {item.name} - {item.email} +

+
+ ))} +
+ +
+ setPage(page - 1)} + /> + + setPage(page + 1)} + /> +
); From 3bcfa528976b59307d6aa70399e3c3d748097801 Mon Sep 17 00:00:00 2001 From: bodhiYG Date: Wed, 4 Feb 2026 19:44:06 -0500 Subject: [PATCH 2/5] Searchbar integration with application table --- .github/workflows/ci-cd.yml | 113 ++++++++++++ .../src/disciplines/discplines.constants.ts | 13 ++ apps/frontend/src/app.spec.tsx | 15 ++ .../src/components/ApplicationTable.tsx | 23 ++- apps/frontend/src/components/ApprovedCard.tsx | 64 +++++++ apps/frontend/src/containers/root.tsx | 161 ++---------------- apps/frontend/src/containers/test.tsx | 12 ++ yarn.lock | 87 +--------- 8 files changed, 253 insertions(+), 235 deletions(-) create mode 100644 .github/workflows/ci-cd.yml create mode 100644 apps/backend/src/disciplines/discplines.constants.ts create mode 100644 apps/frontend/src/app.spec.tsx create mode 100644 apps/frontend/src/components/ApprovedCard.tsx create mode 100644 apps/frontend/src/containers/test.tsx diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml new file mode 100644 index 000000000..bf0fcbef9 --- /dev/null +++ b/.github/workflows/ci-cd.yml @@ -0,0 +1,113 @@ +name: CI/CD + +# First runs linter and tests all affected projects +# Then, for each project that requires deployment, deploy-- is added +# Environment variables are labelled _SHORT_DESCRIPTION + +on: + push: + branches: ['main'] + pull_request: + branches: ['main'] + workflow_dispatch: + inputs: + manual-deploy: + description: 'App to Deploy' + required: false + default: '' + +concurrency: + # Never have two deployments happening at the same time (potential race condition) + group: '{{ github.head_ref || github.ref }}' + +jobs: + pre-deploy: + runs-on: ubuntu-latest + outputs: + affected: ${{ steps.should-deploy.outputs.affected }} + steps: + - uses: actions/checkout@v3 + with: + # We need to fetch all branches and commits so that Nx affected has a base to compare against. + fetch-depth: 0 + - name: Use Node.js 20 + uses: actions/setup-node@v3 + with: + node-version: 20.x + cache: 'yarn' + + - name: Install Dependencies + run: yarn install + + # In any subsequent steps within this job (myjob) we can reference the resolved SHAs + # using either the step outputs or environment variables: + - name: Derive appropriate SHAs for base and head for `nx affected` commands + uses: nrwl/nx-set-shas@v3 + + - run: | + echo "BASE: ${{ env.NX_BASE }}" + echo "HEAD: ${{ env.NX_HEAD }}" + + - name: Nx Affected Lint + run: npx nx affected -t lint + + # - name: Nx Affected Test + # run: npx nx affected -t test + + - name: Nx Affected Build + run: npx nx affected -t build + + - name: Determine who needs to be deployed + id: should-deploy + run: | + echo "The following projects have been affected: [$(npx nx print-affected -t build --select=tasks.target.project)]"; + echo "affected=$(npx nx print-affected -t build --select=tasks.target.project)" >> "$GITHUB_OUTPUT" + + deploy-debug: + needs: pre-deploy + runs-on: ubuntu-latest + steps: + - name: Debug logs + run: | + echo "Manual Deploy: ${{github.event.inputs.manual-deploy}}"; + echo "Affected Names: ${{needs.pre-deploy.outputs.affected}}"; + echo "Event: ${{github.event_name}}"; + echo "Ref: ${{github.ref}}"; + echo "Will deploy?: ${{(github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main'}}"; + + deploy-frontend: + needs: pre-deploy + if: (contains(github.event.inputs.manual-deploy, 'c4c-ops-frontend') || contains(needs.pre-deploy.outputs.affected, 'scaffolding-frontend')) && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + # For "simplicity", deployment settings are configured in the AWS Amplify Console + # This just posts to a webhook telling Amplify to redeploy the main branch + steps: + - name: Tell Amplify to rebuild + run: curl -X POST -d {} ${C4C_OPS_WEBHOOK_DEPLOY} -H "Content-Type:application/json" + env: + C4C_OPS_WEBHOOK_DEPLOY: ${{ secrets.C4C_OPS_WEBHOOK_DEPLOY }} + + deploy-backend: + needs: pre-deploy + if: (contains(github.event.inputs.manual-deploy, 'c4c-ops-backend') || contains(needs.pre-deploy.outputs.affected, 'scaffolding-backend')) && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Use Node.js 16 + uses: actions/setup-node@v3 + with: + node-version: 16.x + cache: 'yarn' + + - name: Install Dependencies + run: yarn install + + - run: npx nx build c4c-ops-backend --configuration production + - name: default deploy + uses: appleboy/lambda-action@master + with: + aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws_region: ${{ secrets.AWS_REGION }} + function_name: c4c-ops-monolith-lambda + source: dist/apps/c4c-ops/c4c-ops-backend/main.js diff --git a/apps/backend/src/disciplines/discplines.constants.ts b/apps/backend/src/disciplines/discplines.constants.ts new file mode 100644 index 000000000..70ec97feb --- /dev/null +++ b/apps/backend/src/disciplines/discplines.constants.ts @@ -0,0 +1,13 @@ +export enum DISCIPLINE_VALUES { + Volunteers = 'Volunteers', + Nursing = 'Nursing', + PublicHealth = 'Public Health', + MD = 'MD', + PA = 'PA', + NP = 'NP', + Research = 'Research', + SocialWork = 'Social Work', + Psychiatry = 'Psychiatry', + Pharmacy = 'Pharmacy', + IT = 'IT', +} diff --git a/apps/frontend/src/app.spec.tsx b/apps/frontend/src/app.spec.tsx new file mode 100644 index 000000000..95caf44df --- /dev/null +++ b/apps/frontend/src/app.spec.tsx @@ -0,0 +1,15 @@ +import { render } from '@testing-library/react'; + +import App from './app'; + +describe('App', () => { + it('should render successfully', () => { + const { baseElement } = render(); + expect(baseElement).toBeTruthy(); + }); + + it('should have a greeting as the title', () => { + const { getByText } = render(); + expect(getByText(/Welcome frontend/gi)).toBeTruthy(); + }); +}); diff --git a/apps/frontend/src/components/ApplicationTable.tsx b/apps/frontend/src/components/ApplicationTable.tsx index 182a197c9..81aa803f6 100644 --- a/apps/frontend/src/components/ApplicationTable.tsx +++ b/apps/frontend/src/components/ApplicationTable.tsx @@ -1,3 +1,4 @@ +import React from 'react'; import { Table } from '@chakra-ui/react'; const COLUMNS = [ @@ -57,7 +58,25 @@ const APPLICATIONS = [ }, ]; -export const ApplicationTable: React.FC = () => { +interface ApplicationTableProps { + searchQuery?: string; +} + +export const ApplicationTable: React.FC = ({ + searchQuery = '', +}) => { + const filteredApplications = APPLICATIONS.filter((application) => { + if (!searchQuery) return true; + const query = searchQuery.toLowerCase(); + return ( + application.name.toLowerCase().includes(query) || + application.discipline.toLowerCase().includes(query) || + application.disciplineAdminName.toLowerCase().includes(query) || + application.status.toLowerCase().includes(query) || + application.experienceType.toLowerCase().includes(query) + ); + }); + return ( @@ -74,7 +93,7 @@ export const ApplicationTable: React.FC = () => { - {APPLICATIONS.map((application) => ( + {filteredApplications.map((application) => ( {application.name} {application.startDate} diff --git a/apps/frontend/src/components/ApprovedCard.tsx b/apps/frontend/src/components/ApprovedCard.tsx new file mode 100644 index 000000000..396214d77 --- /dev/null +++ b/apps/frontend/src/components/ApprovedCard.tsx @@ -0,0 +1,64 @@ +import React from 'react'; +import { Box, Heading, Text, Flex } from '@chakra-ui/react'; + +interface ApprovedCardProps { + title: string; + count: number; + description: string; + icon: React.ReactNode; +} + +export const ApprovedCard: React.FC = ({ + title, + count, + description, + icon, +}) => { + return ( + + + + {title} + + + {icon} + + + + {count} + + + {description} + + + ); +}; diff --git a/apps/frontend/src/containers/root.tsx b/apps/frontend/src/containers/root.tsx index c36040f35..6c633c4b9 100644 --- a/apps/frontend/src/containers/root.tsx +++ b/apps/frontend/src/containers/root.tsx @@ -10,139 +10,10 @@ import { useState } from 'react'; import PageTransitionButton from '@components/PageTransitionButton'; import Searchbar from '@components/Searchbar'; import PageCounter from '@components/PageCounter'; - -interface UserData { - id: number; - name: string; - email: string; -} +import ApplicationTable from '@components/ApplicationTable'; const Root: React.FC = () => { const [searchQuery, setSearchQuery] = useState(''); - const pageSize = 25; - const data = [ - { id: 1, name: 'Alice Johnson', email: 'alice.johnson@email.com' }, - { id: 2, name: 'Bob Martinez', email: 'bob.martinez@email.com' }, - { id: 3, name: 'Carol Williams', email: 'carol.williams@email.com' }, - { id: 4, name: 'David Chen', email: 'david.chen@email.com' }, - { id: 5, name: 'Emma Thompson', email: 'emma.thompson@email.com' }, - { id: 6, name: 'Frank Garcia', email: 'frank.garcia@email.com' }, - { id: 7, name: 'Grace Lee', email: 'grace.lee@email.com' }, - { id: 8, name: 'Henry Wilson', email: 'henry.wilson@email.com' }, - { id: 9, name: 'Ivy Patel', email: 'ivy.patel@email.com' }, - { id: 10, name: 'Jack Robinson', email: 'jack.robinson@email.com' }, - { id: 11, name: 'Karen Davis', email: 'karen.davis@email.com' }, - { id: 12, name: 'Liam Brown', email: 'liam.brown@email.com' }, - { id: 13, name: 'Mia Anderson', email: 'mia.anderson@email.com' }, - { id: 14, name: 'Noah Taylor', email: 'noah.taylor@email.com' }, - { id: 15, name: 'Olivia Thomas', email: 'olivia.thomas@email.com' }, - { id: 16, name: 'Peter Jackson', email: 'peter.jackson@email.com' }, - { id: 17, name: 'Quinn White', email: 'quinn.white@email.com' }, - { id: 18, name: 'Rachel Harris', email: 'rachel.harris@email.com' }, - { id: 19, name: 'Sam Martin', email: 'sam.martin@email.com' }, - { id: 20, name: 'Tina Clark', email: 'tina.clark@email.com' }, - { id: 21, name: 'Uma Rodriguez', email: 'uma.rodriguez@email.com' }, - { id: 22, name: 'Victor Lewis', email: 'victor.lewis@email.com' }, - { id: 23, name: 'Wendy Walker', email: 'wendy.walker@email.com' }, - { id: 24, name: 'Xavier Hall', email: 'xavier.hall@email.com' }, - { id: 25, name: 'Yara Allen', email: 'yara.allen@email.com' }, - { id: 26, name: 'Zach Young', email: 'zach.young@email.com' }, - { id: 27, name: 'Amber King', email: 'amber.king@email.com' }, - { id: 28, name: 'Brian Scott', email: 'brian.scott@email.com' }, - { id: 29, name: 'Chloe Green', email: 'chloe.green@email.com' }, - { id: 30, name: 'Derek Adams', email: 'derek.adams@email.com' }, - { id: 1, name: 'Alice Johnson', email: 'alice.johnson@email.com' }, - { id: 2, name: 'Bob Martinez', email: 'bob.martinez@email.com' }, - { id: 3, name: 'Carol Williams', email: 'carol.williams@email.com' }, - { id: 4, name: 'David Chen', email: 'david.chen@email.com' }, - { id: 5, name: 'Emma Thompson', email: 'emma.thompson@email.com' }, - { id: 6, name: 'Frank Garcia', email: 'frank.garcia@email.com' }, - { id: 7, name: 'Grace Lee', email: 'grace.lee@email.com' }, - { id: 8, name: 'Henry Wilson', email: 'henry.wilson@email.com' }, - { id: 9, name: 'Ivy Patel', email: 'ivy.patel@email.com' }, - { id: 10, name: 'Jack Robinson', email: 'jack.robinson@email.com' }, - { id: 11, name: 'Karen Davis', email: 'karen.davis@email.com' }, - { id: 12, name: 'Liam Brown', email: 'liam.brown@email.com' }, - { id: 13, name: 'Mia Anderson', email: 'mia.anderson@email.com' }, - { id: 14, name: 'Noah Taylor', email: 'noah.taylor@email.com' }, - { id: 15, name: 'Olivia Thomas', email: 'olivia.thomas@email.com' }, - { id: 16, name: 'Peter Jackson', email: 'peter.jackson@email.com' }, - { id: 17, name: 'Quinn White', email: 'quinn.white@email.com' }, - { id: 18, name: 'Rachel Harris', email: 'rachel.harris@email.com' }, - { id: 19, name: 'Sam Martin', email: 'sam.martin@email.com' }, - { id: 20, name: 'Tina Clark', email: 'tina.clark@email.com' }, - { id: 21, name: 'Uma Rodriguez', email: 'uma.rodriguez@email.com' }, - { id: 22, name: 'Victor Lewis', email: 'victor.lewis@email.com' }, - { id: 23, name: 'Wendy Walker', email: 'wendy.walker@email.com' }, - { id: 24, name: 'Xavier Hall', email: 'xavier.hall@email.com' }, - { id: 25, name: 'Yara Allen', email: 'yara.allen@email.com' }, - { id: 26, name: 'Zach Young', email: 'zach.young@email.com' }, - { id: 27, name: 'Amber King', email: 'amber.king@email.com' }, - { id: 28, name: 'Brian Scott', email: 'brian.scott@email.com' }, - { id: 29, name: 'Chloe Green', email: 'chloe.green@email.com' }, - { id: 30, name: 'Derek Adams', email: 'derek.adams@email.com' }, - { id: 1, name: 'Alice Johnson', email: 'alice.johnson@email.com' }, - { id: 2, name: 'Bob Martinez', email: 'bob.martinez@email.com' }, - { id: 3, name: 'Carol Williams', email: 'carol.williams@email.com' }, - { id: 4, name: 'David Chen', email: 'david.chen@email.com' }, - { id: 5, name: 'Emma Thompson', email: 'emma.thompson@email.com' }, - { id: 6, name: 'Frank Garcia', email: 'frank.garcia@email.com' }, - { id: 7, name: 'Grace Lee', email: 'grace.lee@email.com' }, - { id: 8, name: 'Henry Wilson', email: 'henry.wilson@email.com' }, - { id: 9, name: 'Ivy Patel', email: 'ivy.patel@email.com' }, - { id: 10, name: 'Jack Robinson', email: 'jack.robinson@email.com' }, - { id: 11, name: 'Karen Davis', email: 'karen.davis@email.com' }, - { id: 12, name: 'Liam Brown', email: 'liam.brown@email.com' }, - { id: 13, name: 'Mia Anderson', email: 'mia.anderson@email.com' }, - { id: 14, name: 'Noah Taylor', email: 'noah.taylor@email.com' }, - { id: 15, name: 'Olivia Thomas', email: 'olivia.thomas@email.com' }, - { id: 16, name: 'Peter Jackson', email: 'peter.jackson@email.com' }, - { id: 17, name: 'Quinn White', email: 'quinn.white@email.com' }, - { id: 18, name: 'Rachel Harris', email: 'rachel.harris@email.com' }, - { id: 19, name: 'Sam Martin', email: 'sam.martin@email.com' }, - { id: 20, name: 'Tina Clark', email: 'tina.clark@email.com' }, - { id: 21, name: 'Uma Rodriguez', email: 'uma.rodriguez@email.com' }, - { id: 22, name: 'Victor Lewis', email: 'victor.lewis@email.com' }, - { id: 23, name: 'Wendy Walker', email: 'wendy.walker@email.com' }, - { id: 24, name: 'Xavier Hall', email: 'xavier.hall@email.com' }, - { id: 25, name: 'Yara Allen', email: 'yara.allen@email.com' }, - { id: 26, name: 'Zach Young', email: 'zach.young@email.com' }, - { id: 27, name: 'Amber King', email: 'amber.king@email.com' }, - { id: 28, name: 'Brian Scott', email: 'brian.scott@email.com' }, - { id: 29, name: 'Chloe Green', email: 'chloe.green@email.com' }, - { id: 30, name: 'Derek Adams', email: 'derek.adams@email.com' }, - { id: 1, name: 'Alice Johnson', email: 'alice.johnson@email.com' }, - { id: 2, name: 'Bob Martinez', email: 'bob.martinez@email.com' }, - { id: 3, name: 'Carol Williams', email: 'carol.williams@email.com' }, - { id: 4, name: 'David Chen', email: 'david.chen@email.com' }, - { id: 5, name: 'Emma Thompson', email: 'emma.thompson@email.com' }, - { id: 6, name: 'Frank Garcia', email: 'frank.garcia@email.com' }, - { id: 7, name: 'Grace Lee', email: 'grace.lee@email.com' }, - { id: 8, name: 'Henry Wilson', email: 'henry.wilson@email.com' }, - { id: 9, name: 'Ivy Patel', email: 'ivy.patel@email.com' }, - { id: 10, name: 'Jack Robinson', email: 'jack.robinson@email.com' }, - { id: 11, name: 'Karen Davis', email: 'karen.davis@email.com' }, - { id: 12, name: 'Liam Brown', email: 'liam.brown@email.com' }, - { id: 13, name: 'Mia Anderson', email: 'mia.anderson@email.com' }, - { id: 14, name: 'Noah Taylor', email: 'noah.taylor@email.com' }, - { id: 15, name: 'Olivia Thomas', email: 'olivia.thomas@email.com' }, - { id: 16, name: 'Peter Jackson', email: 'peter.jackson@email.com' }, - { id: 17, name: 'Quinn White', email: 'quinn.white@email.com' }, - { id: 18, name: 'Rachel Harris', email: 'rachel.harris@email.com' }, - { id: 19, name: 'Sam Martin', email: 'sam.martin@email.com' }, - { id: 20, name: 'Tina Clark', email: 'tina.clark@email.com' }, - { id: 21, name: 'Uma Rodriguez', email: 'uma.rodriguez@email.com' }, - { id: 22, name: 'Victor Lewis', email: 'victor.lewis@email.com' }, - { id: 23, name: 'Wendy Walker', email: 'wendy.walker@email.com' }, - { id: 24, name: 'Xavier Hall', email: 'xavier.hall@email.com' }, - { id: 25, name: 'Yara Allen', email: 'yara.allen@email.com' }, - { id: 26, name: 'Zach Young', email: 'zach.young@email.com' }, - { id: 27, name: 'Amber King', email: 'amber.king@email.com' }, - { id: 28, name: 'Brian Scott', email: 'brian.scott@email.com' }, - { id: 29, name: 'Chloe Green', email: 'chloe.green@email.com' }, - { id: 30, name: 'Derek Adams', email: 'derek.adams@email.com' }, - ]; - const [userData] = useState(data); const [page, setPage] = useState(1); function onChange(e: React.ChangeEvent) { @@ -207,31 +78,23 @@ const Root: React.FC = () => {
-
- {userData - .filter((item) => - item.name.toLowerCase().includes(searchQuery.toLowerCase()), - ) - .slice((page - 1) * pageSize, page * pageSize) - .map((item) => ( -
-

- {item.name} - {item.email} -

-
- ))} -
+ + +
setPage(page - 1)} /> - + setPage(page + 1)} diff --git a/apps/frontend/src/containers/test.tsx b/apps/frontend/src/containers/test.tsx new file mode 100644 index 000000000..28d480422 --- /dev/null +++ b/apps/frontend/src/containers/test.tsx @@ -0,0 +1,12 @@ +// import { Button } from '@shared/src/components/button'; + +const Test: React.FC = () => { + return ( + <> +
I am test page
+ {/* */} + + ); +}; + +export default Test; diff --git a/yarn.lock b/yarn.lock index 9b8f06c18..10cbd23b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3872,13 +3872,6 @@ dependencies: "@nx/linter" "16.10.0" -"@nrwl/nx-cloud@16.5.2": - version "16.5.2" - resolved "https://registry.npmjs.org/@nrwl/nx-cloud/-/nx-cloud-16.5.2.tgz" - integrity sha512-oHO5T1HRJsR9mbRd8eUqMBPCgqVZLSbAh3zJoPFmhEmjbM4YB9ePRpgYFT8dRNeZUOUd/8Yt7Pb6EVWOHvpD/w== - dependencies: - nx-cloud "16.5.2" - "@nrwl/react@16.10.0": version "16.10.0" resolved "https://registry.npmjs.org/@nrwl/react/-/react-16.10.0.tgz" @@ -7515,15 +7508,6 @@ axe-core@^4.6.2: resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz" integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== -axios@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz" - integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - axios@^1.0.0, axios@^1.5.0: version "1.6.0" resolved "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz" @@ -8106,11 +8090,6 @@ chokidar@3.5.3, "chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" @@ -9052,11 +9031,6 @@ dotenv@^17.2.2: resolved "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz" integrity sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w== -dotenv@~10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - dotenv@~16.3.1: version "16.3.2" resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.3.2.tgz" @@ -10084,13 +10058,6 @@ fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - fs-monkey@^1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz" @@ -12783,13 +12750,6 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass@^3.0.0: - version "3.3.6" - resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - minipass@^4.2.4: version "4.2.8" resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz" @@ -12805,14 +12765,6 @@ minipass@^7.1.2: resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - mkdirp@^0.5.4, mkdirp@^0.5.6: version "0.5.6" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" @@ -12820,11 +12772,6 @@ mkdirp@^0.5.4, mkdirp@^0.5.6: dependencies: minimist "^1.2.6" -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - mkdirp@^2.1.3: version "2.1.6" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz" @@ -13004,7 +12951,7 @@ node-int64@^0.4.0: resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-machine-id@1.1.12, node-machine-id@^1.1.12: +node-machine-id@1.1.12: version "1.1.12" resolved "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz" integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== @@ -13060,22 +13007,6 @@ nwsapi@^2.2.4: resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz" integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== -nx-cloud@16.5.2, nx-cloud@^16.4.0: - version "16.5.2" - resolved "https://registry.npmjs.org/nx-cloud/-/nx-cloud-16.5.2.tgz" - integrity sha512-1t1Ii9gojl8r/8hFGaZ/ZyYR0Cb0hzvXLCsaFuvg+EJEFdvua3P4cfNya/0bdRrm+7Eb/ITUOskbvYq4TSlyGg== - dependencies: - "@nrwl/nx-cloud" "16.5.2" - axios "1.1.3" - chalk "^4.1.0" - dotenv "~10.0.0" - fs-extra "^11.1.0" - node-machine-id "^1.1.12" - open "~8.4.0" - strip-json-comments "^3.1.1" - tar "6.1.11" - yargs-parser ">=21.1.1" - nx@16.10.0, nx@^16.8.1: version "16.10.0" resolved "https://registry.npmjs.org/nx/-/nx-16.10.0.tgz" @@ -13250,7 +13181,7 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" -open@^8.0.9, open@^8.4.0, open@~8.4.0: +open@^8.0.9, open@^8.4.0: version "8.4.2" resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== @@ -15319,18 +15250,6 @@ tar-stream@~2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" -tar@6.1.11: - version "6.1.11" - resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - terser-webpack-plugin@^5.3.3, terser-webpack-plugin@^5.3.7: version "5.3.9" resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz" @@ -16430,7 +16349,7 @@ yaml@^1.10.0, yaml@^1.7.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@21.1.1, yargs-parser@>=21.1.1, yargs-parser@^21.1.1: +yargs-parser@21.1.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== From af2454321f6f2512051137a61827ea68e9757e21 Mon Sep 17 00:00:00 2001 From: bodhiYG Date: Sun, 15 Feb 2026 19:26:17 -0500 Subject: [PATCH 3/5] Renamed TableSearchBar component and got rid of React.FC --- apps/frontend/src/components/ApplicationTable.tsx | 6 ++---- apps/frontend/src/components/ApprovedCard.tsx | 6 +++--- .../components/{Searchbar.tsx => TableSearchBar.tsx} | 0 apps/frontend/src/containers/root.tsx | 2 +- apps/frontend/src/containers/test.tsx | 12 ------------ 5 files changed, 6 insertions(+), 20 deletions(-) rename apps/frontend/src/components/{Searchbar.tsx => TableSearchBar.tsx} (100%) delete mode 100644 apps/frontend/src/containers/test.tsx diff --git a/apps/frontend/src/components/ApplicationTable.tsx b/apps/frontend/src/components/ApplicationTable.tsx index 81aa803f6..d08307617 100644 --- a/apps/frontend/src/components/ApplicationTable.tsx +++ b/apps/frontend/src/components/ApplicationTable.tsx @@ -62,9 +62,7 @@ interface ApplicationTableProps { searchQuery?: string; } -export const ApplicationTable: React.FC = ({ - searchQuery = '', -}) => { +export function ApplicationTable({ searchQuery = '' }: ApplicationTableProps) { const filteredApplications = APPLICATIONS.filter((application) => { if (!searchQuery) return true; const query = searchQuery.toLowerCase(); @@ -106,6 +104,6 @@ export const ApplicationTable: React.FC = ({ ); -}; +} export default ApplicationTable; diff --git a/apps/frontend/src/components/ApprovedCard.tsx b/apps/frontend/src/components/ApprovedCard.tsx index 396214d77..87d59bac7 100644 --- a/apps/frontend/src/components/ApprovedCard.tsx +++ b/apps/frontend/src/components/ApprovedCard.tsx @@ -8,12 +8,12 @@ interface ApprovedCardProps { icon: React.ReactNode; } -export const ApprovedCard: React.FC = ({ +export function ApprovedCard({ title, count, description, icon, -}) => { +}: ApprovedCardProps) { return ( = ({ ); -}; +} diff --git a/apps/frontend/src/components/Searchbar.tsx b/apps/frontend/src/components/TableSearchBar.tsx similarity index 100% rename from apps/frontend/src/components/Searchbar.tsx rename to apps/frontend/src/components/TableSearchBar.tsx diff --git a/apps/frontend/src/containers/root.tsx b/apps/frontend/src/containers/root.tsx index 6c633c4b9..7bd4f80cb 100644 --- a/apps/frontend/src/containers/root.tsx +++ b/apps/frontend/src/containers/root.tsx @@ -8,7 +8,7 @@ import checkmarkIcon from '../assets/icons/checkmark.svg'; import { Box } from '@chakra-ui/react'; import { useState } from 'react'; import PageTransitionButton from '@components/PageTransitionButton'; -import Searchbar from '@components/Searchbar'; +import Searchbar from '@components/TableSearchBar'; import PageCounter from '@components/PageCounter'; import ApplicationTable from '@components/ApplicationTable'; diff --git a/apps/frontend/src/containers/test.tsx b/apps/frontend/src/containers/test.tsx deleted file mode 100644 index 28d480422..000000000 --- a/apps/frontend/src/containers/test.tsx +++ /dev/null @@ -1,12 +0,0 @@ -// import { Button } from '@shared/src/components/button'; - -const Test: React.FC = () => { - return ( - <> -
I am test page
- {/* */} - - ); -}; - -export default Test; From 2a4e77ff0a85e4e184278d6945671c7a2b1edbd0 Mon Sep 17 00:00:00 2001 From: bodhiYG Date: Wed, 11 Mar 2026 18:53:45 -0400 Subject: [PATCH 4/5] Removed Unnecessary Files Fix --- .github/workflows/ci-cd.yml | 113 ------------------ .../src/disciplines/disciplines.constants.ts | 14 +-- 2 files changed, 5 insertions(+), 122 deletions(-) delete mode 100644 .github/workflows/ci-cd.yml diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml deleted file mode 100644 index bf0fcbef9..000000000 --- a/.github/workflows/ci-cd.yml +++ /dev/null @@ -1,113 +0,0 @@ -name: CI/CD - -# First runs linter and tests all affected projects -# Then, for each project that requires deployment, deploy-- is added -# Environment variables are labelled _SHORT_DESCRIPTION - -on: - push: - branches: ['main'] - pull_request: - branches: ['main'] - workflow_dispatch: - inputs: - manual-deploy: - description: 'App to Deploy' - required: false - default: '' - -concurrency: - # Never have two deployments happening at the same time (potential race condition) - group: '{{ github.head_ref || github.ref }}' - -jobs: - pre-deploy: - runs-on: ubuntu-latest - outputs: - affected: ${{ steps.should-deploy.outputs.affected }} - steps: - - uses: actions/checkout@v3 - with: - # We need to fetch all branches and commits so that Nx affected has a base to compare against. - fetch-depth: 0 - - name: Use Node.js 20 - uses: actions/setup-node@v3 - with: - node-version: 20.x - cache: 'yarn' - - - name: Install Dependencies - run: yarn install - - # In any subsequent steps within this job (myjob) we can reference the resolved SHAs - # using either the step outputs or environment variables: - - name: Derive appropriate SHAs for base and head for `nx affected` commands - uses: nrwl/nx-set-shas@v3 - - - run: | - echo "BASE: ${{ env.NX_BASE }}" - echo "HEAD: ${{ env.NX_HEAD }}" - - - name: Nx Affected Lint - run: npx nx affected -t lint - - # - name: Nx Affected Test - # run: npx nx affected -t test - - - name: Nx Affected Build - run: npx nx affected -t build - - - name: Determine who needs to be deployed - id: should-deploy - run: | - echo "The following projects have been affected: [$(npx nx print-affected -t build --select=tasks.target.project)]"; - echo "affected=$(npx nx print-affected -t build --select=tasks.target.project)" >> "$GITHUB_OUTPUT" - - deploy-debug: - needs: pre-deploy - runs-on: ubuntu-latest - steps: - - name: Debug logs - run: | - echo "Manual Deploy: ${{github.event.inputs.manual-deploy}}"; - echo "Affected Names: ${{needs.pre-deploy.outputs.affected}}"; - echo "Event: ${{github.event_name}}"; - echo "Ref: ${{github.ref}}"; - echo "Will deploy?: ${{(github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main'}}"; - - deploy-frontend: - needs: pre-deploy - if: (contains(github.event.inputs.manual-deploy, 'c4c-ops-frontend') || contains(needs.pre-deploy.outputs.affected, 'scaffolding-frontend')) && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main' - runs-on: ubuntu-latest - # For "simplicity", deployment settings are configured in the AWS Amplify Console - # This just posts to a webhook telling Amplify to redeploy the main branch - steps: - - name: Tell Amplify to rebuild - run: curl -X POST -d {} ${C4C_OPS_WEBHOOK_DEPLOY} -H "Content-Type:application/json" - env: - C4C_OPS_WEBHOOK_DEPLOY: ${{ secrets.C4C_OPS_WEBHOOK_DEPLOY }} - - deploy-backend: - needs: pre-deploy - if: (contains(github.event.inputs.manual-deploy, 'c4c-ops-backend') || contains(needs.pre-deploy.outputs.affected, 'scaffolding-backend')) && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Use Node.js 16 - uses: actions/setup-node@v3 - with: - node-version: 16.x - cache: 'yarn' - - - name: Install Dependencies - run: yarn install - - - run: npx nx build c4c-ops-backend --configuration production - - name: default deploy - uses: appleboy/lambda-action@master - with: - aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws_region: ${{ secrets.AWS_REGION }} - function_name: c4c-ops-monolith-lambda - source: dist/apps/c4c-ops/c4c-ops-backend/main.js diff --git a/apps/backend/src/disciplines/disciplines.constants.ts b/apps/backend/src/disciplines/disciplines.constants.ts index a79ac840a..6c2759128 100644 --- a/apps/backend/src/disciplines/disciplines.constants.ts +++ b/apps/backend/src/disciplines/disciplines.constants.ts @@ -2,15 +2,11 @@ * The applicant's discipline of expertise. */ export enum DISCIPLINE_VALUES { - Volunteers = 'Volunteers', - Nursing = 'Nursing', + MD_MedicalStudent_PreMed = 'MD/Medical Student/Pre-Med', + Medical_NP_PA = 'Medical NP/PA', + Psychiatry_or_Psychiatric_NP_PA = 'Psychiatry or Psychiatric NP/PA', PublicHealth = 'Public Health', - MD = 'MD', - PA = 'PA', - NP = 'NP', - Research = 'Research', + RN = 'RN', SocialWork = 'Social Work', - Psychiatry = 'Psychiatry', - Pharmacy = 'Pharmacy', - IT = 'IT', + Other = 'Other', } From 1b267c4210f11360907597211e08c1a400719c96 Mon Sep 17 00:00:00 2001 From: Sam Nie <147653722+SamNie2027@users.noreply.github.com> Date: Sun, 15 Mar 2026 16:31:24 -0400 Subject: [PATCH 5/5] Delete discplines.constants.ts --- .../backend/src/disciplines/discplines.constants.ts | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 apps/backend/src/disciplines/discplines.constants.ts diff --git a/apps/backend/src/disciplines/discplines.constants.ts b/apps/backend/src/disciplines/discplines.constants.ts deleted file mode 100644 index 70ec97feb..000000000 --- a/apps/backend/src/disciplines/discplines.constants.ts +++ /dev/null @@ -1,13 +0,0 @@ -export enum DISCIPLINE_VALUES { - Volunteers = 'Volunteers', - Nursing = 'Nursing', - PublicHealth = 'Public Health', - MD = 'MD', - PA = 'PA', - NP = 'NP', - Research = 'Research', - SocialWork = 'Social Work', - Psychiatry = 'Psychiatry', - Pharmacy = 'Pharmacy', - IT = 'IT', -}