From f321a0a98f97ebd707f1d37261a429e172787b4f Mon Sep 17 00:00:00 2001 From: Doan Nguyen Date: Thu, 2 Oct 2025 23:38:10 -0400 Subject: [PATCH 01/11] Test --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 1a5a0bf1..5d00a06f 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ - Labconnect + Labconnectt From 0bd893f0b5cf5c62fae5ea640258d5407a2a27d8 Mon Sep 17 00:00:00 2001 From: Doan Nguyen Date: Thu, 2 Oct 2025 23:38:37 -0400 Subject: [PATCH 02/11] Test --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 5d00a06f..1a5a0bf1 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ - Labconnectt + Labconnect From c50273ca9df0c64454741857fde4a39deff2f7d6 Mon Sep 17 00:00:00 2001 From: doan-neyugn Date: Tue, 21 Oct 2025 18:07:14 -0400 Subject: [PATCH 03/11] Dark mode for opportunities and create pages --- package-lock.json | 6 +- src/opportunities/components/FiltersField.tsx | 55 ++++++++++++------- src/opportunities/pages/Opportunities.tsx | 51 +++++++++-------- src/staff/pages/CreatePost.tsx | 25 +++++++-- 4 files changed, 85 insertions(+), 52 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8c91b75..13d6c3d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6927,9 +6927,9 @@ } }, "node_modules/vite": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", - "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "license": "MIT", "dependencies": { diff --git a/src/opportunities/components/FiltersField.tsx b/src/opportunities/components/FiltersField.tsx index cf049855..458d3e4f 100644 --- a/src/opportunities/components/FiltersField.tsx +++ b/src/opportunities/components/FiltersField.tsx @@ -13,42 +13,57 @@ interface FiltersFieldProps { setPopUpMenu: () => void; } -export default function FiltersField({ resetFilters, deleteFilter, filters, setPopUpMenu }: FiltersFieldProps) { +export default function FiltersField({ + resetFilters, + deleteFilter, + filters, + setPopUpMenu, +}: FiltersFieldProps) { return ( -
-
+
+
+
+ {/* Make sure SearchBar forwards className to the actual */} - + Change Filters - {/* Fix rendering with new filters = [ [],[],[] ]*/} + {/* Filter “chips” */} - {filters.map((filter) => { - return ( - } - key={filter} - special={false} - > - {filter} - - ) - })} + {filters.map((filter) => ( + } + special={false} + + > + {filter} + + ))}
- + Reset
-
+ +
); -}; +} + diff --git a/src/opportunities/pages/Opportunities.tsx b/src/opportunities/pages/Opportunities.tsx index f862ec3e..c82a313b 100644 --- a/src/opportunities/pages/Opportunities.tsx +++ b/src/opportunities/pages/Opportunities.tsx @@ -8,43 +8,48 @@ interface PageNavigationType { } const Opportunities: React.FC = () => { - // navigation bar const [pages, switchPage] = usePageNavigation(["Search", "Saved"], "Search") as [ PageNavigationType, (page: string) => void ]; - const activeLink = "text-black py-3 border-b-2 border-black text-lg"; - const normalLink = "text-gray-600 py-3 text-lg border-black hover:border-b-2 hover:text-black"; + // Tailwind classes with dark variants + const activeLink = + "py-3 text-lg font-semibold border-b-2 " + + "text-black dark:text-gray-100 " + + "border-black dark:border-gray-100"; + + const normalLink = + "py-3 text-lg font-semibold border-b-2 border-transparent " + + "text-gray-600 dark:text-gray-300 " + + "hover:text-black dark:hover:text-white " + + "hover:border-black dark:hover:border-gray-100"; - // displaying opportunities list component return ( -
+
-
-

Opportunities

- -
diff --git a/src/staff/pages/CreatePost.tsx b/src/staff/pages/CreatePost.tsx index 0fad0bc5..c85d977b 100644 --- a/src/staff/pages/CreatePost.tsx +++ b/src/staff/pages/CreatePost.tsx @@ -12,13 +12,26 @@ export default function CreatePost({ edit }: CreatePostProps) { if (!auth.isAuthenticated) { window.location.href = "/login"; + return null; } return ( -
- -

{edit === true ? "Edit Research Opportunity" : "Create Research Opportunity"}

- -
+
+ + +
+

+ {edit ? "Edit Research Opportunity" : "Create Research Opportunity"} +

+ + {/* subtle card so fields pop in dark mode */} +
+ +
+
+
); -}; +} From 9980fae8d21cbee642e2b61463046688e2103c95 Mon Sep 17 00:00:00 2001 From: doan-neyugn Date: Tue, 21 Oct 2025 18:26:37 -0400 Subject: [PATCH 04/11] dark mode --- .../components/OpportunitiesDetails.tsx | 89 ++++++++++++------- 1 file changed, 56 insertions(+), 33 deletions(-) diff --git a/src/opportunities/components/OpportunitiesDetails.tsx b/src/opportunities/components/OpportunitiesDetails.tsx index d4e41f36..f3eac9db 100644 --- a/src/opportunities/components/OpportunitiesDetails.tsx +++ b/src/opportunities/components/OpportunitiesDetails.tsx @@ -8,46 +8,66 @@ interface OpportunitiesListProps { export default function OpportunitiesList({ opportunities }: OpportunitiesListProps) { return ( -
+
- - {/* Column Headers */} - - - - - - - - - - + + + + + + + + + + + - - {/* Info about the opportunities */} + + {opportunities.length > 0 ? ( opportunities.map((opportunity) => ( - - - - - - - - + + + + + + + - - @@ -55,7 +75,10 @@ export default function OpportunitiesList({ opportunities }: OpportunitiesListPr )) ) : ( - @@ -65,4 +88,4 @@ export default function OpportunitiesList({ opportunities }: OpportunitiesListPr ); -}; \ No newline at end of file +} From cf5b51ce48757c7d62992baf6e9370f7934fbfa0 Mon Sep 17 00:00:00 2001 From: Doan Nguyen Date: Thu, 2 Oct 2025 23:38:10 -0400 Subject: [PATCH 05/11] Test --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 1a5a0bf1..5d00a06f 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ - Labconnect + Labconnectt From ade9681831c0a579cb3a53d97a2ccefbc331f9b3 Mon Sep 17 00:00:00 2001 From: Doan Nguyen Date: Thu, 2 Oct 2025 23:38:37 -0400 Subject: [PATCH 06/11] Test --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 5d00a06f..1a5a0bf1 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ - Labconnectt + Labconnect From fc2aa5abdf988fab615ee6876547da6eccf4a87a Mon Sep 17 00:00:00 2001 From: Rafael Cenzano <32753063+RafaelCenzano@users.noreply.github.com> Date: Fri, 17 Oct 2025 18:04:53 -0400 Subject: [PATCH 07/11] git add src/individuals/pages/Saved.tsx src/shared/components/Navigation/MainNavigation.tsx Create page to show saved opportunities (#165) Saved opportunities page Reminder for me: change the routes to vite combine / get rid of duplicate saved section on Oppotunities page --- src/individuals/pages/Saved.tsx | 8 ++++++++ src/shared/components/Navigation/MainNavigation.tsx | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/individuals/pages/Saved.tsx b/src/individuals/pages/Saved.tsx index 4a5ecb69..0c6e0de6 100644 --- a/src/individuals/pages/Saved.tsx +++ b/src/individuals/pages/Saved.tsx @@ -18,7 +18,11 @@ export default function SavedPage() { const fetchSaved = async () => { try { const response = await fetch( +<<<<<<< HEAD `${import.meta.env.VITE_BACKEND_SERVER}/savedOpportunities`, { +======= + `${process.env.REACT_APP_BACKEND_SERVER}/savedOpportunities`, { +>>>>>>> 608bbc4 (Create page to show saved opportunities (#165)) credentials: "include", } ); @@ -98,7 +102,11 @@ export default function SavedPage() { } const response = await fetch( +<<<<<<< HEAD `${import.meta.env.VITE_BACKEND_SERVER}/unsaveOpportunity/${opportunity.id}`, { +======= + `${process.env.REACT_APP_BACKEND_SERVER}/unsaveOpportunity/${opportunity.id}`, { +>>>>>>> 608bbc4 (Create page to show saved opportunities (#165)) method: "DELETE", credentials: "include", headers, diff --git a/src/shared/components/Navigation/MainNavigation.tsx b/src/shared/components/Navigation/MainNavigation.tsx index 7805cfd6..db946329 100644 --- a/src/shared/components/Navigation/MainNavigation.tsx +++ b/src/shared/components/Navigation/MainNavigation.tsx @@ -54,8 +54,12 @@ export default function MainNavigation() { key={item.name} to={item.href} className={({ isActive }) => +<<<<<<< HEAD `text-2xl font-bold transition duration-175 hover:scale-115 ${ isActive ? "underline scale-115" : "" +======= + `text-2xl font-bold hover:underline ${isActive ? "underline" : "" +>>>>>>> 608bbc4 (Create page to show saved opportunities (#165)) }` } > From 61dcca3c436d37f6d841c42ab395688d3b571516 Mon Sep 17 00:00:00 2001 From: doan-neyugn Date: Thu, 23 Oct 2025 15:22:00 -0400 Subject: [PATCH 08/11] Fix ENV vars (#166) merge --- src/individuals/pages/Saved.tsx | 8 ++++++++ src/shared/components/Navigation/MainNavigation.tsx | 4 ---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/individuals/pages/Saved.tsx b/src/individuals/pages/Saved.tsx index 0c6e0de6..be9236fc 100644 --- a/src/individuals/pages/Saved.tsx +++ b/src/individuals/pages/Saved.tsx @@ -18,11 +18,15 @@ export default function SavedPage() { const fetchSaved = async () => { try { const response = await fetch( +<<<<<<< HEAD <<<<<<< HEAD `${import.meta.env.VITE_BACKEND_SERVER}/savedOpportunities`, { ======= `${process.env.REACT_APP_BACKEND_SERVER}/savedOpportunities`, { >>>>>>> 608bbc4 (Create page to show saved opportunities (#165)) +======= + `${import.meta.env.VITE_BACKEND_SERVER}/savedOpportunities`, { +>>>>>>> 40a1bab (Fix ENV vars (#166)) credentials: "include", } ); @@ -102,11 +106,15 @@ export default function SavedPage() { } const response = await fetch( +<<<<<<< HEAD <<<<<<< HEAD `${import.meta.env.VITE_BACKEND_SERVER}/unsaveOpportunity/${opportunity.id}`, { ======= `${process.env.REACT_APP_BACKEND_SERVER}/unsaveOpportunity/${opportunity.id}`, { >>>>>>> 608bbc4 (Create page to show saved opportunities (#165)) +======= + `${import.meta.env.VITE_BACKEND_SERVER}/unsaveOpportunity/${opportunity.id}`, { +>>>>>>> 40a1bab (Fix ENV vars (#166)) method: "DELETE", credentials: "include", headers, diff --git a/src/shared/components/Navigation/MainNavigation.tsx b/src/shared/components/Navigation/MainNavigation.tsx index db946329..7805cfd6 100644 --- a/src/shared/components/Navigation/MainNavigation.tsx +++ b/src/shared/components/Navigation/MainNavigation.tsx @@ -54,12 +54,8 @@ export default function MainNavigation() { key={item.name} to={item.href} className={({ isActive }) => -<<<<<<< HEAD `text-2xl font-bold transition duration-175 hover:scale-115 ${ isActive ? "underline scale-115" : "" -======= - `text-2xl font-bold hover:underline ${isActive ? "underline" : "" ->>>>>>> 608bbc4 (Create page to show saved opportunities (#165)) }` } > From 40a9dd2928127757e234dc8578e3c39d1af2b2f8 Mon Sep 17 00:00:00 2001 From: doan-neyugn Date: Wed, 22 Oct 2025 11:48:00 -0400 Subject: [PATCH 09/11] Dark mode fix --- src/opportunities/components/OpportunitiesDetails.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/opportunities/components/OpportunitiesDetails.tsx b/src/opportunities/components/OpportunitiesDetails.tsx index f3eac9db..040a9bb8 100644 --- a/src/opportunities/components/OpportunitiesDetails.tsx +++ b/src/opportunities/components/OpportunitiesDetails.tsx @@ -11,7 +11,7 @@ export default function OpportunitiesList({ opportunities }: OpportunitiesListPr
PositionDescriptionLocationPayCreditsLab ManagersTermViewSave
PositionDescriptionLocationPayCreditsLab ManagersTermViewSave
{opportunity.name}{opportunity.description}{opportunity.location}{opportunity.pay ? `$${opportunity.pay}/hr` : ""}{opportunity.credits}{opportunity.lab_managers} +
+ {opportunity.name} + + {opportunity.description} + + {opportunity.location} + + {opportunity.pay ? `$${opportunity.pay}/hr` : ""} + + {opportunity.credits} + + {opportunity.lab_managers} + {opportunity.semester} {opportunity.year} - - - + + - +
+ No results found.
- + From 0714abb1c3c56a1ef9bef1f769effb3f13770bfc Mon Sep 17 00:00:00 2001 From: doan-neyugn Date: Wed, 22 Oct 2025 15:27:16 -0400 Subject: [PATCH 10/11] Dark mode --- src/opportunities/pages/Opportunities.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/opportunities/pages/Opportunities.tsx b/src/opportunities/pages/Opportunities.tsx index c82a313b..869eb25d 100644 --- a/src/opportunities/pages/Opportunities.tsx +++ b/src/opportunities/pages/Opportunities.tsx @@ -49,7 +49,6 @@ const Opportunities: React.FC = () => { {pages.activePage === "Search" && } - {pages.activePage === "Saved" && } {/* keep same component if that’s intended */} From defd1a6262094a9610531b096df7d0cce9ea237c Mon Sep 17 00:00:00 2001 From: doan-neyugn Date: Thu, 23 Oct 2025 15:38:43 -0400 Subject: [PATCH 11/11] Merge --- src/individuals/pages/Saved.tsx | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/individuals/pages/Saved.tsx b/src/individuals/pages/Saved.tsx index be9236fc..31014404 100644 --- a/src/individuals/pages/Saved.tsx +++ b/src/individuals/pages/Saved.tsx @@ -18,15 +18,7 @@ export default function SavedPage() { const fetchSaved = async () => { try { const response = await fetch( -<<<<<<< HEAD -<<<<<<< HEAD `${import.meta.env.VITE_BACKEND_SERVER}/savedOpportunities`, { -======= - `${process.env.REACT_APP_BACKEND_SERVER}/savedOpportunities`, { ->>>>>>> 608bbc4 (Create page to show saved opportunities (#165)) -======= - `${import.meta.env.VITE_BACKEND_SERVER}/savedOpportunities`, { ->>>>>>> 40a1bab (Fix ENV vars (#166)) credentials: "include", } ); @@ -106,15 +98,7 @@ export default function SavedPage() { } const response = await fetch( -<<<<<<< HEAD -<<<<<<< HEAD - `${import.meta.env.VITE_BACKEND_SERVER}/unsaveOpportunity/${opportunity.id}`, { -======= - `${process.env.REACT_APP_BACKEND_SERVER}/unsaveOpportunity/${opportunity.id}`, { ->>>>>>> 608bbc4 (Create page to show saved opportunities (#165)) -======= `${import.meta.env.VITE_BACKEND_SERVER}/unsaveOpportunity/${opportunity.id}`, { ->>>>>>> 40a1bab (Fix ENV vars (#166)) method: "DELETE", credentials: "include", headers, @@ -139,4 +123,4 @@ export default function SavedPage() { )} ); -}; +}; \ No newline at end of file
Position Description