From af8404c102dda3de0fcd7c6938cd45932e2c0e3e Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Mon, 22 Jul 2024 20:40:31 -0400 Subject: [PATCH 01/24] restructured files --- src/app/home/checkin/[id]/layout.tsx | 25 +++++++++++++++ src/app/{ => home}/checkin/[id]/page.tsx | 0 src/app/{ => home}/checkin/error/page.tsx | 0 src/app/{ => home}/checkin/success/page.tsx | 0 src/app/{checkin/[id] => home}/layout.tsx | 6 ++-- src/app/home/page.tsx | 31 +++++++++++++++++++ .../{index.tsx => userSessionProvider.tsx} | 0 7 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 src/app/home/checkin/[id]/layout.tsx rename src/app/{ => home}/checkin/[id]/page.tsx (100%) rename src/app/{ => home}/checkin/error/page.tsx (100%) rename src/app/{ => home}/checkin/success/page.tsx (100%) rename src/app/{checkin/[id] => home}/layout.tsx (71%) create mode 100644 src/app/home/page.tsx rename src/app/providers/{index.tsx => userSessionProvider.tsx} (100%) diff --git a/src/app/home/checkin/[id]/layout.tsx b/src/app/home/checkin/[id]/layout.tsx new file mode 100644 index 0000000..26e4cf9 --- /dev/null +++ b/src/app/home/checkin/[id]/layout.tsx @@ -0,0 +1,25 @@ +// import '../../globals.css' +import UserSessionProvider from '@/app/providers/userSessionProvider' +import type { Metadata } from 'next' + + +export const metadata: Metadata = { + title: 'Whyphi - Rush Checkin', + description: "PCT Zeta Chapter - Rush Checkin Page", +} + +export default function RootLayout({ + children, +}: { + children: React.ReactNode +}) { + return ( + +
+ {children} +
+
+ + + ) +} diff --git a/src/app/checkin/[id]/page.tsx b/src/app/home/checkin/[id]/page.tsx similarity index 100% rename from src/app/checkin/[id]/page.tsx rename to src/app/home/checkin/[id]/page.tsx diff --git a/src/app/checkin/error/page.tsx b/src/app/home/checkin/error/page.tsx similarity index 100% rename from src/app/checkin/error/page.tsx rename to src/app/home/checkin/error/page.tsx diff --git a/src/app/checkin/success/page.tsx b/src/app/home/checkin/success/page.tsx similarity index 100% rename from src/app/checkin/success/page.tsx rename to src/app/home/checkin/success/page.tsx diff --git a/src/app/checkin/[id]/layout.tsx b/src/app/home/layout.tsx similarity index 71% rename from src/app/checkin/[id]/layout.tsx rename to src/app/home/layout.tsx index 4ee9fc0..052ccdd 100644 --- a/src/app/checkin/[id]/layout.tsx +++ b/src/app/home/layout.tsx @@ -1,11 +1,11 @@ // import '../../globals.css' -import UserSessionProvider from '@/app/providers' +import UserSessionProvider from '@/app/providers/userSessionProvider' import type { Metadata } from 'next' export const metadata: Metadata = { - title: 'Whyphi - Rush', - description: "PCT Zeta Chapter - Rush", + title: 'Whyphi - Rush Home', + description: "PCT Zeta Chapter - Rush Home Page", } export default function RootLayout({ diff --git a/src/app/home/page.tsx b/src/app/home/page.tsx new file mode 100644 index 0000000..ddb1193 --- /dev/null +++ b/src/app/home/page.tsx @@ -0,0 +1,31 @@ +"use client" + +import { useState, useEffect } from "react" +import { useSession, signOut } from "next-auth/react"; +import { Event } from "@/types/Events" +import { useRouter } from 'next/navigation' +import Loader from "@/components/Loader" + +export default function Home({ params }: { params: { id: string } }) { + const router = useRouter(); + const { data: session } = useSession(); + const [event, setEvent] = useState(null); + const [code, setCode] = useState(""); + const [isLoading, setIsLoading] = useState(true); + const [isButtonDisabled, setIsButtonDisabled] = useState(false); + const [error, setError] = useState(null); + + console.log(session); + + + if (isLoading) { + return + } + return ( +
+ hello world +
+ ); +} + + diff --git a/src/app/providers/index.tsx b/src/app/providers/userSessionProvider.tsx similarity index 100% rename from src/app/providers/index.tsx rename to src/app/providers/userSessionProvider.tsx From 45290fcacb4e65acd602974d10c6f0efd991fae4 Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Wed, 24 Jul 2024 18:03:21 -0400 Subject: [PATCH 02/24] fundamental refactors to rush website (fixed login, added navbar) --- package-lock.json | 131 +++++++++++++++++++- package.json | 5 +- public/pct-logo.png | Bin 0 -> 68051 bytes src/app/{home => }/checkin/[id]/layout.tsx | 0 src/app/{home => }/checkin/[id]/page.tsx | 0 src/app/{home => }/checkin/error/page.tsx | 0 src/app/{home => }/checkin/success/page.tsx | 0 src/app/{home => dashboard}/layout.tsx | 2 + src/app/{home => dashboard}/page.tsx | 2 +- src/app/page.tsx | 64 +++++++++- src/components/NavSidebar.tsx | 115 +++++++++++++++++ 11 files changed, 309 insertions(+), 10 deletions(-) create mode 100644 public/pct-logo.png rename src/app/{home => }/checkin/[id]/layout.tsx (100%) rename src/app/{home => }/checkin/[id]/page.tsx (100%) rename src/app/{home => }/checkin/error/page.tsx (100%) rename src/app/{home => }/checkin/success/page.tsx (100%) rename src/app/{home => dashboard}/layout.tsx (88%) rename src/app/{home => dashboard}/page.tsx (91%) create mode 100644 src/components/NavSidebar.tsx diff --git a/package-lock.json b/package-lock.json index 60c8079..e0ee949 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@radix-ui/react-slot": "^1.0.2", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", + "flowbite-react": "^0.10.1", "lucide-react": "^0.368.0", "next": "14.2.1", "next-auth": "^4.24.7", @@ -51,6 +52,54 @@ "node": ">=6.9.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", + "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==", + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.8.tgz", + "integrity": "sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.5" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.17", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.17.tgz", + "integrity": "sha512-ESD+jYWwqwVzaIgIhExrArdsCL1rOAzryG/Sjlu8yaD3Mtqi3uVyhbE2V7jD58Mo52qbzKz2eUY/Xgh5I86FCQ==", + "dependencies": { + "@floating-ui/react-dom": "^2.1.0", + "@floating-ui/utils": "^0.2.0", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.5.tgz", + "integrity": "sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==" + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -299,6 +348,15 @@ "node": ">=14" } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@radix-ui/primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", @@ -741,6 +799,11 @@ "node": ">=6" } }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -816,6 +879,17 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "devOptional": true }, + "node_modules/debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-2.1.0.tgz", + "integrity": "sha512-OkL3+0pPWCqoBc/nhO9u6TIQNTK44fnBnzuVtJAbp13Naxw9R6u21x+8tVTka87AhDZ3htqZ2pSSsZl9fqL2Wg==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -881,6 +955,34 @@ "node": ">=8" } }, + "node_modules/flowbite": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/flowbite/-/flowbite-2.3.0.tgz", + "integrity": "sha512-pm3JRo8OIJHGfFYWgaGpPv8E+UdWy0Z3gEAGufw+G/1dusaU/P1zoBLiQpf2/+bYAi+GBQtPVG86KYlV0W+AFQ==", + "dependencies": { + "@popperjs/core": "^2.9.3", + "mini-svg-data-uri": "^1.4.3" + } + }, + "node_modules/flowbite-react": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/flowbite-react/-/flowbite-react-0.10.1.tgz", + "integrity": "sha512-T6rdfrEvIqrf7aIB+OLkuvDaa/h0Ufnl7/5vJR9JJ4IpKIvJm/JzhAiYmkD+jDj3HuILsN21+ZVV6gd4tlndYQ==", + "dependencies": { + "@floating-ui/core": "1.6.2", + "@floating-ui/react": "0.26.17", + "classnames": "2.5.1", + "debounce": "2.1.0", + "flowbite": "2.3.0", + "react-icons": "5.2.1", + "tailwind-merge": "2.3.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18", + "tailwindcss": "^3" + } + }, "node_modules/foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", @@ -1125,6 +1227,14 @@ "node": ">=8.6" } }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, "node_modules/minimatch": { "version": "9.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", @@ -1615,6 +1725,14 @@ "react": "^18.2.0" } }, + "node_modules/react-icons": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.2.1.tgz", + "integrity": "sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==", + "peerDependencies": { + "react": "*" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -1882,12 +2000,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, "node_modules/tailwind-merge": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.2.tgz", - "integrity": "sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.3.0.tgz", + "integrity": "sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==", "dependencies": { - "@babel/runtime": "^7.24.0" + "@babel/runtime": "^7.24.1" }, "funding": { "type": "github", diff --git a/package.json b/package.json index 5ddd149..7280e2b 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,9 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", + "dev": "next dev -p 3001", "build": "next build", - "start": "next start", + "start": "next start -p 3001", "lint": "next lint" }, "dependencies": { @@ -13,6 +13,7 @@ "@radix-ui/react-slot": "^1.0.2", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", + "flowbite-react": "^0.10.1", "lucide-react": "^0.368.0", "next": "14.2.1", "next-auth": "^4.24.7", diff --git a/public/pct-logo.png b/public/pct-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6c9dc8d5d83e08870a07ea21c3ca4bf23c7b0aba GIT binary patch literal 68051 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 +
{children}
diff --git a/src/app/home/page.tsx b/src/app/dashboard/page.tsx similarity index 91% rename from src/app/home/page.tsx rename to src/app/dashboard/page.tsx index ddb1193..578a66f 100644 --- a/src/app/home/page.tsx +++ b/src/app/dashboard/page.tsx @@ -6,7 +6,7 @@ import { Event } from "@/types/Events" import { useRouter } from 'next/navigation' import Loader from "@/components/Loader" -export default function Home({ params }: { params: { id: string } }) { +export default function Dashboard({ params }: { params: { id: string } }) { const router = useRouter(); const { data: session } = useSession(); const [event, setEvent] = useState(null); diff --git a/src/app/page.tsx b/src/app/page.tsx index 83edb64..3deb5f3 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,5 +1,63 @@ -import { redirect } from 'next/navigation'; +"use client" + +import React from "react"; + export default function Home() { - redirect("https://bupct.com/"); -} \ No newline at end of file + return ( +
+
+ + +
+
+ + Phi Chi Theta Zeta Chapter Logo + + +

+ Welcome to WhyPhi! +

+ +

+ {`WhyPhi is Phi Chi Theta Zeta Chapter's rush checkin and application website.`} +

+ + + + +
+

+ Not working? Contact PCT Tech Team! +

+
+
+
+
+
+ ); +} + diff --git a/src/components/NavSidebar.tsx b/src/components/NavSidebar.tsx new file mode 100644 index 0000000..13af39d --- /dev/null +++ b/src/components/NavSidebar.tsx @@ -0,0 +1,115 @@ +"use client"; +import React, { useState } from "react"; +import { useSession, signOut } from "next-auth/react"; +import { Dropdown, Avatar } from "flowbite-react"; +import { HiOutlineQrcode, HiUsers } from "react-icons/hi"; + + + +export default function NavSidebar() { + const { data: session } = useSession(); + const [isSidebarOpen, setIsSidebarOpen] = useState(false); + + + const toggleSidebar = () => { + setIsSidebarOpen(!isSidebarOpen); + }; + + return ( + <> + + + + + + ); +} From 2ac921d2d666ccf9660299f58963b3f77bc71a31 Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Wed, 24 Jul 2024 18:24:35 -0400 Subject: [PATCH 03/24] logout functionality fully integrated --- src/app/checkin/[id]/layout.tsx | 2 ++ src/app/checkin/[id]/page.tsx | 4 ++-- src/components/NavSidebar.tsx | 23 ++++++++--------------- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/app/checkin/[id]/layout.tsx b/src/app/checkin/[id]/layout.tsx index 26e4cf9..b48f510 100644 --- a/src/app/checkin/[id]/layout.tsx +++ b/src/app/checkin/[id]/layout.tsx @@ -1,5 +1,6 @@ // import '../../globals.css' import UserSessionProvider from '@/app/providers/userSessionProvider' +import NavSidebar from '@/components/NavSidebar' import type { Metadata } from 'next' @@ -15,6 +16,7 @@ export default function RootLayout({ }) { return ( +
{children}
diff --git a/src/app/checkin/[id]/page.tsx b/src/app/checkin/[id]/page.tsx index ad5a672..1b7e93a 100644 --- a/src/app/checkin/[id]/page.tsx +++ b/src/app/checkin/[id]/page.tsx @@ -124,9 +124,9 @@ export default function Checkin({ params }: { params: { id: string } }) { return (
-
+ {/*
-
+
*/}

Hi, {session?.user?.name}!

Welcome to Phi Chi Theta, Zeta Chapter's Rush! We're excited to have you here.

diff --git a/src/components/NavSidebar.tsx b/src/components/NavSidebar.tsx index 13af39d..ac7b222 100644 --- a/src/components/NavSidebar.tsx +++ b/src/components/NavSidebar.tsx @@ -2,7 +2,6 @@ import React, { useState } from "react"; import { useSession, signOut } from "next-auth/react"; import { Dropdown, Avatar } from "flowbite-react"; -import { HiOutlineQrcode, HiUsers } from "react-icons/hi"; @@ -44,31 +43,25 @@ export default function NavSidebar() { PCT Logo - {/* Whyphi */}
{session ? ( } + label={Rounded avatar} arrowIcon={false} inline - label={} > - - {session?.user?.name} - - - {session?.user?.email} - + {session?.user?.name} + {session?.user?.email} - + signOut({ callbackUrl: "/" })}> + Sign out + ) : ("")} From a229075bca55b9ef9fa056e6ebd0046d9dbd6d5c Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Wed, 24 Jul 2024 21:22:58 -0400 Subject: [PATCH 04/24] card displayed correctly --- next.config.mjs | 6 +++- src/app/dashboard/page.tsx | 40 ++++++++++++++++++++------ src/components/dashboard/EventCard.tsx | 28 ++++++++++++++++++ src/types/Events.tsx | 25 ++++++++++++---- 4 files changed, 85 insertions(+), 14 deletions(-) create mode 100644 src/components/dashboard/EventCard.tsx diff --git a/next.config.mjs b/next.config.mjs index 4678774..4601cfb 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,8 @@ /** @type {import('next').NextConfig} */ -const nextConfig = {}; +const nextConfig = { + images: { + domains: ['whyphi-zap.s3.amazonaws.com'], + }, +}; export default nextConfig; diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 578a66f..ad9b58f 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -2,29 +2,53 @@ import { useState, useEffect } from "react" import { useSession, signOut } from "next-auth/react"; -import { Event } from "@/types/Events" +import { Event, RushCategory } from "@/types/Events" import { useRouter } from 'next/navigation' import Loader from "@/components/Loader" +import EventCard from "@/components/dashboard/EventCard"; export default function Dashboard({ params }: { params: { id: string } }) { const router = useRouter(); const { data: session } = useSession(); - const [event, setEvent] = useState(null); - const [code, setCode] = useState(""); + const [rushCategory, setRushCategory] = useState(null); const [isLoading, setIsLoading] = useState(true); - const [isButtonDisabled, setIsButtonDisabled] = useState(false); const [error, setError] = useState(null); - console.log(session); + console.log(rushCategory?.events); + useEffect(() => { + fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/events/rush/default`, { + }) + .then((res) => { + if (!res.ok) { + // router.push("/checkin/error"); + throw new Error("Failed to fetch event"); + } + return res.json(); + }) + .then((data) => { + setRushCategory(data); + setIsLoading(false); + }) + .catch((err) => { + setError(err); + }); + }, []); + if (isLoading) { return } return ( -
- hello world -
+
+ {/*
*/} + {rushCategory?.events.map((event, index) => ( +
+ +
+ ))} + {/*
*/} +
); } diff --git a/src/components/dashboard/EventCard.tsx b/src/components/dashboard/EventCard.tsx new file mode 100644 index 0000000..a83744c --- /dev/null +++ b/src/components/dashboard/EventCard.tsx @@ -0,0 +1,28 @@ +import { Event } from "@/types/Events"; +import { Card } from "flowbite-react"; +import Image from "next/image"; + +interface EventCardProps { + event: Event +} + +export default function EventCard({ + event +}: EventCardProps) { + return ( + + + + + ) +} \ No newline at end of file diff --git a/src/types/Events.tsx b/src/types/Events.tsx index 4d39827..d6b30b9 100644 --- a/src/types/Events.tsx +++ b/src/types/Events.tsx @@ -1,7 +1,22 @@ +export interface RushCategory { + _id: string, + name: string, + defaultRushCategory: boolean, + dateCreated: string, + events: [Event], +} + export interface Event { - _id: string - categoryId: string - name: string - dateCreated: string - numAttendees: number | null + _id: string, + categoryId: string, + name: string, + dateCreated: string, + numAttendees: number | null, + location: string, + date: string, + deadline: string, + eventCoverImage: string, + eventCoverImageName: string, + lastModified: string, + attendeesId: string, } \ No newline at end of file From 62ba99a63e9387e03eab86eb6d413cf3bb04eef9 Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Wed, 24 Jul 2024 22:08:48 -0400 Subject: [PATCH 05/24] added styling to frontend dashboard --- package-lock.json | 9 +++++++++ package.json | 1 + src/app/dashboard/page.tsx | 14 ++++++-------- src/components/dashboard/EventCard.tsx | 21 ++++++++++++--------- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index e0ee949..dd186aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "next-auth": "^4.24.7", "react": "^18", "react-dom": "^18", + "react-timestamp": "^6.0.0", "tailwind-merge": "^2.2.2", "tailwindcss-animate": "^1.0.7" }, @@ -1733,6 +1734,14 @@ "react": "*" } }, + "node_modules/react-timestamp": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/react-timestamp/-/react-timestamp-6.0.0.tgz", + "integrity": "sha512-ZVyVuVp1MBWQGmcip3Nzb9n1uzAqkyGJgngiAa7WbQbWuw+IS3qlnYBoXThlHAt1Yby9eOuzMZse/jRQfq/LeQ==", + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", diff --git a/package.json b/package.json index 7280e2b..2906e36 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "next-auth": "^4.24.7", "react": "^18", "react-dom": "^18", + "react-timestamp": "^6.0.0", "tailwind-merge": "^2.2.2", "tailwindcss-animate": "^1.0.7" }, diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index ad9b58f..533e6b1 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -40,16 +40,14 @@ export default function Dashboard({ params }: { params: { id: string } }) { return } return ( -
- {/*
*/} +
+
{rushCategory?.events.map((event, index) => ( -
+
))} - {/*
*/} -
+
+
); -} - - +}; \ No newline at end of file diff --git a/src/components/dashboard/EventCard.tsx b/src/components/dashboard/EventCard.tsx index a83744c..8955aa3 100644 --- a/src/components/dashboard/EventCard.tsx +++ b/src/components/dashboard/EventCard.tsx @@ -1,6 +1,7 @@ import { Event } from "@/types/Events"; import { Card } from "flowbite-react"; import Image from "next/image"; +import Timestamp from "react-timestamp"; interface EventCardProps { event: Event @@ -10,19 +11,21 @@ export default function EventCard({ event }: EventCardProps) { return ( - -
+
- {event.eventCoverImageName} - - - ) -} \ No newline at end of file +}; \ No newline at end of file From 5a9923e5adcd429d0338364a54b54a14b82042e7 Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Wed, 24 Jul 2024 22:25:26 -0400 Subject: [PATCH 06/24] refactored dashboard (future debt) --- src/app/dashboard/page.tsx | 38 ++++++++++++++++++++------------------ src/types/Events.tsx | 6 +++++- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 533e6b1..58d2472 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -8,33 +8,35 @@ import Loader from "@/components/Loader" import EventCard from "@/components/dashboard/EventCard"; export default function Dashboard({ params }: { params: { id: string } }) { - const router = useRouter(); const { data: session } = useSession(); const [rushCategory, setRushCategory] = useState(null); const [isLoading, setIsLoading] = useState(true); - const [error, setError] = useState(null); - - console.log(rushCategory?.events); - + const [error, setError] = useState(null); useEffect(() => { - fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/events/rush/default`, { - }) - .then((res) => { - if (!res.ok) { + // ensure user is defined + if (!session?.user) return; + + // TODO: pass this into API + // const email = session.user.email + + const fetchRushEvents = async () => { + try { + const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/events/rush/default`); + if (!response.ok) { // router.push("/checkin/error"); - throw new Error("Failed to fetch event"); + setError(new Error("Failed to fetch event")); } - return res.json(); - }) - .then((data) => { + const data: RushCategory = await response.json(); setRushCategory(data); setIsLoading(false); - }) - .catch((err) => { - setError(err); - }); - }, []); + } catch (error) { + setError(error); + } + } + + fetchRushEvents(); + }, [session]); if (isLoading) { return diff --git a/src/types/Events.tsx b/src/types/Events.tsx index d6b30b9..121f215 100644 --- a/src/types/Events.tsx +++ b/src/types/Events.tsx @@ -3,7 +3,7 @@ export interface RushCategory { name: string, defaultRushCategory: boolean, dateCreated: string, - events: [Event], + events: [DashboardEvent], } export interface Event { @@ -19,4 +19,8 @@ export interface Event { eventCoverImageName: string, lastModified: string, attendeesId: string, +} + +interface DashboardEvent extends Event { + checkedIn: boolean, } \ No newline at end of file From ba7aed8a0e64343fc712707e537cbafeb032f1ee Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:36:39 -0400 Subject: [PATCH 07/24] fixed grid styling --- src/app/dashboard/layout.tsx | 2 +- src/app/dashboard/page.tsx | 8 +++++--- src/components/NavSidebar.tsx | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/app/dashboard/layout.tsx b/src/app/dashboard/layout.tsx index f592212..3bc3ff9 100644 --- a/src/app/dashboard/layout.tsx +++ b/src/app/dashboard/layout.tsx @@ -17,7 +17,7 @@ export default function RootLayout({ return ( -
+
{children}
diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 58d2472..7b22571 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -42,10 +42,12 @@ export default function Dashboard({ params }: { params: { id: string } }) { return } return ( -
-
+
+ {/*
*/} +
{rushCategory?.events.map((event, index) => ( -
+ //
+
))} diff --git a/src/components/NavSidebar.tsx b/src/components/NavSidebar.tsx index ac7b222..6aa49aa 100644 --- a/src/components/NavSidebar.tsx +++ b/src/components/NavSidebar.tsx @@ -41,7 +41,7 @@ export default function NavSidebar() { > - + PCT Logo
@@ -69,7 +69,7 @@ export default function NavSidebar() {
- +{/*
- + */} ); } From 621a7d0b5a0003f457530d60489fa4f40470bac5 Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Thu, 25 Jul 2024 15:15:54 -0400 Subject: [PATCH 08/24] fixed missing flowbite dependencies --- package-lock.json | 173 ++++++++++++++++++++++--- package.json | 5 +- src/app/globals.css | 2 +- src/components/dashboard/EventCard.tsx | 44 ++++--- src/types/Events.tsx | 2 +- tailwind.config.ts | 7 +- 6 files changed, 193 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd186aa..d6e9922 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,8 +26,9 @@ "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", - "postcss": "^8", - "tailwindcss": "^3.4.1", + "autoprefixer": "^10.4.19", + "postcss": "^8.4.40", + "tailwindcss": "^3.4.7", "typescript": "^5" } }, @@ -674,6 +675,43 @@ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -709,6 +747,38 @@ "node": ">=8" } }, + "node_modules/browserslist": { + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -729,9 +799,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001609", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001609.tgz", - "integrity": "sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==", + "version": "1.0.30001643", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", + "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", "funding": [ { "type": "opencollective", @@ -906,11 +976,26 @@ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, + "node_modules/electron-to-chromium": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.1.tgz", + "integrity": "sha512-FKbOCOQ5QRB3VlIbl1LZQefWIYwszlBloaXcY2rbfpu9ioJnNh3TK03YtIDKDo3WKBi8u+YV4+Fn2CkEozgf4w==", + "dev": true + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -999,6 +1084,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -1388,6 +1486,12 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1396,6 +1500,15 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/oauth": { "version": "0.9.15", "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", @@ -1487,9 +1600,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -1519,9 +1632,9 @@ } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.40", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz", + "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==", "funding": [ { "type": "opencollective", @@ -1538,7 +1651,7 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "source-map-js": "^1.2.0" }, "engines": { @@ -2027,9 +2140,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", - "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.7.tgz", + "integrity": "sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -2129,6 +2242,36 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index 2906e36..3ac352f 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,9 @@ "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", - "postcss": "^8", - "tailwindcss": "^3.4.1", + "autoprefixer": "^10.4.19", + "postcss": "^8.4.40", + "tailwindcss": "^3.4.7", "typescript": "^5" } } diff --git a/src/app/globals.css b/src/app/globals.css index bd6213e..b5c61c9 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,3 +1,3 @@ @tailwind base; @tailwind components; -@tailwind utilities; \ No newline at end of file +@tailwind utilities; diff --git a/src/components/dashboard/EventCard.tsx b/src/components/dashboard/EventCard.tsx index 8955aa3..f3b974b 100644 --- a/src/components/dashboard/EventCard.tsx +++ b/src/components/dashboard/EventCard.tsx @@ -1,31 +1,35 @@ -import { Event } from "@/types/Events"; -import { Card } from "flowbite-react"; -import Image from "next/image"; +import { DashboardEvent } from "@/types/Events"; +import { Badge, Card } from "flowbite-react"; +import { useRouter } from 'next/navigation' import Timestamp from "react-timestamp"; interface EventCardProps { - event: Event + event: DashboardEvent } export default function EventCard({ event }: EventCardProps) { + const router = useRouter(); return ( - + router.push(`/checkin/${event._id}`)} + > +
+ {event.name} +
+

+ +

+

+ Location: {event.location} +

+

+ Status: Checked-in +

+
) }; \ No newline at end of file diff --git a/src/types/Events.tsx b/src/types/Events.tsx index 121f215..b14a9ca 100644 --- a/src/types/Events.tsx +++ b/src/types/Events.tsx @@ -21,6 +21,6 @@ export interface Event { attendeesId: string, } -interface DashboardEvent extends Event { +export interface DashboardEvent extends Event { checkedIn: boolean, } \ No newline at end of file diff --git a/tailwind.config.ts b/tailwind.config.ts index ca64324..3dfc77a 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,4 +1,5 @@ import type { Config } from "tailwindcss" +const flowbite = require("flowbite-react/tailwind"); const config = { darkMode: ["class"], @@ -7,6 +8,7 @@ const config = { './components/**/*.{ts,tsx}', './app/**/*.{ts,tsx}', './src/**/*.{ts,tsx}', + flowbite.content(), ], prefix: "", theme: { @@ -34,7 +36,10 @@ const config = { }, }, }, - plugins: [require("tailwindcss-animate")], + plugins: [ + require("tailwindcss-animate"), + flowbite.plugin(), + ], } satisfies Config export default config \ No newline at end of file From e685a29b88b067ad93fb9f2da8a10295718945f5 Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Thu, 25 Jul 2024 15:30:50 -0400 Subject: [PATCH 09/24] added status icon depending on if rush event is passed due --- src/components/dashboard/EventCard.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/dashboard/EventCard.tsx b/src/components/dashboard/EventCard.tsx index f3b974b..8954826 100644 --- a/src/components/dashboard/EventCard.tsx +++ b/src/components/dashboard/EventCard.tsx @@ -11,14 +11,19 @@ export default function EventCard({ event }: EventCardProps) { const router = useRouter(); + + const eventDeadline = new Date(event.deadline); + const isEventPassed = eventDeadline < new Date(); + return ( - router.push(`/checkin/${event._id}`)} > -
+
+ {event.name}

From 15cd59c99b210fe925fbe4b2073947eaf6606fe1 Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Thu, 25 Jul 2024 16:38:35 -0400 Subject: [PATCH 10/24] fixed rush navSidebar avatar --- src/components/NavSidebar.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/NavSidebar.tsx b/src/components/NavSidebar.tsx index 6aa49aa..76dca58 100644 --- a/src/components/NavSidebar.tsx +++ b/src/components/NavSidebar.tsx @@ -48,9 +48,7 @@ export default function NavSidebar() {
{session ? ( } - label={Rounded avatar} + label={} arrowIcon={false} inline > @@ -58,7 +56,6 @@ export default function NavSidebar() { {session?.user?.name} {session?.user?.email} - signOut({ callbackUrl: "/" })}> Sign out From 6b7dd099dcb89aa3e4a7f19ae0800a405d9ca6af Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Thu, 25 Jul 2024 16:55:38 -0400 Subject: [PATCH 11/24] added more styling to EventCard component --- src/components/dashboard/EventCard.tsx | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/components/dashboard/EventCard.tsx b/src/components/dashboard/EventCard.tsx index 8954826..b4ece50 100644 --- a/src/components/dashboard/EventCard.tsx +++ b/src/components/dashboard/EventCard.tsx @@ -15,12 +15,26 @@ export default function EventCard({ const eventDeadline = new Date(event.deadline); const isEventPassed = eventDeadline < new Date(); + const handleEventClick = () => { + if (!isEventPassed) { + router.push(`/checkin/${event._id}`) + } + } + return ( router.push(`/checkin/${event._id}`)} + className={`${isEventPassed ? "bg-gray-200 cursor-not-allowed" : "cursor-pointer"}`} + renderImage={() => ( +
+ {event.eventCoverImageName} + {isEventPassed &&
} +
+ )} + onClick={handleEventClick} >
From 77314e342ad5afdbfaf1938a2b3d0981ae120e49 Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Thu, 25 Jul 2024 19:02:43 -0400 Subject: [PATCH 12/24] added checkin statuses to EventCard --- src/app/dashboard/page.tsx | 9 ++++----- src/components/dashboard/EventCard.tsx | 25 +++++++++++++++++++++---- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 7b22571..08ce411 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -1,8 +1,8 @@ "use client" import { useState, useEffect } from "react" -import { useSession, signOut } from "next-auth/react"; -import { Event, RushCategory } from "@/types/Events" +import { useSession } from "next-auth/react"; +import { RushCategory } from "@/types/Events" import { useRouter } from 'next/navigation' import Loader from "@/components/Loader" import EventCard from "@/components/dashboard/EventCard"; @@ -17,12 +17,11 @@ export default function Dashboard({ params }: { params: { id: string } }) { // ensure user is defined if (!session?.user) return; - // TODO: pass this into API - // const email = session.user.email + const email = session.user.email const fetchRushEvents = async () => { try { - const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/events/rush/default`); + const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/events/rush/default/${email}`); if (!response.ok) { // router.push("/checkin/error"); setError(new Error("Failed to fetch event")); diff --git a/src/components/dashboard/EventCard.tsx b/src/components/dashboard/EventCard.tsx index b4ece50..922807d 100644 --- a/src/components/dashboard/EventCard.tsx +++ b/src/components/dashboard/EventCard.tsx @@ -1,6 +1,7 @@ import { DashboardEvent } from "@/types/Events"; import { Badge, Card } from "flowbite-react"; import { useRouter } from 'next/navigation' +import { useState } from "react"; import Timestamp from "react-timestamp"; interface EventCardProps { @@ -14,16 +15,31 @@ export default function EventCard({ const eventDeadline = new Date(event.deadline); const isEventPassed = eventDeadline < new Date(); + const disabled = isEventPassed || event.checkedIn const handleEventClick = () => { - if (!isEventPassed) { + if (!disabled) { router.push(`/checkin/${event._id}`) } } + const renderStatus = () => ( + event.checkedIn ? ( + Checked-in + ) : ( + <> + {isEventPassed ? ( + Did not attend + ) : ( + Not checked-in + )} + + ) + ) + return ( (
{event.eventCoverImageName} - {isEventPassed &&
} + {disabled &&
}
)} onClick={handleEventClick} @@ -47,7 +63,8 @@ export default function EventCard({ Location: {event.location}

- Status: Checked-in + Status: + {renderStatus()}

) From ffc2a1ea473c1191b6667e489db8ef539723e606 Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Thu, 25 Jul 2024 20:57:03 -0400 Subject: [PATCH 13/24] sending POST to backend --- src/app/dashboard/page.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 08ce411..279163f 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -21,7 +21,11 @@ export default function Dashboard({ params }: { params: { id: string } }) { const fetchRushEvents = async () => { try { - const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/events/rush/default/${email}`); + const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/events/rush/default`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ email: email }) + }); if (!response.ok) { // router.push("/checkin/error"); setError(new Error("Failed to fetch event")); @@ -42,10 +46,8 @@ export default function Dashboard({ params }: { params: { id: string } }) { } return (
- {/*
*/}
{rushCategory?.events.map((event, index) => ( - //
From 136a23d5831c9c772602eeccd1f544026d2c7718 Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Fri, 2 Aug 2024 16:05:41 -0400 Subject: [PATCH 14/24] added cool border color/blur effect --- src/app/dashboard/layout.tsx | 2 +- src/app/globals.css | 46 ++++++++++++++++++++++++++ src/components/dashboard/EventCard.tsx | 2 +- 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/app/dashboard/layout.tsx b/src/app/dashboard/layout.tsx index 3bc3ff9..c897e32 100644 --- a/src/app/dashboard/layout.tsx +++ b/src/app/dashboard/layout.tsx @@ -1,4 +1,4 @@ -// import '../../globals.css' +import '../globals.css' import UserSessionProvider from '@/app/providers/userSessionProvider' import NavSidebar from '@/components/NavSidebar' import type { Metadata } from 'next' diff --git a/src/app/globals.css b/src/app/globals.css index b5c61c9..d631c70 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,3 +1,49 @@ @tailwind base; @tailwind components; @tailwind utilities; + +/************************** glowing border effect ***************************/ +/* source: https://www.youtube.com/watch?v=ezP4kbOvs_E&list=PLZ6KBrFKcaDtqcqHv9NUCpul8a2B3F33F&index=6 */ +.card { + position: relative; +} + +@property --angle { + syntax: ""; + initial-value: 0deg; + inherits: false; +} + +.card:hover::after, +.card:hover::before, +.card:active::after, +.card:active::before { + content: ''; + position: absolute; + height: 101%; + width: 101%; + /* background-image: conic-gradient(from var(--angle), #bb4ec4, #f148c8,#2c12ed, #ffe900, #7fff00, #ffa500, #bb4ec4); */ + background-image: conic-gradient(from var(--angle), #bb4ec4, #f148c8,#2c12ed, #ffa500, #bb4ec4); + top: 50%; + left: 50%; + translate: -50% -50%; + border-radius: 10px; + z-index: -1; + animation: 3s spin linear infinite; +} + +.card:hover::before, +.card:active::before { + filter: blur(1rem); + opacity: 0.7; +} + +@keyframes spin{ + from{ + --angle: 0deg; + } + to{ + --angle: 360deg; + } +} +/*****************************************************************************/ \ No newline at end of file diff --git a/src/components/dashboard/EventCard.tsx b/src/components/dashboard/EventCard.tsx index 922807d..50c27cf 100644 --- a/src/components/dashboard/EventCard.tsx +++ b/src/components/dashboard/EventCard.tsx @@ -39,7 +39,7 @@ export default function EventCard({ return ( (
Date: Fri, 2 Aug 2024 16:19:09 -0400 Subject: [PATCH 15/24] added badge to checkin page --- src/app/checkin/[id]/page.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/app/checkin/[id]/page.tsx b/src/app/checkin/[id]/page.tsx index 1b7e93a..546f831 100644 --- a/src/app/checkin/[id]/page.tsx +++ b/src/app/checkin/[id]/page.tsx @@ -14,6 +14,7 @@ import { AlertDescription, AlertTitle, } from "@/components/ui/alert" +import { Badge } from "flowbite-react" export default function Checkin({ params }: { params: { id: string } }) { @@ -124,13 +125,10 @@ export default function Checkin({ params }: { params: { id: string } }) { return (
- {/*
- -
*/}

Hi, {session?.user?.name}!

Welcome to Phi Chi Theta, Zeta Chapter's Rush! We're excited to have you here.

-

Please enter your code to check-in to {event?.name}:

+

Please enter your code to check-in to {event?.name}:

setCode(e.target.value)} />
From 53f5daa938d35cd3e1f704bbdbeadc05e84a16ce Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Fri, 2 Aug 2024 17:07:46 -0400 Subject: [PATCH 16/24] switched to Sidebar from flowbite --- src/app/checkin/[id]/layout.tsx | 2 +- src/app/dashboard/layout.tsx | 3 +- src/app/favicon.ico | Bin 25931 -> 15406 bytes src/app/layout.tsx | 2 +- src/components/NavSidebar.tsx | 48 +++++++++++--------------------- 5 files changed, 20 insertions(+), 35 deletions(-) diff --git a/src/app/checkin/[id]/layout.tsx b/src/app/checkin/[id]/layout.tsx index b48f510..030d961 100644 --- a/src/app/checkin/[id]/layout.tsx +++ b/src/app/checkin/[id]/layout.tsx @@ -5,7 +5,7 @@ import type { Metadata } from 'next' export const metadata: Metadata = { - title: 'Whyphi - Rush Checkin', + title: 'WhyPhi - Rush Checkin', description: "PCT Zeta Chapter - Rush Checkin Page", } diff --git a/src/app/dashboard/layout.tsx b/src/app/dashboard/layout.tsx index c897e32..c387bac 100644 --- a/src/app/dashboard/layout.tsx +++ b/src/app/dashboard/layout.tsx @@ -5,7 +5,7 @@ import type { Metadata } from 'next' export const metadata: Metadata = { - title: 'Whyphi - Rush Home', + title: 'WhyPhi - Rush Home', description: "PCT Zeta Chapter - Rush Home Page", } @@ -17,6 +17,7 @@ export default function RootLayout({ return ( + {/*
*/}
{children}
diff --git a/src/app/favicon.ico b/src/app/favicon.ico index 718d6fea4835ec2d246af9800eddb7ffb276240c..820a41334969618853b7caa6d0a773d451d42c79 100644 GIT binary patch literal 15406 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 LrJugUA?W`A8`#=m diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 0c38844..995747e 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -15,7 +15,7 @@ export default function RootLayout({ return ( - + {children} diff --git a/src/components/NavSidebar.tsx b/src/components/NavSidebar.tsx index 76dca58..f4df59d 100644 --- a/src/components/NavSidebar.tsx +++ b/src/components/NavSidebar.tsx @@ -1,7 +1,8 @@ "use client"; import React, { useState } from "react"; import { useSession, signOut } from "next-auth/react"; -import { Dropdown, Avatar } from "flowbite-react"; +import { Dropdown, Avatar, Sidebar } from "flowbite-react"; +import { HiChartPie, HiTable } from "react-icons/hi"; @@ -66,40 +67,23 @@ export default function NavSidebar() {
-{/* - */} + + + + Dashboard + + + Attendance + + + + ); } From da699b9f7aae26d98b8cb0a9d1c826d4f16ffd1e Mon Sep 17 00:00:00 2001 From: William De Rocco <93288641+wderocco8@users.noreply.github.com> Date: Fri, 2 Aug 2024 17:31:50 -0400 Subject: [PATCH 17/24] fixed padding issues --- src/app/checkin/[id]/layout.tsx | 8 +++++--- src/app/checkin/error/layout.tsx | 29 +++++++++++++++++++++++++++++ src/app/checkin/success/layout.tsx | 29 +++++++++++++++++++++++++++++ src/app/dashboard/layout.tsx | 7 ++++--- src/components/NavSidebar.tsx | 1 - 5 files changed, 67 insertions(+), 7 deletions(-) create mode 100644 src/app/checkin/error/layout.tsx create mode 100644 src/app/checkin/success/layout.tsx diff --git a/src/app/checkin/[id]/layout.tsx b/src/app/checkin/[id]/layout.tsx index 030d961..f763912 100644 --- a/src/app/checkin/[id]/layout.tsx +++ b/src/app/checkin/[id]/layout.tsx @@ -17,11 +17,13 @@ export default function RootLayout({ return ( -
- {children} +
+
+ {children} +
) -} +} \ No newline at end of file diff --git a/src/app/checkin/error/layout.tsx b/src/app/checkin/error/layout.tsx new file mode 100644 index 0000000..f763912 --- /dev/null +++ b/src/app/checkin/error/layout.tsx @@ -0,0 +1,29 @@ +// import '../../globals.css' +import UserSessionProvider from '@/app/providers/userSessionProvider' +import NavSidebar from '@/components/NavSidebar' +import type { Metadata } from 'next' + + +export const metadata: Metadata = { + title: 'WhyPhi - Rush Checkin', + description: "PCT Zeta Chapter - Rush Checkin Page", +} + +export default function RootLayout({ + children, +}: { + children: React.ReactNode +}) { + return ( + + +
+
+ {children} +
+
+
+ + + ) +} \ No newline at end of file diff --git a/src/app/checkin/success/layout.tsx b/src/app/checkin/success/layout.tsx new file mode 100644 index 0000000..51beb2a --- /dev/null +++ b/src/app/checkin/success/layout.tsx @@ -0,0 +1,29 @@ +// import '../../globals.css' +import UserSessionProvider from '@/app/providers/userSessionProvider' +import NavSidebar from '@/components/NavSidebar' +import type { Metadata } from 'next' + + +export const metadata: Metadata = { + title: 'WhyPhi - Rush Checkin Error', + description: "PCT Zeta Chapter - Rush Checkin Page", +} + +export default function RootLayout({ + children, +}: { + children: React.ReactNode +}) { + return ( + + +
+
+ {children} +
+
+
+ + + ) +} \ No newline at end of file diff --git a/src/app/dashboard/layout.tsx b/src/app/dashboard/layout.tsx index c387bac..ee06c44 100644 --- a/src/app/dashboard/layout.tsx +++ b/src/app/dashboard/layout.tsx @@ -17,9 +17,10 @@ export default function RootLayout({ return ( - {/*
*/} -
- {children} +
+
+ {children} +
diff --git a/src/components/NavSidebar.tsx b/src/components/NavSidebar.tsx index f4df59d..494068a 100644 --- a/src/components/NavSidebar.tsx +++ b/src/components/NavSidebar.tsx @@ -17,7 +17,6 @@ export default function NavSidebar() { return ( <> -