From 701ed4e6b0bf02d56d039951eab2e26388d3c9bf Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Mon, 2 Sep 2024 09:54:19 +0300 Subject: [PATCH 01/35] Init --- .vscode/typescriptreact.json.code-snippets | 46 +++++++++++ package-lock.json | 88 +++++++++++----------- package.json | 10 +-- src/app/(dashboard)/admin/page.tsx | 9 +++ src/app/(dashboard)/layout.tsx | 10 +++ src/app/(dashboard)/parent/page.tsx | 7 ++ src/app/(dashboard)/student/page.tsx | 9 +++ src/app/(dashboard)/teacher/page.tsx | 9 +++ src/app/layout.tsx | 2 +- src/app/sign-in/page.tsx | 7 ++ 10 files changed, 147 insertions(+), 50 deletions(-) create mode 100644 .vscode/typescriptreact.json.code-snippets create mode 100644 src/app/(dashboard)/admin/page.tsx create mode 100644 src/app/(dashboard)/layout.tsx create mode 100644 src/app/(dashboard)/parent/page.tsx create mode 100644 src/app/(dashboard)/student/page.tsx create mode 100644 src/app/(dashboard)/teacher/page.tsx create mode 100644 src/app/sign-in/page.tsx diff --git a/.vscode/typescriptreact.json.code-snippets b/.vscode/typescriptreact.json.code-snippets new file mode 100644 index 000000000..760cead06 --- /dev/null +++ b/.vscode/typescriptreact.json.code-snippets @@ -0,0 +1,46 @@ +{ + // Place your dojangNext workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope + // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is + // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. + // Placeholders with the same ids are connected. + // Example: + // "Print to console": { + // "scope": "javascript,typescript", + // "prefix": "log", + // "body": [ + // "console.log('$1');", + // "$2" + // ], + // "description": "Log output to console" + // } + + + "comp": { + "prefix": "comp", + "body": [ + "const ${1:${TM_FILENAME_BASE/(.)(.*)/${1:/capitalize}${2}/}} = () => {", + " return (", + "
${1:${TM_FILENAME_BASE/(.)(.*)/${1:/capitalize}${2}/}}
", + " )", + "}", + "", + "export default ${1:${TM_FILENAME_BASE/(.)(.*)/${1:/capitalize}${2}/}}" + ], + "description": "Create a component" + }, +"compt": { + "prefix": "compt", + "body": [ + "const ${1:${TM_FILENAME_BASE/(.)(.*)/${1:/capitalize}${2}/}} = () => {", + " return (", + "
${1:${TM_FILENAME_BASE/(.)(.*)/${1:/capitalize}${2}/}}
", + " )", + "}", + "", + "export default ${1:${TM_FILENAME_BASE/(.)(.*)/${1:/capitalize}${2}/}}" + ], + "description": "Create a component with tailwind classname" + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cf999766d..5e52d9e18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "lama-dev-next-dashboard", "version": "0.1.0", "dependencies": { - "next": "14.2.5", + "next": "^14.2.7", "react": "^18", "react-dom": "^18" }, @@ -235,9 +235,9 @@ } }, "node_modules/@next/env": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.5.tgz", - "integrity": "sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.7.tgz", + "integrity": "sha512-OTx9y6I3xE/eih+qtthppwLytmpJVPM5PPoJxChFsbjIEFXIayG0h/xLzefHGJviAa3Q5+Fd+9uYojKkHDKxoQ==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -251,9 +251,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.5.tgz", - "integrity": "sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.7.tgz", + "integrity": "sha512-UhZGcOyI9LE/tZL3h9rs/2wMZaaJKwnpAyegUVDGZqwsla6hMfeSj9ssBWQS9yA4UXun3pPhrFLVnw5KXZs3vw==", "cpu": [ "arm64" ], @@ -267,9 +267,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.5.tgz", - "integrity": "sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.7.tgz", + "integrity": "sha512-ys2cUgZYRc+CbyDeLAaAdZgS7N1Kpyy+wo0b/gAj+SeOeaj0Lw/q+G1hp+DuDiDAVyxLBCJXEY/AkhDmtihUTA==", "cpu": [ "x64" ], @@ -283,9 +283,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.5.tgz", - "integrity": "sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.7.tgz", + "integrity": "sha512-2xoWtE13sUJ3qrC1lwE/HjbDPm+kBQYFkkiVECJWctRASAHQ+NwjMzgrfqqMYHfMxFb5Wws3w9PqzZJqKFdWcQ==", "cpu": [ "arm64" ], @@ -299,9 +299,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.5.tgz", - "integrity": "sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.7.tgz", + "integrity": "sha512-+zJ1gJdl35BSAGpkCbfyiY6iRTaPrt3KTl4SF/B1NyELkqqnrNX6cp4IjjjxKpd64/7enI0kf6b9O1Uf3cL0pw==", "cpu": [ "arm64" ], @@ -315,9 +315,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.5.tgz", - "integrity": "sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.7.tgz", + "integrity": "sha512-m6EBqrskeMUzykBrv0fDX/28lWIBGhMzOYaStp0ihkjzIYJiKUOzVYD1gULHc8XDf5EMSqoH/0/TRAgXqpQwmw==", "cpu": [ "x64" ], @@ -331,9 +331,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.5.tgz", - "integrity": "sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.7.tgz", + "integrity": "sha512-gUu0viOMvMlzFRz1r1eQ7Ql4OE+hPOmA7smfZAhn8vC4+0swMZaZxa9CSIozTYavi+bJNDZ3tgiSdMjmMzRJlQ==", "cpu": [ "x64" ], @@ -347,9 +347,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.5.tgz", - "integrity": "sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.7.tgz", + "integrity": "sha512-PGbONHIVIuzWlYmLvuFKcj+8jXnLbx4WrlESYlVnEzDsa3+Q2hI1YHoXaSmbq0k4ZwZ7J6sWNV4UZfx1OeOlbQ==", "cpu": [ "arm64" ], @@ -363,9 +363,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.5.tgz", - "integrity": "sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.7.tgz", + "integrity": "sha512-BiSY5umlx9ed5RQDoHcdbuKTUkuFORDqzYKPHlLeS+STUWQKWziVOn3Ic41LuTBvqE0TRJPKpio9GSIblNR+0w==", "cpu": [ "ia32" ], @@ -379,9 +379,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.5.tgz", - "integrity": "sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.7.tgz", + "integrity": "sha512-pxsI23gKWRt/SPHFkDEsP+w+Nd7gK37Hpv0ngc5HpWy2e7cKx9zR/+Q2ptAUqICNTecAaGWvmhway7pj/JLEWA==", "cpu": [ "x64" ], @@ -3393,12 +3393,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.5.tgz", - "integrity": "sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.7.tgz", + "integrity": "sha512-4Qy2aK0LwH4eQiSvQWyKuC7JXE13bIopEQesWE0c/P3uuNRnZCQanI0vsrMLmUQJLAto+A+/8+sve2hd+BQuOQ==", "license": "MIT", "dependencies": { - "@next/env": "14.2.5", + "@next/env": "14.2.7", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -3413,15 +3413,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.5", - "@next/swc-darwin-x64": "14.2.5", - "@next/swc-linux-arm64-gnu": "14.2.5", - "@next/swc-linux-arm64-musl": "14.2.5", - "@next/swc-linux-x64-gnu": "14.2.5", - "@next/swc-linux-x64-musl": "14.2.5", - "@next/swc-win32-arm64-msvc": "14.2.5", - "@next/swc-win32-ia32-msvc": "14.2.5", - "@next/swc-win32-x64-msvc": "14.2.5" + "@next/swc-darwin-arm64": "14.2.7", + "@next/swc-darwin-x64": "14.2.7", + "@next/swc-linux-arm64-gnu": "14.2.7", + "@next/swc-linux-arm64-musl": "14.2.7", + "@next/swc-linux-x64-gnu": "14.2.7", + "@next/swc-linux-x64-musl": "14.2.7", + "@next/swc-win32-arm64-msvc": "14.2.7", + "@next/swc-win32-ia32-msvc": "14.2.7", + "@next/swc-win32-x64-msvc": "14.2.7" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", diff --git a/package.json b/package.json index dd3389bbf..913769984 100644 --- a/package.json +++ b/package.json @@ -9,18 +9,18 @@ "lint": "next lint" }, "dependencies": { + "next": "^14.2.7", "react": "^18", - "react-dom": "^18", - "next": "14.2.5" + "react-dom": "^18" }, "devDependencies": { - "typescript": "^5", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.5", "postcss": "^8", "tailwindcss": "^3.4.1", - "eslint": "^8", - "eslint-config-next": "14.2.5" + "typescript": "^5" } } diff --git a/src/app/(dashboard)/admin/page.tsx b/src/app/(dashboard)/admin/page.tsx new file mode 100644 index 000000000..4d462a24d --- /dev/null +++ b/src/app/(dashboard)/admin/page.tsx @@ -0,0 +1,9 @@ +import React from 'react' + +const AdminPage = () => { + return ( +
AdminPage
+ ) +} + +export default AdminPage \ No newline at end of file diff --git a/src/app/(dashboard)/layout.tsx b/src/app/(dashboard)/layout.tsx new file mode 100644 index 000000000..70a53c6b1 --- /dev/null +++ b/src/app/(dashboard)/layout.tsx @@ -0,0 +1,10 @@ +export default function DashboardLayout({ + children, + }: Readonly<{ + children: React.ReactNode; + }>) { + return ( +
Dashboard {children}
+ ); + } + \ No newline at end of file diff --git a/src/app/(dashboard)/parent/page.tsx b/src/app/(dashboard)/parent/page.tsx new file mode 100644 index 000000000..9e2ba1ad0 --- /dev/null +++ b/src/app/(dashboard)/parent/page.tsx @@ -0,0 +1,7 @@ +const StudentPage = () => { + return ( +
StudentPage
+ ) +} + +export default StudentPage diff --git a/src/app/(dashboard)/student/page.tsx b/src/app/(dashboard)/student/page.tsx new file mode 100644 index 000000000..f68553f09 --- /dev/null +++ b/src/app/(dashboard)/student/page.tsx @@ -0,0 +1,9 @@ +import React from 'react' + +const StudentPage = () => { + return ( +
StudentPage
+ ) +} + +export default StudentPage \ No newline at end of file diff --git a/src/app/(dashboard)/teacher/page.tsx b/src/app/(dashboard)/teacher/page.tsx new file mode 100644 index 000000000..daa87e54a --- /dev/null +++ b/src/app/(dashboard)/teacher/page.tsx @@ -0,0 +1,9 @@ +import React from 'react' + +const TeacherPage = () => { + return ( +
TeacherPage
+ ) +} + +export default TeacherPage \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 44c71f8db..280988b3f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -16,7 +16,7 @@ export default function RootLayout({ }>) { return ( - {children} + {children} ); } diff --git a/src/app/sign-in/page.tsx b/src/app/sign-in/page.tsx new file mode 100644 index 000000000..ced4ceac2 --- /dev/null +++ b/src/app/sign-in/page.tsx @@ -0,0 +1,7 @@ +const LoginPage = () => { + return ( +
LoginPage
+ ) +} + +export default LoginPage \ No newline at end of file From a3f667a3ed7f502ef910fb2842621069bca28ed9 Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Wed, 4 Sep 2024 17:59:12 +0300 Subject: [PATCH 02/35] Layout 1 --- src/app/(dashboard)/layout.tsx | 17 ++++++++++++++++- src/app/components/Menu.tsx | 7 +++++++ src/app/components/Navbar.tsx | 7 +++++++ src/app/layout.tsx | 2 +- src/components/Menu.tsx | 25 ++++++++++++++++++++++++- 5 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 src/app/components/Menu.tsx create mode 100644 src/app/components/Navbar.tsx diff --git a/src/app/(dashboard)/layout.tsx b/src/app/(dashboard)/layout.tsx index 70a53c6b1..adf771b3d 100644 --- a/src/app/(dashboard)/layout.tsx +++ b/src/app/(dashboard)/layout.tsx @@ -1,10 +1,25 @@ +import Image from "next/image"; +import Link from "next/link"; +import Menu from "@/components/Menu"; + export default function DashboardLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { return ( -
Dashboard {children}
+
+ {/* Left */} +
+ + logo + DojangNext + + +
+ {/* Right */} +
r
+
); } \ No newline at end of file diff --git a/src/app/components/Menu.tsx b/src/app/components/Menu.tsx new file mode 100644 index 000000000..d9512bd99 --- /dev/null +++ b/src/app/components/Menu.tsx @@ -0,0 +1,7 @@ +const Menu = () => { + return ( +
Menu
+ ) +} + +export default Menu \ No newline at end of file diff --git a/src/app/components/Navbar.tsx b/src/app/components/Navbar.tsx new file mode 100644 index 000000000..3446d8b7d --- /dev/null +++ b/src/app/components/Navbar.tsx @@ -0,0 +1,7 @@ +const Navbar = () => { + return ( +
Navbar
+ ) +} + +export default Navbar \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 280988b3f..379728e1a 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -16,7 +16,7 @@ export default function RootLayout({ }>) { return ( - {children} + {children} ); } diff --git a/src/components/Menu.tsx b/src/components/Menu.tsx index de074fa04..f7465254b 100644 --- a/src/components/Menu.tsx +++ b/src/components/Menu.tsx @@ -1,3 +1,6 @@ +import Image from "next/image"; +import Link from "next/link"; + const menuItems = [ { title: "MENU", @@ -111,4 +114,24 @@ const menuItems = [ }, ], }, -]; \ No newline at end of file +]; + +const Menu = () => { + return ( +
+ {menuItems.map(i=>( +
+ {i.title} + {i.items.map(item=>( + + + {item.label} + + ))} +
+ ))} +
+ ) +} + +export default Menu \ No newline at end of file From 28e337d01de2e4222995ae4f9abab421446e4dff Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Fri, 13 Sep 2024 00:57:49 +0300 Subject: [PATCH 03/35] Building the UI --- .vscode/typescriptreact.json.code-snippets | 11 ++++++++ src/app/(dashboard)/admin/page.tsx | 20 +++++++++++--- src/app/(dashboard)/layout.tsx | 8 ++++-- src/app/components/Menu.tsx | 7 ----- src/app/components/Navbar.tsx | 7 ----- src/components/Menu.tsx | 10 +++---- src/components/Navbar.tsx | 31 ++++++++++++++++++++++ src/components/UserCard.tsx | 9 +++++++ tailwind.config.ts | 8 ++++++ 9 files changed, 87 insertions(+), 24 deletions(-) delete mode 100644 src/app/components/Menu.tsx delete mode 100644 src/app/components/Navbar.tsx create mode 100644 src/components/Navbar.tsx create mode 100644 src/components/UserCard.tsx diff --git a/.vscode/typescriptreact.json.code-snippets b/.vscode/typescriptreact.json.code-snippets index 760cead06..183c9a3e2 100644 --- a/.vscode/typescriptreact.json.code-snippets +++ b/.vscode/typescriptreact.json.code-snippets @@ -42,5 +42,16 @@ "export default ${1:${TM_FILENAME_BASE/(.)(.*)/${1:/capitalize}${2}/}}" ], "description": "Create a component with tailwind classname" + }, + +"divt": { + "prefix": "divt", + "body": [ + + "
", + ], + "description": "Create a component with tailwind classname" } + + } \ No newline at end of file diff --git a/src/app/(dashboard)/admin/page.tsx b/src/app/(dashboard)/admin/page.tsx index 4d462a24d..ab130cd01 100644 --- a/src/app/(dashboard)/admin/page.tsx +++ b/src/app/(dashboard)/admin/page.tsx @@ -1,9 +1,23 @@ -import React from 'react' +import UserCard from "@/components/UserCard" const AdminPage = () => { return ( -
AdminPage
+
+ {/* LEFT */} +
+ {/**USER CARDS */} +
+ + + + +
+
+ {/* RIGHT */} +
R
+
+ ) } -export default AdminPage \ No newline at end of file +export default AdminPage \ No newline at end of file diff --git a/src/app/(dashboard)/layout.tsx b/src/app/(dashboard)/layout.tsx index adf771b3d..cbf481b7d 100644 --- a/src/app/(dashboard)/layout.tsx +++ b/src/app/(dashboard)/layout.tsx @@ -1,6 +1,7 @@ import Image from "next/image"; import Link from "next/link"; import Menu from "@/components/Menu"; +import Navbar from "@/components/Navbar"; export default function DashboardLayout({ children, @@ -10,7 +11,7 @@ export default function DashboardLayout({ return (
{/* Left */} -
+
logo DojangNext @@ -18,7 +19,10 @@ export default function DashboardLayout({
{/* Right */} -
r
+
+ + {children} +
); } diff --git a/src/app/components/Menu.tsx b/src/app/components/Menu.tsx deleted file mode 100644 index d9512bd99..000000000 --- a/src/app/components/Menu.tsx +++ /dev/null @@ -1,7 +0,0 @@ -const Menu = () => { - return ( -
Menu
- ) -} - -export default Menu \ No newline at end of file diff --git a/src/app/components/Navbar.tsx b/src/app/components/Navbar.tsx deleted file mode 100644 index 3446d8b7d..000000000 --- a/src/app/components/Navbar.tsx +++ /dev/null @@ -1,7 +0,0 @@ -const Navbar = () => { - return ( -
Navbar
- ) -} - -export default Navbar \ No newline at end of file diff --git a/src/components/Menu.tsx b/src/components/Menu.tsx index f7465254b..b3431cd9b 100644 --- a/src/components/Menu.tsx +++ b/src/components/Menu.tsx @@ -118,14 +118,14 @@ const menuItems = [ const Menu = () => { return ( -
+
{menuItems.map(i=>( -
- {i.title} +
+ {i.title} {i.items.map(item=>( - + - {item.label} + {item.label} ))}
diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx new file mode 100644 index 000000000..2ab8e00f8 --- /dev/null +++ b/src/components/Navbar.tsx @@ -0,0 +1,31 @@ +import Image from "next/image" + +const Navbar = () => { + return ( +
+ {/* SEARCH BAR */} +
+ + +
+ {/* ICONS AND USER */} +
+
+ +
+
+ +
1
+
+
+ John Doe + Admin +
+ +
+
+ + ) +} + +export default Navbar \ No newline at end of file diff --git a/src/components/UserCard.tsx b/src/components/UserCard.tsx new file mode 100644 index 000000000..069c23dc0 --- /dev/null +++ b/src/components/UserCard.tsx @@ -0,0 +1,9 @@ +const UserCard = ({type}:{type:string}) => { + return ( +
+ UserCard +
+ ) +} + +export default UserCard \ No newline at end of file diff --git a/tailwind.config.ts b/tailwind.config.ts index e9a0944e7..4b88c62c0 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -13,6 +13,14 @@ const config: Config = { "gradient-conic": "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", }, + colors:{ + zeidSky:"#C3EBFA", + zeidSkyLight:"#EDF9FD", + zeidPurple:"#CFCEFF", + zeidPurpleLight:"#F1F0FF", + zeidYellow:"#FAE27C", + zeidYellowLight:"#FEFCE8", + } }, }, plugins: [], From a0a7fa8c1f6a740a3f421ecb6ba30e0cbdfea1fb Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Fri, 13 Sep 2024 16:09:09 +0300 Subject: [PATCH 04/35] Minor changes --- src/components/Menu.tsx | 2 +- src/components/UserCard.tsx | 2 +- tailwind.config.ts | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/Menu.tsx b/src/components/Menu.tsx index b3431cd9b..3a0fbea13 100644 --- a/src/components/Menu.tsx +++ b/src/components/Menu.tsx @@ -123,7 +123,7 @@ const Menu = () => {
{i.title} {i.items.map(item=>( - + {item.label} diff --git a/src/components/UserCard.tsx b/src/components/UserCard.tsx index 069c23dc0..60943110c 100644 --- a/src/components/UserCard.tsx +++ b/src/components/UserCard.tsx @@ -1,6 +1,6 @@ const UserCard = ({type}:{type:string}) => { return ( -
+
UserCard
) diff --git a/tailwind.config.ts b/tailwind.config.ts index 4b88c62c0..ebf30edc1 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -20,6 +20,7 @@ const config: Config = { zeidPurpleLight:"#F1F0FF", zeidYellow:"#FAE27C", zeidYellowLight:"#FEFCE8", + zeidBlue:"#302780", } }, }, From fd54bf648f14a9b2430ee1f8571824086b4dedf7 Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Fri, 13 Sep 2024 19:44:57 +0300 Subject: [PATCH 05/35] MID Section - Students CountChart --- package-lock.json | 355 ++++++++++++++++++++++++++++- package.json | 3 +- src/app/(dashboard)/admin/page.tsx | 24 +- src/components/CountChart.tsx | 64 ++++++ src/components/UserCard.tsx | 11 +- tailwind.config.ts | 2 + 6 files changed, 445 insertions(+), 14 deletions(-) create mode 100644 src/components/CountChart.tsx diff --git a/package-lock.json b/package-lock.json index 5e52d9e18..5f06926b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "dependencies": { "next": "^14.2.7", "react": "^18", - "react-dom": "^18" + "react-dom": "^18", + "recharts": "^2.12.7" }, "devDependencies": { "@types/node": "^20", @@ -36,6 +37,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@babel/runtime": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -466,6 +479,69 @@ "tslib": "^2.4.0" } }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -1150,6 +1226,15 @@ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", "license": "MIT" }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1219,9 +1304,129 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, "license": "MIT" }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -1301,6 +1506,12 @@ } } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, "node_modules/deep-equal": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", @@ -1417,6 +1628,16 @@ "node": ">=6.0.0" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -2081,6 +2302,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2088,6 +2315,15 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -2647,6 +2883,15 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -3265,6 +3510,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -3484,7 +3735,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -3989,7 +4239,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -4057,9 +4306,39 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, "license": "MIT" }, + "node_modules/react-smooth": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", + "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "license": "MIT", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -4083,6 +4362,38 @@ "node": ">=8.10.0" } }, + "node_modules/recharts": { + "version": "2.12.7", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.7.tgz", + "integrity": "sha512-hlLJMhPQfv4/3NBSAyq3gzGg4h2v69RJh6KU7b3pXYNNAELs9kEoXOjbkxdXpALqKBoVmVptGfLpxdaVYqjmXQ==", + "license": "MIT", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^16.10.2", + "react-smooth": "^4.0.0", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "license": "MIT", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", @@ -4105,6 +4416,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -4795,6 +5112,12 @@ "node": ">=0.8" } }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5004,6 +5327,28 @@ "dev": true, "license": "MIT" }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 913769984..6219bc6d6 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "dependencies": { "next": "^14.2.7", "react": "^18", - "react-dom": "^18" + "react-dom": "^18", + "recharts": "^2.12.7" }, "devDependencies": { "@types/node": "^20", diff --git a/src/app/(dashboard)/admin/page.tsx b/src/app/(dashboard)/admin/page.tsx index ab130cd01..46009643b 100644 --- a/src/app/(dashboard)/admin/page.tsx +++ b/src/app/(dashboard)/admin/page.tsx @@ -1,17 +1,29 @@ +import CountChart from "@/components/CountChart" import UserCard from "@/components/UserCard" const AdminPage = () => { return ( -
+
{/* LEFT */} -
+
{/**USER CARDS */} -
- - - +
+ + +
+ {/* MIDDLE SECTION */} +
+ {/* COUNT CHART */} +
+ +
+ {/* ATTENDANCE CHART */} +
+
+ {/* Bottom Charts */} +
{/* RIGHT */}
R
diff --git a/src/components/CountChart.tsx b/src/components/CountChart.tsx new file mode 100644 index 000000000..6e25df1d6 --- /dev/null +++ b/src/components/CountChart.tsx @@ -0,0 +1,64 @@ +"use client"; + +import Image from 'next/image'; +import { RadialBarChart, RadialBar, Legend, ResponsiveContainer } from 'recharts'; + +const data = [ + { + name: 'Total', + count:200, + fill: 'white', + }, + { + name: 'Girls', + count:83, + fill: '#de7ed6', + }, + { + name: 'Boys', + count:117, + fill: '#7e57eb', + }, + +]; + +const CountChart = () => { + return ( +
+ {/** TITLE */} +
+

Students

+ +
+ {/** CHART */} +
+ + + + {/* */} + + + +
+ {/** BOTTOM */} +
+
+
+

117

+

Boys 55%

+
+
+
+

83

+

Boys 45%

+
+
+
+ ) +} + +export default CountChart \ No newline at end of file diff --git a/src/components/UserCard.tsx b/src/components/UserCard.tsx index 60943110c..e2dca1a30 100644 --- a/src/components/UserCard.tsx +++ b/src/components/UserCard.tsx @@ -1,7 +1,14 @@ +import Image from "next/image" + const UserCard = ({type}:{type:string}) => { return ( -
- UserCard +
+
+ 2024/25 + +
+

1,234

+

{type}

) } diff --git a/tailwind.config.ts b/tailwind.config.ts index ebf30edc1..1e0232165 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -21,6 +21,8 @@ const config: Config = { zeidYellow:"#FAE27C", zeidYellowLight:"#FEFCE8", zeidBlue:"#302780", + zeidBlueLight:"#7e57eb", + zeidPink:"#de7ed6", } }, }, From d8554de9c9d7244313e2edb6a038dfd3a9b19541 Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Fri, 13 Sep 2024 20:49:14 +0300 Subject: [PATCH 06/35] AttendanceChart added in mid section --- src/app/(dashboard)/admin/page.tsx | 5 ++- src/app/layout.tsx | 2 +- src/components/AttendanceChart.tsx | 69 ++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 src/components/AttendanceChart.tsx diff --git a/src/app/(dashboard)/admin/page.tsx b/src/app/(dashboard)/admin/page.tsx index 46009643b..7d204dbc7 100644 --- a/src/app/(dashboard)/admin/page.tsx +++ b/src/app/(dashboard)/admin/page.tsx @@ -1,3 +1,4 @@ +import AttendanceChart from "@/components/AttendanceChart" import CountChart from "@/components/CountChart" import UserCard from "@/components/UserCard" @@ -20,7 +21,9 @@ const AdminPage = () => {
{/* ATTENDANCE CHART */} -
+
+ +
{/* Bottom Charts */}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 379728e1a..d4061c8c5 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -5,7 +5,7 @@ import "./globals.css"; const inter = Inter({ subsets: ["latin"] }); export const metadata: Metadata = { - title: "Lama Dev School Management Dashboard", + title: "DojangNext Management Dashboard", description: "Next.js School Management System", }; diff --git a/src/components/AttendanceChart.tsx b/src/components/AttendanceChart.tsx new file mode 100644 index 000000000..32a75f433 --- /dev/null +++ b/src/components/AttendanceChart.tsx @@ -0,0 +1,69 @@ +"use client"; + +import Image from 'next/image'; +import { BarChart, Bar, Rectangle, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts'; + +const data = [ + { + name: 'Mon', + present: 60, + absent: 24, + }, + { + name: 'Tue', + present: 30, + absent: 13, + }, + { + name: 'Wed', + present: 20, + absent: 58, + }, + { + name: 'Thu', + present: 27, + absent: 39, + + }, + { + name: 'Fri', + present: 18, + absent: 48, + }, +]; + + +const AttendanceChart = () => { + return ( +
+
+

Attendance

+ +
+ + + + + + + + + + + +
+ + ) +} + +export default AttendanceChart \ No newline at end of file From ce57381ae301cd79e867269ae495fe4b281af910 Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Tue, 17 Sep 2024 17:24:57 +0300 Subject: [PATCH 07/35] Admin Dashboard Completed. Start of Student --- package-lock.json | 289 ++++++++++++++++++++++++++- package.json | 3 + src/app/(dashboard)/admin/page.tsx | 12 +- src/app/(dashboard)/layout.tsx | 2 +- src/app/(dashboard)/student/page.tsx | 16 +- src/app/globals.css | 17 +- src/components/Announcements.tsx | 56 ++++++ src/components/CountChart.tsx | 2 +- src/components/EventCalendar.tsx | 58 ++++++ src/components/FinanceChart.tsx | 119 +++++++++++ src/components/Menu.tsx | 21 +- tsconfig.json | 1 + 12 files changed, 582 insertions(+), 14 deletions(-) create mode 100644 src/components/Announcements.tsx create mode 100644 src/components/EventCalendar.tsx create mode 100644 src/components/FinanceChart.tsx diff --git a/package-lock.json b/package-lock.json index 5f06926b4..81af23594 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,11 @@ "name": "lama-dev-next-dashboard", "version": "0.1.0", "dependencies": { + "moment": "^2.30.1", "next": "^14.2.7", "react": "^18", + "react-big-calendar": "^1.14.1", + "react-calendar": "^5.0.0", "react-dom": "^18", "recharts": "^2.12.7" }, @@ -456,6 +459,28 @@ "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==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/@rushstack/eslint-patch": { "version": "1.10.4", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", @@ -563,14 +588,12 @@ "version": "15.7.12", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", - "dev": true, "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.3", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", - "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -587,6 +610,12 @@ "@types/react": "*" } }, + "node_modules/@types/warning": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==", + "license": "MIT" + }, "node_modules/@typescript-eslint/parser": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", @@ -728,6 +757,15 @@ "dev": true, "license": "ISC" }, + "node_modules/@wojtekmaj/date-utils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@wojtekmaj/date-utils/-/date-utils-1.5.1.tgz", + "integrity": "sha512-+i7+JmNiE/3c9FKxzWFi2IjRJ+KzZl1QPu6QNrsgaa2MuBgXvUy4gA1TVzf/JMdIIloB76xSKikTWuyYAIVLww==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/date-utils?sponsor=1" + } + }, "node_modules/acorn": { "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", @@ -1488,6 +1526,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/date-arithmetic": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.1.0.tgz", + "integrity": "sha512-QWxYLR5P/6GStZcdem+V1xoto6DMadYWpMXU82ES3/RfR3Wdwr3D0+be7mgOJ+Ov0G9D5Dmb9T17sNLQYj9XOg==", + "license": "MIT" + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, "node_modules/debug": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", @@ -1588,6 +1638,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -2582,6 +2641,18 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, + "node_modules/get-user-locale": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/get-user-locale/-/get-user-locale-2.3.2.tgz", + "integrity": "sha512-O2GWvQkhnbDoWFUJfaBlDIKUEdND8ATpBXD6KXcbhxlfktyD/d8w6mkzM/IlQEqGZAMz/PW6j6Hv53BiigKLUQ==", + "license": "MIT", + "dependencies": { + "mem": "^8.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/get-user-locale?sponsor=1" + } + }, "node_modules/glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -2644,6 +2715,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/globalize": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/globalize/-/globalize-0.1.1.tgz", + "integrity": "sha512-5e01v8eLGfuQSOvx2MsDMOWS0GFtCx1wPzQSmcHw4hkxFzrQDBO3Xwg/m8Hr/7qXMrHeOIE29qWVzyv06u1TZA==" + }, "node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -2892,6 +2968,15 @@ "node": ">=12" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -3516,6 +3601,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -3542,6 +3633,49 @@ "dev": true, "license": "ISC" }, + "node_modules/luxon": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", + "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mem": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", + "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/mem?sponsor=1" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3566,6 +3700,15 @@ "node": ">=8.6" } }, + "node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3599,6 +3742,27 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", + "license": "MIT", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3904,6 +4068,15 @@ "node": ">= 0.8.0" } }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -4289,6 +4462,68 @@ "node": ">=0.10.0" } }, + "node_modules/react-big-calendar": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/react-big-calendar/-/react-big-calendar-1.14.1.tgz", + "integrity": "sha512-6Le0kV/4yiV/mlqv5YYBBS+FaBeYBPNGjcYitLoVdPCiXsc0xzSHyX8+2FRqX9AM16XZYIjjomouK3wcnq6+XQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.7", + "clsx": "^1.2.1", + "date-arithmetic": "^4.1.0", + "dayjs": "^1.11.7", + "dom-helpers": "^5.2.1", + "globalize": "^0.1.1", + "invariant": "^2.2.4", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "luxon": "^3.2.1", + "memoize-one": "^6.0.0", + "moment": "^2.29.4", + "moment-timezone": "^0.5.40", + "prop-types": "^15.8.1", + "react-overlays": "^5.2.1", + "uncontrollable": "^7.2.1" + }, + "peerDependencies": { + "react": "^16.14.0 || ^17 || ^18", + "react-dom": "^16.14.0 || ^17 || ^18" + } + }, + "node_modules/react-big-calendar/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react-calendar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-5.0.0.tgz", + "integrity": "sha512-bHcE5e5f+VUKLd4R19BGkcSQLpuwjKBVG0fKz74cwPW5xDfNsReHdDbfd4z3mdjuUuZzVtw4Q920mkwK5/ZOEg==", + "license": "MIT", + "dependencies": { + "@wojtekmaj/date-utils": "^1.1.3", + "clsx": "^2.0.0", + "get-user-locale": "^2.2.1", + "warning": "^4.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-calendar?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", @@ -4308,6 +4543,32 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "license": "MIT" + }, + "node_modules/react-overlays": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz", + "integrity": "sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.8", + "@popperjs/core": "^2.11.6", + "@restart/hooks": "^0.4.7", + "@types/warning": "^3.0.0", + "dom-helpers": "^5.2.0", + "prop-types": "^15.7.2", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, "node_modules/react-smooth": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", @@ -5303,6 +5564,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -5349,6 +5625,15 @@ "d3-timer": "^3.0.1" } }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 6219bc6d6..ba82f9fec 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,11 @@ "lint": "next lint" }, "dependencies": { + "moment": "^2.30.1", "next": "^14.2.7", "react": "^18", + "react-big-calendar": "^1.14.1", + "react-calendar": "^5.0.0", "react-dom": "^18", "recharts": "^2.12.7" }, diff --git a/src/app/(dashboard)/admin/page.tsx b/src/app/(dashboard)/admin/page.tsx index 7d204dbc7..833505b75 100644 --- a/src/app/(dashboard)/admin/page.tsx +++ b/src/app/(dashboard)/admin/page.tsx @@ -1,5 +1,8 @@ +import Announcements from "@/components/Announcements" import AttendanceChart from "@/components/AttendanceChart" import CountChart from "@/components/CountChart" +import EventCalendar from "@/components/EventCalendar" +import FinanceChart from "@/components/FinanceChart" import UserCard from "@/components/UserCard" const AdminPage = () => { @@ -26,10 +29,15 @@ const AdminPage = () => {
{/* Bottom Charts */} -
+
+ +
{/* RIGHT */} -
R
+
+ + +
) diff --git a/src/app/(dashboard)/layout.tsx b/src/app/(dashboard)/layout.tsx index cbf481b7d..b56b40763 100644 --- a/src/app/(dashboard)/layout.tsx +++ b/src/app/(dashboard)/layout.tsx @@ -14,7 +14,7 @@ export default function DashboardLayout({
logo - DojangNext + DojangNext
diff --git a/src/app/(dashboard)/student/page.tsx b/src/app/(dashboard)/student/page.tsx index f68553f09..0beadb2b8 100644 --- a/src/app/(dashboard)/student/page.tsx +++ b/src/app/(dashboard)/student/page.tsx @@ -1,8 +1,22 @@ +import Announcements from '@/components/Announcements' +import EventCalendar from '@/components/EventCalendar' import React from 'react' const StudentPage = () => { return ( -
StudentPage
+
+ {/* LEFT */} +
+
+

Schedule

+
+
+ {/* RIGHT */} +
+ + +
+
) } diff --git a/src/app/globals.css b/src/app/globals.css index bd6213e1d..baa1140ac 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,3 +1,18 @@ @tailwind base; @tailwind components; -@tailwind utilities; \ No newline at end of file +@tailwind utilities; + +.react-calendar{ + width: 100% !important; + border: none !important; + font-family: "Inter", sans-serif !important; +} + +.react-calendar__navigation__label__labelText{ + font-weight: 600; +} + +.react-calendar__tile--active { + background-color: #302780 !important; + +} \ No newline at end of file diff --git a/src/components/Announcements.tsx b/src/components/Announcements.tsx new file mode 100644 index 000000000..7390b2e96 --- /dev/null +++ b/src/components/Announcements.tsx @@ -0,0 +1,56 @@ +"use client"; + +const announcements = +[ + { + id:1, + title:"Lorem ipsum dolor sit", + date:"08-10-2024", + description:"Ducimus voluptates quasi, blanditiis alias fugiat, autem ea assumenda odio delectus"}, + { + id:2, + title:"Lorem ipsum dolor sit", + date:"09-10-2024", + description:"Ducimus voluptates quasi, blanditiis alias fugiat.Quisquam reiciendis atque est quam quod natus minima numquam animi corporis" + }, + { + id:3, + title:"Lorem ipsum dolor sit", + date:"10-10-2024", + description:"Autem ea assumenda odio delectus.Quisquam reiciendis atque est quam quod natus minima numquam animi corporis" + }, + { + id:4, + title:"Lorem ipsum dolor sit", + date:"11-10-2024", + description:"Odio delectus.Quisquam reiciendis atque est quam quod natus minima numquam animi corporis" + } +]; + +const Announcements = () => { + return ( +
+
+

Announdements

+ View all +
+
+ { + announcements.map(announcement=>( +
+
+

{announcement.title}

+ {announcement.date} +
+

+ {announcement.description} +

+
+ )) + } +
+
+ ) +} + +export default Announcements \ No newline at end of file diff --git a/src/components/CountChart.tsx b/src/components/CountChart.tsx index 6e25df1d6..b81aa97e9 100644 --- a/src/components/CountChart.tsx +++ b/src/components/CountChart.tsx @@ -54,7 +54,7 @@ const CountChart = () => {

83

-

Boys 45%

+

Girls 45%

diff --git a/src/components/EventCalendar.tsx b/src/components/EventCalendar.tsx new file mode 100644 index 000000000..aa94ddad1 --- /dev/null +++ b/src/components/EventCalendar.tsx @@ -0,0 +1,58 @@ +"use client"; + +import Image from "next/image"; +import { useState } from "react"; +import Calendar from "react-calendar"; +import 'react-calendar/dist/Calendar.css'; + +type ValuePiece = Date | null; + +type Value = ValuePiece | [ValuePiece, ValuePiece]; + +const events = [ + { + id:1, + title:"Mulberry Street", + time:"2:49 PM", + description:"Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint, maxime autem quaerat, dicta aliquam laborum aut ex" + }, + { + id:2, + title:"Jay Mohr: Funny for a Girl", + time:"6:28 PM", + description:"Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint, maxime autem quaerat, dicta aliquam laborum aut ex" + }, + { + id:3, + title:"Year Zero: The Silent Death of Cambodia", + time:"9:32 AM", + description:"Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint, maxime autem quaerat, dicta aliquam laborum aut ex" + }]; + +const EventCalendar = () => { + const [value, onChange] = useState(new Date()); + return ( +
+ +
+

Events

+ +
+
+ { + events.map(event=>( +
+
+

{event.title}

+ {event.time} +
+

{event.description}

+
+ )) + } +
+
+ ) +} + +export default EventCalendar \ No newline at end of file diff --git a/src/components/FinanceChart.tsx b/src/components/FinanceChart.tsx new file mode 100644 index 000000000..eac41d122 --- /dev/null +++ b/src/components/FinanceChart.tsx @@ -0,0 +1,119 @@ +"use client"; +import Image from 'next/image'; +import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts'; + + +const data = [ + { + name: 'Sep', + income: 400, + expenses: 2400, + amt: 2400, + }, + { + name: 'Oct', + income: 645, + expenses: 1000, + amt: 2210, + }, + { + name: 'Nov', + income: 700, + expenses: 800, + amt: 2290, + }, + { + name: 'Dec', + income: 1200, + expenses: 50, + amt: 2000, + }, + { + name: 'Jan', + income: 500, + expenses: 2400, + amt: 2181, + }, + { + name: 'Feb', + income: 450, + expenses: 145, + amt: 2500, + }, + { + name: 'Mar', + income: 1400, + expenses: 600, + amt: 2100, + }, + { + name: 'Mai', + income: 1670, + expenses: 500, + amt: 2100, + }, + { + name: 'Jun', + income: 1200, + expenses: 2400, + amt: 2100, + }, + { + name: 'Jul', + income: 300, + expenses: 1200, + amt: 2100, + }, + { + name: 'Aug', + income: 0, + expenses: 800, + amt: 2100, + }, + ]; + +const FinanceChart = () => { + return ( +
+
+

Finances

+ +
+ + + + + + + + + + + +
+ ) +} + + +export default FinanceChart \ No newline at end of file diff --git a/src/components/Menu.tsx b/src/components/Menu.tsx index 3a0fbea13..2c14b429f 100644 --- a/src/components/Menu.tsx +++ b/src/components/Menu.tsx @@ -1,3 +1,4 @@ +import { role } from "@/lib/data"; import Image from "next/image"; import Link from "next/link"; @@ -122,12 +123,20 @@ const Menu = () => { {menuItems.map(i=>(
{i.title} - {i.items.map(item=>( - - - {item.label} - - ))} + { + i.items.map((item)=>{ + if(item.visible.includes(role)) + return( + + + {item.label} + + ) + }) + }
))}
diff --git a/tsconfig.json b/tsconfig.json index 7b2858930..79c1068ce 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,6 +12,7 @@ "isolatedModules": true, "jsx": "preserve", "incremental": true, + "checkJs": true, "plugins": [ { "name": "next" From 9e6faeb3a80226df983653222bbcdac6fae77d5a Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Tue, 24 Sep 2024 08:12:13 +0300 Subject: [PATCH 08/35] Big Calendar Student View --- .gitignore | 2 + calendarEvents.jsonl | 10 + convex/README.md | 90 ++++ convex/_generated/api.d.ts | 40 ++ convex/_generated/api.js | 26 + convex/_generated/dataModel.d.ts | 62 +++ convex/_generated/server.d.ts | 146 ++++++ convex/_generated/server.js | 93 ++++ convex/calendarEvents.ts | 6 + convex/tsconfig.json | 25 + package-lock.json | 606 ++++++++++++++++++++++-- package.json | 2 + src/app/(dashboard)/student/page.tsx | 2 + src/app/globals.css | 25 + src/components/BigCalendar.tsx | 35 ++ src/components/ConvexClientProvider.tsx | 10 + src/lib/data.ts | 32 +- 17 files changed, 1159 insertions(+), 53 deletions(-) create mode 100644 calendarEvents.jsonl create mode 100644 convex/README.md create mode 100644 convex/_generated/api.d.ts create mode 100644 convex/_generated/api.js create mode 100644 convex/_generated/dataModel.d.ts create mode 100644 convex/_generated/server.d.ts create mode 100644 convex/_generated/server.js create mode 100644 convex/calendarEvents.ts create mode 100644 convex/tsconfig.json create mode 100644 src/components/BigCalendar.tsx create mode 100644 src/components/ConvexClientProvider.tsx diff --git a/.gitignore b/.gitignore index a84107af3..57854c1fe 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,5 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +.env.local diff --git a/calendarEvents.jsonl b/calendarEvents.jsonl new file mode 100644 index 000000000..aa6018ef2 --- /dev/null +++ b/calendarEvents.jsonl @@ -0,0 +1,10 @@ +{"title": "Math","allDay": false,"start": "","end": ""} +{"title": "English","allDay": false,"start": "","end": ""} +{"title": "Biology","allDay": false,"start": "","end": ""} +{"title": "Physics","allDay": false,"start": "","end": ""} +{"title": "Chemistry","allDay": false,"start": "","end": ""} +{"title": "History","allDay": false,"start": "","end": ""} +{"title": "English","allDay": false,"start": "","end": ""} +{"title": "Biology","allDay": false,"start": "","end": ""} +{"title": "Physics","allDay": false,"start": "","end": ""} +{"title": "History","allDay": false,"start": "","end": ""} \ No newline at end of file diff --git a/convex/README.md b/convex/README.md new file mode 100644 index 000000000..4d82e1363 --- /dev/null +++ b/convex/README.md @@ -0,0 +1,90 @@ +# Welcome to your Convex functions directory! + +Write your Convex functions here. +See https://docs.convex.dev/functions for more. + +A query function that takes two arguments looks like: + +```ts +// functions.js +import { query } from "./_generated/server"; +import { v } from "convex/values"; + +export const myQueryFunction = query({ + // Validators for arguments. + args: { + first: v.number(), + second: v.string(), + }, + + // Function implementation. + handler: async (ctx, args) => { + // Read the database as many times as you need here. + // See https://docs.convex.dev/database/reading-data. + const documents = await ctx.db.query("tablename").collect(); + + // Arguments passed from the client are properties of the args object. + console.log(args.first, args.second); + + // Write arbitrary JavaScript here: filter, aggregate, build derived data, + // remove non-public properties, or create new objects. + return documents; + }, +}); +``` + +Using this query function in a React component looks like: + +```ts +const data = useQuery(api.functions.myQueryFunction, { + first: 10, + second: "hello", +}); +``` + +A mutation function looks like: + +```ts +// functions.js +import { mutation } from "./_generated/server"; +import { v } from "convex/values"; + +export const myMutationFunction = mutation({ + // Validators for arguments. + args: { + first: v.string(), + second: v.string(), + }, + + // Function implementation. + handler: async (ctx, args) => { + // Insert or modify documents in the database here. + // Mutations can also read from the database like queries. + // See https://docs.convex.dev/database/writing-data. + const message = { body: args.first, author: args.second }; + const id = await ctx.db.insert("messages", message); + + // Optionally, return a value from your mutation. + return await ctx.db.get(id); + }, +}); +``` + +Using this mutation function in a React component looks like: + +```ts +const mutation = useMutation(api.functions.myMutationFunction); +function handleButtonPress() { + // fire and forget, the most common way to use mutations + mutation({ first: "Hello!", second: "me" }); + // OR + // use the result once the mutation has completed + mutation({ first: "Hello!", second: "me" }).then((result) => + console.log(result), + ); +} +``` + +Use the Convex CLI to push your functions to a deployment. See everything +the Convex CLI can do by running `npx convex -h` in your project root +directory. To learn more, launch the docs with `npx convex docs`. diff --git a/convex/_generated/api.d.ts b/convex/_generated/api.d.ts new file mode 100644 index 000000000..7ea88e4f4 --- /dev/null +++ b/convex/_generated/api.d.ts @@ -0,0 +1,40 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ +/** + * Generated `api` utility. + * + * THIS CODE IS AUTOMATICALLY GENERATED. + * + * To regenerate, run `npx convex dev`. + * @module + */ + +import type { + ApiFromModules, + FilterApi, + FunctionReference, +} from "convex/server"; +import type * as calendarEvents from "../calendarEvents.js"; + +/** + * A utility for referencing Convex functions in your app's API. + * + * Usage: + * ```js + * const myFunctionReference = api.myModule.myFunction; + * ``` + */ +declare const fullApi: ApiFromModules<{ + calendarEvents: typeof calendarEvents; +}>; +export declare const api: FilterApi< + typeof fullApi, + FunctionReference +>; +export declare const internal: FilterApi< + typeof fullApi, + FunctionReference +>; + +/* prettier-ignore-end */ diff --git a/convex/_generated/api.js b/convex/_generated/api.js new file mode 100644 index 000000000..b5f2e089d --- /dev/null +++ b/convex/_generated/api.js @@ -0,0 +1,26 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ +/** + * Generated `api` utility. + * + * THIS CODE IS AUTOMATICALLY GENERATED. + * + * To regenerate, run `npx convex dev`. + * @module + */ + +import { anyApi } from "convex/server"; + +/** + * A utility for referencing Convex functions in your app's API. + * + * Usage: + * ```js + * const myFunctionReference = api.myModule.myFunction; + * ``` + */ +export const api = anyApi; +export const internal = anyApi; + +/* prettier-ignore-end */ diff --git a/convex/_generated/dataModel.d.ts b/convex/_generated/dataModel.d.ts new file mode 100644 index 000000000..4c7c9f853 --- /dev/null +++ b/convex/_generated/dataModel.d.ts @@ -0,0 +1,62 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ +/** + * Generated data model types. + * + * THIS CODE IS AUTOMATICALLY GENERATED. + * + * To regenerate, run `npx convex dev`. + * @module + */ + +import { AnyDataModel } from "convex/server"; +import type { GenericId } from "convex/values"; + +/** + * No `schema.ts` file found! + * + * This generated code has permissive types like `Doc = any` because + * Convex doesn't know your schema. If you'd like more type safety, see + * https://docs.convex.dev/using/schemas for instructions on how to add a + * schema file. + * + * After you change a schema, rerun codegen with `npx convex dev`. + */ + +/** + * The names of all of your Convex tables. + */ +export type TableNames = string; + +/** + * The type of a document stored in Convex. + */ +export type Doc = any; + +/** + * An identifier for a document in Convex. + * + * Convex documents are uniquely identified by their `Id`, which is accessible + * on the `_id` field. To learn more, see [Document IDs](https://docs.convex.dev/using/document-ids). + * + * Documents can be loaded using `db.get(id)` in query and mutation functions. + * + * IDs are just strings at runtime, but this type can be used to distinguish them from other + * strings when type checking. + */ +export type Id = + GenericId; + +/** + * A type describing your Convex data model. + * + * This type includes information about what tables you have, the type of + * documents stored in those tables, and the indexes defined on them. + * + * This type is used to parameterize methods like `queryGeneric` and + * `mutationGeneric` to make them type-safe. + */ +export type DataModel = AnyDataModel; + +/* prettier-ignore-end */ diff --git a/convex/_generated/server.d.ts b/convex/_generated/server.d.ts new file mode 100644 index 000000000..8190e1ff3 --- /dev/null +++ b/convex/_generated/server.d.ts @@ -0,0 +1,146 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ +/** + * Generated utilities for implementing server-side Convex query and mutation functions. + * + * THIS CODE IS AUTOMATICALLY GENERATED. + * + * To regenerate, run `npx convex dev`. + * @module + */ + +import { + ActionBuilder, + HttpActionBuilder, + MutationBuilder, + QueryBuilder, + GenericActionCtx, + GenericMutationCtx, + GenericQueryCtx, + GenericDatabaseReader, + GenericDatabaseWriter, +} from "convex/server"; +import type { DataModel } from "./dataModel.js"; + +/** + * Define a query in this Convex app's public API. + * + * This function will be allowed to read your Convex database and will be accessible from the client. + * + * @param func - The query function. It receives a {@link QueryCtx} as its first argument. + * @returns The wrapped query. Include this as an `export` to name it and make it accessible. + */ +export declare const query: QueryBuilder; + +/** + * Define a query that is only accessible from other Convex functions (but not from the client). + * + * This function will be allowed to read from your Convex database. It will not be accessible from the client. + * + * @param func - The query function. It receives a {@link QueryCtx} as its first argument. + * @returns The wrapped query. Include this as an `export` to name it and make it accessible. + */ +export declare const internalQuery: QueryBuilder; + +/** + * Define a mutation in this Convex app's public API. + * + * This function will be allowed to modify your Convex database and will be accessible from the client. + * + * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument. + * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible. + */ +export declare const mutation: MutationBuilder; + +/** + * Define a mutation that is only accessible from other Convex functions (but not from the client). + * + * This function will be allowed to modify your Convex database. It will not be accessible from the client. + * + * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument. + * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible. + */ +export declare const internalMutation: MutationBuilder; + +/** + * Define an action in this Convex app's public API. + * + * An action is a function which can execute any JavaScript code, including non-deterministic + * code and code with side-effects, like calling third-party services. + * They can be run in Convex's JavaScript environment or in Node.js using the "use node" directive. + * They can interact with the database indirectly by calling queries and mutations using the {@link ActionCtx}. + * + * @param func - The action. It receives an {@link ActionCtx} as its first argument. + * @returns The wrapped action. Include this as an `export` to name it and make it accessible. + */ +export declare const action: ActionBuilder; + +/** + * Define an action that is only accessible from other Convex functions (but not from the client). + * + * @param func - The function. It receives an {@link ActionCtx} as its first argument. + * @returns The wrapped function. Include this as an `export` to name it and make it accessible. + */ +export declare const internalAction: ActionBuilder; + +/** + * Define an HTTP action. + * + * This function will be used to respond to HTTP requests received by a Convex + * deployment if the requests matches the path and method where this action + * is routed. Be sure to route your action in `convex/http.js`. + * + * @param func - The function. It receives an {@link ActionCtx} as its first argument. + * @returns The wrapped function. Import this function from `convex/http.js` and route it to hook it up. + */ +export declare const httpAction: HttpActionBuilder; + +/** + * A set of services for use within Convex query functions. + * + * The query context is passed as the first argument to any Convex query + * function run on the server. + * + * This differs from the {@link MutationCtx} because all of the services are + * read-only. + */ +export type QueryCtx = GenericQueryCtx; + +/** + * A set of services for use within Convex mutation functions. + * + * The mutation context is passed as the first argument to any Convex mutation + * function run on the server. + */ +export type MutationCtx = GenericMutationCtx; + +/** + * A set of services for use within Convex action functions. + * + * The action context is passed as the first argument to any Convex action + * function run on the server. + */ +export type ActionCtx = GenericActionCtx; + +/** + * An interface to read from the database within Convex query functions. + * + * The two entry points are {@link DatabaseReader.get}, which fetches a single + * document by its {@link Id}, or {@link DatabaseReader.query}, which starts + * building a query. + */ +export type DatabaseReader = GenericDatabaseReader; + +/** + * An interface to read from and write to the database within Convex mutation + * functions. + * + * Convex guarantees that all writes within a single mutation are + * executed atomically, so you never have to worry about partial writes leaving + * your data in an inconsistent state. See [the Convex Guide](https://docs.convex.dev/understanding/convex-fundamentals/functions#atomicity-and-optimistic-concurrency-control) + * for the guarantees Convex provides your functions. + */ +export type DatabaseWriter = GenericDatabaseWriter; + +/* prettier-ignore-end */ diff --git a/convex/_generated/server.js b/convex/_generated/server.js new file mode 100644 index 000000000..33b487cd2 --- /dev/null +++ b/convex/_generated/server.js @@ -0,0 +1,93 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ +/** + * Generated utilities for implementing server-side Convex query and mutation functions. + * + * THIS CODE IS AUTOMATICALLY GENERATED. + * + * To regenerate, run `npx convex dev`. + * @module + */ + +import { + actionGeneric, + httpActionGeneric, + queryGeneric, + mutationGeneric, + internalActionGeneric, + internalMutationGeneric, + internalQueryGeneric, +} from "convex/server"; + +/** + * Define a query in this Convex app's public API. + * + * This function will be allowed to read your Convex database and will be accessible from the client. + * + * @param func - The query function. It receives a {@link QueryCtx} as its first argument. + * @returns The wrapped query. Include this as an `export` to name it and make it accessible. + */ +export const query = queryGeneric; + +/** + * Define a query that is only accessible from other Convex functions (but not from the client). + * + * This function will be allowed to read from your Convex database. It will not be accessible from the client. + * + * @param func - The query function. It receives a {@link QueryCtx} as its first argument. + * @returns The wrapped query. Include this as an `export` to name it and make it accessible. + */ +export const internalQuery = internalQueryGeneric; + +/** + * Define a mutation in this Convex app's public API. + * + * This function will be allowed to modify your Convex database and will be accessible from the client. + * + * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument. + * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible. + */ +export const mutation = mutationGeneric; + +/** + * Define a mutation that is only accessible from other Convex functions (but not from the client). + * + * This function will be allowed to modify your Convex database. It will not be accessible from the client. + * + * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument. + * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible. + */ +export const internalMutation = internalMutationGeneric; + +/** + * Define an action in this Convex app's public API. + * + * An action is a function which can execute any JavaScript code, including non-deterministic + * code and code with side-effects, like calling third-party services. + * They can be run in Convex's JavaScript environment or in Node.js using the "use node" directive. + * They can interact with the database indirectly by calling queries and mutations using the {@link ActionCtx}. + * + * @param func - The action. It receives an {@link ActionCtx} as its first argument. + * @returns The wrapped action. Include this as an `export` to name it and make it accessible. + */ +export const action = actionGeneric; + +/** + * Define an action that is only accessible from other Convex functions (but not from the client). + * + * @param func - The function. It receives an {@link ActionCtx} as its first argument. + * @returns The wrapped function. Include this as an `export` to name it and make it accessible. + */ +export const internalAction = internalActionGeneric; + +/** + * Define a Convex HTTP action. + * + * @param func - The function. It receives an {@link ActionCtx} as its first argument, and a `Request` object + * as its second. + * @returns The wrapped endpoint function. Route a URL path to this function in `convex/http.js`. + */ +export const httpAction = httpActionGeneric; + +/* prettier-ignore-end */ diff --git a/convex/calendarEvents.ts b/convex/calendarEvents.ts new file mode 100644 index 000000000..eb21e1a21 --- /dev/null +++ b/convex/calendarEvents.ts @@ -0,0 +1,6 @@ +import { query } from "./_generated/server"; + + +export const get= query(()=>{ + return "hello"; +}); \ No newline at end of file diff --git a/convex/tsconfig.json b/convex/tsconfig.json new file mode 100644 index 000000000..6fa874e81 --- /dev/null +++ b/convex/tsconfig.json @@ -0,0 +1,25 @@ +{ + /* This TypeScript project config describes the environment that + * Convex functions run in and is used to typecheck them. + * You can modify it, but some settings required to use Convex. + */ + "compilerOptions": { + /* These settings are not required by Convex and can be modified. */ + "allowJs": true, + "strict": true, + "moduleResolution": "Bundler", + "jsx": "react-jsx", + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + + /* These compiler options are required by Convex */ + "target": "ESNext", + "lib": ["ES2021", "dom"], + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "isolatedModules": true, + "noEmit": true + }, + "include": ["./**/*"], + "exclude": ["./_generated"] +} diff --git a/package-lock.json b/package-lock.json index 81af23594..4f8fa2c8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,8 @@ "name": "lama-dev-next-dashboard", "version": "0.1.0", "dependencies": { + "@types/react-big-calendar": "^1.8.11", + "convex": "^1.16.0", "moment": "^2.30.1", "next": "^14.2.7", "react": "^18", @@ -52,6 +54,390 @@ "node": ">=6.9.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", + "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz", + "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz", + "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz", + "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz", + "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz", + "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz", + "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz", + "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz", + "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz", + "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz", + "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz", + "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz", + "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz", + "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz", + "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz", + "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz", + "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", + "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz", + "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz", + "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", + "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz", + "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz", + "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz", + "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -251,9 +637,9 @@ } }, "node_modules/@next/env": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.7.tgz", - "integrity": "sha512-OTx9y6I3xE/eih+qtthppwLytmpJVPM5PPoJxChFsbjIEFXIayG0h/xLzefHGJviAa3Q5+Fd+9uYojKkHDKxoQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.12.tgz", + "integrity": "sha512-3fP29GIetdwVIfIRyLKM7KrvJaqepv+6pVodEbx0P5CaMLYBtx+7eEg8JYO5L9sveJO87z9eCReceZLi0hxO1Q==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -267,9 +653,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.7.tgz", - "integrity": "sha512-UhZGcOyI9LE/tZL3h9rs/2wMZaaJKwnpAyegUVDGZqwsla6hMfeSj9ssBWQS9yA4UXun3pPhrFLVnw5KXZs3vw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.12.tgz", + "integrity": "sha512-crHJ9UoinXeFbHYNok6VZqjKnd8rTd7K3Z2zpyzF1ch7vVNKmhjv/V7EHxep3ILoN8JB9AdRn/EtVVyG9AkCXw==", "cpu": [ "arm64" ], @@ -283,9 +669,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.7.tgz", - "integrity": "sha512-ys2cUgZYRc+CbyDeLAaAdZgS7N1Kpyy+wo0b/gAj+SeOeaj0Lw/q+G1hp+DuDiDAVyxLBCJXEY/AkhDmtihUTA==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.12.tgz", + "integrity": "sha512-JbEaGbWq18BuNBO+lCtKfxl563Uw9oy2TodnN2ioX00u7V1uzrsSUcg3Ep9ce+P0Z9es+JmsvL2/rLphz+Frcw==", "cpu": [ "x64" ], @@ -299,9 +685,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.7.tgz", - "integrity": "sha512-2xoWtE13sUJ3qrC1lwE/HjbDPm+kBQYFkkiVECJWctRASAHQ+NwjMzgrfqqMYHfMxFb5Wws3w9PqzZJqKFdWcQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.12.tgz", + "integrity": "sha512-qBy7OiXOqZrdp88QEl2H4fWalMGnSCrr1agT/AVDndlyw2YJQA89f3ttR/AkEIP9EkBXXeGl6cC72/EZT5r6rw==", "cpu": [ "arm64" ], @@ -315,9 +701,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.7.tgz", - "integrity": "sha512-+zJ1gJdl35BSAGpkCbfyiY6iRTaPrt3KTl4SF/B1NyELkqqnrNX6cp4IjjjxKpd64/7enI0kf6b9O1Uf3cL0pw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.12.tgz", + "integrity": "sha512-EfD9L7o9biaQxjwP1uWXnk3vYZi64NVcKUN83hpVkKocB7ogJfyH2r7o1pPnMtir6gHZiGCeHKagJ0yrNSLNHw==", "cpu": [ "arm64" ], @@ -331,9 +717,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.7.tgz", - "integrity": "sha512-m6EBqrskeMUzykBrv0fDX/28lWIBGhMzOYaStp0ihkjzIYJiKUOzVYD1gULHc8XDf5EMSqoH/0/TRAgXqpQwmw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.12.tgz", + "integrity": "sha512-iQ+n2pxklJew9IpE47hE/VgjmljlHqtcD5UhZVeHICTPbLyrgPehaKf2wLRNjYH75udroBNCgrSSVSVpAbNoYw==", "cpu": [ "x64" ], @@ -347,9 +733,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.7.tgz", - "integrity": "sha512-gUu0viOMvMlzFRz1r1eQ7Ql4OE+hPOmA7smfZAhn8vC4+0swMZaZxa9CSIozTYavi+bJNDZ3tgiSdMjmMzRJlQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.12.tgz", + "integrity": "sha512-rFkUkNwcQ0ODn7cxvcVdpHlcOpYxMeyMfkJuzaT74xjAa5v4fxP4xDk5OoYmPi8QNLDs3UgZPMSBmpBuv9zKWA==", "cpu": [ "x64" ], @@ -363,9 +749,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.7.tgz", - "integrity": "sha512-PGbONHIVIuzWlYmLvuFKcj+8jXnLbx4WrlESYlVnEzDsa3+Q2hI1YHoXaSmbq0k4ZwZ7J6sWNV4UZfx1OeOlbQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.12.tgz", + "integrity": "sha512-PQFYUvwtHs/u0K85SG4sAdDXYIPXpETf9mcEjWc0R4JmjgMKSDwIU/qfZdavtP6MPNiMjuKGXHCtyhR/M5zo8g==", "cpu": [ "arm64" ], @@ -379,9 +765,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.7.tgz", - "integrity": "sha512-BiSY5umlx9ed5RQDoHcdbuKTUkuFORDqzYKPHlLeS+STUWQKWziVOn3Ic41LuTBvqE0TRJPKpio9GSIblNR+0w==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.12.tgz", + "integrity": "sha512-FAj2hMlcbeCV546eU2tEv41dcJb4NeqFlSXU/xL/0ehXywHnNpaYajOUvn3P8wru5WyQe6cTZ8fvckj/2XN4Vw==", "cpu": [ "ia32" ], @@ -395,9 +781,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.7.tgz", - "integrity": "sha512-pxsI23gKWRt/SPHFkDEsP+w+Nd7gK37Hpv0ngc5HpWy2e7cKx9zR/+Q2ptAUqICNTecAaGWvmhway7pj/JLEWA==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.12.tgz", + "integrity": "sha512-yu8QvV53sBzoIVRHsxCHqeuS8jYq6Lrmdh0briivuh+Brsp6xjg80MAozUsBTAV9KNmY08KlX0KYTWz1lbPzEg==", "cpu": [ "x64" ], @@ -567,6 +953,12 @@ "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", "license": "MIT" }, + "node_modules/@types/date-arithmetic": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/date-arithmetic/-/date-arithmetic-4.1.4.tgz", + "integrity": "sha512-p9eZ2X9B80iKiTW4ukVj8B4K6q9/+xFtQ5MGYA5HWToY9nL4EkhV9+6ftT2VHpVMEZb5Tv00Iel516bVdO+yRw==", + "license": "MIT" + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -600,6 +992,17 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/react-big-calendar": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/@types/react-big-calendar/-/react-big-calendar-1.8.11.tgz", + "integrity": "sha512-/j9WOY79Q9A3cLtAa/cEKCi9DPmzcjfG7WaKW/6xlJOLFRkqCb0d2BRxtBETLO0yzLY/nDC95z9Cnp9vG2EmjQ==", + "license": "MIT", + "dependencies": { + "@types/date-arithmetic": "*", + "@types/prop-types": "*", + "@types/react": "*" + } + }, "node_modules/@types/react-dom": { "version": "18.3.0", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", @@ -1310,6 +1713,57 @@ "dev": true, "license": "MIT" }, + "node_modules/convex": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/convex/-/convex-1.16.0.tgz", + "integrity": "sha512-duu6ged8mL2WgN9Jxm/XykbRe8MW+Wotkj57KTX44l7TUlnwvNCKB3mmlAVCxbsd4epyU05TkQz8WGwb/4SssQ==", + "license": "Apache-2.0", + "dependencies": { + "esbuild": "0.23.0", + "globals": "~15.9.0", + "jwt-decode": "^3.1.2", + "prettier": "3.2.5" + }, + "bin": { + "convex": "bin/main.js" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=7.0.0" + }, + "peerDependencies": { + "@auth0/auth0-react": "^2.0.1", + "@clerk/clerk-react": "^4.12.8 || ^5.0.0", + "react": "^17.0.2 || ^18.0.0", + "react-dom": "^17.0.2 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@auth0/auth0-react": { + "optional": true + }, + "@clerk/clerk-react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/convex/node_modules/globals": { + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1912,6 +2366,45 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/esbuild": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz", + "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.0", + "@esbuild/android-arm": "0.23.0", + "@esbuild/android-arm64": "0.23.0", + "@esbuild/android-x64": "0.23.0", + "@esbuild/darwin-arm64": "0.23.0", + "@esbuild/darwin-x64": "0.23.0", + "@esbuild/freebsd-arm64": "0.23.0", + "@esbuild/freebsd-x64": "0.23.0", + "@esbuild/linux-arm": "0.23.0", + "@esbuild/linux-arm64": "0.23.0", + "@esbuild/linux-ia32": "0.23.0", + "@esbuild/linux-loong64": "0.23.0", + "@esbuild/linux-mips64el": "0.23.0", + "@esbuild/linux-ppc64": "0.23.0", + "@esbuild/linux-riscv64": "0.23.0", + "@esbuild/linux-s390x": "0.23.0", + "@esbuild/linux-x64": "0.23.0", + "@esbuild/netbsd-x64": "0.23.0", + "@esbuild/openbsd-arm64": "0.23.0", + "@esbuild/openbsd-x64": "0.23.0", + "@esbuild/sunos-x64": "0.23.0", + "@esbuild/win32-arm64": "0.23.0", + "@esbuild/win32-ia32": "0.23.0", + "@esbuild/win32-x64": "0.23.0" + } + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -3518,6 +4011,12 @@ "node": ">=4.0" } }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "license": "MIT" + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -3687,9 +4186,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { @@ -3808,12 +4307,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.7.tgz", - "integrity": "sha512-4Qy2aK0LwH4eQiSvQWyKuC7JXE13bIopEQesWE0c/P3uuNRnZCQanI0vsrMLmUQJLAto+A+/8+sve2hd+BQuOQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.12.tgz", + "integrity": "sha512-cDOtUSIeoOvt1skKNihdExWMTybx3exnvbFbb9ecZDIxlvIbREQzt9A5Km3Zn3PfU+IFjyYGsHS+lN9VInAGKA==", "license": "MIT", "dependencies": { - "@next/env": "14.2.7", + "@next/env": "14.2.12", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -3828,15 +4327,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.7", - "@next/swc-darwin-x64": "14.2.7", - "@next/swc-linux-arm64-gnu": "14.2.7", - "@next/swc-linux-arm64-musl": "14.2.7", - "@next/swc-linux-x64-gnu": "14.2.7", - "@next/swc-linux-x64-musl": "14.2.7", - "@next/swc-win32-arm64-msvc": "14.2.7", - "@next/swc-win32-ia32-msvc": "14.2.7", - "@next/swc-win32-x64-msvc": "14.2.7" + "@next/swc-darwin-arm64": "14.2.12", + "@next/swc-darwin-x64": "14.2.12", + "@next/swc-linux-arm64-gnu": "14.2.12", + "@next/swc-linux-arm64-musl": "14.2.12", + "@next/swc-linux-x64-gnu": "14.2.12", + "@next/swc-linux-x64-musl": "14.2.12", + "@next/swc-win32-arm64-msvc": "14.2.12", + "@next/swc-win32-ia32-msvc": "14.2.12", + "@next/swc-win32-x64-msvc": "14.2.12" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -4408,6 +4907,21 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", diff --git a/package.json b/package.json index ba82f9fec..db09843d4 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,8 @@ "lint": "next lint" }, "dependencies": { + "@types/react-big-calendar": "^1.8.11", + "convex": "^1.16.0", "moment": "^2.30.1", "next": "^14.2.7", "react": "^18", diff --git a/src/app/(dashboard)/student/page.tsx b/src/app/(dashboard)/student/page.tsx index 0beadb2b8..2f78f7b82 100644 --- a/src/app/(dashboard)/student/page.tsx +++ b/src/app/(dashboard)/student/page.tsx @@ -1,4 +1,5 @@ import Announcements from '@/components/Announcements' +import BigCalendar from '@/components/BigCalendar' import EventCalendar from '@/components/EventCalendar' import React from 'react' @@ -9,6 +10,7 @@ const StudentPage = () => {

Schedule

+
{/* RIGHT */} diff --git a/src/app/globals.css b/src/app/globals.css index baa1140ac..f93c844ca 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -15,4 +15,29 @@ .react-calendar__tile--active { background-color: #302780 !important; +} + +.rbc-btn-group:first-child { + display: none !important; +} + +.rbc-toolbar-label{ + text-align: right !important; + padding:0px 20px !important ; +} + +.rbc-btn-group:last-child { + font-size: 13px !important; +} + +.rbc-btn-group:last-child button { + border: none !important; + background-color: #f1f0ff !important; + margin-left: 2px !important; +} + +.rbc-toolbar button.rbc-active { + box-shadow: none !important; + background-color: #7e57eb !important; + color:white !important; } \ No newline at end of file diff --git a/src/components/BigCalendar.tsx b/src/components/BigCalendar.tsx new file mode 100644 index 000000000..6d75a3206 --- /dev/null +++ b/src/components/BigCalendar.tsx @@ -0,0 +1,35 @@ +"use client"; + +import { Calendar, momentLocalizer, View, Views } from 'react-big-calendar' +import moment from 'moment' +import { calendarEvents } from '@/lib/data'; +import "react-big-calendar/lib/css/react-big-calendar.css"; +import { useState } from 'react'; + +const localizer = momentLocalizer(moment); + +const BigCalendar = () => { + const [view, setView] = useState(Views.WORK_WEEK); + + const handleOnChangeView = (selectedView:View)=>{ + setView(selectedView); + } + + + return( + + ); +} + +export default BigCalendar; \ No newline at end of file diff --git a/src/components/ConvexClientProvider.tsx b/src/components/ConvexClientProvider.tsx new file mode 100644 index 000000000..bc549c73b --- /dev/null +++ b/src/components/ConvexClientProvider.tsx @@ -0,0 +1,10 @@ +"use client"; + +import { ConvexProvider, ConvexReactClient } from "convex/react"; +import { ReactNode } from "react"; + +const convex = new ConvexReactClient(process.env.NEXT_PUBLIC_CONVEX_URL!); + +export function ConvexClientProvider({ children }: { children: ReactNode }) { + return {children}; +} \ No newline at end of file diff --git a/src/lib/data.ts b/src/lib/data.ts index 5fcd9281e..1dc7efdb3 100644 --- a/src/lib/data.ts +++ b/src/lib/data.ts @@ -1,6 +1,6 @@ // TEMPORARY DATA -export let role = "admin"; +export let role = "student"; export const teachersData = [ { @@ -921,8 +921,8 @@ export const calendarEvents = [ { title: "Math", allDay: false, - start: new Date(2024, 7, 12, 8, 0), - end: new Date(2024, 7, 12, 8, 45), + start: new Date(2024, 9, 9, 8, 0), + end: new Date(2024, 9, 9, 8, 45), }, { title: "English", @@ -1051,13 +1051,31 @@ export const calendarEvents = [ { title: "Chemistry", allDay: false, - start: new Date(2024, 7, 16, 13, 0), - end: new Date(2024, 7, 16, 13, 45), + start: new Date(2024, 8, 16, 18, 0), + end: new Date(2024, 8, 16, 19, 0), }, { title: "History", allDay: false, - start: new Date(2024, 7, 16, 14, 0), - end: new Date(2024, 7, 16, 14, 45), + start: new Date(2024, 8, 16, 19, 0), + end: new Date(2024, 8, 16, 20, 0), + }, + { + title: "HMD-Juniors", + allDay: false, + start: new Date(2024, 8, 18, 19, 0), + end: new Date(2024, 8, 18, 20, 0), + }, + { + title: "HMD-Juniors", + allDay: false, + start: new Date(2024, 8, 19, 19, 0), + end: new Date(2024, 8, 19, 20, 0), + }, + { + title: "HMD-BlackBelts", + allDay: false, + start: new Date(2024, 8, 18, 20, 0), + end: new Date(2024, 8, 18, 21, 0), }, ]; \ No newline at end of file From d9c36ab0ee9d4b5e62b1bca069a47d149b10d936 Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Tue, 24 Sep 2024 16:04:40 +0300 Subject: [PATCH 09/35] Big Calendar - Style --- src/app/globals.css | 24 ++++++++++++++++++++++++ src/lib/data.ts | 12 ++++++------ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/app/globals.css b/src/app/globals.css index f93c844ca..17c3bdd54 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -40,4 +40,28 @@ box-shadow: none !important; background-color: #7e57eb !important; color:white !important; +} + +.rbc-time-view{ + border-color: #eee !important; +} + +.rbc-time-header { + display: none !important; +} + +.rbc-time-content { + border: none !important; +} + +.rbc-time-gutter.rbc-time-column { + font-size: 12px !important; +} + +.rbc-time-gutter.rbc-time-column .rbc-timeslot-group { + padding: 0px 20px !important; +} + +.rbc-timeslot-group { + background-color: #f7fdff !important; } \ No newline at end of file diff --git a/src/lib/data.ts b/src/lib/data.ts index 1dc7efdb3..c4afb897c 100644 --- a/src/lib/data.ts +++ b/src/lib/data.ts @@ -1063,19 +1063,19 @@ export const calendarEvents = [ { title: "HMD-Juniors", allDay: false, - start: new Date(2024, 8, 18, 19, 0), - end: new Date(2024, 8, 18, 20, 0), + start: new Date(2024, 8, 23, 19, 0), + end: new Date(2024, 8, 23, 20, 0), }, { title: "HMD-Juniors", allDay: false, - start: new Date(2024, 8, 19, 19, 0), - end: new Date(2024, 8, 19, 20, 0), + start: new Date(2024, 8, 24, 19, 0), + end: new Date(2024, 8, 24, 20, 0), }, { title: "HMD-BlackBelts", allDay: false, - start: new Date(2024, 8, 18, 20, 0), - end: new Date(2024, 8, 18, 21, 0), + start: new Date(2024, 8, 27, 20, 0), + end: new Date(2024, 8, 27, 21, 0), }, ]; \ No newline at end of file From 9faa5d2285c04699471a200a198931f57b4518ea Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Wed, 25 Sep 2024 23:44:36 +0300 Subject: [PATCH 10/35] Styling --- src/app/globals.css | 34 ++++++++++++++++++++++++++++++++++ src/lib/data.ts | 8 ++++---- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/app/globals.css b/src/app/globals.css index 17c3bdd54..b5de0a912 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -64,4 +64,38 @@ .rbc-timeslot-group { background-color: #f7fdff !important; +} + +.rbc-day-slot { + font-size: 14px !important; +} + +.rbc-event { + border: none !important; + color:black !important; + width: 100% !important; + padding: 10px !important; + +} + +.rbc-event:nth-child(1) { + background-color: #e2f8ff !important; +} + +.rbc-event:nth-child(2) { + background-color: #fefce8 !important; +} +.rbc-event:nth-child(3) { + background-color: red !important; +} +.rbc-event:nth-child(4) { + background-color: red !important; +} +.rbc-event:nth-child(5) { + background-color: red !important; +} + +.rbc-event-label{ + color: gray; + margin-bottom: 5px; } \ No newline at end of file diff --git a/src/lib/data.ts b/src/lib/data.ts index c4afb897c..194ea4f53 100644 --- a/src/lib/data.ts +++ b/src/lib/data.ts @@ -1069,13 +1069,13 @@ export const calendarEvents = [ { title: "HMD-Juniors", allDay: false, - start: new Date(2024, 8, 24, 19, 0), - end: new Date(2024, 8, 24, 20, 0), + start: new Date(2024, 8, 25, 19, 0), + end: new Date(2024, 8, 25, 20, 0), }, { title: "HMD-BlackBelts", allDay: false, - start: new Date(2024, 8, 27, 20, 0), - end: new Date(2024, 8, 27, 21, 0), + start: new Date(2024, 8, 25, 20, 0), + end: new Date(2024, 8, 25, 21, 0), }, ]; \ No newline at end of file From 667da629c39a68cdc3b58440ff959255f6c0d0a6 Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Fri, 4 Oct 2024 07:37:03 +0300 Subject: [PATCH 11/35] Parent-Teacher layouts --- src/app/(dashboard)/layout.tsx | 2 +- src/app/(dashboard)/list/teacher/page.tsx | 7 +++++++ src/app/(dashboard)/parent/page.tsx | 22 +++++++++++++++++++--- src/app/(dashboard)/teacher/page.tsx | 16 +++++++++++++++- src/app/globals.css | 7 ++++--- src/lib/data.ts | 10 +++++----- 6 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 src/app/(dashboard)/list/teacher/page.tsx diff --git a/src/app/(dashboard)/layout.tsx b/src/app/(dashboard)/layout.tsx index b56b40763..d3bc993a6 100644 --- a/src/app/(dashboard)/layout.tsx +++ b/src/app/(dashboard)/layout.tsx @@ -19,7 +19,7 @@ export default function DashboardLayout({
{/* Right */} -
+
{children}
diff --git a/src/app/(dashboard)/list/teacher/page.tsx b/src/app/(dashboard)/list/teacher/page.tsx new file mode 100644 index 000000000..32666b59d --- /dev/null +++ b/src/app/(dashboard)/list/teacher/page.tsx @@ -0,0 +1,7 @@ +const TeacherListPage = () => { + return ( +
TeacherListPage
+ ) +} + +export default TeacherListPage \ No newline at end of file diff --git a/src/app/(dashboard)/parent/page.tsx b/src/app/(dashboard)/parent/page.tsx index 9e2ba1ad0..9ca8c69d1 100644 --- a/src/app/(dashboard)/parent/page.tsx +++ b/src/app/(dashboard)/parent/page.tsx @@ -1,7 +1,23 @@ -const StudentPage = () => { +import Announcements from '@/components/Announcements' +import BigCalendar from '@/components/BigCalendar' +import React from 'react' + +const ParentPage = () => { return ( -
StudentPage
+
+ {/* LEFT */} +
+
+

Schedule (StudentName)

+ +
+
+ {/* RIGHT */} +
+ +
+
) } -export default StudentPage +export default ParentPage \ No newline at end of file diff --git a/src/app/(dashboard)/teacher/page.tsx b/src/app/(dashboard)/teacher/page.tsx index daa87e54a..4e0165b2e 100644 --- a/src/app/(dashboard)/teacher/page.tsx +++ b/src/app/(dashboard)/teacher/page.tsx @@ -1,8 +1,22 @@ +import Announcements from '@/components/Announcements' +import BigCalendar from '@/components/BigCalendar' import React from 'react' const TeacherPage = () => { return ( -
TeacherPage
+
+ {/* LEFT */} +
+
+

Schedule (TeachersName)

+ +
+
+ {/* RIGHT */} +
+ +
+
) } diff --git a/src/app/globals.css b/src/app/globals.css index b5de0a912..266f6ec59 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -67,14 +67,15 @@ } .rbc-day-slot { - font-size: 14px !important; + font-size: 12px !important; } .rbc-event { border: none !important; color:black !important; - width: 100% !important; - padding: 10px !important; + width: 99% !important; + padding: 8px !important; + } diff --git a/src/lib/data.ts b/src/lib/data.ts index 194ea4f53..bb2ea229e 100644 --- a/src/lib/data.ts +++ b/src/lib/data.ts @@ -1,6 +1,6 @@ // TEMPORARY DATA -export let role = "student"; +export let role = "admin"; export const teachersData = [ { @@ -1069,13 +1069,13 @@ export const calendarEvents = [ { title: "HMD-Juniors", allDay: false, - start: new Date(2024, 8, 25, 19, 0), - end: new Date(2024, 8, 25, 20, 0), + start: new Date(2024, 9, 2, 19, 0), + end: new Date(2024, 9, 2, 19, 30), }, { title: "HMD-BlackBelts", allDay: false, - start: new Date(2024, 8, 25, 20, 0), - end: new Date(2024, 8, 25, 21, 0), + start: new Date(2024, 9, 2, 20, 30), + end: new Date(2024, 9, 2, 21, 0), }, ]; \ No newline at end of file From 7ef802c1b8ee24aa46508c27cc4b58f3abe7e8c6 Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Mon, 7 Oct 2024 23:02:04 +0300 Subject: [PATCH 12/35] Lists Components --- src/app/(dashboard)/list/teacher/page.tsx | 7 ----- src/app/(dashboard)/list/teachers/page.tsx | 35 ++++++++++++++++++++++ src/components/Navbar.tsx | 2 +- src/components/Pagination.tsx | 21 +++++++++++++ src/components/Table.tsx | 9 ++++++ src/components/TableSearch.tsx | 12 ++++++++ 6 files changed, 78 insertions(+), 8 deletions(-) delete mode 100644 src/app/(dashboard)/list/teacher/page.tsx create mode 100644 src/app/(dashboard)/list/teachers/page.tsx create mode 100644 src/components/Pagination.tsx create mode 100644 src/components/Table.tsx create mode 100644 src/components/TableSearch.tsx diff --git a/src/app/(dashboard)/list/teacher/page.tsx b/src/app/(dashboard)/list/teacher/page.tsx deleted file mode 100644 index 32666b59d..000000000 --- a/src/app/(dashboard)/list/teacher/page.tsx +++ /dev/null @@ -1,7 +0,0 @@ -const TeacherListPage = () => { - return ( -
TeacherListPage
- ) -} - -export default TeacherListPage \ No newline at end of file diff --git a/src/app/(dashboard)/list/teachers/page.tsx b/src/app/(dashboard)/list/teachers/page.tsx new file mode 100644 index 000000000..177e6a00a --- /dev/null +++ b/src/app/(dashboard)/list/teachers/page.tsx @@ -0,0 +1,35 @@ +import Pagination from "@/components/Pagination" +import Table from "@/components/Table" +import TableSearch from "@/components/TableSearch" +import Image from "next/image" + +const TeacherListPage = () => { + return ( +
+ {/* TOP SECTION*/} +
+

All Teachers

+
+ +
+ + + +
+
+
+ {/* LIST SECTION*/} + + {/* PAGINATION SECTION*/} + + + ) +} + +export default TeacherListPage \ No newline at end of file diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index 2ab8e00f8..855cafa7a 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -7,7 +7,7 @@ const Navbar = () => {
-
+ {/* ICONS AND USER */}
diff --git a/src/components/Pagination.tsx b/src/components/Pagination.tsx new file mode 100644 index 000000000..e7235ce01 --- /dev/null +++ b/src/components/Pagination.tsx @@ -0,0 +1,21 @@ +const Pagination = () => { + return ( +
+ +
+ + + + ... + +
+ +
+ ) +} + +export default Pagination \ No newline at end of file diff --git a/src/components/Table.tsx b/src/components/Table.tsx new file mode 100644 index 000000000..a41d90dab --- /dev/null +++ b/src/components/Table.tsx @@ -0,0 +1,9 @@ +const Table = () => { + return ( +
+ +
+ ) +} + +export default Table \ No newline at end of file diff --git a/src/components/TableSearch.tsx b/src/components/TableSearch.tsx new file mode 100644 index 000000000..c1ff060a8 --- /dev/null +++ b/src/components/TableSearch.tsx @@ -0,0 +1,12 @@ +import Image from "next/image"; + + const TableSearch = () => { + return ( +
+ + +
+ ) + } + + export default TableSearch \ No newline at end of file From dea9fb7974c8354991a87a3879010078a69d308b Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Wed, 9 Oct 2024 15:36:02 +0300 Subject: [PATCH 13/35] Teachers List design --- next.config.mjs | 8 +- src/app/(dashboard)/list/teachers/page.tsx | 104 ++++++++++++++++++++- src/components/Table.tsx | 24 ++++- 3 files changed, 128 insertions(+), 8 deletions(-) diff --git a/next.config.mjs b/next.config.mjs index 4678774e6..cc0808be8 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,10 @@ /** @type {import('next').NextConfig} */ -const nextConfig = {}; +const nextConfig = { + images:{ + remotePatterns:[ + {hostname:"images.pexels.com"} + ], + } +}; export default nextConfig; diff --git a/src/app/(dashboard)/list/teachers/page.tsx b/src/app/(dashboard)/list/teachers/page.tsx index 177e6a00a..5fe497028 100644 --- a/src/app/(dashboard)/list/teachers/page.tsx +++ b/src/app/(dashboard)/list/teachers/page.tsx @@ -1,10 +1,104 @@ -import Pagination from "@/components/Pagination" -import Table from "@/components/Table" -import TableSearch from "@/components/TableSearch" -import Image from "next/image" +import Pagination from "@/components/Pagination"; +import Table from "@/components/Table"; +import TableSearch from "@/components/TableSearch"; +import { role, teachersData } from "@/lib/data"; +import Image from "next/image"; +import Link from "next/link"; + +type Teacher = { + id:number; + teacherId:string; + name:string; + email?:string; + photo:string; + phone:string; + subjects:string[]; + classes:string[]; + address:string; + +} + + + +const columns = [ + { + header:"info", accessor:"info" + }, + { + header:"Teacher ID", + accessor:"teacherId", + className:"hidden md:table-cell" + }, + { + header:"Subjects", + accessor:"subjects", + className:"hidden md:table-cell" + }, + { + header:"Classes", + accessor:"classes", + className:"hidden md:table-cell" + }, + { + header:"Phone", + accessor:"phone", + className:"hidden lg:table-cell" + }, + { + header:"Address", + accessor:"address", + className:"hidden lg:table-cell" + }, + { + header:"Actions", + accessor:"actions", + }, +]; + +const renderRow = (item:Teacher)=>( + + + +
+

{item.name}

+

{item?.email}

+
+ + {item.teacherId} + {item.subjects.join(",")} + {item.classes.join(",")} + {item.phone} + {item?.address} + +
+ + + + { + role==="admin" && + ( + + ) + } + +
+ + +); const TeacherListPage = () => { return ( +
{/* TOP SECTION*/}
@@ -25,7 +119,7 @@ const TeacherListPage = () => {
{/* LIST SECTION*/} - +
{/* PAGINATION SECTION*/} diff --git a/src/components/Table.tsx b/src/components/Table.tsx index a41d90dab..2c25a0bdb 100644 --- a/src/components/Table.tsx +++ b/src/components/Table.tsx @@ -1,7 +1,27 @@ -const Table = () => { +const Table = ( + { + columns, + renderRow, + data + }:{ + columns:{header:string; accessor:string; className?:string;}[]; + renderRow:(item:any)=> React.ReactNode; + data:any[]; + }) => { return (
- + + + {columns.map(col=>( + + ))} + + + + { + data.map((item)=>renderRow(item)) + } +
{col.header}
) } From bfc176b2823bb251597bf7cfc764942f377594b4 Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Wed, 9 Oct 2024 17:26:53 +0300 Subject: [PATCH 14/35] Students List Design --- src/app/(dashboard)/list/students/page.tsx | 129 +++++++++++++++++++++ src/app/(dashboard)/list/teachers/page.tsx | 2 +- 2 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 src/app/(dashboard)/list/students/page.tsx diff --git a/src/app/(dashboard)/list/students/page.tsx b/src/app/(dashboard)/list/students/page.tsx new file mode 100644 index 000000000..3b9eb6c40 --- /dev/null +++ b/src/app/(dashboard)/list/students/page.tsx @@ -0,0 +1,129 @@ +import Pagination from "@/components/Pagination"; +import Table from "@/components/Table"; +import TableSearch from "@/components/TableSearch"; +import { role, studentsData, teachersData } from "@/lib/data"; +import Image from "next/image"; +import Link from "next/link"; + +type Student = { + id:number; + studentId:string; + name:string; + email?:string; + photo:string; + phone:string; + grade:number; + class:string; + address:string; +} + + + +const columns = [ + { + header:"info", accessor:"info" + }, + { + header:"Student ID", + accessor:"studentId", + className:"hidden md:table-cell" + }, + { + header:"Grade", + accessor:"grade", + className:"hidden md:table-cell" + }, + { + header:"Class", + accessor:"class", + className:"hidden md:table-cell" + }, + { + header:"Phone", + accessor:"phone", + className:"hidden lg:table-cell" + }, + { + header:"Address", + accessor:"address", + className:"hidden lg:table-cell" + }, + { + header:"Actions", + accessor:"actions", + }, + +]; + +const renderRow = (item:Student)=>( + + + +
+

{item.name}

+

{item?.email}

+
+ + {item.studentId} + {item.grade} + {item.class} + {item.phone} + {item?.address} + +
+ + + + { + role==="admin" && + ( + + ) + } + +
+ + +); + +const StudentListPage = () => { + return ( + +
+ {/* TOP SECTION*/} +
+

All Students

+
+ +
+ + + +
+
+
+ {/* LIST SECTION*/} + + {/* PAGINATION SECTION*/} + + + ) +} + +export default StudentListPage \ No newline at end of file diff --git a/src/app/(dashboard)/list/teachers/page.tsx b/src/app/(dashboard)/list/teachers/page.tsx index 5fe497028..7c2ab7cf5 100644 --- a/src/app/(dashboard)/list/teachers/page.tsx +++ b/src/app/(dashboard)/list/teachers/page.tsx @@ -77,7 +77,7 @@ const renderRow = (item:Teacher)=>( + + + + + + + + +); + +const EventsListPage = () => { + return ( + +
+ {/* TOP SECTION*/} +
+

All Teachers

+
+ +
+ + + +
+
+
+ {/* LIST SECTION*/} +
{item?.address}
- + From 8f7824a8b0c15d1cc948567ea4719229e18b44ca Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Wed, 23 Oct 2024 16:23:14 +0300 Subject: [PATCH 15/35] Parents and Subjects Lists --- src/app/(dashboard)/list/events/page.tsx | 129 +++++++++++++++++++++ src/app/(dashboard)/list/parents/page.tsx | 106 +++++++++++++++++ src/app/(dashboard)/list/subjects/page.tsx | 91 +++++++++++++++ 3 files changed, 326 insertions(+) create mode 100644 src/app/(dashboard)/list/events/page.tsx create mode 100644 src/app/(dashboard)/list/parents/page.tsx create mode 100644 src/app/(dashboard)/list/subjects/page.tsx diff --git a/src/app/(dashboard)/list/events/page.tsx b/src/app/(dashboard)/list/events/page.tsx new file mode 100644 index 000000000..6f22d8af3 --- /dev/null +++ b/src/app/(dashboard)/list/events/page.tsx @@ -0,0 +1,129 @@ +import Pagination from "@/components/Pagination"; +import Table from "@/components/Table"; +import TableSearch from "@/components/TableSearch"; +import { role, teachersData } from "@/lib/data"; +import Image from "next/image"; +import Link from "next/link"; + +type Teacher = { + id:number; + teacherId:string; + name:string; + email?:string; + photo:string; + phone:string; + subjects:string[]; + classes:string[]; + address:string; + +} + + + +const columns = [ + { + header:"info", accessor:"info" + }, + { + header:"Teacher ID", + accessor:"teacherId", + className:"hidden md:table-cell" + }, + { + header:"Subjects", + accessor:"subjects", + className:"hidden md:table-cell" + }, + { + header:"Classes", + accessor:"classes", + className:"hidden md:table-cell" + }, + { + header:"Phone", + accessor:"phone", + className:"hidden lg:table-cell" + }, + { + header:"Address", + accessor:"address", + className:"hidden lg:table-cell" + }, + { + header:"Actions", + accessor:"actions", + }, +]; + +const renderRow = (item:Teacher)=>( +
+ +
+

{item.name}

+

{item?.email}

+
+
{item.teacherId}{item.subjects.join(",")}{item.classes.join(",")}{item.phone}{item?.address} +
+ + + + { + role==="admin" && + ( + + ) + } + +
+
+ {/* PAGINATION SECTION*/} + + + ) +} + +export default EventsListPage \ No newline at end of file diff --git a/src/app/(dashboard)/list/parents/page.tsx b/src/app/(dashboard)/list/parents/page.tsx new file mode 100644 index 000000000..424a9825a --- /dev/null +++ b/src/app/(dashboard)/list/parents/page.tsx @@ -0,0 +1,106 @@ +import Pagination from "@/components/Pagination"; +import Table from "@/components/Table"; +import TableSearch from "@/components/TableSearch"; +import { role, parentsData } from "@/lib/data"; +import Image from "next/image"; +import Link from "next/link"; + +type Parent = { + id:number; + name:string; + email?:string; + students:string[]; + phone:string; + address:string; + +} + + +const columns = [ + { + header:"info", accessor:"info" + }, + { + header:"Student Names", + accessor:"students", + className:"hidden md:table-cell" + }, + { + header:"Phone", + accessor:"phone", + className:"hidden lg:table-cell" + }, + { + header:"Address", + accessor:"address", + className:"hidden lg:table-cell" + }, + { + header:"Actions", + accessor:"actions", + }, +]; + +const renderRow = (item:Parent)=>( + + + + + + + +); + +const ParentsListPage = () => { + return ( + +
+ {/* TOP SECTION*/} +
+

All Parents

+
+ +
+ + + +
+
+
+ {/* LIST SECTION*/} +
+
+

{item.name}

+

{item?.email}

+
+
{item.students.join(",")}{item.phone}{item?.address} +
+ + + + { + role==="admin" && + ( + + ) + } + +
+
+ {/* PAGINATION SECTION*/} + + + ) +} + +export default ParentsListPage \ No newline at end of file diff --git a/src/app/(dashboard)/list/subjects/page.tsx b/src/app/(dashboard)/list/subjects/page.tsx new file mode 100644 index 000000000..9d3feb9a0 --- /dev/null +++ b/src/app/(dashboard)/list/subjects/page.tsx @@ -0,0 +1,91 @@ +import Pagination from "@/components/Pagination"; +import Table from "@/components/Table"; +import TableSearch from "@/components/TableSearch"; +import { role, subjectsData } from "@/lib/data"; +import Image from "next/image"; +import Link from "next/link"; + +type Subject = { + id:number; + name:string; + teachers:string[]; + +} + + + +const columns = [ + { + header:"Subject Name", accessor:"info" + }, + { + header:"Subjects", + accessor:"subjects", + className:"hidden md:table-cell" + }, + { + header:"Actions", + accessor:"actions", + }, +]; + +const renderRow = (item:Subject)=>( + + + + + +); + +const SubjectsListPage = () => { + return ( + +
+ {/* TOP SECTION*/} +
+

All Subjects

+
+ +
+ + + +
+
+
+ {/* LIST SECTION*/} +
+
+

{item.name}

+
+
{item.teachers.join(",")} +
+ + + + { + role==="admin" && + ( + + ) + } + +
+
+ {/* PAGINATION SECTION*/} + + + ) +} + +export default SubjectsListPage \ No newline at end of file From 780cb7b375048e19d16e8a3e45d2cc5b8c642d01 Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Thu, 24 Oct 2024 23:59:55 +0300 Subject: [PATCH 16/35] Icons --- public/blackandwhite-belt.png | Bin 0 -> 53989 bytes public/box.png | Bin 0 -> 22063 bytes public/conversation.png | Bin 0 -> 21571 bytes public/home.png | Bin 2334 -> 0 bytes public/homeBold.png | Bin 0 -> 9285 bytes public/logo-black.png | Bin 0 -> 47614 bytes public/logo-black.svg | 1 + public/logo-color.png | Bin 0 -> 79840 bytes public/logo-color.svg | 1 + public/logo-no-background.png | Bin 0 -> 54417 bytes public/logo-no-background.svg | 1 + public/logo-white.png | Bin 0 -> 82234 bytes public/logo-white.svg | 1 + public/marketing.png | Bin 0 -> 16767 bytes public/martial-arts.png | Bin 0 -> 26904 bytes public/mechanism.png | Bin 0 -> 39012 bytes public/parent.png | Bin 2759 -> 0 bytes public/parentBold.png | Bin 0 -> 17309 bytes public/parents.png | Bin 0 -> 29390 bytes public/schedule.png | Bin 0 -> 18107 bytes public/switch.png | Bin 0 -> 16125 bytes public/trophy.png | Bin 0 -> 11822 bytes public/user.png | Bin 0 -> 19456 bytes src/app/(dashboard)/layout.tsx | 6 ++-- src/components/Menu.tsx | 58 ++++++++------------------------- 25 files changed, 22 insertions(+), 46 deletions(-) create mode 100644 public/blackandwhite-belt.png create mode 100644 public/box.png create mode 100644 public/conversation.png delete mode 100644 public/home.png create mode 100644 public/homeBold.png create mode 100644 public/logo-black.png create mode 100644 public/logo-black.svg create mode 100644 public/logo-color.png create mode 100644 public/logo-color.svg create mode 100644 public/logo-no-background.png create mode 100644 public/logo-no-background.svg create mode 100644 public/logo-white.png create mode 100644 public/logo-white.svg create mode 100644 public/marketing.png create mode 100644 public/martial-arts.png create mode 100644 public/mechanism.png delete mode 100644 public/parent.png create mode 100644 public/parentBold.png create mode 100644 public/parents.png create mode 100644 public/schedule.png create mode 100644 public/switch.png create mode 100644 public/trophy.png create mode 100644 public/user.png diff --git a/public/blackandwhite-belt.png b/public/blackandwhite-belt.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec26067a9d50c356fecb64971981e7b9c846c25 GIT binary patch literal 53989 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%0DlwIL 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 literal 0 HcmV?d00001 diff --git a/public/box.png b/public/box.png new file mode 100644 index 0000000000000000000000000000000000000000..40e88974ae20b603110a5c9cdfba5e2e959f0cb9 GIT binary patch literal 22063 zcmdSBWn5HU-#@zPl9E&q5CrKE=@t->RuG9Hl`f@o06|g^LApd*8YG4qLPA=kq&o%} zx?%o%xUTztp7Vck-klfcg$^HPX79b$`mMFTwFuYJP$DM0O9%h}v5K<7a{#~uf5Zgv zalw~E&p+qj3xTt;z6*dMeuVyqk%;fE2mbPotKuuy7fzP09%k>}03IG5yf%(@E*56a zZ+M;FS*7ks-UR?AKt(}L$1`nf#>W@pmX1V?TWzOTb13pE=FAhXWMiiU-+E-@-s^am z@Mj*6xvV0m2$#6h+OfoDpV+sfcb1)kYkha<`Luq-Q)}VhQXi?%`t3TBSF#>F%TCA~ z7L=#{IUt#qZThk7mTamo&qroXyxZVAG5oG{`)<3KHm~wTSxv{yz%x zMHpbQm{U`+CyM$sp!nnYms+f_-L$g(SCvl~)@_~U)?iO9)FfX4{Fd};sbXucnm)}R zo(XD6cQ_%Q)`vbqG1gc;YGLTwj}j1gjR8-({avH~{8l&0Vm$RI+0(h(JV$RWBDE65+%SBZJrP(Y8()T2X26})vem-g$6)r*qbjB;Y*&dtV`}!T~ zeL62hie8=YT^}c-IE{5XY2&P7fGCc@P1p08*G(n>MW<)s4*l$fhg*#dBnlQKkQcKC z-h`Rsp^4R2q>OBRXiEg{%T%r64e5F=rPCf>l5@e<5UXNihCnCS_PhyfsKH*D%5a&@KhH>++WqIY(czy( zlMz}9D{AnWntOgWXJvO$U!-&JUm!<{t= zLbMP{0)JD!S#6gN3`nt_-m*|rL)TSQ(a6S9&#x~`nK%RY@?-ijWVEecjOt2=IC+|< zNsrS~kb_-wC->k*m91an&#ZBPD!SLpD67BAut2?_BtzLzh0+*m)=jQ6$+R3W?IU~g zdpjn$pP1I-92^$Q05XpYmZNHBJ6QvJM|jd{1z>tBcI#N_*D7vQ_#GmEZOr`7KcA<- zq6XBqUe(Gl3yYYlDS%(DFq`q$o|q00AUDH+E2Owxu)cA@>I_c80Vq_)wqqnx>G;`R za|21;<&HA^=WDp1#ae#Y*{#x)56FbX~J<^`{689A<8u->RZuBy~l716(c2>yOvzm|~*e5gKA zuo^LYVOOuJ>M<;y^;qDVR)nuAG(P8+LZ%3DG9?yxmFsVE=TcyIp+yUD;H% z^en(tTa**ML?*eZAP;GLg@w z!X*y;NxWdhW&M3tKENTY<@_|bbnx{fJc!tpx z4jC;E(mn=mxf&PkNfA^NRNqO8zPf{lzM0l>dn+X*itVgHHu3nuQRz%_AHuI?{SiQ! zBJ4NNLr}K%Trnk3Ox7#bj*x|M0=IZi61k%!QiGZXYog8^15T+<-*DCHFRz6u`_;x} zmA?Jj{=IA!+;_f?d5qc;>?`wL%z!&_bsiV*3Csa@*UssBifF$QtEc{9S~9oN45AQE z;i`moIDfrAU;q7f1r=u70^6@$;Rv;sBLzYY7t=Gn>pGQEy2pJr_GDP%!QoKIzySp9 z$F@l|>oDO9xVOm1FpLXj1hLU?eZ~P?bindaOTv=ljWwF3ey2I4P`f`VhQYZ~}O>BvH4E z(|V-i+~-N-tw<#SfO2!n7r$D6h$~>kXq=J^EGdGX8aIc(he3#-D6!jMWxCHa%M@-6 zJkMaKIRf~#bgzn^k=x*|V*DsY5QJUVW02QdP30ZMfJK`W$PIKPxn1Ov*8*DBfBVGp zef%AzPY+~&%l>v#$1rojVsi#R5e0sNW(_O@;dJSq!C!A8`mlK0HTbtI!1u|(_k-Oo zmbx(EnRodWCa~#|u)KisdW@wgoB;eP$2npmKm|GeFx&!8iP@X$7+_y*k;=yfZt&t&7u*jzJ+Y`JEbk| znP1BbvmeTfCbdq!>xn3y!`65H)aV6ER4($&{HX9tM3_f+V#>b# z)0edO@^b$yj91J00nDT7sjW=8#;~wvrNfl4!}&LGgy?h&C#~+Ek7ri`uA2eSv=`l; z>k$s=G&2GdDv8kBK+&d^NyvH&LE59JK_o`=!FdHm^X{L&KSH0LAx)pM3(rW~%bgm3 z0*n3?z}}25`8d%bm%_42+4=YI@KQU%F#7eE!J|dSi0FYMO&D)?{OlcCS)Q7YY=5tO zK57DUQC$@n{~7fGC*b$9{E;3#U#Gm&O4%VCcmp_|l!Ps0u0k2rj&q_158u1_u}#}r z_IZA{o#Zq<$8R|VcEh*R@A3Gx47Ci6=iF^B*wwTsu(4#pE=wx4+p*eTR?piLrS9P1pkKOJ7a9=x)GIuVU42T} zqc~(%hFwU|5|YDtFY0Q2Ftygh{c@DH%nV$cg@}Ni8z?lK5prggol}0lP5MIHOZlfs ziT`9uy5ZPWtDBtVa?$fDC+b5N3s~6hyBb4IMxWPLNSseaf3|pnuD!@Nd%ZJ6`UiR$ z?jer9wPMQh>x@C(nd@g;)jWxVKbe0uE`+0i^2cKMdu+Y-fp;7y`P=tr{nDyKU9_`; zD3;p`hEu|BzAwQJNh#snRxBtR^Z=jGH!o~FQXFy20#?lKpD|(eU+RBl@Jwi!`mi+K zL0$w%V*HIL_rA!Btob`F%dgvSeOk&cLbdU3MhvE@62#5@8|Q)>xW=4%I3GrWJoZBz zf8_W&TdVvM7g+y2wwH{WLO&dx+#I(tVZ=LFB}RBFn%`aGKJ z!M!=+LOyiXZWX13pLWH**{ODwMR@gxg{juID8+s$XmRaYC2oMw2+nSi$kzSIvDCdk zi+SXB|H(&$H|8?XCcoIbna1`PT&2=ClW8);Gr2aoGJE`l_z3489&QKV1Q?HP z(@_{riHmFj?tn>&x=^#A($4cwY^EeyJ2m3@oLZ~j*L^iB{oRUMS8?fw(@^dl`wcu1 zX$jbQlqZz|QYP=)9A)fgngz^;MklZ7OgYM{D|bFq^ioJM9_mtut><=Jh+4#4iV^>i z-e1|&X^$(YF6!Q_%F8JKk(3Rjn7ylA_GW4|)PD^oDfpNOu+W;=zHoL7Ht{WYoJ;aoy;PFez=Q>`uI1jH zi<3>2O$|TO2*#w4yDLYh`wnI6g4Jq?VMJ1kS4Ns{=&fihQ ztOKfIJvJxmANArOdEDN&RJ5zzh`?88-SZ<8;E7{y7#Rs#ZCgTnZaRsEsy zwW7R(0%DM%L5}nK>6|6wQVk(je3)g6`<#;tmg6fxln^X0fp5cfSyKTuf~y1R&Rcd; zg8TBp=VtRdT`TpuY8WY0HW};`jz8)#M7V)l%#Jhui|}O$Z;xk!o$<0rjzZ`o1!e#C z0+;ERYYF|tbru*|vS~0s&C}y=sbff2NR+^yOUL~-@lJnEyQIl!xM+kQ0CouN((?r} zv;L?%PKt3ZKB4%0Y%sbo;uo#cvOnLJ>Ez!XBZB2MS}hhSG3Z|uAvW81YcSw2KMS=X z`>E=Um_risF>qpS7J6E^Bgqzg=S9J1b!TpJ!NTh$IYNqLi8Xn2jYY3PXlR~R5CUMG zTC`=K3_8*cjd=v!x30?41Mg&pUf3A=c=(U`g+%+QxPjqlJea%b<*p6((UD_{FMDQLj6c@N(V5a)U=01Gz?&R1} z&o*2627mjW>?Amj=hB{dlg|Dn<}O4p9Kj)3MB2O$X61u#CDC~ndUqD1bTUW1)h6H9 z)b=doh>vPTeA)YjUQk)o?NOL|T>2jZSTAcb-#p@jmDx=ho?+JM>V$#b? zJ!r%&&L_zh$eS>+ZCe5-@B#wd409`KmKhMo?;m!|K`#PHhJ@$%3`c!leH6F?iHS#? zIyV4iP)@-o4UN(9ca%*>ijegJWSxEh~3XcBPpV3j>#@GVu z!%tpWL;tl@_~RDCAY}`B`foRw+UYw zNf;s}D4Ws+EB2;H6N{%9$wAz#q$Ak00NLDNWm1Q;$|i$g-?9(<3_c*RQ3E!&Ajuc? zB?WzNUG#S4mF;5;PJ&!`1$h5>?E&IoVc=D*lToE(OAfez-zszt(;7a*%m*Qp=?5th zG8i!bRkJJW<^jPQdVqlK!(-Dh=ljkz;GI^<*4cK)PJ5>PBm|S!2vKGem~iR&y4yw~ z_>>d)u)`yZhqG1?O=q=K>9yB;mE+;gEWhrQBEl;eLOx~;J&PWls&SP>z?dkwg$ng` z!)j&yAYocdu#5ohU=*hQ7Ydsx5Krk%V9HW9Jy?%Ot8`skCDyFt?L3T2(OI(Z&jjiL zb`Qv>JIXcR&%ckxjislG*MLAZPqzQ?gU7-KrVe!hKgCqIb5_3M*$+Zu#pY6+0JCzd z3k=ttkgB-^?j@G2$UqmPaf=WA;Gllm7nE4}NT~i9s$(i2oC`t`{9}8Wq~fU<%i?NT`;YbrSj=M?aJ+N=VaKTn>Ja|DmeySYT zri+PmfoNmD0nbbm(+vrZ0Jg7r;A| zOI81#tJZPG8}25+HVE=PG$E7!e=wm}Rs2R3MBsvj_xpAk+vw!b)HYv7&21rhkTnYC zTz0z5{%n#D2CEYsOt?8YKzV2;m(c9K6^tt1xi8AAoUhqq*<>d)x82g^CMCz#{l3{b zv|ymC=GFEH)_HkRwfD2sZ4pz#TyRtL@yWr64T1Y^i7o{)-vbMq^a0{nsql@DRo53_ z!&SWgVd|yJkfodqcH_)j2RU#IEb*O4$T9mTzPFRL0$H+86%v|->o5JmNxKx}dLEy_ zP)`y|7yho6@AB50N4wX|CiODFt;>#-b61{4o*~~v!IJJwx@SSxFU^EDe;jW~?JdkS z7{VaquYc5b=+IiWe6y;m3DNkaaV4Xj{B<-PUegEi>LhxPs`5r+w*blbX6-$ZRS zd7OauTcRnWxY_$R^=;W1Rh!*Y4|WU<7KPFHV~r<_fc*=GBYfxy`mLtM=DFrix+rdQ!MV6Aj75SB~4v3U>8m{Qu zpb>*SQ^JG3WC^G3XW9JN0Z&FZ4jWjx4*Xs>!_~4cP%aOSIf{=I44MckYrZ%6Wg>#q zoYlT(y49?C5y{eI8{vDF+T9I-;{gGBR0dLwR8!(pQxF;otG64+RK|z%?&{~Y_Jgne zrGA%@8iJjNrcx7`4q-ilLkl3i6U_PRdj3F$D>1}5jGq!CE3=I+V5Ocx|9XN20Y$zAWPwMQt^y7AeksgI(#pbc9`=N^h z7TnDC#YbdcY{Q>pI?+BlIPR1a)2#Gv;N%Nf?@<-pgnUcMS{vLjH!vZ8RGL2Jck-jgYrgmJq9T>qb)Q*5OTw!$+YhqonC-@38gpYsWzsQzMj>ElM&65 zK@{vt9=(?<|SO6K{r60H^oG;6Y1aRL&#Cx1}c`D$XqY?j|=9AObe*l|iVdLaBB41X+1ENWA zmUT~hzdt?wo}II=&nPB*7({ScAlHC1SMQ#LTLH9LM6Mec+t&*esUj__u%wDe?b?_| zrgcJ6q=cMzBe>qa#_c0EA^{aFv}zCtgw40jbz#b8HnTw5#YJC9Sakj=PT+}9ttG8I zJk5bZ+2VR&yw*%0dbkTT4Hbl?qA-nQ}uP6s>xl_AOCraM`K3Xhf05e zMFhEN5B=*Vpk$7b<(a3R>GG}(QU5r2syN|uKXJU)EwJaQf#~d(sjW%DTp{*CiKjEt z!Ml{oL_jWirNc|~_)w}u-F)h)DXFq*p-Aix-|m;^{#qd34OF6P655gwGXQ9z|MahD5G^bRQvj0^J~Dvn781ERBxh}HzwU+7O7Wr!}Us7ls- zxSZFBcXGhm!l_r1s(;hfdF&8^%4(U?bBt&u&0fRV>1Mrh+U|Ru;Q~=B)CcfE0g_hd z^(rp&(4GwO`NyR=n7z|j1ASe7_c-GmptU}o>@usJfT(||Sjzf0^!MRs6edboJL83> zW0+hm5=-XkVZwGQuK|&&?>Np!8X{mpkSE>Whj~rtYo+Y)HehrTSRaK8l-hFg zTnT=Xd2v5mr1|2?*wkx4br$Bb1hd+2scv;p?4(yjrWYbH=kD=~lmnirOZ!G*45tNQ z{)bwVUya;~?hmF{<1DrNvMV>a zbsMXG>cj=r{Ew(a`@+7d)>Og=b-w6T*m?3`h;7JnQA)%)x=kzy6|$-GKCT|a@U)9p z3nOc&MjgS3*ZfL<@-jDxnB;>T&H8ib^T~9H@e-eQH-XNm#90@1M_k9!WPzm;>vyH; zFW?e#G(P1M5(_ILAfutfcGzQMGf=IVlf|aKo(Z~kN+g12!uj%=Y$}PZzZcnwe#B;^ zIeoBe+?D$?qD?MK5o}9+;ga_F5$)378uip`{9@qc#I$USMSxdCU+=xcNO2Lezz~#x z9EuemeJQ+vClWR8lBB*^374w6MJ}+caRnb|ezFX$I-XRn3**9CDPgwa4=HrJW`Xbv zqwzIm?N!|D%3UW!<2uQ!MLe?wBt;Rho5y+`J#gtFMn}&b?wF;!o8XABH_`kvXULxy z7X3&>3(r%7$Ti>DabEuuUd&?=vf~gFQ<`#zv5?3oPu(~(lT)hZnv$v|W7+q0yC(#G0Q(;iQBP1HH<4Z) z-3eLTIAZ_UA@Y_~iTc&IY*5X29hQIlx4a7!I7LOYk~K7W2U&TKbk`!C@BE?!)sE+) zB17q14~f*?LH@A2hHvWCI?N6|Ro+Q?$_bXj3>4)!zZ2Bj`m@8lt93!!bNKz#-q}tK z&%MD_s8F5CXi~w3)c(2g{Os!LD(LV4XK{4x?%qop^N6VniR<04*WixXF+bl$VAV#? zg##h2eC%a9$2kQ)k14oqX#K^wEaT_B^aB~#?Bn(MdGo9>w>L|seBDya(~S- zZy8!oGorDKy3<@@Sj&(FP9Bq{-RD1I9%JZXB0UTt3Iv9JE1B-@rA{u8XBCRlzzx(2 zGvcy0%5k=BJinG}da*zx7Bi?fE@J}ob!3QE&I=sC@xTTtd5_DwZC)syQ+vw z^307e4s{@TOph0!n_Voq^oIj+K9D8M!lrvvHNt%E@NDE`6KA%aw#^Znw+!!3X$0Hd z8?fBtrCz|Tz&dYiGr8SG>2_e)Ns!s^ykulvH&tF*J+-K zNM5epg0`aI?oB0;lDUm?Y6{c-{{HZMf7H7sPIa_-h4vt%2v5FNa_ZkF#opdY!3n^$ z>Pwd}+qVl{#fl724R7UsZy{|R3jZ~oQ+cuIi@jSVI1(i;g&78sz&Cr)k@{;74E8ejP`{jNwueS z>i4ef3UF3LM}Eg?VkqG56jG06Z+WTtGQyMV#-1qc<*504M=)=-ddqu=?gpHZ)00^% zcL`+_e}}7L7UzX^#5{ zZMvxRAWU3}FeKrLO3>GxW2H8{8Voyy<&4?))lnNFH(tqAJ)IniK@^x2#zAn2 zCMC@8(&1f!wO_JInM7r)Med8|aN0>;Qq8vNjel4XBevuHLl7P@0q*4s-!$TnlAt->Ub8bXj`patSA4V;;QZziO-9;gd)I~R#&gb{ z-chtQK*nxk z{zs((jb-iXj_(={jhLqogDxyplcY+z?|w?SmtM&8t-gUe9B{sYai^0p1l(*em3%oMlf61{y5*b8RUB9~7Q-#O z(0ii2ZbAZkpaD&3aLg!SHuJ)6oZ;>OO^7g%gC_J<#uV%3pC%PfXq)EXcl<3Bql{IleTsMR+&x0Cy3zxrFOV+Mpur?(qESnmp?P~E*FH~-!}fLls> zW6op?rCAF2D?n9sv>x<}$u$mv2oEr0HeYWIilNVf)F8+$;srghbw zl2{l_aCluIkz$-U3{;~p_Zr90i^!cCfJ~9|7cP~f3jIXwuTg}wKab+~)}@Cnwl>JRRDN>fmn&VE4pJ)65^&GyI}@av z%RIPhp{PsIlEEEu*S>0SNEJklo^Uy3yejC2yKMB)Gdng;!NSm>d+f~R@2)XX(W zDuo~d&+4SgW-kl<2H_b+PKXp1J zLYbzdrc!7&m*)?(XXfwTpYJm_5?M5-0APV*vyMKyYKtuHtGa6b9IrmoR!#=z9Sq^kJWq;QdnR`6 zhqg~5y%t39vM;@uY@YaC)E3MF!uWp|)zzxqf7F8NrD*=cLwb9LBFzU_vZ&+6_WBuH!WGiKy*(NNBMcBiYIkn|R~m{t^S{veiTx;a zrQu0^v4`XQ^K8GcKgx$r-!~t+oczP)hLm;lM&jc1k$l+A$_1GY4Th(9g8%AI>*;h! zn!z5$_dc-W0A6xKRHwckk~M1|Vb`s4uLWwHPGe8A?y*Q+RZMJdZgP^aMHik7v&n(U zkj?Dq0K)!N`H|H=vCgT?2J%B>U>syz(7V;(6mLXC1o+Fn9vV>FP->GFA`QeJ@-xJZ z%ZTEO01xX+A2J!^)%PAO&oTUC$YBC1j)wb;=P8;dp`wg`Gg8B8S5ewwq_}iG5Z}(w99yQ zmk8`8xmb_7QmeG-I8o<5HweVx0z&i1;K#DztpkAIs|^(2ekWoJvax zSDaU2JY#}Je%yuk?M$sy zz-Z${9G&dO6}_M<1DZ+FbQ=-TwbpKz?LzZ|Y7oz8cNLGJthV$kXRY&goIUoE+Py?Kq1FOmds&qJwU782hwC z5qu?6wZ$mDry}bdAa5tdQpHCK%vP+QhB}4o3HptMc*5YJIB3;>7#~L(jOk$N>(BPz zdpq4am}_%XHJ}k@WYvI2vO!k1lky9lvWRs99fPLu*%&-W zX&s>^vuICW;?sa{=bgXAueJYi8+wEaohjBc>r1Whzup2u{Bz5V;;#4k9goQsevHt~ zrXIKobi2U~A>$P0%}k_czZ{$zbA3mh#eeb_6x;J^GMv0Kkkn^7RTsDmNToQ=n+@sW z4@Uf=p|q^ywT-u5VElG@?=cb?Xh*O^hy9fl@beua3H(Cgf@j!iK~rPhg9Hjdgv^*@ zwuVWm_Zk-uuTpCKTc_hujG{x)Ub_CF)4@~`-gUuZH+Fys0pGXjg>Y^k*OBw|(q4i} zn~lS%TqS7^W|7-FHe>u7nDsneUmM)r+;`qW)C5NJ?#?AsT;UhZIYT1vkRwjJ*dN?O z$&%j!LVb+P6d!G%vi=~CK6IJQT(4k5wOEUoMMUwP<;4A-X^#1{y4|y^D_&xZ{N#3t z1#-5-@MY4eSkaTVNhj6#jUSkifhTpPUG%GBffC=!t8#Gy%F9Eb+)tW8B~%??r%Yz7 zX@Bc)`?4ga_SLW=CIw{NBDx!|Ca6@IKFL>!)`PwpAakwRjZstp)y9fjfZr2TyF2@j zj~}~MNLEWR&$yjS5#D_TpuW}BZgTgKVv7(|u{c3>gxMTaA3z7`iH|~^AYN^V*RzYu z^TW)GjOpNCUt~kTyp*D8Vq18}YlK0dlHZE32@HAbd_D^&K(=C`S%7fEdCplMpzT;9 zAC^)_C zgbn>Kw7QTlZ!F5nHQRVQA!xJ*y(G~zn{;oj!-nUWn}FXlTELivao;{B;;Vj_%u{mY zDPASOPakwWM&nffY_TStZd_`qC>qV#v3erDYdK=_y6Sd`{*SE4AGDoe_q?j;aZBU^ zT8=E@Q}#7&3gedGjWztz^O^+4ofnLe#Tt7k6W8yp&djY)pM)>7dN4&Z3Mlu(j$-O8ItqSEmeT)?^ET_qkHtY|@jIBw7!hGc+_@)k|}Z%}#vJ%f#0H zm1UQ{+xF;(P=nJm%bQRFPCfNVG&JioP5{@#Lp9G`t;yDy0B+1pG?d?W37HzzoUL)` zg~>#%JkfO{&Q}T2#LQ%CgM4g@WSA~hK_!4RpsWkwGN{>K)W5)Ud-ywxzew(29SI2x zAHYIKy(nWXvyy#T%x9|^*U73C<6z!CY*piKa!VYm;B3q#0;VJ+49>4t8Tp_9q^8He-E&yN|`|aYi-cpw*`5jhXKWlr)eqHLSQ^%D$(bw zIIsAK@JGP1o)frr@kxgKq8?IIY~DY`4v_xxrGF)y!nnEPy8{4=nFou^;7t z<_&E%lhkI^Kwv@)VkPPxaVtGOaY(;)E?`=TzKJ#--g`12uRqx(s#eB>WqqyU1+NkU z)D8Xqp;zs~B4n!}CPQJv#gcs^ zE>+K+czUY{sv5jzML+R=KXXw9;g6bsuW3IEV(Op|w>J&1cInq;j<&=$F0iol;<02~ zf~2;V_(f@jmae^*J#W%6`ySY!6dz-Ien?7^k#sm7{rY9QB2b`~|1j|lg$Vn(V&IEs zyOXQx`t#(UsQWjX&|)kS#)R+DMS7{dfYSJN?{rnmBU^Ix-!R4*BZa2+!BIUK_K3o9hUoDn4ffFFTcbEPaUWf_MTUB3){CNEG?SyXr zNLSn!E(_P%BB=AOvWHhE3qZ+zX#!}lw^}7@4_i@|^~?Wl#PVU-0oMqQ(T5@43pB=0 z&&Gl?2vFzUEOsXM1`<0!(=TG7+WiwHLuXY6z8XG_YU@l9BCM-w?LHo!>K))$!^+6a z%DMhLU*HlrY4bddF~GnSI@V=U463DkmuDz8R7TSJRZHpdu^-FX6Cxl~e{r{u5ha?wZj`yoCAHe#~cum)|RG zmDbK5#vG=~H}AH9yR$0uNtwmW+hI&N|HS-!(v^nko0!B)_jnH+Iwyf?f6>*$JM)<_ znwyni;#!Jt^fUweFZSPCf5>AX4?__)iesM2Q*V3h^N=6oKFw`H%bki}UlsToHts+t zYivdsBfUUTCxoP1cr1 zv{}`;gr!OaEbgZK&QxxGnO9%=nIV!v?Q^;M3(VpZs;^Y=2sAi8R*-(?Tf;~a_#3oD zz2BcZ&eQ#)u^br{DGNFaEYL+nMlgghvidbYN`nZrGrjZx2sOML?uvH0Nkv~8EgT!g zaPy4?7jfjia+IOxU#i_@1Ovk(IT;ZmmPC(FX77~~$37dx+i6$5jQJYv&L`x9&HwD| zqsnc)z*+n>1c?570v!Q;+XG;MtbIH59?<|uR6)o6-|)r)nEcrbyr4YGRGKQw`U8Ri z^&e+VlcEKpV2KO@Ymmy9>-^aF#^ zC+S6>HSMN;KMM{mTJy6(+nc449IwH^5?Z`om>6&1(>rnkY~aFr91*kM{E>Q@D-tz* z_O--8L1q7L9au(O=wxbex3XCky8Ai!<3|p4HTln9dukiDkgReA33h4lIT@n>`ModhuOgcdY^iZ71DYlx?3 z)QKR3Fd_r$W!v7WV34(hK-obzf>SZ)PLh)3vBI5jEV%bjjeX4c=6*>bh<1aCt^d_et)QY}i+|Rmqy> z&DmQO)b))NC%4*-)~&pJ1DXo;$>_=u_@>D9(&vRkrcaIF3 zzzu-+X9j013E(%$wAkHWt>Q@r+$$#(6wWMR4elUiR? zz6=DluhmkB(hfyK{w4i+Pwi8j@hGH#V;`_k8i?1BH zdN^B=MoXIvXnjfXO9(YCJL6@sT{H2(D*1LV3NbgMUPu1snawlTBIw0JhSUoK52WLU zJLHpCWsrUvkeOyfgnBj6CgaF}XCPUiQ424o&95QL(jLM?NF@BlMg(X7G^{(s^>Q$X!N?iYCYEi5?J!N zs1CesK;L`y4+l!S=>9hss{t>iwn2aH#VIYdu`*#+; z7@J&n-=(^>YmAo$S&XSFycQ_<{{6e?r=)7yQ_OXp@uMWUru(~DMa8^GGxfR4R|S}| z*k=)?6nl&a1G=w>Aq)F?}iw|DvcETJZtk?6EtqFMgtXoHinUqj0KIcQAnY{ zNM8AN=tr@j>k!lrc@tcMrM4E(<$K`kPEBv)OEB!awGlsq;W;Axslg?~*KWM?7*ZN} zC-Pstgl1Te=R)$KvlX?IjTUmCDs0kS&#n< z`!asN*nw)rdckuQPIwB3BV2*g+&0qBDkwZia-V8xBmpet zPSv2Co3?X}7f*N-(+PX!J0&Zhe1v)SFYwUPWSfjT7`dauqv-mxwuWm>vI6Z|j5Gph zN6aMioU+!3d`-#uX_Q5I3w0RuUVZi7uQ5-XGo5{nktJ%s!1sl9_N*|}?(z~5g0{9H zu`IC!0En7nRnO=CCih6L!IBF8<0T!wV9IYO%~ya0y1^ql0{y;&6wTX+hSHrH=(6$Rni7|GlJU`C@Cey37M5LIIpN_%*20(O-2*MH+v6 z^b>RyvYfTD`u~yhEE+~!U8#W&UDVgR-I<-R8|D6trCil-f5j8u7tkVa=Fvy3D%DzM zfT{93Mj$$Q(6V?$%Joi)Kh8Q`UTa-nw`nG^V;iI%L)-wpKAJU2BCbS2T5!N)L4(R1 z`xG4}l@=o(@F3%h&(v*SQvLF!(g)HsMWL&p;0Rx6Xqfc5#L$yESQOlI(TkG_orgsC za^!;BtdvTVod??i3}GJBfeD{4UW&=H8Cgq9+x6zv&AC%Yn=}v0Gb2<4*7J9XOzWFq zRJdoYt+Oup)VF8i8o^BB*64_cJ|JpzL*!EHFbSDol9d$Be%18fvxCswetIJ_e5Q^UAOCUdel;m|m&fo#KLJFeq!Nk4Z^WeV2(PS2IZKLx`zZ@yGso?3iGiBkE<=B6 zrVA0mOdK{)8l`2X0nR7pO~cUH4fiL@;{Bu~ANKIpoUi`DqtLC`qZSV^Y}Ua8=={f_ zkS0xAhh=Dk!r-l&FljcFYyBa?IGar@F>qz?%rALk{4|wYy+qE>uPB_b57MuHDA=(h zPXtVfppBzyPGH8NXD)!3IthK9Fn_S8QSvAMjYf9gD)|@ev9x_;x2h}64>rcAr;$0C z**1Ix26kWE(k4Z>WU4yZMdRdhnntdSW!g#PCnrEz-rC9!E?kW%*2w;=y0(aNMzedP z0GM!sKHPOPJXOj+8Oq`dFxGs$qtPh@(0AhE$!Fgj)o-2FWr_^&MhkoQO@EMbX{w#u zwY%4H+G5Oaou6Ag{1rSn(Z;BWMswt6LGZ4yvAuO_fDqkv;DN~-9`48#JXIJCM`FJ$ zN<3{n{z!WD+fAUI{0pE}z6-?=HItNSPzH75_Xn238Ea?P(3qQ;DBKj?V*^PN9&O9x zB>i~Q7%t(fjDMs-d4$yZgfw%a@k|KJg0gO5z^Si2zpL~YJzs`?k~xWf1Xh? z=6Sd%DGbd8O@BG~T)Q(}w{vIwNcI#nfah}WrIf`>DNYmY)%wymX&{(prK7(U4*o?1 z&&qeKoFe!Cphw2nlxv;vzZo{&`(^|H7|X(O=kV>Pz8)@oCX|PbBI*Ls0F5^G2gK+|GgVjJ*nBldTd|Lm# zCsTfxw`(Q-IqKxiU~fiepAI<*yaJrzU~T5i(+7b8B*^%SC!qnM0aO-#t}C3t|FR@O)w~Z3%7cE9)@c!# z$J3*@O$``wn~l7eMN3dK|y=?ur|nMjGI$ z)MS&rgqY)28d(8132`t zI-`Rck!y2VoO<|bt`IGPGeSBteQAyc)J@1O0F;a8Fr4nEy-$+RJ>rrOcB*6a>6Bsq zvT?XvndW=<3o2$^#*xm68fXKTj`nZ=*V6F{HN_Kw;@A)6|2g9*hdR0QLK9YXlkQLA zFZ|yUpV2slHZ}01*wFN21h2$Fd>lhLBY*2lDJe+FB80E4i(ujUfaMTX>(Nr-HhOZe zOQywTDVXeuGC{m6#*EvZ3X10D}>YxQH;&*#q zaBTXU!NG1r*v1DK4Hm9efiQIwe;J}S$bz7hdtr{4!XJxt|9tK^$(Uo9PCHEbyVo?n zmNs{me&8>q(0V4Vyni-veVUe+6M-(`P1;dhK}eUtoI zi)tPk2#L7Viu*HnEEhO`y)tQ?nN-(!S#GGaHu<$_Mnj2pUoPFW{@uZJytyZ$+0_`+ z&`rXf=i)`<$GB02o~o~V{DYgy7pDc+OmC4VMG{bGFgKDulD9qfcH9uDD9k&tb^Z2G z*_)f=meL9o_v;*=w(0239n>-NXLnR+H1OX^A1P394lUVS9Z^&NcKG1uFp4_uR&-jr zzo}QLt-8Sz!C2iH7nmyXe$tdYwf$Lo-=uT!tD)}h+o#VIC2fnb7mK{~d12cym7T*c zQum^{ceK#x8BA;EU~m7109*BucoR%Y1xX~UEsrm}+uv+maBCf^X`BXvT?G8|Bjd8V zni^g1T4ce8tzU)Nfz4X-fNswQURJ*2>3eUl@|jsB#||BdTB@K zxW+oODQK84dlz6~Qr9@=DGTIV>aTn%o_TRk|1E1&;YVedk#4}%Y>QZm-#&`ZO(;~x z$*s_!ZsJ2#)GV&D|Fo@_Ddf7T^@>h5*T+P>6tw@QjT zhqq|SQ=Y>#(C!>}aenWa8{To>M{uVsW$L3!e)YY>oI`PC?1(kvHq~u=U)@vOHPSte zHxf@SsC^f{EsY_03GbU%<)9fx=N4dMcRv5tDg}OeFlnRfbiomiT{gD|a2AI`BnHCX zx<*XhVIu@P{hZ6Hoap$Ccvzc{C1U-PtJv}uvi%v zKpEw|H+7K%lT$|8sA^#nB!6DLx;1W7sWjR-%~P`LPlsR}798K>>BQ~rbKtrXH@ZIL zm^NDKTMJ2)^JDslvLfk-#+qP&23~hutZ{+jY;wqGoH0gG7+aZmE`AHn*)p-!H*Tcb z*9;A!Z%Q4kj@Vs$8N1aIg}+u_pSyf^BXxmR^pjNE&vC$Z28EZneL1ca^OC#mv%Nev z`yd$Ew*~y7b|xLtqMoyrm$ND}lUPS<9M->#O7ZHDj_4Zxq^sUWW685mT(uPWSZ82pc4mZZvx=sHO|}zMaL@8S5x%T_MwH!j*4VW!&>dfZ|q; zshcJ7EYT$pPxPv{-5M%0XrTc{5D|BQx{G#wQ-~KP`nSuZ||#mPt2;J#_z$h%0Syv`FX`3; zDpJmlR|MAL{ZnBZ=Uof{;42X~)ZSb9%jwdwwO{>4bDxEj$T;cvd~+BJd7*%x`$8E` zHnuBe(|=~(&=H+mp8&dcx>CT zQ0gJzFC`i)%L5XE18%MR7o!evCxB+MG3IpT?UB|0JA0gLBv5B7*b7}YY^V%L({!%< zOG*{Ge115e2L&e;a<7~orSi<~_jU=IS38!~cEh5ahtz@OGI4jiHv1q4$C!%PeO=Kw0}6N zzgKBy8OJjoPdfAV!CFssrfvPmqJQiw=zL>;E_ukO3a@Nw9=m(vs`kL%)_&u;PrHQ}`_Y*a&RP76F;$@&X)T|%_-<~KCz-%}SEX*^(r~F8D`l+BL-)2dZr@1Z4<9r% zFc1?r;uD{_^Q)tiqEM53!Hc|07L6)H_jd0%eVMeIy z==cr3y&n_Us@rhz>6Qrh{f7pEGz(Kf{#C)7B>$n$!o5$2+yTg^#9h3c`@X{dJU!z; zc?7514&Wf?D9D@YSdkjW78S&NaF)0U2hO#$p#Ye>EnL-R#x-#eGXap~{|qHUd6xn~zoQijlx-hHahDe&O(W@spn0>zL>K%gx@?i&s6TqX)^Yc@4I?GmQhPI$ zz#~ElBjuivF1QNISPS8JI}bp~EAwv>$3dz(vd$ii5phVMExaMmOWFF((cpG>zQ<5J z;+Wp+pnoIWq$BpgehK6!$s+QyE#D+jZO~>x4Y;L`$2Y4KN)CNft3H&0;a=Z@rofH~ zx*B$(xYtji%U*Z=Gx($?@r;53*gGC#b-|-^89Dk**Cz4QI6ami3P<_gY_MXTL9S(QNU*e%+q>79!Y{BA7!W(T0mL{{i%=1?G3QN zNz5^AUz^$VGh{ASVkTvuq0Z?7Xod`p=a1r+K(e;b7<0JOR9glp`YRG+qyD&z00v1= z*9hg2u?P*q*>uB+OnKYCG@!zXne3$~k794gE}-^jQ|$;OQ%7M|Z@pC&X#_xk8mBO# zynz6~3O2?BghJ&!ByTgDerzX2U0{U;j|2*etEY;ZLI9`C#mqsnC~txVfTNY?fT`A( zj0SsP$b08$+i`HFqQuOoEV<7Y8fcafaf@wH9*{+WFo+gqs^vfiG;vHpx$mQ*dO!^) zIGZJg8H0E<@HG`PVdbbzu)D7z;)+S4JZ%L4OC#yQ-=RFTOayRhfj@&Y%ur_`0lk@1 zO@qr5aM{Y~@_`CI2=IxoV1JmWr9ldmzYY#mf!yaKoF9L{hXylI-oFl`e!S!aYLVf^Rli|!THO8bdRTU3lEC@%dP^<_KagdR8bs);a z6h>tm@IgTl;U6qO1KK$!6O2&?+Yyemmg8%!mZ%S3g2nOu{t+i%j#=Y{01kPjVrC|J z#2gKpFMRUQYlOqOoEy9^;8JlSUq!z!{8ww%Mss43T4^3G?03dt) zF1oMEAO<@3?VyU9zeq#aWA1TJvT_qT%x1-Bg*u!3nNKI|PL{&|B`E8JK%0XqUsSQg z?~5Iig5#=OBv^~-rq(lkmG3uQclMxHteRDehf6)iG=bp%`y>y|BJAJXoXHMKAJQZF Md2RHp`iY(SAMH(qK>z>% literal 0 HcmV?d00001 diff --git a/public/conversation.png b/public/conversation.png new file mode 100644 index 0000000000000000000000000000000000000000..f26936832c9e82b62d29e0aca6f30892b86bc8a6 GIT binary patch literal 21571 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 diff --git a/public/homeBold.png b/public/homeBold.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e24ba8ca7e62542699a7fdebdf153de4397f0d GIT binary patch literal 9285 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 Wn|_rYSo22$nWEfn*_<19AOAPL!7;J` literal 0 HcmV?d00001 diff --git a/public/logo-black.svg b/public/logo-black.svg new file mode 100644 index 000000000..c4b551715 --- /dev/null +++ b/public/logo-black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/logo-color.png b/public/logo-color.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd1239be176005a7f072dd11ee1cdad1cd74afb GIT binary patch literal 79840 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 \ No newline at end of file diff --git a/public/logo-no-background.png b/public/logo-no-background.png new file mode 100644 index 0000000000000000000000000000000000000000..1809717cd124983a2482d07aefe5b4815c1d0c8a GIT binary patch literal 54417 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

diff --git a/src/components/Menu.tsx b/src/components/Menu.tsx index 2c14b429f..5c2dcb558 100644 --- a/src/components/Menu.tsx +++ b/src/components/Menu.tsx @@ -7,85 +7,55 @@ const menuItems = [ title: "MENU", items: [ { - icon: "/home.png", + icon: "/homeBold.png", label: "Home", href: "/", visible: ["admin", "teacher", "student", "parent"], }, { - icon: "/teacher.png", + icon: "/blackandwhite-belt.png", label: "Teachers", href: "/list/teachers", visible: ["admin", "teacher"], }, { - icon: "/student.png", - label: "Students", + icon: "/martial-arts.png", + label: "Members", href: "/list/students", visible: ["admin", "teacher"], }, { - icon: "/parent.png", + icon: "/parentBold.png", label: "Parents", href: "/list/parents", visible: ["admin", "teacher"], }, { - icon: "/subject.png", - label: "Subjects", + icon: "/box.png", + label: "Classes", href: "/list/subjects", visible: ["admin"], }, { - icon: "/class.png", - label: "Classes", - href: "/list/classes", - visible: ["admin", "teacher"], - }, - { - icon: "/lesson.png", - label: "Lessons", - href: "/list/lessons", - visible: ["admin", "teacher"], - }, - { - icon: "/exam.png", - label: "Exams", - href: "/list/exams", - visible: ["admin", "teacher", "student", "parent"], - }, - { - icon: "/assignment.png", - label: "Assignments", - href: "/list/assignments", - visible: ["admin", "teacher", "student", "parent"], - }, - { - icon: "/result.png", + icon: "/trophy.png", label: "Results", href: "/list/results", visible: ["admin", "teacher", "student", "parent"], }, { - icon: "/attendance.png", - label: "Attendance", - href: "/list/attendance", - visible: ["admin", "teacher", "student", "parent"], - }, - { - icon: "/calendar.png", + icon: "/schedule.png", label: "Events", href: "/list/events", visible: ["admin", "teacher", "student", "parent"], }, { - icon: "/message.png", + icon: "/conversation.png", label: "Messages", href: "/list/messages", visible: ["admin", "teacher", "student", "parent"], }, { - icon: "/announcement.png", + icon: "/marketing.png", label: "Announcements", href: "/list/announcements", visible: ["admin", "teacher", "student", "parent"], @@ -96,19 +66,19 @@ const menuItems = [ title: "OTHER", items: [ { - icon: "/profile.png", + icon: "/user.png", label: "Profile", href: "/profile", visible: ["admin", "teacher", "student", "parent"], }, { - icon: "/setting.png", + icon: "/mechanism.png", label: "Settings", href: "/settings", visible: ["admin", "teacher", "student", "parent"], }, { - icon: "/logout.png", + icon: "/switch.png", label: "Logout", href: "/logout", visible: ["admin", "teacher", "student", "parent"], From 50c0a28f01711f88e38e3f11fd4865a5455a3a7d Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Wed, 30 Oct 2024 20:05:54 +0200 Subject: [PATCH 17/35] Teacher sole --- .../(dashboard)/list/teachers/[id]/page.tsx | 26 ++++ src/app/(dashboard)/list/teachers/page.tsx | 136 ++---------------- src/app/(dashboard)/teacher/page.tsx | 23 --- 3 files changed, 41 insertions(+), 144 deletions(-) create mode 100644 src/app/(dashboard)/list/teachers/[id]/page.tsx delete mode 100644 src/app/(dashboard)/teacher/page.tsx diff --git a/src/app/(dashboard)/list/teachers/[id]/page.tsx b/src/app/(dashboard)/list/teachers/[id]/page.tsx new file mode 100644 index 000000000..471553981 --- /dev/null +++ b/src/app/(dashboard)/list/teachers/[id]/page.tsx @@ -0,0 +1,26 @@ +const SingleTeacherPage = () => { + return ( +
+ {/* LEFT */} +
+ {/* TOP */} +
+ {/* Info Card */} +
+
+ {/* Small Cards */} +
+
+
+ {/* BOTTOM */} +
+ Schedule +
+
+ {/* RIGHT */} +
R
+
+ ) +} + +export default SingleTeacherPage \ No newline at end of file diff --git a/src/app/(dashboard)/list/teachers/page.tsx b/src/app/(dashboard)/list/teachers/page.tsx index 7c2ab7cf5..4e0165b2e 100644 --- a/src/app/(dashboard)/list/teachers/page.tsx +++ b/src/app/(dashboard)/list/teachers/page.tsx @@ -1,129 +1,23 @@ -import Pagination from "@/components/Pagination"; -import Table from "@/components/Table"; -import TableSearch from "@/components/TableSearch"; -import { role, teachersData } from "@/lib/data"; -import Image from "next/image"; -import Link from "next/link"; +import Announcements from '@/components/Announcements' +import BigCalendar from '@/components/BigCalendar' +import React from 'react' -type Teacher = { - id:number; - teacherId:string; - name:string; - email?:string; - photo:string; - phone:string; - subjects:string[]; - classes:string[]; - address:string; - -} - - - -const columns = [ - { - header:"info", accessor:"info" - }, - { - header:"Teacher ID", - accessor:"teacherId", - className:"hidden md:table-cell" - }, - { - header:"Subjects", - accessor:"subjects", - className:"hidden md:table-cell" - }, - { - header:"Classes", - accessor:"classes", - className:"hidden md:table-cell" - }, - { - header:"Phone", - accessor:"phone", - className:"hidden lg:table-cell" - }, - { - header:"Address", - accessor:"address", - className:"hidden lg:table-cell" - }, - { - header:"Actions", - accessor:"actions", - }, -]; - -const renderRow = (item:Teacher)=>( -

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 \ No newline at end of file diff --git a/public/logo-white.png b/public/logo-white.png new file mode 100644 index 0000000000000000000000000000000000000000..04a508b3908ba2d1f6c43ee970f7eb200afc9e49 GIT binary patch literal 82234 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 z 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�q^*iE))m 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 literal 0 HcmV?d00001 diff --git a/public/logo-white.svg b/public/logo-white.svg new file mode 100644 index 000000000..7c78c6c35 --- /dev/null +++ b/public/logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/marketing.png b/public/marketing.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab16b820709f128b343bcab720bc3955e4acb50 GIT binary patch literal 16767 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 literal 0 HcmV?d00001 diff --git a/public/parent.png b/public/parent.png deleted file mode 100644 index 56ddf9c9dd2cb79124caa24b402a087f1f33d4d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2759 zcmb_ed0bOh7JdO_3ur5&#Ktypflx3jYhnnyf`Ta!1jQf;d4WJSUjhUKgpOEIJFY~K z)v7EihzlrC7(}gQ5hRRfW1wiFEj8p8sXpWM&G zofae!5jZ>v7bGY|QWy;YbOjB56@hXNRv{9KWi*8?ZWcj<-&JNJj-iYFc+nvqpXTMf z=_3^Wvc-kS6e5L!hY@&LlvvJD;Kj0aaHNHyoIzO- zB#_Dl5;0a4n!}ZZ%WZMEIn;-gctLZ^NW&rF>>|7%A}9n!pja*=k_qGmS@MEta)De3 zE=t@%C|_g|3RIQQgdB0OElz>wfqYK5P>y5xh-dwISRN=71dFkFESX9tsxlM`=7pHG zER0J07i-VL=9T(icELd|hXmZYPKad$&a5R|)jk5uERn-g^@6mZ7azQ64m{bs#8s7e zgL@WP;BKfUq#Q^FvZAD*EzS#+Ny4EZaJ~dS26TczjvVAMC?tvno@4{xbmF3^ITq<3 zCtMVAHy(p)P2!PBd=j2&&b7u{P%J?_$HJ0?=aQ{0I220@D~lk@xmX`uK8v)83kR~K zSW>JksbmYXHPzCFH0Lur`I!q#5*`$yDvLpxL;hj=1O9JlUf8Zrr7mpi|A}bnyltgo zd3L|5_=P86e$5x~3)^T8;qnj(#Bg_}t012~7nStC3lKgh7N~D7F9k>XneJdPZB`=^ zh$WE-8BQE=1P5#41&Vnf1VZ1^iHi~cDc?^A&>{?c6wT8xaqcK%GuW=Rvd!>i)jR=Q^D{9z(7*!_VWt$LFG2{L5Y^T`FjKo>cmreHeS*#AFv{%a^QS zr}N5^gT)73T=0lX%8f797PQ6t8WspWO#2-ibxr?Vj%I$LQ_4t(@|Lv^j1y{%27O`% zFxBGzss4`L5tWmCH_%(nKG{3?Y-sHnzPRWiV6Bl! zvq^qHk1U2T~y{#6DExf3w6Q-;4B8T3Mb;}M7aHGQa48JTf_THc4&Fj;}L zOWe8xQ^Z*Q=rPi1X<}5kVKH~+70c@SwByxLZ}-!-L+^U;C%^{t&JgY3i^)6A);(S4 zDbjvhz}gVgJt33`*7*@){^!LYiJ@73yc*xi5XZ_Xz5-R7(-MccIT-qb;}7hgO?TU8Fq4VFI)^_#2kR1fbsN^tiUsQOy@hikNK2)BZgtqRU-9WF&YA zoZjSyY^YH7&s1T5MQSKmlDeX%=OMEdNSxuj`|_y6rMDTH zms4u_5e+Oeec#Lj@#@Ohhh;Nw$)QHQe?#7L%wN^!n0zP^lSugM5$9shKydxVF3!%0 z=+LmgKMb4dZB0{7=at@$!wewl#n$^8YOD^o7S$hl?G}r?tIiZXa6iwyiL~CGbi6Nx z)E9=|)nC0_p68S9a$Qk%?Iy6Nhjmj5z;ZKq%Xt4JPyecVdakB0P02=eoQ$^3smnQ8eEe*Q+jvWGSGCcm6X?V>%pU>=;bzsA zH`qn3ZU(Oi+I2X;s#kg6IagB*YitVrsD4x8POY4w+>&i8nlBLaq7FTI^``B&JNX%7 z&j6S*RkH4X$(5)#cD&6qC7nMvmUPC)J}d4}_a3P}@IrG}1bfNPyFQKS5rpCEy!#X9XP!6N z)oeVzGA{1I7`H&(cJs1a0w?qaX2W+Ko^=FZ=vD7ip9=rz>aV7o M%Qoji$H4D@2XL)7hyVZp diff --git a/public/parentBold.png b/public/parentBold.png new file mode 100644 index 0000000000000000000000000000000000000000..67ab544e9506973c18f1b4b7d90d45c3f0c27ed2 GIT binary patch literal 17309 zcmd74g;$hc)G+$Y4Bg!&D2Rl>NJ)x>NC`+w4CsJ#NY|hP(uhbStso&F5|ZO6p$?sb zzyN|s#}EPo_u=<`@3-zhaM!x7#lkt9v-deW&)G3?_Y8Gtsko>B0HD>qqiF&FQ1HJ{ zfPxJCMF<)_27i(GY3Sak0RM$iJd6cDQ+nUA@&f?6uNOa%bTK+^aFFwfmgN&uFXWRz zgzqCDFfdT^v8S7#6TDw6(L9pO>v4bLr1z z0mbhSmU>idJmi*?k0xbt{xdt)WWm@%j%2~&s}%79Poqjvu>y)TG>SNk6a*QA7`8i1 znL5Ea)_o zoX;UJEAP)cC@iP;=j>PG*`t19c<@&ExRxx=>!k1>de2*6$nlSim;=l>M$Y#9(-kSX zvIBPD5ON3&gdGBbK!Ts^98Lxg#fXPj0->;0SSwVCA>wn{L(w9NX3}QLW=K}e`it!S z0aBDzP9rHD$*g|!U;3edvd2H7A^{871P}<3eVl^B;g}joy{}2V_O2H_0V_Tq5jR$eeX_(CHCQl ztd*(VC-w?+va|R97zELt%Y2361wc}BZ6mOb@YUQ*pPB>Swr)5V z@w&-#VMCA!*Z!8Ezadt+Q*SfB#u#U1TfN~?KT_5YXZCe*Qrr%}T`Rvm1A#|XQ|fgk zn+9HfxrAn=DTC4b6aS>4wS3qZ<@&NG_UGI%91c*ambK0l((xUo6T6O{0D&LSQX?KRaN!ootR|?;g7a+`voJE)SQnVUoGO8WS(T7q|VCo;l4Wn zRe}waD>)*OKe@?%Jw2=QYaP-Jdg`N$s6M%6MQ8Gi3^ENAke+EPE}Q(Kq8adg0rH%7 zPA4+$u}Hq4_``bRaadYZ10}VnfsUHt##j1!J`Om1r2BKh<(LP zL2KpAJvm?-#A_zpY{=7qkD-& zMjx0FjNaNe%j9kZ|`I?ar zTAh3>3UE06b#a1x^kx>lJGcDI-6^K5gtMc79z~xKS$KU^BDtM*9INgAFlbhGDyO2wvy>9G{+XROy`Mmy^2faFKU~Pv?jJL6VIc0j zhYT>w$;!a%^LUfbgzpK3t*NQ{zHc119JUg|fAKK|@yz~0osreDOkVNLKM1jb)D)_n z$#)r!;&66uPKC@wTKucYIO_t{l(VA=3O)ARY%9Z#=rgPuF9)BJ@!ALjUXl<=ZpYD! z6Bl_#$z5N5{d9K5$cvs}^c2Y)&j`xFy1|OqS!Zni8`)JTA(H+?XJ8nIJGwNLKn!!( zU$L?-c?;beJTo}G9Fl=VvdW`t$2)c%BVE@oS3kDbK9QHE=U`LOgV$4;s-4-RGEoLY zLD)3TrMYg%Q2mV`g985KxEun~=j0E>?`wGNL@s@p(XZ#Qu8rL6^eN&>#JmLAcx*v& zgA3CU*k(^U5#luij74R!P0> ziS*cG2E?99V?v4>iEEwB@0lA~>1yN4J?djV0kwjY3^Q{TtHO>OrmSAP=uWHp(u>h7 zVfPbl#PoPR_h27v`z0nr8N^3Y(Q{rOWmVi*9qt#EUEEj}Hzn(qMGXS?*V-^-Z*co* z%=_hWaX=r}G87Z9-tZx(6S%56#@4?2(aj)-+KcTs1GS^H8&uJx#Q_pZ zd#I(S0ZOR(r~iZAL|%XLKm#$Ik;K)a(NBuH(npGVV`v75lV-$DHM&c%HdKn+^^yIC zVob_fVvlzsgUhKD)gZMOryr$dY&fYXxBW3IW87NtNeoE~vJrIfw-M`qKvh=#k7`Py?VZqVoO!;Uddb^Vlg~N!N)F^7ltKeT`fH zJKH;(Yp#J+;DPfivP_8^IkI0bh~>}7OGm@p;PKOhSBD+QxB>pOJi<2iP)s+vKPe2& zsn;BRZ*?2=ZL1mh31Ga162ow-^)*K9|8OAQA-{aa=Yln9nj0OOSE0CQ04hGS@K&#d)u8?Zx1qgePD8{Ga= zAQJkbleZ!K#;xNW;n5yO?2R5s^J^&(*;~q4I=*aODlTWp{BJ^v^#T7VQLJ6C;sANl zafSwu>Rc*!QP*j$64s|6&UmG04>A5LHf{&nhiCTxnq2=!H_w?GiISiOcNk1I zf~r{+vmEZ3R4X+9`$*JUyPGj!!Iaoubzwjb{zD-CL<~v?qhoFG=u=|h5OuZr7w9_9 z0xI6+NajZ3Ef83q5ZYtzs{3@6D5xfP-m^Eh!{-wKz3CRrCiWmbvgCgZj_>PcVoBG= zG$#3${0aYsOlrYlGr!+Q2YI1h831+~hllfl=jK-9f@R?)PO<>L0iNa>J_@v5|;GXrrT=E7E2 zEl8?|))hSa11){XbZmdlu61F+6@ZPd4zdfQJzmaVbRHVyMiB4AC4R=}e`G&3bf}q( zn?eNu=7mI?tlO3n-~!)mUP9;brZ7%dD(N$ZcjcU}KjC$Gc6Rkg)??~OS_RdB;_))0 zBDFJFtSJQ?{$r?b<@#Adl!uduYfZiMw#@P3R&`__jwD$<5>^hOFR?|vb=3v}i_|t{ z@j|J7pd+(O1nkr!nad&U7vAq!^mx%$NdJtRRnYHX@Bz&u3BY%Z-^PFn-fR6;7 zqE2H1n_tw7;Ib{7(u;BT^J4`$$64_9^7b>Pb7)RHB%uq_v-rj?Nay9Oa`I*~`_`!o zGNX+*3VaN3g?BwdQ+l!`l0+n)H4|9HwnwK%YY$+WIqCASk z{N{LeNrv%=3VbOY$#JCsB~COk+1X3ZZo`oizu;_8XPBEdM@pMM#E^8kgnt0(C|av` z@CAWHQt6a*)_r73h}tr)N+)T$92RZ-vA9x6HJkVXH0Q&lD_)WtUx{e@(KV#9q*d0P zs~=3J+sb}6E38FH!{P15pqP5eY;^nLU9q%*CHgw$irfqtb{$lfF%b`@l3Jsrvy)$d z4>l)>;a^hauY;(LIK4@H3h1g}VZf2-Hd<eJn)w1**Pem$g z9IZO?f{%&E&nP;7NnR3PF7Aj@_|7PX>I9zO>r2Y5Dm{(;@!dfJPedP{jC{1Mdznjl z%5!Az5Yv1eiA=wdx1F$l7c1_$U!$qBzYu_RduyD<`l0}^9CD`*<50-k&Y#ow;M*3% zhiMo)m{VMMd0~c#4Stxr$Yz37B;RFmMIsy@>|ue!#Xpu36Cp_4I&YqscM;C0_g%nC z;h27l02w)bD0)V|y_$-Rcq`#$Nav+0tsO5Pd)!$HcuV+9f)7XMo+VGc&(iWIpWnx5 zVIFu`RIP&c@4JA51^yYD7O9*zRq>E=p7rxU)EuK7XV%hpQq+=%2bSh61-2G<;+XOD z4~jaffWe&q#*b)f;KvsVya(Fr?Hu}i6L;)OzAc1xj;8(^UiWe@deU(!zV^%13Cd@o zBa8K$h6dwyI9}4nzN!@TUgKmCa!A4F&V#-WgT(vbyK082Pi8)${?Q{@{8el#QMM~w zTCBtht$}}z4u&C-CY8`KSWTgQSl4{HhWI6A+DY&R5!Db?zmqgKf3M3#<5KM@Se9r*L;||*fOJ^j&w%`aoRhX)-b`S{IQWxSF{lC$ zZXIPrmN#G5lHossY+E_V)n1XzC);K6rrQq29(ly~R2e^udQG9{+DY+CVk0S=b*cj6 zHKev6ZvE?)CBfxM$_@{Vhg>;To!>Me8}kkwerc6fWWD?_ljPX)V{?p@MGt7Fw#b(Y zJ7Za|urVJ*&Ap4NX*lzqXT6MgR~IFOo0EyhmX~g2R#BAZ?~0 zMps_lp_$KId&Snxh0UQ9fuvk{p=Y-vK0h+FZ^Kh>Mqy;RX(W(Y{B;b&RZY{FZT6)V z^=HVw$|Pk8la8^W5aUN87;2Tg*_Ohzwpq4$9gIHYhTfo10Gji>^+y%o^3_us<>PQ? z13}osudCGeS9e(ECnDAlD|j)<7RNYKtqq=E&*Dgta*1qG+LXm)p9n z<0BrJBsrs0ta+T^V$F2;ps>_+F+TDR&73WR9wxpwk!(k#-t-72M?0tb=E^?%C;Nzj z_o{D@vUqCnT^wm7+AV`8Y2(v>^bcb(at-qj9eCC_EQ1XpR};n=ZjA<%iSnW?n7J7< zVr-v#!}5k%E1B%}X^OUT_o3KU!awvUf%;ZQwt3MZ8ayNZF_yOUDjDR2Nv<+PL`r}9 z^>0uXOdRr?`H^ft8_@~P#}hhtcPPAN=3}g`R6fy4*S~VQ3VM|-$u~hXlO0Juvh`ov z$t}@mj%ga=WRj4BFGko3*HCN+8};D1%3FpSCUfGA`j?8yH$+mFc$)%~qMdKqG^JKO z@Tg@b&XvpDq_l5ozA7gcg+Lz?SE&WfITze>JLvYMdJU@-*J_D#8AMvvOg)EkeZ>0RBYnaZLgZm^*CN_TuTR`3 z_rtEzhD;9?UKsmU%1MS(vA#P=pv|u3Wo-odI4qVI4EMk}72yevN_bKNdqURE<&BNY z&KV7|<=tXWKVkYglfamRODOiP-D-knVwO?RdJFfN^0(neYHz+J6?S_;_sxgMxJh*F zgUaKD7mr5O7WiM!+{<2aRM?jL{*U#uGIm58&O8kSu@SW{RR+aMB}7^W+cz>w;d1Kb5HatM9S1$z^n=`6^cuf7W#sWj`BBz1jQ+80-C;TVHLmY? zt!r-Z_anU9%0aTcsTJvwAficYKX}qmSz}*rNG6R70!ER3d&#l^&diPFvXvi(&=atM zLbdBQNz+lrR`iM4?RMnb)C7_6O8K*q9c^W#3N0+Tu-V4no{Hvs*nQl(Y)AarLoc~y zm_0;TlY_oqhLb8R+0k>Fm_)INK-#L_*=ZCb(n=|IJ7lF#hG1k@2Ii29Ul_ZwRl5OD zJFUp4@?3sVhdP{;^{Yp~w&3yJry)y?$?KnSGBQz);hTZ9wdSu z^XjS)!d#jcv$SHgs=aUp`#s$5{e*bvbHHz~;7`)m1`J-|i-Xlp^v!Vl%VA;#Es?;M zko&mPUk-iCIM2Hl`T}9k=;r-QC~7hUs(wgiZhIWNW9hubeAnK|I!fRL9q9daxWFLO zZcTQB1HXgfv1>=?3Q31SR=fMnFO-$IaGE2@Z412dl+E)9(QS_TiC>BsV|0>33pM!& zhsIH!+&<-JF%(fSDaz`d0ZIPtNTx$}zo@{kT)^4{1s=fXq7Bk^^8}8sdHY#RlS75T zt7N-UEJ1{#A8QZEmfa8}h|q}CyiiRyG{F#W%D5*t8MV!48(!tq zBa6OHDW0Fg951E^P2^ItLge!N1G z3|_HilVFmCAt@)^N%r#tdQL|ie~EoW+Ur_g8Na`Frh&I?122H@R;0UWN)Lq|mrbMU z^RvkVni^V%bh)hB;{0RHs+98!Fub=cC5*z|6PSLW(zdUEt$O|JY;wHE2~!K++pny< z5JV8+4^oVJ#gl}T$IbaCio3TcLme&U$e6qDhd)^RQo~jKQv2n&bL3&2Z?2`=TnOd~ zp{HR*8a7$@t*)sfiF8u~jPNZgI@|~E`bZBv86KD{3b!-^0k%3OLYxdULiNbUWjgiKU;jso3yXH!~#Cd6-Ng5Ug-NU_@A zmc_*0Pv+mIw;y(9)sZNCoG(GZ6lsal8_A}Ee_S)r2n>A1sF}-K454+?ZLX;F)2j7P zM@2g$Rk7Qs+(G^ku6fy%rj*8EB_`rGa~K;WSF^w2+5su3&-#^2dQnX`o;-9HSYuoU z-laTF+BSP-_1GUcEKwVB#gqyCv1V0z(NFsE?haM04Xme!EP&>C(F(?QC9J~5{O*=| z*V~sv&V2$AK^57w7&eKj=36j3EihZ+B3|!P!L4=Lp%?CW;sr= z=8~2Ey=kz(G6kRAXmvz(?DRLtBdmT-2${qI1z$^+`K(ID^~$s`@HyzX!LKw#rNCer zb!K_fj{7yn=0wqRJga?(|A*qy^Z4}M(4m6+7Fq)zPR(J+Vzmq~&mk#QUGvPDwv~ri z7ZwS=YJGRvKZ=Y{IpnTbWlRfzi4JycopT@f*{dqsTxPZhCVV~Ijv|jUo{tTw$#h7C zWGo$066ED|oOZHRlZ#|G%Un_rB8U;egxa8hg+;_14bq zq-@7jyuG04+-%w%M-~C&p?25v3w@t*xlQIKS##D6;aWNFPIp23wHf+BzArY5WiD(3 zQ!brE`zVXMZWDZ^brH9Pr0I_sYn2fF8s;}qwo!W&%p0S@a$F}!1v0abm!>`e5ws4` z2UZ{1F>~EUb)zxR!{W|VS{8Z;zi>fM!eoRG*BM6NCk*j@8R#(@5>K`n z%vV=(W^!nA2jJrS)x!R@^(U2m3?1M|n?N zzP3%vW^F&zXphw&2x1!`b?Lc--EFH_47_#9()VEmqWo+V{m<@{MQ_8KAYXlKNx{P+ zyXekKA+E0GxxZ6X&Y3wEILO8A)=~8Mao# zZ#MtUm<@1AnQPoJz40SvcdxU@yWv+d@8Dcj3upjr4~nOF6l~R=JdngT_Hp?Nw^0472G^LEP>8LIM!r_1tYT6!E~>+nxbz&EopKfO zl7qivdhU%gK(aFmI79#9p@0P?$)tIsEtw6n4Q6*=6-tthlDD6M?vgM#|xfiHH7(acA= zR)4Z%*D^C|)f&!ZX*3!j`U&VAXTvsnu{GL0sf2P&AZx zy0`XHJ6-7^Rd2i>nfDsgsp*j!wxrZ90_XRb|{T&r*T5BUC+IRo! zH81~TKg9Gj#k3@BOcq2J^8k3L*I+V6EDreL=w{ry7bT|YQHH;URo$bqiJOw39+P#> zDW5U%g}iu82SzXZmuTk1} z?2C{5Z!Lhv)uY_q@jjB}_$fPsQP02NqU2TSUGXREgECpdu7?P`qVcq7Fl44immS#1 z7QKk&YJ<3S%z!ol*Cuf=jJh@y=Hmyced#KGzo$d|0l<<+jan~{FevXRk)$45 zHmKL!czb7GGME(vH4iPsUmP2Z=&M0o2E2`1sW1L2%XXIErXmSY^^>Xx+&2Q0$qQ8~ zaxoglt)d}Tqni}}ua#{Vapw(VRv_Vj7Dhk^`Nl@Tpg1SUYTmIE%}(f5;hLG+mp#Q< zrzHP_Ew9|x2zmn^{jWH{7I^see{kFvDatm>b=~YH!R7cHI>ZW^RJ zy2;@1v3$b>1e#Rm((Ow*HfuPJdy)Z3(DF!OX|TBl9=|B$yru%vhf@!v1=$V(A>3;} zw`hL`2P3?)y`<`7;7M;cHtFA=5CHYye`i!|$r#U&+?Q`>`2<{*RD)avlUzUVu>wCp z5s6!+#54w}?0HVdPwgA#Z0!A?f z0AQK;f^9rxZG26&#Gwo-v^dBnOia1bJ*IpZgRq7nOpat+@BxP%Sw8H{pv6dx58~>= z*TWCwiMhyMA*Yx&XN!b!Qn`~?=~{{)NVaLDo^6j_OW)J=r`=7NxWJ)pMvW@MoM8|c zrN5zizb#OaKqgd8sCt0i9+I!ICprbeuvDB#h6rx68BfD?y{`1lV;C`)Fz*TNm`Opf zE~EyfR@6>cUULiSJ11}&k5ft>5c;IbL#8~X(|Md=h0$G!e>?jiX8C9gHSqg|eFYfX z-?UhMVP6sh6bLCxxXGpTM19%Y+CBg0&QFZzEn9wJ^Y@?h-8#|aITE}twkBoY=4h^l zDv$0Ljr$8k=hV)1#56x+WA$5{Z7^=Fn)(+-9;9j(dmh2Ht%s+_l&-go)xM$%c6$l3 zuZp1|_fRuy9~BAR>c!7ZrAo=G|D$Wp-9^?)JWjkddq6sS)%`pGF+FoYx+$o<={0c+ zV2l(~lOY-jUklv2QU&TxZ54=SrSs8=7@0egYX8bTbV zW{8*r997nOptg$p)UMw~fr;UJd~27`+=S6sk9EkY#n;Hr{0d-ug8aXgGBq&`T>q5c z&oC-TJP$bDbw*4Bxy;D>nKM3^j0M$G-N}P@=$`Ys*ZP*X1?0>iwU(prf3Ah`^p#1m zFTJqIFHi_z5{8S?2#S9!Rsg*@!{m*CVhwIayQZr>L2Un2__qEUp#PBvFNJ8+DZVan zQr+L#;qety0TrZM(73hE9+F6+%J?ZMgclwCboXd!*i>Y`y=vG6&-DEh?k|OgXSf7g zdgffwKUe2#-k1K_`K7$w>Oz0`zxoRmI7o7Ic1Z8_Al%5_wyj^Vn0oV6E_5nhioejk zU!!TwUZqQ#kK{COykpO+$I_vx*Q1;Y^~#)CLL4N1kk;sCbMN_?UFtdUY|1Q5IDi@9 zf4d&_njJZi5C3C1$xzNk@-MY9^^S0%Yi_;@4(u_(w}Y3cRTT^qVbM~E<<;6(gG2vr=J8dFW!}*A zA3uxRW*HQ(*T)!W`7u3V3e@Qd)e0W#;qQ&CoYjM`hO*T`kM93^QlgOIJz|z(ANYV# ze#Y+2b|A~1==?pb?44AL*{(dRf|x=jM)QQM36Ov3Np?Y(ErFYNlzepSQ>z{P@=vp=CYU?Ta*YasT> zOWx@!;`&o%HQiJHWDi+aBfKI0p1)3rkJNnnP$c*?NU&d;9CyLavc0QXV%V$9$oj!~ zsN-KPyEY=>QZav?m^IR>skqM?JoBna#GS3Azp3*GUh7i@alvYXF`J%}&LGOkE8_sc zJHk*=mP=YBmG8>;zsa$R*$uxPZ-{)!X7uB_6(Wx<5nQH51k|ni8`gt~1U@N=Zgm<5 zTl|S__`Q_dLOV!I|2j8mg>I(mz-mFTa+CQkrMyda?<7xQ}>SFU9IVGWUSRH zeb6KnX8o?e?x*ElOAW=8U?wHTGvQZrjZIv8aq`YcA^Z}FZ&eDl(9+b#U1K|Eo&FzH zj|;T@WRzJHYb5Th`Mu{t?4(vj{&Y7CYAWxqp2;$_)berr@GtDcvs&dHcFIV%)zhh@ zU|XlOH}mM8;niQOPNcO4-N6Th*sDzg|AF(;@skn1qW?1C?@95m;{^UkS##EyG|Jzv z{M*!nWcLd&QJ7;wXAf4uK?VDvp@(t#fpUR5pH)vi+JeJMQ7I}fq&o$UtC9aQD3RrV z=l3sMPNPIin#uv&2PX=9lJe`WDnbdAhRk=IK9{tC(GA(25{#|wj?2WkM7r6@ZY+6} z?#C_Om2u#&SiWGD2FJ)U_SA7;Ny=?1=!wYJR=-{^o#ED7IC41`p|VuW98>R?qPWPx z*~-!eU9bLL8HYnTU)NW=)J0}~y){g2bm{@iFu0b7SLSW*b3yl4X)nzv=7Q+m<|C(X zWnFI2d8_h4@MrdRd};a`o&gMkIlfhKowJ~5weD^-qw^pjCFdJnS^2)dZOUk$uH%c& zU1n8W8r9Dm(vY;*Eu2ffv2Y{juz}=w2JTsSuE=L~>_qpEz!uCR5Av2TC(Y5E@0)+N zMwaHAj>$0{5d;&mWcJogo6(zuAxa+Y#RK8?>rQq8>kqS^(>-Ygy7Pa5>S0vW3jFrp zg{|v_$PfO!(P((aR(japc$+_gf;pI6hBZhs>TFy`WIKcGI6s|MaB1jHnB?=*YhV0; z53GKFs-xC(oNOkBrkqBygqdf*9UM|Tfg)Jz>OK*A;~%ojdzEzVZz!P(fXY9^CEek< z+jms22Ycbnwjf|x4lyVGy-a_of7K=Qq0g$ln#yA5$%fV;}%QXb=@Cl8pV*3^`LLVCL$08Im?cnA-Y;$&WW$J{c z(d^v4u5&{>-|scf+LtpY%}Mc}XXf-qb!ijBcR1PtIwL34wrF9{uL2=?7tiUmhKHambz_(Bg(z<~+JH zo6+`s>->s%YTnBNpp)fe>-G8lf~O0jWmcvKI)@4B{z80)3W{T$u_4_%nDfhn^g7au z?s#TOLW#4!i1T^5e6Zjxb3AO#M-nC)OWH(wm)Q^I-1$zT~;u-y%!bY&{ zA;%ea)42bO@jia6sl-@cBv(uBxzo{dfucRnVzcq&!7Xg#fX<%Xa21s#EJDCtZJ;YA z#Kg{2?+2+m&v&(Pux27=`_t=H%2+Ea6xAGPIPuU!BhOwJrJ zUvZLd-PXI-^jqa-RD`G#TP;^eW%10}QTxS1f85f6vL$WVZO7ET*RHfFFvQNsli%sX zHE&%gQSXXm$rkraCi6;xpgBNJkQNSBg3Kt03#~6aHdlz$3S3aWeQvY3{P#YAeY9;c zkVg4TiE(zL;-n(}Bnn2(A%xnxJUG#|NFeLJLeGn?3Aw+B|9Nh1S)dil80>e-!Yz~K zEm(QIBDkyJ#u@2X0sI$CJtaY@CX13schTp?Bmx<@>wvTP~cV5sQ5>5$#M{TV{i za%@xT#-HvJX5rpMwm$BdVm_cfcEM_9=9MIMr_z;*2B%G`` z4K0)>_Pn*_F6N)E0n2N|MOJGdu4tnXlj+mHP{QJ{XI}Qd@{i6Q_}3UwOfcI1&mrXc zNRZ+6K%&?C)nj?XzsK?u-=tHt!x)J>Uh=@ob9Q~m3GG+w2;*pego;zAygrB*CuMQZacPJDkQwm*>lt8$&VTW(IQkMaQ1uq91d)K%Ql zTjq%{J{>i=nVpU1zd3K5u05_=oaL2&G3&I^^kTMKK4C~A+zrM}h0{3?9EQ*G!vC_p z`AGH0(P95$`jS3D#4bFKM}8(FjGNd@NUSeLx^LY18y*mt$1S@!-bPJq9@TNR$;j1` zXAPnxew*Ocqx^w=`;Y@MFStKBsw3joVaW1qjA7B6RAJE&zmJLxn2Ehz+ekqX8`FL&U>-KUHN(Uy6k~SwFN{L+j=+}#&khXcnQ+IU3Vv~ zb3nVVS+?~>ziZ@-&mAzOL$w;ZV$^?}WfW3Lq7l?n!Iul>r|7^^@3HALf~V`mi`mja zV=yP=WXi7=ms4jIl_VGzU#6PSJj?ppc+l|v1ft4jZxIapA; zzjLkD3?$+nEx~C7e)`x!Su|odP#YY9#}LNZcO-L=v|LayU0hn763LvgZ1C+K-uz;7 zH4Fi7>fJqP#ML9iLi3qLBOtp@7voK7v*x`>U7G?zhmT=hynO*7gQ_EwFpj$Z;Zmu^ ziUf%qnBYq=ImvO6u6+d3AhKIk8W3MQU+tiwJB**t<^*AOmzn<|ncmoV|vpm$qJJQ8vwIUhr30biB$S zP1h?Ov!w-+!s*Ud?jPqUUFkH*Pi82QLH?fOpd3QRH?km+vd&l+c0w|+D2JCEn5i=e8R4Nzd$efPiF^0QxT4JPIP$y7w%#Ej0XRk$Vf%!(aaS}UCHM#vAcI8VI#umkDcKg!& zS#0omwrWb8mYV8JU1IIO7uj07qy&+W@HUDnMv#o9a-tP67L@Lq@s-3kmcIjlNR0~+ zV<6i(pP|-<3fA{`oQF^SL-{UFAB~Pqs0yr18^1oq^>@=QP#hejuQ_neNPAq`bUf4J zB>by56+^rr>-*#!pE}#*v!l_TC)hu4-dPoV%+RvCV_ESN=j%&y%-s1$%c0~#X{fQs zr>i^fQs}`$XVKk`e6Z>yT5Ed2O^Rj+5nMhb%`8_xYnyoXyCx+!>a#K2v#;zw%3SI* zx@y*)I$L!?x^74lLd3O3N3xOS#@8b&s8G)QaE_Cm)F02Kp53HyV=V6}OZA4_a}bpbKrGdBZ9DmkgzV64OZ$to@KkN8C)1e) z7XB!U5*dBH(&bE1P?eLt|L&?0(6ZR8@MW-(Mc7(}OXbHCeI2#gOznXWvbm|_WvQ^} z0w61nr5d>7|D{kDJ;AcNqw7Q3RrO~3=v>QTY%;FVfx?^nc;~S&7{|}Dhgjxo!_Z0f0Nd5E8Wx*t)31T>~by}{5ic9+%GkM7 z1s#wlTYzZQ;-+{htAt#Y-Zl&x9P4k4bi$$rDwGglhla_H|M2mR?E!4#1Y0BT59|Lj zJu@S#7*e!|Akst<5NG{DLA_JD`xx(pev`l|96OctxUGEV4d!)mV<;ENDNk0#W-KSz zh4ImyB(HK)Gm{H3!WAvU22|wnK{Mi}Hvj5jB0zfigT?#r{xNtrw=mo0gN+x*4LoTT zK#=yRr_l-Iym}LDr2_UA6z`$-$6gCmQ5H&Bk9z8tXm0egHrRL>;4_ax+~RilOW(Ng zY;!xHoB74SEX;22O}&ad*W!RyT2jgGEusY2oFQ)J1$2mQK68x{1S6KlD#0rOT(!B) z^vHIw6+={s>L|9B__#PAGkz*b_rER#cKk+ZQ%CgAbFjbTof3N=*KXQicuJ=wh`uIv zYKDeG+$HcfRwVLlcJ88g!9<>_Iq@`;M}?v<2{xSlDgVkCJ8MZ)yRWAo$$Wcf=C_9b zdS@mX6biy34cbL|8bhu*LAGDjf|B!VmY&kj5{D}m{ee_Z>ZbfjGmUDzvMx~e9iBeM zP=AAGCQFiRJfT34VfJ6;K$`LwBSoBMg*i|K%w~V<-QS`wK6S+;DE=srr7k_?w z2D6m>Zo~?p9v~!|vx5_%atyzSmT0?9s+~+;&J-P`i){sR2lBF{f5@ z>Q_rqZ+b!~<1b-PwYQOR(`vcfVk&NKOpPh|9P@K>@HI2m0^mu{vxlLdXPC1x)$P0n zq{>ElVk5%rNoQXp3@c&umtSOF1G|;b~Zr2axj(Ufc@lrxNvsBoAlM&Sn|vp#yv zuq}t*q9iD$Usx`?w;v{Bil#rvnI)iXP$wuWj0V=w-Hkz*Zqx8cSVhYQdRVE%_){BQ zCMO!gcSP+izx{CLJY3cx)WPdxD0Qie^1N;=E0~&f^n={vqi32GwfJm{ky|yi{Leh8 z!EWe%30|f9U4Hjd&XpfVK)k^|iGw1-CoJ0kJ`xfuSZD!i z-v-mE*S%W?#2+n{Jz+*gGDi$q`LQuY5Y=inV|yPukafg;T(H76j?J{{^y|Qr^I`WK z@?j1eIpjR?e_$UMXevVYo_p`zw4I5AT5D%LGhMDO>2n8GEr9)Gru{eNJAhPircYJQ zCA2Mctf%D8&R@Ikp&9^pP52EIz(;BkMXkkQ0qagQl`ek6lZo#rcGgt82f>Ewu2OR# z5!1QM6?eYrbXu{_Lg=}&A4I`1(Q^d$?o?)tQUMfhZw6TQD=B;=q&^nxR91Y(6b$kg z+;^g@^-){=1I1K1nur4e?s*^XjW)enl*Zx$*Jc#3!iKAhudKyMXK!F8|ATa&8bAfY z#59R|(spExE)KscJXIXzju+ES!rG$1oUwzsv?x0Oh{PXfT8l#uJiKu<2Vad|v@CMd zCTCLv_3^sx0C4oSJmuY24Tl2Z?jKK8D2xn7dyF{MigvoDz-n?ceMWG%osOgIrdmhK zbNRMl(crt362S;9~te;`+Wh=^5A+vdqXnc-nW-vSVgAL70cIzoW?nN4xyIVZ5gqFJt|i|pXm_rqum6mRR1obcZiR|tUU z!c1!s2X1bXHugK{S4ro>0*lo)t-gN2WN;?N{Wr@OoTdBgTxXI;C;XD9kec%cA-6In`#MqPAW%1b4hwX<2xi`~sXIj2A?C1ufb=~qmCU8=tJb5t?jF;}8 z`p?h6tF)B@1#wO{NlJd63cvB&^u~ogbOo_I%82GdL>{R@n4@l^0vR&Klm6*_uQJm^ zaZ|{j>7m%)v`g2Uh=KX!jzqHe8zuIj&#n*wSZm=NOP;%l!J^j%MR>HiRAY$l2$2pF1@d(6KsV@U%kms<#*b~RpBRIyDgJzwq?X{Gy zH_SmI-Z(*n&m5Fzp)B7FUC?;eob%9@{0qANOYQEQSc>4bU D7_dF8 literal 0 HcmV?d00001 diff --git a/public/parents.png b/public/parents.png new file mode 100644 index 0000000000000000000000000000000000000000..667a18509f1368043a627d76032d401cb26f0f93 GIT binary patch literal 29390 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ⅇWr7Law9Q#0-A8lwT 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 literal 0 HcmV?d00001 diff --git a/public/schedule.png b/public/schedule.png new file mode 100644 index 0000000000000000000000000000000000000000..b46f496f4853383d9391976b4ea9c77a79c45d4d GIT binary patch literal 18107 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 Y7qXgvWfvI(51wK0boFyt=akR{03%tA4FCWD literal 0 HcmV?d00001 diff --git a/public/switch.png b/public/switch.png new file mode 100644 index 0000000000000000000000000000000000000000..75b0aca686cb1b96f9425ff8090e526605b10b2a GIT binary patch literal 16125 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 literal 0 HcmV?d00001 diff --git a/public/trophy.png b/public/trophy.png new file mode 100644 index 0000000000000000000000000000000000000000..1a602ecf3d81a3b2cfe03f6c04467044177a69e9 GIT binary patch literal 11822 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 - - DojangNext + + {/* + DojangNext + */}

- - - - - - - - -); - -const TeacherListPage = () => { +const TeacherPage = () => { return ( - -
- {/* TOP SECTION*/} -
-

All Teachers

-
- -
- - - -
+
+ {/* LEFT */} +
+
+

Schedule (TeachersName)

+
- {/* LIST SECTION*/} -
- -
-

{item.name}

-

{item?.email}

-
-
{item.teacherId}{item.subjects.join(",")}{item.classes.join(",")}{item.phone}{item?.address} -
- - - - { - role==="admin" && - ( - - ) - } - -
-
- {/* PAGINATION SECTION*/} - + {/* RIGHT */} +
+ +
) } -export default TeacherListPage \ No newline at end of file +export default TeacherPage \ No newline at end of file diff --git a/src/app/(dashboard)/teacher/page.tsx b/src/app/(dashboard)/teacher/page.tsx deleted file mode 100644 index 4e0165b2e..000000000 --- a/src/app/(dashboard)/teacher/page.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import Announcements from '@/components/Announcements' -import BigCalendar from '@/components/BigCalendar' -import React from 'react' - -const TeacherPage = () => { - return ( -
- {/* LEFT */} -
-
-

Schedule (TeachersName)

- -
-
- {/* RIGHT */} -
- -
-
- ) -} - -export default TeacherPage \ No newline at end of file From 800d407f9c8375e31b1c6b977828cdbd4b9a1591 Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Mon, 11 Nov 2024 10:01:49 +0200 Subject: [PATCH 18/35] Teacher Personal Page --- .../(dashboard)/list/teachers/[id]/bck.tsx | 117 ++++++++++++++++ .../(dashboard)/list/teachers/[id]/page.tsx | 129 ++++++++++++++++-- src/app/(dashboard)/list/teachers/page.tsx | 113 +++++++++++++-- src/app/(dashboard)/teacher/page.tsx | 23 ++++ src/components/Performance.tsx | 15 ++ 5 files changed, 369 insertions(+), 28 deletions(-) create mode 100644 src/app/(dashboard)/list/teachers/[id]/bck.tsx create mode 100644 src/app/(dashboard)/teacher/page.tsx create mode 100644 src/components/Performance.tsx diff --git a/src/app/(dashboard)/list/teachers/[id]/bck.tsx b/src/app/(dashboard)/list/teachers/[id]/bck.tsx new file mode 100644 index 000000000..9be7cc699 --- /dev/null +++ b/src/app/(dashboard)/list/teachers/[id]/bck.tsx @@ -0,0 +1,117 @@ +import Announcements from "@/components/Announcements" +import BigCalendar from "@/components/BigCalendar" +import Image from "next/image" + +const SingleTeacherPage = () => { + return ( +
+ {/* LEFT */} +
+ {/* TOP */} +
+ {/* Info Card */} +
+
+ +
+
+

George Antzoulis

+

+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. +

+
+
+ + A+ +
+
+ + November 2024 +
+
+ + gantzoulis@hotmail.com +
+
+ + 6970142125 +
+
+
+
+ {/* Small Cards */} +
+ {/* CARD */} +
+ +
+

2

+ Branches +
+
+ {/* CARD */} +
+ +
+

6

+ Lesson +
+
+ {/* CARD */} +
+ +
+

1

+ Classes +
+
+ {/* CARD */} +
+ +
+

90%

+ Attendance +
+
+
+
+ {/* BOTTOM */} +
+

Instructors Schedule

+ +
+
+ {/* RIGHT */} +
+ +
+
+ ) +} + +export default SingleTeacherPage \ No newline at end of file diff --git a/src/app/(dashboard)/list/teachers/[id]/page.tsx b/src/app/(dashboard)/list/teachers/[id]/page.tsx index 471553981..5e4357115 100644 --- a/src/app/(dashboard)/list/teachers/[id]/page.tsx +++ b/src/app/(dashboard)/list/teachers/[id]/page.tsx @@ -1,24 +1,127 @@ +import Announcements from "@/components/Announcements" +import BigCalendar from "@/components/BigCalendar" +import Image from "next/image" +import Link from "next/link" + const SingleTeacherPage = () => { return ( -
+
{/* LEFT */}
- {/* TOP */} -
- {/* Info Card */} -
-
- {/* Small Cards */} -
+ {/* TOP */} +
+ {/* Info Card */} +
+
+ +
+
+

George Antzoulis

+

+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. +

+
+
+ + A+ +
+
+ + November 2024 +
+
+ + gantzoulis@hotmail.com +
+
+ + 6970142125 +
+
+
+
+ {/* Small Cards */} +
+ {/* CARD */} +
+ +
+

2

+ Branches +
+
+ {/* CARD */} +
+ +
+

6

+ Lesson +
+
+ {/* CARD */} +
+ +
+

1

+ Classes +
+
+ {/* CARD */} +
+ +
+

90%

+ Attendance +
+
+
+ {/* BOTTOM */} +
+

Instructors Schedule

+ +
- {/* BOTTOM */} -
- Schedule + {/* RIGHT */} +
+
+

Shortcuts

+
+ Classes + Students + Exams + Lessons + Assignments + Events +
+
- {/* RIGHT */} -
R
) } diff --git a/src/app/(dashboard)/list/teachers/page.tsx b/src/app/(dashboard)/list/teachers/page.tsx index 4e0165b2e..df47021eb 100644 --- a/src/app/(dashboard)/list/teachers/page.tsx +++ b/src/app/(dashboard)/list/teachers/page.tsx @@ -1,23 +1,106 @@ -import Announcements from '@/components/Announcements' -import BigCalendar from '@/components/BigCalendar' -import React from 'react' +import Pagination from "@/components/Pagination"; +import Table from "@/components/Table"; +import TableSearch from "@/components/TableSearch"; +import { role, teachersData } from "@/lib/data"; +import Image from "next/image"; +import Link from "next/link"; -const TeacherPage = () => { +type Teacher = { + id:number; + photo:string; + name:string; + email?:string; + phone:string; + address:string; +} + + +const columns = [ + { + header:"info", accessor:"info" + }, + { + header:"Phone", + accessor:"phone", + className:"hidden lg:table-cell" + }, + { + header:"Address", + accessor:"address", + className:"hidden lg:table-cell" + }, + { + header:"Actions", + accessor:"actions", + }, +]; + +const renderRow = (item:Teacher)=>( +
+ + + + + +); + +const TeachersListPage = () => { return ( -
- {/* LEFT */} -
-
-

Schedule (TeachersName)

- + +
+ {/* TOP SECTION*/} +
+

All Teachers

+
+ +
+ + + +
- {/* RIGHT */} -
- -
+ {/* LIST SECTION*/} +
+ +
+

{item.name}

+

{item?.email}

+
+
{item.phone}{item?.address} +
+ + + + { + role==="admin" && + ( + + ) + } + +
+
+ {/* PAGINATION SECTION*/} + ) } -export default TeacherPage \ No newline at end of file +export default TeachersListPage \ No newline at end of file diff --git a/src/app/(dashboard)/teacher/page.tsx b/src/app/(dashboard)/teacher/page.tsx new file mode 100644 index 000000000..4e0165b2e --- /dev/null +++ b/src/app/(dashboard)/teacher/page.tsx @@ -0,0 +1,23 @@ +import Announcements from '@/components/Announcements' +import BigCalendar from '@/components/BigCalendar' +import React from 'react' + +const TeacherPage = () => { + return ( +
+ {/* LEFT */} +
+
+

Schedule (TeachersName)

+ +
+
+ {/* RIGHT */} +
+ +
+
+ ) +} + +export default TeacherPage \ No newline at end of file diff --git a/src/components/Performance.tsx b/src/components/Performance.tsx new file mode 100644 index 000000000..02d49d11c --- /dev/null +++ b/src/components/Performance.tsx @@ -0,0 +1,15 @@ +"use client"; +import { PieChart, Pie, Sector, Cell, ResponsiveContainer } from 'recharts'; + +const data = [ + { name: 'Group A', value: 92 }, + { name: 'Group B', value: 8 }, +]; + +const Performance = () => { + return ( +
Performance
+ ) +} + +export default Performance \ No newline at end of file From 1dd29ea3f7c416a2b739247c096ac3f217d6cbe4 Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Fri, 22 Nov 2024 19:06:36 +0200 Subject: [PATCH 19/35] Student, Teacher Pages and some minor corrections --- .../(dashboard)/list/students/[id]/page.tsx | 132 ++++++++++++++++++ .../(dashboard)/list/teachers/[id]/page.tsx | 2 + src/components/Announcements.tsx | 2 +- src/components/Performance.tsx | 31 +++- 4 files changed, 163 insertions(+), 4 deletions(-) create mode 100644 src/app/(dashboard)/list/students/[id]/page.tsx diff --git a/src/app/(dashboard)/list/students/[id]/page.tsx b/src/app/(dashboard)/list/students/[id]/page.tsx new file mode 100644 index 000000000..eee40a397 --- /dev/null +++ b/src/app/(dashboard)/list/students/[id]/page.tsx @@ -0,0 +1,132 @@ + +import Announcements from "@/components/Announcements" +import BigCalendar from "@/components/BigCalendar" +import Performance from "@/components/Performance" +import Image from "next/image" +import Link from "next/link" + +const SingleStudentPage = () => { + return ( +
+ {/* LEFT */} +
+ {/* TOP */} +
+ {/* Info Card */} +
+
+ +
+
+

George Antzoulis

+

+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. +

+
+
+ + A+ +
+
+ + November 2024 +
+
+ + gantzoulis@hotmail.com +
+
+ + 6970142125 +
+
+
+
+ {/* Small Cards */} +
+ {/* CARD */} +
+ +
+

2

+ Branches +
+
+ {/* CARD */} +
+ +
+

6

+ Lesson +
+
+ {/* CARD */} +
+ +
+

1

+ Classes +
+
+ {/* CARD */} +
+ +
+

90%

+ Attendance +
+
+
+
+ {/* BOTTOM */} +
+

Instructors Schedule

+ +
+
+ {/* RIGHT */} +
+
+

Shortcuts

+
+ Classes + Students + Exams + Lessons + Assignments + Events +
+
+ + +
+
+ ) +} + +export default SingleStudentPage \ No newline at end of file diff --git a/src/app/(dashboard)/list/teachers/[id]/page.tsx b/src/app/(dashboard)/list/teachers/[id]/page.tsx index 5e4357115..f18acd569 100644 --- a/src/app/(dashboard)/list/teachers/[id]/page.tsx +++ b/src/app/(dashboard)/list/teachers/[id]/page.tsx @@ -1,5 +1,6 @@ import Announcements from "@/components/Announcements" import BigCalendar from "@/components/BigCalendar" +import Performance from "@/components/Performance" import Image from "next/image" import Link from "next/link" @@ -120,6 +121,7 @@ const SingleTeacherPage = () => { Events + diff --git a/src/components/Announcements.tsx b/src/components/Announcements.tsx index 7390b2e96..c5dd84f54 100644 --- a/src/components/Announcements.tsx +++ b/src/components/Announcements.tsx @@ -31,7 +31,7 @@ const Announcements = () => { return (
-

Announdements

+

Announcements

View all
diff --git a/src/components/Performance.tsx b/src/components/Performance.tsx index 02d49d11c..230ac8d7a 100644 --- a/src/components/Performance.tsx +++ b/src/components/Performance.tsx @@ -1,14 +1,39 @@ "use client"; +import Image from 'next/image'; import { PieChart, Pie, Sector, Cell, ResponsiveContainer } from 'recharts'; const data = [ - { name: 'Group A', value: 92 }, - { name: 'Group B', value: 8 }, + { name: 'Group A', value: 92 , fill:"#C3EBFA"}, + { name: 'Group B', value: 8, fill:"#FAE27C" }, ]; const Performance = () => { return ( -
Performance
+
+
+

Performance

+ +
+ + + + + +
+

9.2

+

of 10 max LTS

+
+

1st Semester - 2nd Semester

+
) } From a14a8a8989bc98f3042d18e636d447c7d87dbeaa Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Sun, 1 Dec 2024 14:19:49 +0200 Subject: [PATCH 20/35] FormModal --- public/create.png | Bin 0 -> 1595 bytes public/update.png | Bin 0 -> 1122 bytes src/app/(dashboard)/list/parents/page.tsx | 24 +++--- .../(dashboard)/list/students/[id]/page.tsx | 20 ++--- src/app/(dashboard)/list/students/page.tsx | 27 ++++--- src/app/(dashboard)/list/teachers/page.tsx | 18 +++-- src/components/FormModal.tsx | 70 ++++++++++++++++++ 7 files changed, 123 insertions(+), 36 deletions(-) create mode 100644 public/create.png create mode 100644 public/update.png create mode 100644 src/components/FormModal.tsx diff --git a/public/create.png b/public/create.png new file mode 100644 index 0000000000000000000000000000000000000000..0fb69e831373863ee645d7dc9a0fd1720045c138 GIT binary patch literal 1595 zcmb_cTWHfz7|!mq=oFcXPG&_U8I7}toUV~HiOH$Wbb^X_ zK_B$ND=PTn)21Tg>Vr71;EN(&9(?ja^hFsCL{Sk>vMsiq`k)3*lJo!H|DFGK{zJVz zU2|+pY#4^k35S9a^ldU$Z8dry`JT_9&nzXhQNyshd&Vj|zN)SP!z$ki(HM-a>t>R2 z#=-G&0yy-Hg3uV|(;4)e0g$un8Bx+0-H)3H2K^gi5)atyQ;$#OQ%oe-IR!;KKc0qA zVMsEU%Q?0NLCq!PEcD~J zg_?AUPg=()SyeO-;gci~K?X=rBPj<}_O=)`M*&5|j-?p>V1OqJs+X;}M|ASv3g?TVRTCjS4sj z_yFys-GsA^peP?%qOz*!n^LURVVDn4Uf`nI=mgOMQmurWbEb#{pL7#0PYZCR+`!%D zby-}KCNr2i6Ntz|d*~LAmvU3BUQe6TvN4r2Orml&nKr@-&=&Hi>?iy;WiC$Fbg0E? z{ZEBf3a*t=W%Iro^+gI)Usq9mk&I!pFfFTr?x4?rOm9m<`u7GzbE2sGEWdP4nbCI$ z%$PkQt5I1N18X>GJ7;f-0Eq`GP@8>ZDdJE5P7k0G3>rlRJxp4oEO5tJ_Ye)YkKrI2 z)z7{^N!jkS*H__Nx#skR+`MZO^ENLZId>fYP~P~UA{NszmTg!b3)$GiVy#UWTAjbY ztTuf8)NJnXE#h5h&-#31m5_M7xOZRn?#{X+ySo>RM%j4xf-e1h|G|;+hPxGgzTW%R zYvq@*p8Tig&Wl@4KO4ST`L-;-vi|A#{>OukYBhcgTNMBN_7wBz$@uLSrRq)eE45IK zZ)`lXBRz1i`O5eHO=UZ8->A7daT$zlIQo27`}WRTHU0v2bk3RCL;a!Q^11aDsc_>9 o{^i2?ugaG0S*+BY7<<(5t@=QhU9XfzYmD(8UfUDA)DhqN15-`l>;M1& literal 0 HcmV?d00001 diff --git a/public/update.png b/public/update.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6685bbefba9b85307b6cdbb249893754fec514 GIT binary patch literal 1122 zcmV-o1fBbdP)Px(97#k$R9J<@m`i9~RTPH5lg6eoG{z)K1VcJ#YzaD2sR~-Ph*X4H9cZb8;sZg& zVG%*pDk2qUqE<&18y)DRR1ob86zf1mgjN(R_MtV2O@p!4=Jh#QM|W@TGxsK0u*tdS ztiAK?wf=q1+B;*BOuYzL4qOZ@1*U;>z@J%`{j*qHsF~WUKB0c9o>phnv+6hMHuY+? zX|VwN)DP8hi`%4nP`yFTvJ!(d1O33YKo?NdFR^35-Ym<;E5LODdw}bKCBO`@8~6@b z4Qv2fOJaL>Qspt7PATUu~KP?w60JOh5w9tQe9u*w?;jljQe0Zz<~O0 zjbOQrtB*$Hi@^=3dy=t_s`r-gU!SCZU+&NkyaKF`(4Pgq1P%eifE7}F1~`yq*;J8d zeZY3$ju;zY95@~;x6r-@eh3*{huW%ck2I-{sGHR;wMA{JqLtEeSERKtE0gMe^@ze4-qYfq$cpmlJ`0=~i-vGcB0e3#eJ*jR~TjF`MdUrtP>Hb8$E8wQ%{tfcGYyX%B2)ZCc5ws5s3ksL}ON8_*RaIAwRB;ou_?VKZ6srTI43jJ^)b|w@2NVFbrP+*C4>Mnk&<+@RC8OR z1e@htGvHh`7k#_c9ZBR)&q`}OfDO>xjwIreVwg?5N&Ryrh_PmcW5 z!SuwT2{;kgz3B^bfvqzd5wJh<2Tj1|aoq>pw9sVn9Ue$N0wciD)L~sxZTvLXt!Ev8 z9qLEPNyBr64wtIC6NiIpzq)ju!J5^})VGoXUjh($ literal 0 HcmV?d00001 diff --git a/src/app/(dashboard)/list/parents/page.tsx b/src/app/(dashboard)/list/parents/page.tsx index 424a9825a..b69ba851b 100644 --- a/src/app/(dashboard)/list/parents/page.tsx +++ b/src/app/(dashboard)/list/parents/page.tsx @@ -1,3 +1,4 @@ +import FormModal from "@/components/FormModal"; import Pagination from "@/components/Pagination"; import Table from "@/components/Table"; import TableSearch from "@/components/TableSearch"; @@ -54,20 +55,20 @@ const renderRow = (item:Parent)=>(
@@ -89,9 +90,14 @@ const ParentsListPage = () => { - + { + role==="admin" && + ( + <> + + + ) + } diff --git a/src/app/(dashboard)/list/students/[id]/page.tsx b/src/app/(dashboard)/list/students/[id]/page.tsx index eee40a397..16aff40fc 100644 --- a/src/app/(dashboard)/list/students/[id]/page.tsx +++ b/src/app/(dashboard)/list/students/[id]/page.tsx @@ -15,7 +15,7 @@ const SingleStudentPage = () => { {/* Info Card */}
- { />
-

George Antzoulis

+

Evelyn

Lorem ipsum dolor sit amet consectetur, adipisicing elit.

@@ -38,7 +38,7 @@ const SingleStudentPage = () => {
- gantzoulis@hotmail.com + evelina@hotmail.com
@@ -58,8 +58,8 @@ const SingleStudentPage = () => { width={24} className="w-6 h-6"/>
-

2

- Branches +

Black 4th Dan

+ Belt
{/* CARD */} @@ -71,7 +71,7 @@ const SingleStudentPage = () => { width={24} className="w-6 h-6"/>
-

6

+

20

Lesson
@@ -105,7 +105,7 @@ const SingleStudentPage = () => { {/* BOTTOM */}
-

Instructors Schedule

+

Student Schedule

@@ -114,10 +114,10 @@ const SingleStudentPage = () => {

Shortcuts

- Classes - Students + Lessons + Teachers Exams - Lessons + Results Assignments Events
diff --git a/src/app/(dashboard)/list/students/page.tsx b/src/app/(dashboard)/list/students/page.tsx index 3b9eb6c40..478e3b320 100644 --- a/src/app/(dashboard)/list/students/page.tsx +++ b/src/app/(dashboard)/list/students/page.tsx @@ -1,3 +1,4 @@ +import FormModal from "@/components/FormModal"; import Pagination from "@/components/Pagination"; import Table from "@/components/Table"; import TableSearch from "@/components/TableSearch"; @@ -77,17 +78,17 @@ const renderRow = (item:Student)=>(
+ ); -const TeachersListPage = () => { - return ( +const TeachersListPage = async () => { + + const data = await prisma.teacher.findMany(); + console.log(data); + + return (
{/* TOP SECTION*/}
@@ -102,7 +107,7 @@ const TeachersListPage = () => {
{/* LIST SECTION*/} -
{item?.address}
- + {/* - + */} { role==="admin" && ( - + <> + + + ) } -
{item?.address}
- - - - { + + { role==="admin" && ( - + // + <> + + + ) } @@ -112,9 +113,13 @@ const StudentListPage = () => { - + */} + {role==="admin" && + ( + + )}
diff --git a/src/app/(dashboard)/list/teachers/page.tsx b/src/app/(dashboard)/list/teachers/page.tsx index df47021eb..e7b99b566 100644 --- a/src/app/(dashboard)/list/teachers/page.tsx +++ b/src/app/(dashboard)/list/teachers/page.tsx @@ -1,3 +1,4 @@ +import FormModal from "@/components/FormModal"; import Pagination from "@/components/Pagination"; import Table from "@/components/Table"; import TableSearch from "@/components/TableSearch"; @@ -62,9 +63,11 @@ const renderRow = (item:Teacher)=>( { role==="admin" && ( - + <> + + + + ) } @@ -89,9 +92,12 @@ const TeachersListPage = () => { - + {role === "admin" && ( + // + + )} diff --git a/src/components/FormModal.tsx b/src/components/FormModal.tsx new file mode 100644 index 000000000..2afb6df96 --- /dev/null +++ b/src/components/FormModal.tsx @@ -0,0 +1,70 @@ +"use client"; + +import Image from "next/image"; +import { useState } from "react"; + +const FormModal = ({table, type, data, id}:{ + table: + | "teacher" + | "student" + | "parent" + | "class" + | "lesson" + | "event" + | "announcement"; + type:"create" | "update" | "delete" | "view"; + data?:any; + id?: number; + + +}) => { + + const size = type ==="create" ? "w-8 h-8" : "w-7 h-7"; + const bgColor = + type === "create" + ? "bg-zeidYellow" + : type === "update" + ? "bg-zeidSky" + : "bg-zeidPurple"; + const [open, setOpen] = useState(false); + + + const Form = () => { + return ( + type === "delete" && id ? + ( +
+ Are you sure? This {table} data will be lost + +
+ ) + : + ( + "Create or Update form" + ) + ); + }; + + + return ( + <> + + {open && ( +
+
+
+
setOpen(false)}> + +
+
+
+ )} + + ) +} + +export default FormModal \ No newline at end of file From c38ff1940c76266db1953bcc7cdfee8c3f7975b5 Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Wed, 4 Dec 2024 14:03:49 +0200 Subject: [PATCH 21/35] Form Modal --- package-lock.json | 39 +++++++++++- package.json | 5 +- src/components/FormModal.tsx | 3 +- src/components/InputField.tsx | 38 ++++++++++++ src/components/forms/TeacherForm.tsx | 91 ++++++++++++++++++++++++++++ 5 files changed, 173 insertions(+), 3 deletions(-) create mode 100644 src/components/InputField.tsx create mode 100644 src/components/forms/TeacherForm.tsx diff --git a/package-lock.json b/package-lock.json index 4f8fa2c8d..eb00ee427 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "lama-dev-next-dashboard", "version": "0.1.0", "dependencies": { + "@hookform/resolvers": "^3.9.1", "@types/react-big-calendar": "^1.8.11", "convex": "^1.16.0", "moment": "^2.30.1", @@ -16,7 +17,9 @@ "react-big-calendar": "^1.14.1", "react-calendar": "^5.0.0", "react-dom": "^18", - "recharts": "^2.12.7" + "react-hook-form": "^7.53.2", + "recharts": "^2.12.7", + "zod": "^3.23.8" }, "devDependencies": { "@types/node": "^20", @@ -498,6 +501,15 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@hookform/resolvers": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.9.1.tgz", + "integrity": "sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==", + "license": "MIT", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -5051,6 +5063,22 @@ "react": "^18.3.1" } }, + "node_modules/react-hook-form": { + "version": "7.53.2", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.2.tgz", + "integrity": "sha512-YVel6fW5sOeedd1524pltpHX+jgU2u3DSDtXEaBORNdqiNrsX/nUI/iGXONegttg0mJVnfrIkiV0cmTU6Oo2xw==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -6390,6 +6418,15 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/package.json b/package.json index db09843d4..c0b1dfdb6 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "lint": "next lint" }, "dependencies": { + "@hookform/resolvers": "^3.9.1", "@types/react-big-calendar": "^1.8.11", "convex": "^1.16.0", "moment": "^2.30.1", @@ -17,7 +18,9 @@ "react-big-calendar": "^1.14.1", "react-calendar": "^5.0.0", "react-dom": "^18", - "recharts": "^2.12.7" + "react-hook-form": "^7.53.2", + "recharts": "^2.12.7", + "zod": "^3.23.8" }, "devDependencies": { "@types/node": "^20", diff --git a/src/components/FormModal.tsx b/src/components/FormModal.tsx index 2afb6df96..731763454 100644 --- a/src/components/FormModal.tsx +++ b/src/components/FormModal.tsx @@ -2,6 +2,7 @@ import Image from "next/image"; import { useState } from "react"; +import TeacherForm from "./forms/TeacherForm"; const FormModal = ({table, type, data, id}:{ table: @@ -40,7 +41,7 @@ const FormModal = ({table, type, data, id}:{ ) : ( - "Create or Update form" + ) ); }; diff --git a/src/components/InputField.tsx b/src/components/InputField.tsx new file mode 100644 index 000000000..b3346ca52 --- /dev/null +++ b/src/components/InputField.tsx @@ -0,0 +1,38 @@ +import { FieldError } from "react-hook-form"; + +type InputFieldProps = { + label: string; + type?: string; + register: any; + name: string; + defaultValue?: string; + error?: FieldError; + inputProps?: React.InputHTMLAttributes; +} + + +const InputField = ({ + label, + type = "text", + register, + name, + defaultValue, + error, + inputProps +}:InputFieldProps) => { + return ( +
+ + + {error?.message &&

{error?.message.toString()}

} +
+ ) +} + +export default InputField \ No newline at end of file diff --git a/src/components/forms/TeacherForm.tsx b/src/components/forms/TeacherForm.tsx new file mode 100644 index 000000000..b48d44997 --- /dev/null +++ b/src/components/forms/TeacherForm.tsx @@ -0,0 +1,91 @@ +"use client"; + +import { zodResolver } from "@hookform/resolvers/zod"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; +import InputField from "../InputField"; + + +const schema = z.object({ + username: z.string() + .min(3, { message: 'Username must be at least 3 character long!' }) + .max(20, { message: 'Username must be max 20 character long!' }), + email: z.string() + .email({message:"invalid email address"}), + password: z.string() + .min(8, { message: 'Password must be at least 8 character long!' }) + .max(40, { message: 'Password must be max 40 character long!' }), + firstName: z.string().min(1, {message:"FirstName field is required"}), + lastName: z.string().min(1, {message:"LastName field is required"}), + phone: z.string().min(1, {message:"Phone field is required"}), + address: z.string().min(1, {message:"Address field is required"}), + birthday: z.date({message:"Birthday field is required"}), + sex: z.enum(["male", "famale"], {message:"You need to choose"}), + img: z.instanceof(File, {message: "Image is Required"}), + }); + + type Inputs = z.infer; + +const TeacherForm = ({ + type, + data + }:{ + type:"create" | "update"; + data?:any + }) => { + + const { + register, + handleSubmit, + formState: { errors }, + } = useForm({ + resolver: zodResolver(schema), + }); + + + const onSubmit = handleSubmit(data=>{ + console.log(data); + }) + + + return ( + +

Create a new Teacher

+ + Authentication Infromation + + + + +
+ + Personal Infromation + +
+ + + ) +} + +export default TeacherForm \ No newline at end of file From 6a8b7cc5a0471fd9007ccdd221dbc337280ec1ec Mon Sep 17 00:00:00 2001 From: gantzoulis Date: Sun, 8 Dec 2024 19:53:09 +0200 Subject: [PATCH 22/35] Design and basic functionalities finished --- .../(dashboard)/list/teachers/[id]/page.tsx | 252 ++++++++++-------- .../list/teachers/[id]/page_.bck.tsx | 168 ++++++++++++ src/app/(dashboard)/list/teachers/page.tsx | 2 +- src/app/(dashboard)/teacher/page.tsx | 2 +- src/components/BigCalendar.tsx | 6 +- src/components/FormModal.tsx | 29 +- src/components/forms/MemberForm.tsx | 160 +++++++++++ src/components/forms/TeacherForm.tsx | 125 +++++++-- 8 files changed, 599 insertions(+), 145 deletions(-) create mode 100644 src/app/(dashboard)/list/teachers/[id]/page_.bck.tsx create mode 100644 src/components/forms/MemberForm.tsx diff --git a/src/app/(dashboard)/list/teachers/[id]/page.tsx b/src/app/(dashboard)/list/teachers/[id]/page.tsx index f18acd569..8a5a8d493 100644 --- a/src/app/(dashboard)/list/teachers/[id]/page.tsx +++ b/src/app/(dashboard)/list/teachers/[id]/page.tsx @@ -1,131 +1,171 @@ import Announcements from "@/components/Announcements" import BigCalendar from "@/components/BigCalendar" +import FormModal from "@/components/FormModal" import Performance from "@/components/Performance" +import { teachersData } from "@/lib/data" import Image from "next/image" import Link from "next/link" +import { role } from "@/lib/data" const SingleTeacherPage = () => { return ( -
- {/* LEFT */} -
- {/* TOP */} -
- {/* Info Card */} -
-
- + {/* LEFT */} +
+ {/* TOP */} +
+ {/* USER INFO CARD */} +
+
+ + /> +
+
+
+

Leonard Snyder

+ {role === "admin" && }
-
-

George Antzoulis

-

- Lorem ipsum dolor sit amet consectetur, adipisicing elit. -

-
-
- - A+ -
-
- - November 2024 -
-
- - gantzoulis@hotmail.com -
-
- - 6970142125 -
+

+ Lorem ipsum, dolor sit amet consectetur adipisicing elit. +

+
+
+ + A+ +
+
+ + January 2025 +
+
+ + user@gmail.com +
+
+ + +1 234 567
- {/* Small Cards */} -
- {/* CARD */} -
- -
-

2

- Branches -
+
+ {/* SMALL CARDS */} +
+ {/* CARD */} +
+ +
+

90%

+ Attendance
- {/* CARD */} -
- -
-

6

- Lesson -
+
+ {/* CARD */} +
+ +
+

2

+ Branches
- {/* CARD */} -
- -
-

1

- Classes -
+
+ {/* CARD */} +
+ +
+

6

+ Lessons
- {/* CARD */} -
- -
-

90%

- Attendance -
+
+ {/* CARD */} +
+ +
+

6

+ Classes
- {/* BOTTOM */} -
-

Instructors Schedule

- -
- {/* RIGHT */} -
-
-

Shortcuts

-
- Classes - Students - Exams - Lessons - Assignments - Events -
+ {/* BOTTOM*/} +
+

Teacher Schedule

+ +
+ +
+ {/* RIGHT */} + {/* +
+
+

Shortcuts

+
+ + Teacher's Classes + + + Teacher's Students + + + Teacher's Lessons + + + Teacher's Exams + + + Teacher's Assignments +
- -
+ + +
+ */}
- ) -} + ); +}; export default SingleTeacherPage \ No newline at end of file diff --git a/src/app/(dashboard)/list/teachers/[id]/page_.bck.tsx b/src/app/(dashboard)/list/teachers/[id]/page_.bck.tsx new file mode 100644 index 000000000..7bd4a94ba --- /dev/null +++ b/src/app/(dashboard)/list/teachers/[id]/page_.bck.tsx @@ -0,0 +1,168 @@ +import Announcements from "@/components/Announcements" +import BigCalendar from "@/components/BigCalendar" +import FormModal from "@/components/FormModal" +import Performance from "@/components/Performance" +import { teachersData } from "@/lib/data" +import Image from "next/image" +import Link from "next/link" +import { role } from "@/lib/data" + +const SingleTeacherPage = () => { + return ( +
+ {/* LEFT */} +
+ {/* TOP */} +
+ {/* USER INFO CARD */} +
+
+ +
+
+
+

Leonard Snyder

+ {role === "admin" && } +
+

+ Lorem ipsum, dolor sit amet consectetur adipisicing elit. +

+
+
+ + A+ +
+
+ + January 2025 +
+
+ + user@gmail.com +
+
+ + +1 234 567 +
+
+
+
+ {/* SMALL CARDS */} +
+ {/* CARD */} +
+ +
+

90%

+ Attendance +
+
+ {/* CARD */} +
+ +
+

2

+ Branches +
+
+ {/* CARD */} +
+ +
+

6

+ Lessons +
+
+ {/* CARD */} +
+ +
+

6

+ Classes +
+
+
+
+ {/* BOTTOM */} +
+

Teacher's Schedule

+ +
+
+ {/* RIGHT */} +
+
+

Shortcuts

+
+ + Teacher's Classes + + + Teacher's Students + + + Teacher's Lessons + + + Teacher's Exams + + + Teacher's Assignments + +
+
+ + +
+
+ ); +}; + +export default SingleTeacherPage \ No newline at end of file diff --git a/src/app/(dashboard)/list/teachers/page.tsx b/src/app/(dashboard)/list/teachers/page.tsx index e7b99b566..04f61db1c 100644 --- a/src/app/(dashboard)/list/teachers/page.tsx +++ b/src/app/(dashboard)/list/teachers/page.tsx @@ -55,7 +55,7 @@ const renderRow = (item:Teacher)=>(
{item?.address}
- + diff --git a/src/app/(dashboard)/teacher/page.tsx b/src/app/(dashboard)/teacher/page.tsx index 4e0165b2e..80aad4c5f 100644 --- a/src/app/(dashboard)/teacher/page.tsx +++ b/src/app/(dashboard)/teacher/page.tsx @@ -4,7 +4,7 @@ import React from 'react' const TeacherPage = () => { return ( -
+
{/* LEFT */}
diff --git a/src/components/BigCalendar.tsx b/src/components/BigCalendar.tsx index 6d75a3206..10a88bcbd 100644 --- a/src/components/BigCalendar.tsx +++ b/src/components/BigCalendar.tsx @@ -17,7 +17,8 @@ const BigCalendar = () => { return( - + { style={{ height: "98%" }} min={new Date(2025, 1,0,16,0,0)} max={new Date(2025, 1,0,23,0,0)} - /> + /> + ); } diff --git a/src/components/FormModal.tsx b/src/components/FormModal.tsx index 731763454..deb412ae2 100644 --- a/src/components/FormModal.tsx +++ b/src/components/FormModal.tsx @@ -1,8 +1,25 @@ "use client"; +import dynamic from "next/dynamic"; import Image from "next/image"; import { useState } from "react"; -import TeacherForm from "./forms/TeacherForm"; +// import TeacherForm from "./forms/TeacherForm"; +// import MemberForm from "./forms/MemberForm"; + + +const TeacherForm = dynamic(()=>import("./forms/TeacherForm"),{ + loading:()=>

Loading...

+}); +const MemberForm = dynamic(()=>import("./forms/MemberForm"),{ + loading:()=>

Loading...

+}); + +const forms :{[key:string]:(type:"create" | "update" , data?:any)=>JSX.Element; + +}={ + teacher: (type,data) => , + student: (type, data) => , +}; const FormModal = ({table, type, data, id}:{ table: @@ -39,19 +56,17 @@ const FormModal = ({table, type, data, id}:{ ) - : + : type === "create" || type === "update" ? ( - - ) + forms[table](type, data) + ) : "Form not found!" ); }; return ( <> - {open && ( diff --git a/src/components/forms/MemberForm.tsx b/src/components/forms/MemberForm.tsx new file mode 100644 index 000000000..095c3c998 --- /dev/null +++ b/src/components/forms/MemberForm.tsx @@ -0,0 +1,160 @@ +"use client"; + +import { zodResolver } from "@hookform/resolvers/zod"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; +import InputField from "../InputField"; +import Image from "next/image"; + + +const schema = z.object({ + username: z.string() + .min(3, { message: 'Username must be at least 3 character long!' }) + .max(20, { message: 'Username must be max 20 character long!' }), + email: z.string() + .email({message:"invalid email address"}), + password: z.string() + .min(8, { message: 'Password must be at least 8 character long!' }) + .max(40, { message: 'Password must be max 40 character long!' }), + bloodType: z.string().optional(), + firstName: z.string().min(1, {message:"FirstName field is required"}), + lastName: z.string().min(1, {message:"LastName field is required"}), + phone: z.string().min(1, {message:"Phone field is required"}), + address: z.string().min(1, {message:"Address field is required"}), + birthday: z.date({message:"Birthday field is required"}), + sex: z.enum(["male", "famale"], {message:"You need to choose"}), + img: z.instanceof(File, {message: "Image is Required"}), + }); + + type Inputs = z.infer; + +const MemberForm = ({ + type, + data + }:{ + type:"create" | "update"; + data?:any + }) => { + + const { + register, + handleSubmit, + formState: { errors }, + } = useForm({ + resolver: zodResolver(schema), + }); + + + const onSubmit = handleSubmit(data=>{ + console.log(data); + }) + + + return ( + <> +
+

Create a new Member

+ + Authentication Infromation + +
+ + + +
+ + Personal Infromation + +
+ + + + + + +
+ + + {errors?.sex?.message &&

{errors?.sex.message.toString()}

} +
+
+ + + {errors?.img?.message &&

{errors?.img.message.toString()}

} +
+
+ +
+ + ) +} + +export default MemberForm \ No newline at end of file diff --git a/src/components/forms/TeacherForm.tsx b/src/components/forms/TeacherForm.tsx index b48d44997..55b0f7cad 100644 --- a/src/components/forms/TeacherForm.tsx +++ b/src/components/forms/TeacherForm.tsx @@ -4,6 +4,7 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { z } from "zod"; import InputField from "../InputField"; +import Image from "next/image"; const schema = z.object({ @@ -15,6 +16,7 @@ const schema = z.object({ password: z.string() .min(8, { message: 'Password must be at least 8 character long!' }) .max(40, { message: 'Password must be max 40 character long!' }), + bloodType: z.string().optional(), firstName: z.string().min(1, {message:"FirstName field is required"}), lastName: z.string().min(1, {message:"LastName field is required"}), phone: z.string().min(1, {message:"Phone field is required"}), @@ -49,42 +51,109 @@ const TeacherForm = ({ return ( + <>

Create a new Teacher

Authentication Infromation - - - -
- - Personal Infromation - +
+ + + +
+ + Personal Infromation + +
+ + + + + + +
+ + + {errors?.sex?.message &&

{errors?.sex.message.toString()}

} +
+
+ + + {errors?.img?.message &&

{errors?.img.message.toString()}

} +
+ ) } From f15e2ac430b4b39901b5ee886cd7abf8e01f4063 Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Thu, 12 Dec 2024 14:22:12 +0200 Subject: [PATCH 23/35] Test --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb00ee427..e901abd48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1777,9 +1777,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -4294,9 +4294,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", From de4cc09277288d37d6a0f2ceac6463d3052ac8fe Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Wed, 18 Dec 2024 15:55:07 +0200 Subject: [PATCH 24/35] Prisma --- package-lock.json | 66 ++++++++++++++++++- package.json | 1 + .../(dashboard)/list/teachers/[id]/page.tsx | 2 +- 3 files changed, 67 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index e901abd48..82f69e7ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "convex": "^1.16.0", "moment": "^2.30.1", "next": "^14.2.7", + "prisma": "^6.0.1", "react": "^18", "react-big-calendar": "^1.14.1", "react-calendar": "^5.0.0", @@ -867,6 +868,51 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@prisma/debug": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.0.1.tgz", + "integrity": "sha512-jQylgSOf7ibTVxqBacnAlVGvek6fQxJIYCQOeX2KexsfypNzXjJQSS2o5s+Mjj2Np93iSOQUaw6TvPj8syhG4w==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/engines": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.0.1.tgz", + "integrity": "sha512-4hxzI+YQIR2uuDyVsDooFZGu5AtixbvM2psp+iayDZ4hRrAHo/YwgA17N23UWq7G6gRu18NvuNMb48qjP3DPQw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "6.0.1", + "@prisma/engines-version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e", + "@prisma/fetch-engine": "6.0.1", + "@prisma/get-platform": "6.0.1" + } + }, + "node_modules/@prisma/engines-version": { + "version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e.tgz", + "integrity": "sha512-JmIds0Q2/vsOmnuTJYxY4LE+sajqjYKhLtdOT6y4imojqv5d/aeVEfbBGC74t8Be1uSp0OP8lxIj2OqoKbLsfQ==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/fetch-engine": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.0.1.tgz", + "integrity": "sha512-T36bWFVGeGYYSyYOj9d+O9G3sBC+pAyMC+jc45iSL63/Haq1GrYjQPgPMxrEj9m739taXrupoysRedQ+VyvM/Q==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "6.0.1", + "@prisma/engines-version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e", + "@prisma/get-platform": "6.0.1" + } + }, + "node_modules/@prisma/get-platform": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.0.1.tgz", + "integrity": "sha512-zspC9vlxAqx4E6epMPMLLBMED2VD8axDe8sPnquZ8GOsn6tiacWK0oxrGK4UAHYzYUVuMVUApJbdXB2dFpLhvg==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "6.0.1" + } + }, "node_modules/@restart/hooks": { "version": "0.4.16", "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", @@ -3045,7 +3091,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -4934,6 +4979,25 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prisma": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.0.1.tgz", + "integrity": "sha512-CaMNFHkf+DDq8zq3X/JJsQ4Koy7dyWwwtOKibkT/Am9j/tDxcfbg7+lB1Dzhx18G/+RQCMgjPYB61bhRqteNBQ==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/engines": "6.0.1" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=18.18" + }, + "optionalDependencies": { + "fsevents": "2.3.3" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", diff --git a/package.json b/package.json index c0b1dfdb6..8dabcdbf4 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "convex": "^1.16.0", "moment": "^2.30.1", "next": "^14.2.7", + "prisma": "^6.0.1", "react": "^18", "react-big-calendar": "^1.14.1", "react-calendar": "^5.0.0", diff --git a/src/app/(dashboard)/list/teachers/[id]/page.tsx b/src/app/(dashboard)/list/teachers/[id]/page.tsx index 8a5a8d493..f4f83a3dc 100644 --- a/src/app/(dashboard)/list/teachers/[id]/page.tsx +++ b/src/app/(dashboard)/list/teachers/[id]/page.tsx @@ -19,8 +19,8 @@ const SingleTeacherPage = () => {
From 98905f94cbd60db4ec74ac2077f58d6504ced4c8 Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Thu, 19 Dec 2024 17:24:56 +0200 Subject: [PATCH 25/35] prisma --- prisma/schema.prisma | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 prisma/schema.prisma diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 000000000..4bad0543f --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,41 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? +// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +model Admin { + id String @id + username String @unique +} + +model Member {} + +model Teacher {} + +model Parent {} + +model Attendance {} + +model Class{} + +model Lesson{} + +model Belts{} + +model Schedule{} + +model Results{} + +model Announcements{} + +model Events{} \ No newline at end of file From b172d6324b0a5fbfa15ae0556772034cd470b4ea Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Fri, 20 Dec 2024 16:35:27 +0200 Subject: [PATCH 26/35] DB Schema --- prisma/schema.prisma | 61 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 4bad0543f..3bae1d8d7 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -13,22 +13,73 @@ datasource db { url = env("DATABASE_URL") } + +enum MemberSex{ + MALE + FEMALE +} model Admin { id String @id username String @unique + email String @unique } -model Member {} +model Member { + id String @id + username String @unique + name String + surname String + email String? @unique + phone String? + address String? + img String? + bloodType String? + sex MemberSex + createdAd DateTime @default(now()) + parentId String + Parent Parent @relation(fields: [parentId], references: [id]) +} -model Teacher {} +model Parent { + id String @id + username String @unique + name String + surname String + email String? @unique + phone String? + address String? + createdAd DateTime @default(now()) + Children Member[] +} + model Teacher{ + id String @id + username String @unique + name String + surname String + email String? @unique + phone String? + address String? + img String? + bloodType String? + sex MemberSex + Lesson Lesson @relation(fields:[]) + createdAd DateTime @default(now()) + } -model Parent {} + + model Lesson{ + id Int @id @default(autoincrement()) + lessonName String @unique + teachers Teacher[] + + } +/* model Attendance {} model Class{} -model Lesson{} + model Belts{} @@ -38,4 +89,4 @@ model Results{} model Announcements{} -model Events{} \ No newline at end of file +model Events{} */ \ No newline at end of file From 2bf2ace6fed4b9fae5cee54264b745d6e99cd703 Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Mon, 13 Jan 2025 10:55:45 +0200 Subject: [PATCH 27/35] Schema --- prisma/schema.prisma | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 3bae1d8d7..90742b3ff 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -62,16 +62,16 @@ model Parent { img String? bloodType String? sex MemberSex - Lesson Lesson @relation(fields:[]) createdAd DateTime @default(now()) + LessonId Int + lesson Lesson @relation(fields:[LessonId], references: [id]) } model Lesson{ id Int @id @default(autoincrement()) - lessonName String @unique + lessonName String @unique //eg. Kick, HMD, BJJ etc teachers Teacher[] - } /* From 7798d498d87e23dddcb3954bc12baeb67c7c2c88 Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Tue, 14 Jan 2025 19:39:38 +0200 Subject: [PATCH 28/35] Schema Local --- prisma/schema.prisma | 118 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 98 insertions(+), 20 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 3bae1d8d7..ff8e8101c 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -13,11 +13,14 @@ datasource db { url = env("DATABASE_URL") } - -enum MemberSex{ - MALE - FEMALE +model Academy { + id Int @id @default(autoincrement()) + academyName String + academyOwnerId Int + } + + model Admin { id String @id username String @unique @@ -35,9 +38,19 @@ model Member { img String? bloodType String? sex MemberSex - createdAd DateTime @default(now()) + createdOn DateTime @default(now()) + + attendance Attendance[] + + hmdBeltId Int + hmdBelt HMDBelts @relation(fields:[hmdBeltId], references: [id]) + + kickBeltId Int + kickBelt KickBelts @relation(fields:[kickBeltId], references: [id]) + parentId String - Parent Parent @relation(fields: [parentId], references: [id]) + parent Parent @relation(fields: [parentId], references: [id]) + lessons Lesson[] } model Parent { @@ -48,9 +61,10 @@ model Parent { email String? @unique phone String? address String? - createdAd DateTime @default(now()) - Children Member[] + createdOn DateTime @default(now()) + children Member[] } + model Teacher{ id String @id username String @unique @@ -62,31 +76,95 @@ model Parent { img String? bloodType String? sex MemberSex - Lesson Lesson @relation(fields:[]) - createdAd DateTime @default(now()) + createdOn DateTime @default(now()) + + lessons Lesson[] + classes Class[] } + model Class{ + id Int @id @default(autoincrement()) + className String + classDescription String + capacity Int + day Day + startTime DateTime + endTime DateTime + + lessons Lesson[] + attendance Attendance[] + + teacherId String + teacher Teacher @relation(fields: [teacherId], references: [id]) + + } - model Lesson{ + model Lesson{ id Int @id @default(autoincrement()) lessonName String @unique - teachers Teacher[] + lessonDescription String + + teacherId String + Teacher Teacher @relation(fields: [teacherId], references: [id]) + classId Int + class Class @relation(fields: [classId], references: [id]) + memberId String + member Member @relation(fields:[memberId], references:[id]) + } + + model HMDBelts{ + id Int @id @default(autoincrement()) + level String @unique + members Member[] } -/* -model Attendance {} + model KickBelts{ + id Int @id @default(autoincrement()) + level String @unique + + members Member[] + } -model Class{} + model Attendance { + id Int @id @default(autoincrement()) + date DateTime + present Boolean + memberId String + member Member @relation(fields:[memberId], references: [id]) + classId Int + class Class @relation(fields: [classId], references: [id]) + } + model Announcements{ + id Int @id @default(autoincrement()) + title String + description String + date DateTime -model Belts{} + } -model Schedule{} + model Events{ + id Int @id @default(autoincrement()) + startTime DateTime + endTime DateTime + title String + description String + } -model Results{} -model Announcements{} +enum MemberSex{ + MALE + FEMALE +} -model Events{} */ \ No newline at end of file +enum Day { + MONDAY + TUESDAY + WEDNESDAY + THURSDAY + FRIDAY + SATURDAY + SUNDAY +} \ No newline at end of file From 82bdf856e11472e82457ecd9014728dfb0ef4305 Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Tue, 14 Jan 2025 20:28:10 +0200 Subject: [PATCH 29/35] New Schema Fix --- prisma/schema.prisma | 86 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 75 insertions(+), 11 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 8bebf1aea..ff8e8101c 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -76,31 +76,95 @@ model Parent { img String? bloodType String? sex MemberSex - Lesson Lesson @relation(fields:[]) - createdAd DateTime @default(now()) + createdOn DateTime @default(now()) + + lessons Lesson[] + classes Class[] } + model Class{ + id Int @id @default(autoincrement()) + className String + classDescription String + capacity Int + day Day + startTime DateTime + endTime DateTime + + lessons Lesson[] + attendance Attendance[] + + teacherId String + teacher Teacher @relation(fields: [teacherId], references: [id]) + + } model Lesson{ id Int @id @default(autoincrement()) lessonName String @unique - teachers Teacher[] + lessonDescription String + + teacherId String + Teacher Teacher @relation(fields: [teacherId], references: [id]) + classId Int + class Class @relation(fields: [classId], references: [id]) + memberId String + member Member @relation(fields:[memberId], references:[id]) + } + model HMDBelts{ + id Int @id @default(autoincrement()) + level String @unique + + members Member[] } -/* -model Attendance {} + model KickBelts{ + id Int @id @default(autoincrement()) + level String @unique -model Class{} + members Member[] + } + model Attendance { + id Int @id @default(autoincrement()) + date DateTime + present Boolean + memberId String + member Member @relation(fields:[memberId], references: [id]) + classId Int + class Class @relation(fields: [classId], references: [id]) + } + + model Announcements{ + id Int @id @default(autoincrement()) + title String + description String + date DateTime -model Belts{} + } -model Schedule{} + model Events{ + id Int @id @default(autoincrement()) + startTime DateTime + endTime DateTime + title String + description String + } -model Results{} -model Announcements{} +enum MemberSex{ + MALE + FEMALE +} -model Events{} */ \ No newline at end of file +enum Day { + MONDAY + TUESDAY + WEDNESDAY + THURSDAY + FRIDAY + SATURDAY + SUNDAY +} \ No newline at end of file From 49895d00bdf665936cf34cfc8a478b0cd9e24cb3 Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Mon, 20 Jan 2025 22:54:34 +0200 Subject: [PATCH 30/35] Prisma Init DB and Seed --- package-lock.json | 318 +++++++++++++----- package.json | 7 +- .../20250118115715_init/migration.sql | 208 ++++++++++++ prisma/migrations/migration_lock.toml | 3 + prisma/seed.ts | 167 +++++++++ src/lib/prisma.ts | 16 + 6 files changed, 641 insertions(+), 78 deletions(-) create mode 100644 prisma/migrations/20250118115715_init/migration.sql create mode 100644 prisma/migrations/migration_lock.toml create mode 100644 prisma/seed.ts create mode 100644 src/lib/prisma.ts diff --git a/package-lock.json b/package-lock.json index 82f69e7ce..270ba3811 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,17 +9,18 @@ "version": "0.1.0", "dependencies": { "@hookform/resolvers": "^3.9.1", + "@prisma/client": "^6.2.1", "@types/react-big-calendar": "^1.8.11", "convex": "^1.16.0", "moment": "^2.30.1", "next": "^14.2.7", - "prisma": "^6.0.1", "react": "^18", "react-big-calendar": "^1.14.1", "react-calendar": "^5.0.0", "react-dom": "^18", "react-hook-form": "^7.53.2", "recharts": "^2.12.7", + "ts-node": "^10.9.2", "zod": "^3.23.8" }, "devDependencies": { @@ -29,6 +30,7 @@ "eslint": "^8", "eslint-config-next": "14.2.5", "postcss": "^8", + "prisma": "^6.2.1", "tailwindcss": "^3.4.1", "typescript": "^5" } @@ -58,6 +60,28 @@ "node": ">=6.9.0" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", @@ -615,7 +639,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -635,7 +658,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { @@ -650,9 +672,9 @@ } }, "node_modules/@next/env": { - "version": "14.2.12", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.12.tgz", - "integrity": "sha512-3fP29GIetdwVIfIRyLKM7KrvJaqepv+6pVodEbx0P5CaMLYBtx+7eEg8JYO5L9sveJO87z9eCReceZLi0hxO1Q==", + "version": "14.2.23", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.23.tgz", + "integrity": "sha512-CysUC9IO+2Bh0omJ3qrb47S8DtsTKbFidGm6ow4gXIG6reZybqxbkH2nhdEm1tC8SmgzDdpq3BIML0PWsmyUYA==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -666,9 +688,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.12", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.12.tgz", - "integrity": "sha512-crHJ9UoinXeFbHYNok6VZqjKnd8rTd7K3Z2zpyzF1ch7vVNKmhjv/V7EHxep3ILoN8JB9AdRn/EtVVyG9AkCXw==", + "version": "14.2.23", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.23.tgz", + "integrity": "sha512-WhtEntt6NcbABA8ypEoFd3uzq5iAnrl9AnZt9dXdO+PZLACE32z3a3qA5OoV20JrbJfSJ6Sd6EqGZTrlRnGxQQ==", "cpu": [ "arm64" ], @@ -682,9 +704,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.12", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.12.tgz", - "integrity": "sha512-JbEaGbWq18BuNBO+lCtKfxl563Uw9oy2TodnN2ioX00u7V1uzrsSUcg3Ep9ce+P0Z9es+JmsvL2/rLphz+Frcw==", + "version": "14.2.23", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.23.tgz", + "integrity": "sha512-vwLw0HN2gVclT/ikO6EcE+LcIN+0mddJ53yG4eZd0rXkuEr/RnOaMH8wg/sYl5iz5AYYRo/l6XX7FIo6kwbw1Q==", "cpu": [ "x64" ], @@ -698,9 +720,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.12", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.12.tgz", - "integrity": "sha512-qBy7OiXOqZrdp88QEl2H4fWalMGnSCrr1agT/AVDndlyw2YJQA89f3ttR/AkEIP9EkBXXeGl6cC72/EZT5r6rw==", + "version": "14.2.23", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.23.tgz", + "integrity": "sha512-uuAYwD3At2fu5CH1wD7FpP87mnjAv4+DNvLaR9kiIi8DLStWSW304kF09p1EQfhcbUI1Py2vZlBO2VaVqMRtpg==", "cpu": [ "arm64" ], @@ -714,9 +736,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.12", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.12.tgz", - "integrity": "sha512-EfD9L7o9biaQxjwP1uWXnk3vYZi64NVcKUN83hpVkKocB7ogJfyH2r7o1pPnMtir6gHZiGCeHKagJ0yrNSLNHw==", + "version": "14.2.23", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.23.tgz", + "integrity": "sha512-Mm5KHd7nGgeJ4EETvVgFuqKOyDh+UMXHXxye6wRRFDr4FdVRI6YTxajoV2aHE8jqC14xeAMVZvLqYqS7isHL+g==", "cpu": [ "arm64" ], @@ -730,9 +752,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.12", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.12.tgz", - "integrity": "sha512-iQ+n2pxklJew9IpE47hE/VgjmljlHqtcD5UhZVeHICTPbLyrgPehaKf2wLRNjYH75udroBNCgrSSVSVpAbNoYw==", + "version": "14.2.23", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.23.tgz", + "integrity": "sha512-Ybfqlyzm4sMSEQO6lDksggAIxnvWSG2cDWnG2jgd+MLbHYn2pvFA8DQ4pT2Vjk3Cwrv+HIg7vXJ8lCiLz79qoQ==", "cpu": [ "x64" ], @@ -746,9 +768,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.12", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.12.tgz", - "integrity": "sha512-rFkUkNwcQ0ODn7cxvcVdpHlcOpYxMeyMfkJuzaT74xjAa5v4fxP4xDk5OoYmPi8QNLDs3UgZPMSBmpBuv9zKWA==", + "version": "14.2.23", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.23.tgz", + "integrity": "sha512-OSQX94sxd1gOUz3jhhdocnKsy4/peG8zV1HVaW6DLEbEmRRtUCUQZcKxUD9atLYa3RZA+YJx+WZdOnTkDuNDNA==", "cpu": [ "x64" ], @@ -762,9 +784,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.12", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.12.tgz", - "integrity": "sha512-PQFYUvwtHs/u0K85SG4sAdDXYIPXpETf9mcEjWc0R4JmjgMKSDwIU/qfZdavtP6MPNiMjuKGXHCtyhR/M5zo8g==", + "version": "14.2.23", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.23.tgz", + "integrity": "sha512-ezmbgZy++XpIMTcTNd0L4k7+cNI4ET5vMv/oqNfTuSXkZtSA9BURElPFyarjjGtRgZ9/zuKDHoMdZwDZIY3ehQ==", "cpu": [ "arm64" ], @@ -778,9 +800,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.12", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.12.tgz", - "integrity": "sha512-FAj2hMlcbeCV546eU2tEv41dcJb4NeqFlSXU/xL/0ehXywHnNpaYajOUvn3P8wru5WyQe6cTZ8fvckj/2XN4Vw==", + "version": "14.2.23", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.23.tgz", + "integrity": "sha512-zfHZOGguFCqAJ7zldTKg4tJHPJyJCOFhpoJcVxKL9BSUHScVDnMdDuOU1zPPGdOzr/GWxbhYTjyiEgLEpAoFPA==", "cpu": [ "ia32" ], @@ -794,9 +816,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.12", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.12.tgz", - "integrity": "sha512-yu8QvV53sBzoIVRHsxCHqeuS8jYq6Lrmdh0briivuh+Brsp6xjg80MAozUsBTAV9KNmY08KlX0KYTWz1lbPzEg==", + "version": "14.2.23", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.23.tgz", + "integrity": "sha512-xCtq5BD553SzOgSZ7UH5LH+OATQihydObTrCTvVzOro8QiWYKdBVwcB2Mn2MLMo6DGW9yH1LSPw7jS7HhgJgjw==", "cpu": [ "x64" ], @@ -868,49 +890,72 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@prisma/client": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.2.1.tgz", + "integrity": "sha512-msKY2iRLISN8t5X0Tj7hU0UWet1u0KuxSPHWuf3IRkB4J95mCvGpyQBfQ6ufcmvKNOMQSq90O2iUmJEN2e5fiA==", + "hasInstallScript": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, "node_modules/@prisma/debug": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.0.1.tgz", - "integrity": "sha512-jQylgSOf7ibTVxqBacnAlVGvek6fQxJIYCQOeX2KexsfypNzXjJQSS2o5s+Mjj2Np93iSOQUaw6TvPj8syhG4w==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.2.1.tgz", + "integrity": "sha512-0KItvt39CmQxWkEw6oW+RQMD6RZ43SJWgEUnzxN8VC9ixMysa7MzZCZf22LCK5DSooiLNf8vM3LHZm/I/Ni7bQ==", + "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.0.1.tgz", - "integrity": "sha512-4hxzI+YQIR2uuDyVsDooFZGu5AtixbvM2psp+iayDZ4hRrAHo/YwgA17N23UWq7G6gRu18NvuNMb48qjP3DPQw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.2.1.tgz", + "integrity": "sha512-lTBNLJBCxVT9iP5I7Mn6GlwqAxTpS5qMERrhebkUhtXpGVkBNd/jHnNJBZQW4kGDCKaQg/r2vlJYkzOHnAb7ZQ==", + "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.0.1", - "@prisma/engines-version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e", - "@prisma/fetch-engine": "6.0.1", - "@prisma/get-platform": "6.0.1" + "@prisma/debug": "6.2.1", + "@prisma/engines-version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", + "@prisma/fetch-engine": "6.2.1", + "@prisma/get-platform": "6.2.1" } }, "node_modules/@prisma/engines-version": { - "version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e.tgz", - "integrity": "sha512-JmIds0Q2/vsOmnuTJYxY4LE+sajqjYKhLtdOT6y4imojqv5d/aeVEfbBGC74t8Be1uSp0OP8lxIj2OqoKbLsfQ==", + "version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69.tgz", + "integrity": "sha512-7tw1qs/9GWSX6qbZs4He09TOTg1ff3gYsB3ubaVNN0Pp1zLm9NC5C5MZShtkz7TyQjx7blhpknB7HwEhlG+PrQ==", + "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/fetch-engine": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.0.1.tgz", - "integrity": "sha512-T36bWFVGeGYYSyYOj9d+O9G3sBC+pAyMC+jc45iSL63/Haq1GrYjQPgPMxrEj9m739taXrupoysRedQ+VyvM/Q==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.2.1.tgz", + "integrity": "sha512-OO7O9d6Mrx2F9i+Gu1LW+DGXXyUFkP7OE5aj9iBfA/2jjDXEJjqa9X0ZmM9NZNo8Uo7ql6zKm6yjDcbAcRrw1A==", + "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.0.1", - "@prisma/engines-version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e", - "@prisma/get-platform": "6.0.1" + "@prisma/debug": "6.2.1", + "@prisma/engines-version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", + "@prisma/get-platform": "6.2.1" } }, "node_modules/@prisma/get-platform": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.0.1.tgz", - "integrity": "sha512-zspC9vlxAqx4E6epMPMLLBMED2VD8axDe8sPnquZ8GOsn6tiacWK0oxrGK4UAHYzYUVuMVUApJbdXB2dFpLhvg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.2.1.tgz", + "integrity": "sha512-zp53yvroPl5m5/gXYLz7tGCNG33bhG+JYCm74ohxOq1pPnrL47VQYFfF3RbTZ7TzGWCrR3EtoiYMywUBw7UK6Q==", + "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.0.1" + "@prisma/debug": "6.2.1" } }, "node_modules/@restart/hooks": { @@ -948,6 +993,30 @@ "tslib": "^2.4.0" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "license": "MIT" + }, "node_modules/@types/d3-array": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", @@ -1028,7 +1097,6 @@ "version": "20.14.14", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.14.tgz", "integrity": "sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==", - "dev": true, "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -1231,7 +1299,6 @@ "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -1250,6 +1317,18 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1822,6 +1901,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2166,6 +2251,15 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -3091,6 +3185,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -4198,6 +4293,12 @@ "node": ">=12" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "license": "ISC" + }, "node_modules/map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -4364,12 +4465,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "14.2.12", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.12.tgz", - "integrity": "sha512-cDOtUSIeoOvt1skKNihdExWMTybx3exnvbFbb9ecZDIxlvIbREQzt9A5Km3Zn3PfU+IFjyYGsHS+lN9VInAGKA==", + "version": "14.2.23", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.23.tgz", + "integrity": "sha512-mjN3fE6u/tynneLiEg56XnthzuYw+kD7mCujgVqioxyPqbmiotUCGJpIZGS/VaPg3ZDT1tvWxiVyRzeqJFm/kw==", "license": "MIT", "dependencies": { - "@next/env": "14.2.12", + "@next/env": "14.2.23", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -4384,15 +4485,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.12", - "@next/swc-darwin-x64": "14.2.12", - "@next/swc-linux-arm64-gnu": "14.2.12", - "@next/swc-linux-arm64-musl": "14.2.12", - "@next/swc-linux-x64-gnu": "14.2.12", - "@next/swc-linux-x64-musl": "14.2.12", - "@next/swc-win32-arm64-msvc": "14.2.12", - "@next/swc-win32-ia32-msvc": "14.2.12", - "@next/swc-win32-x64-msvc": "14.2.12" + "@next/swc-darwin-arm64": "14.2.23", + "@next/swc-darwin-x64": "14.2.23", + "@next/swc-linux-arm64-gnu": "14.2.23", + "@next/swc-linux-arm64-musl": "14.2.23", + "@next/swc-linux-x64-gnu": "14.2.23", + "@next/swc-linux-x64-musl": "14.2.23", + "@next/swc-win32-arm64-msvc": "14.2.23", + "@next/swc-win32-ia32-msvc": "14.2.23", + "@next/swc-win32-x64-msvc": "14.2.23" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -4980,13 +5081,14 @@ } }, "node_modules/prisma": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.0.1.tgz", - "integrity": "sha512-CaMNFHkf+DDq8zq3X/JJsQ4Koy7dyWwwtOKibkT/Am9j/tDxcfbg7+lB1Dzhx18G/+RQCMgjPYB61bhRqteNBQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.2.1.tgz", + "integrity": "sha512-hhyM0H13pQleQ+br4CkzGizS5I0oInoeTw3JfLw1BRZduBSQxPILlJLwi+46wZzj9Je7ndyQEMGw/n5cN2fknA==", + "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/engines": "6.0.1" + "@prisma/engines": "6.2.1" }, "bin": { "prisma": "build/index.js" @@ -6018,6 +6120,55 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "license": "MIT" + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -6144,7 +6295,6 @@ "version": "5.5.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", - "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -6189,7 +6339,6 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, "license": "MIT" }, "node_modules/uri-js": { @@ -6209,6 +6358,12 @@ "dev": true, "license": "MIT" }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "license": "MIT" + }, "node_modules/victory-vendor": { "version": "36.9.2", "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", @@ -6470,6 +6625,15 @@ "node": ">= 14" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 8dabcdbf4..8703636ef 100644 --- a/package.json +++ b/package.json @@ -10,17 +10,18 @@ }, "dependencies": { "@hookform/resolvers": "^3.9.1", + "@prisma/client": "^6.2.1", "@types/react-big-calendar": "^1.8.11", "convex": "^1.16.0", "moment": "^2.30.1", "next": "^14.2.7", - "prisma": "^6.0.1", "react": "^18", "react-big-calendar": "^1.14.1", "react-calendar": "^5.0.0", "react-dom": "^18", "react-hook-form": "^7.53.2", "recharts": "^2.12.7", + "ts-node": "^10.9.2", "zod": "^3.23.8" }, "devDependencies": { @@ -30,7 +31,11 @@ "eslint": "^8", "eslint-config-next": "14.2.5", "postcss": "^8", + "prisma": "^6.2.1", "tailwindcss": "^3.4.1", "typescript": "^5" + }, + "prisma": { + "seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts" } } diff --git a/prisma/migrations/20250118115715_init/migration.sql b/prisma/migrations/20250118115715_init/migration.sql new file mode 100644 index 000000000..0ad22cb6e --- /dev/null +++ b/prisma/migrations/20250118115715_init/migration.sql @@ -0,0 +1,208 @@ +-- CreateEnum +CREATE TYPE "MemberSex" AS ENUM ('MALE', 'FEMALE'); + +-- CreateEnum +CREATE TYPE "Day" AS ENUM ('MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY'); + +-- CreateTable +CREATE TABLE "Academy" ( + "id" SERIAL NOT NULL, + "academyName" TEXT NOT NULL, + "academyOwnerId" INTEGER NOT NULL, + + CONSTRAINT "Academy_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Admin" ( + "id" TEXT NOT NULL, + "username" TEXT NOT NULL, + "email" TEXT NOT NULL, + + CONSTRAINT "Admin_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Member" ( + "id" TEXT NOT NULL, + "username" TEXT NOT NULL, + "name" TEXT NOT NULL, + "surname" TEXT NOT NULL, + "email" TEXT, + "phone" TEXT, + "address" TEXT, + "img" TEXT, + "bloodType" TEXT, + "sex" "MemberSex" NOT NULL, + "createdOn" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "hmdBeltId" INTEGER NOT NULL, + "kickBeltId" INTEGER NOT NULL, + "parentId" TEXT NOT NULL, + + CONSTRAINT "Member_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Parent" ( + "id" TEXT NOT NULL, + "username" TEXT NOT NULL, + "name" TEXT NOT NULL, + "surname" TEXT NOT NULL, + "email" TEXT, + "phone" TEXT, + "address" TEXT, + "createdOn" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Parent_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Teacher" ( + "id" TEXT NOT NULL, + "username" TEXT NOT NULL, + "name" TEXT NOT NULL, + "surname" TEXT NOT NULL, + "email" TEXT, + "phone" TEXT, + "address" TEXT, + "img" TEXT, + "bloodType" TEXT, + "sex" "MemberSex" NOT NULL, + "createdOn" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Teacher_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Class" ( + "id" SERIAL NOT NULL, + "className" TEXT NOT NULL, + "classDescription" TEXT NOT NULL, + "capacity" INTEGER NOT NULL, + "day" "Day" NOT NULL, + "startTime" TIMESTAMP(3) NOT NULL, + "endTime" TIMESTAMP(3) NOT NULL, + "teacherId" TEXT NOT NULL, + + CONSTRAINT "Class_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Lesson" ( + "id" SERIAL NOT NULL, + "lessonName" TEXT NOT NULL, + "lessonDescription" TEXT NOT NULL, + "teacherId" TEXT NOT NULL, + "classId" INTEGER NOT NULL, + "memberId" TEXT NOT NULL, + + CONSTRAINT "Lesson_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "HMDBelts" ( + "id" SERIAL NOT NULL, + "level" TEXT NOT NULL, + + CONSTRAINT "HMDBelts_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "KickBelts" ( + "id" SERIAL NOT NULL, + "level" TEXT NOT NULL, + + CONSTRAINT "KickBelts_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Attendance" ( + "id" SERIAL NOT NULL, + "date" TIMESTAMP(3) NOT NULL, + "present" BOOLEAN NOT NULL, + "memberId" TEXT NOT NULL, + "classId" INTEGER NOT NULL, + + CONSTRAINT "Attendance_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Announcements" ( + "id" SERIAL NOT NULL, + "title" TEXT NOT NULL, + "description" TEXT NOT NULL, + "date" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Announcements_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Events" ( + "id" SERIAL NOT NULL, + "startTime" TIMESTAMP(3) NOT NULL, + "endTime" TIMESTAMP(3) NOT NULL, + "title" TEXT NOT NULL, + "description" TEXT NOT NULL, + + CONSTRAINT "Events_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Admin_username_key" ON "Admin"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "Admin_email_key" ON "Admin"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Member_username_key" ON "Member"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "Member_email_key" ON "Member"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Parent_username_key" ON "Parent"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "Parent_email_key" ON "Parent"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Teacher_username_key" ON "Teacher"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "Teacher_email_key" ON "Teacher"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Lesson_lessonName_key" ON "Lesson"("lessonName"); + +-- CreateIndex +CREATE UNIQUE INDEX "HMDBelts_level_key" ON "HMDBelts"("level"); + +-- CreateIndex +CREATE UNIQUE INDEX "KickBelts_level_key" ON "KickBelts"("level"); + +-- AddForeignKey +ALTER TABLE "Member" ADD CONSTRAINT "Member_hmdBeltId_fkey" FOREIGN KEY ("hmdBeltId") REFERENCES "HMDBelts"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Member" ADD CONSTRAINT "Member_kickBeltId_fkey" FOREIGN KEY ("kickBeltId") REFERENCES "KickBelts"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Member" ADD CONSTRAINT "Member_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "Parent"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Class" ADD CONSTRAINT "Class_teacherId_fkey" FOREIGN KEY ("teacherId") REFERENCES "Teacher"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Lesson" ADD CONSTRAINT "Lesson_teacherId_fkey" FOREIGN KEY ("teacherId") REFERENCES "Teacher"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Lesson" ADD CONSTRAINT "Lesson_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Lesson" ADD CONSTRAINT "Lesson_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "Member"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Attendance" ADD CONSTRAINT "Attendance_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "Member"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Attendance" ADD CONSTRAINT "Attendance_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 000000000..fbffa92c2 --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "postgresql" \ No newline at end of file diff --git a/prisma/seed.ts b/prisma/seed.ts new file mode 100644 index 000000000..b50c5ad10 --- /dev/null +++ b/prisma/seed.ts @@ -0,0 +1,167 @@ +// prisma/seed.js +const { PrismaClient } = require('@prisma/client'); +const prisma = new PrismaClient(); + +async function main() { + // Seed Admins + const admins = await prisma.admin.createMany({ + data: [ + { id: 'admin-1', username: 'adminuser1', email: 'admin1@example.com' }, + { id: 'admin-2', username: 'adminuser2', email: 'admin2@example.com' }, + ], + }); + + // Seed Parents + const parents = await prisma.parent.createMany({ + data: [ + { + id: 'parent-1', + username: 'parentuser1', + name: 'John', + surname: 'Doe', + email: 'john.doe@example.com', + phone: '1234567890', + address: '123 Main St', + createdOn: new Date(), + }, + { + id: 'parent-2', + username: 'parentuser2', + name: 'Jane', + surname: 'Smith', + email: 'jane.smith@example.com', + phone: '0987654321', + address: '456 Elm St', + createdOn: new Date(), + }, + ], + }); + + // Seed Teachers + const teachers = await prisma.teacher.createMany({ + data: [ + { + id: 'teacher-1', + username: 'teachuser1', + name: 'Alice', + surname: 'Johnson', + email: 'alice.johnson@example.com', + phone: '1122334455', + address: '789 Oak St', + img: 'https://via.placeholder.com/150', + bloodType: 'A+', + sex: 'FEMALE', + createdOn: new Date(), + }, + { + id: 'teacher-2', + username: 'teachuser2', + name: 'Bob', + surname: 'Brown', + email: 'bob.brown@example.com', + phone: '6677889900', + address: '101 Pine St', + img: 'https://via.placeholder.com/150', + bloodType: 'O-', + sex: 'MALE', + createdOn: new Date(), + }, + ], + }); + + // Seed Academies + const academies = await prisma.academy.createMany({ + data: [ + { academyName: 'Elite Academy', academyOwnerId: 1 }, + { academyName: 'Champion Academy', academyOwnerId: 2 }, + ], + }); + + // Seed HMDBelts and KickBelts + const hmdBelts = await prisma.hMDBelts.createMany({ + data: [ + { level: 'White Belt' }, + { level: 'Yellow Belt' }, + ], + }); + + const kickBelts = await prisma.kickBelts.createMany({ + data: [ + { level: 'White Belt' }, + { level: 'Orange Belt' }, + ], + }); + + // Seed Members + const members = await prisma.member.createMany({ + data: [ + { + id: 'member-1', + username: 'memberuser1', + name: 'Charlie', + surname: 'Green', + email: 'charlie.green@example.com', + phone: '2233445566', + address: '202 Birch St', + img: 'https://via.placeholder.com/150', + bloodType: 'B+', + sex: 'MALE', + createdOn: new Date(), + hmdBeltId: 1, + kickBeltId: 1, + parentId: 'parent-1', + }, + { + id: 'member-2', + username: 'memberuser2', + name: 'Diana', + surname: 'White', + email: 'diana.white@example.com', + phone: '3344556677', + address: '303 Maple St', + img: 'https://via.placeholder.com/150', + bloodType: 'AB+', + sex: 'FEMALE', + createdOn: new Date(), + hmdBeltId: 2, + kickBeltId: 2, + parentId: 'parent-2', + }, + ], + }); + + // Seed Classes + const classes = await prisma.class.createMany({ + data: [ + { + className: 'Morning Yoga', + classDescription: 'Beginner yoga class', + capacity: 20, + day: 'MONDAY', + startTime: new Date('2025-01-01T09:00:00Z'), + endTime: new Date('2025-01-01T10:00:00Z'), + teacherId: 'teacher-1', + }, + { + className: 'Kickboxing Basics', + classDescription: 'Introduction to kickboxing', + capacity: 15, + day: 'WEDNESDAY', + startTime: new Date('2025-01-01T18:00:00Z'), + endTime: new Date('2025-01-01T19:30:00Z'), + teacherId: 'teacher-2', + }, + ], + }); + + console.log({ admins, parents, teachers, academies, hmdBelts, kickBelts, members, classes }); +} + +main() + .catch((e) => { + console.error(e); + process.exit(1); + }) + .finally(async () => { + await prisma.$disconnect(); + }); diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts new file mode 100644 index 000000000..f31a86c9c --- /dev/null +++ b/src/lib/prisma.ts @@ -0,0 +1,16 @@ +import { PrismaClient } from "@prisma/client"; + + +const prismaClientSingleton = () => { + return new PrismaClient(); +} + +declare const globalThis: { + prismaGlobal: ReturnType; +}& typeof global; + +const prisma = globalThis.prismaGlobal ?? prismaClientSingleton() + +export default prisma + +if (process.env.NODE_ENV !== 'production') globalThis.prismaGlobal = prisma \ No newline at end of file From a52e2d323efd2f9a232472fe4698a5e55ca21a4c Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Mon, 27 Jan 2025 10:44:58 +0200 Subject: [PATCH 31/35] Prisma Schema update and some twinks --- next.config.mjs | 3 +- package-lock.json | 63 ++++-- package.json | 7 +- prisma/schema.prisma | 1 - prisma/seed.ts | 231 ++++++++------------- public/noAvatar.png | Bin 0 -> 90755 bytes src/app/(dashboard)/list/teachers/page.tsx | 29 +-- src/components/FormModal.tsx | 2 +- 8 files changed, 159 insertions(+), 177 deletions(-) create mode 100644 public/noAvatar.png diff --git a/next.config.mjs b/next.config.mjs index cc0808be8..f9aeb06ad 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -2,7 +2,8 @@ const nextConfig = { images:{ remotePatterns:[ - {hostname:"images.pexels.com"} + {hostname:"images.pexels.com"}, + {hostname:"i.pravatar.cc"} ], } }; diff --git a/package-lock.json b/package-lock.json index 270ba3811..7a5e33b0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "lama-dev-next-dashboard", "version": "0.1.0", "dependencies": { + "@faker-js/faker": "^9.4.0", "@hookform/resolvers": "^3.9.1", "@prisma/client": "^6.2.1", "@types/react-big-calendar": "^1.8.11", @@ -20,11 +21,10 @@ "react-dom": "^18", "react-hook-form": "^7.53.2", "recharts": "^2.12.7", - "ts-node": "^10.9.2", "zod": "^3.23.8" }, "devDependencies": { - "@types/node": "^20", + "@types/node": "^20.17.16", "@types/react": "^18", "@types/react-dom": "^18", "eslint": "^8", @@ -32,7 +32,8 @@ "postcss": "^8", "prisma": "^6.2.1", "tailwindcss": "^3.4.1", - "typescript": "^5" + "ts-node": "^10.9.2", + "typescript": "^5.7.3" } }, "node_modules/@alloc/quick-lru": { @@ -64,6 +65,7 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -76,6 +78,7 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -526,6 +529,22 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@faker-js/faker": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-9.4.0.tgz", + "integrity": "sha512-85+k0AxaZSTowL0gXp8zYWDIrWclTbRPg/pm/V0dSFZ6W6D4lhcG3uuZl4zLsEKfEvs69xDbLN2cHQudwp95JA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/fakerjs" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0.0", + "npm": ">=9.0.0" + } + }, "node_modules/@hookform/resolvers": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.9.1.tgz", @@ -639,6 +658,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -658,6 +678,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { @@ -997,24 +1018,28 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, "license": "MIT" }, "node_modules/@types/d3-array": { @@ -1094,12 +1119,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.14.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.14.tgz", - "integrity": "sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==", + "version": "20.17.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.16.tgz", + "integrity": "sha512-vOTpLduLkZXePLxHiHsBLp98mHGnl8RptV4YAO3HfKO5UHjDvySGbxKtpYfy8Sx5+WKcgc45qNreJJRVM3L6mw==", + "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/prop-types": { @@ -1299,6 +1325,7 @@ "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -1321,6 +1348,7 @@ "version": "8.3.4", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, "license": "MIT", "dependencies": { "acorn": "^8.11.0" @@ -1905,6 +1933,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, "license": "MIT" }, "node_modules/cross-spawn": { @@ -2255,6 +2284,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -4297,6 +4327,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, "license": "ISC" }, "node_modules/map-age-cleaner": { @@ -6124,6 +6155,7 @@ "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -6167,6 +6199,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, "license": "MIT" }, "node_modules/tsconfig-paths": { @@ -6292,9 +6325,10 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -6336,9 +6370,10 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, "license": "MIT" }, "node_modules/uri-js": { @@ -6362,6 +6397,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, "license": "MIT" }, "node_modules/victory-vendor": { @@ -6629,6 +6665,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" diff --git a/package.json b/package.json index 8703636ef..be6707685 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "lint": "next lint" }, "dependencies": { + "@faker-js/faker": "^9.4.0", "@hookform/resolvers": "^3.9.1", "@prisma/client": "^6.2.1", "@types/react-big-calendar": "^1.8.11", @@ -21,11 +22,10 @@ "react-dom": "^18", "react-hook-form": "^7.53.2", "recharts": "^2.12.7", - "ts-node": "^10.9.2", "zod": "^3.23.8" }, "devDependencies": { - "@types/node": "^20", + "@types/node": "^20.17.16", "@types/react": "^18", "@types/react-dom": "^18", "eslint": "^8", @@ -33,7 +33,8 @@ "postcss": "^8", "prisma": "^6.2.1", "tailwindcss": "^3.4.1", - "typescript": "^5" + "ts-node": "^10.9.2", + "typescript": "^5.7.3" }, "prisma": { "seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts" diff --git a/prisma/schema.prisma b/prisma/schema.prisma index ff8e8101c..e9a85b8fb 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -115,7 +115,6 @@ model Parent { model HMDBelts{ id Int @id @default(autoincrement()) level String @unique - members Member[] } diff --git a/prisma/seed.ts b/prisma/seed.ts index b50c5ad10..a15ebfe61 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,160 +1,99 @@ -// prisma/seed.js -const { PrismaClient } = require('@prisma/client'); +import { PrismaClient } from '@prisma/client'; +import { faker } from '@faker-js/faker'; + const prisma = new PrismaClient(); async function main() { - // Seed Admins - const admins = await prisma.admin.createMany({ - data: [ - { id: 'admin-1', username: 'adminuser1', email: 'admin1@example.com' }, - { id: 'admin-2', username: 'adminuser2', email: 'admin2@example.com' }, - ], - }); + // Generate 50 Parents + const parents = Array.from({ length: 50 }, (_, i) => ({ + id: `parent-${i + 1}`, + username: `parentuser${i + 1}`, + name: faker.person.firstName(), + surname: faker.person.lastName(), + email: faker.internet.email(), + phone: faker.phone.number(), + address: faker.location.streetAddress(), + createdOn: new Date(), + })); + await prisma.parent.createMany({ data: parents }); - // Seed Parents - const parents = await prisma.parent.createMany({ - data: [ - { - id: 'parent-1', - username: 'parentuser1', - name: 'John', - surname: 'Doe', - email: 'john.doe@example.com', - phone: '1234567890', - address: '123 Main St', - createdOn: new Date(), - }, - { - id: 'parent-2', - username: 'parentuser2', - name: 'Jane', - surname: 'Smith', - email: 'jane.smith@example.com', - phone: '0987654321', - address: '456 Elm St', - createdOn: new Date(), - }, - ], - }); +// Generate HMD Belts +const hmdBelts = [ + { level: 'White Belt' }, + { level: 'Yellow Belt' }, + { level: 'Orange Belt' }, + { level: 'Green Belt' }, + { level: 'Black Belt' }, +]; +await prisma.hMDBelts.createMany({ data: hmdBelts }); - // Seed Teachers - const teachers = await prisma.teacher.createMany({ - data: [ - { - id: 'teacher-1', - username: 'teachuser1', - name: 'Alice', - surname: 'Johnson', - email: 'alice.johnson@example.com', - phone: '1122334455', - address: '789 Oak St', - img: 'https://via.placeholder.com/150', - bloodType: 'A+', - sex: 'FEMALE', - createdOn: new Date(), - }, - { - id: 'teacher-2', - username: 'teachuser2', - name: 'Bob', - surname: 'Brown', - email: 'bob.brown@example.com', - phone: '6677889900', - address: '101 Pine St', - img: 'https://via.placeholder.com/150', - bloodType: 'O-', - sex: 'MALE', - createdOn: new Date(), - }, - ], - }); +// Generate Kick Belts +const kickBelts = [ + { level: 'White Belt' }, + { level: 'Yellow Belt' }, + { level: 'Orange Belt' }, + { level: 'Green Belt' }, + { level: 'Black Belt' }, +]; +await prisma.kickBelts.createMany({ data: kickBelts }); - // Seed Academies - const academies = await prisma.academy.createMany({ - data: [ - { academyName: 'Elite Academy', academyOwnerId: 1 }, - { academyName: 'Champion Academy', academyOwnerId: 2 }, - ], - }); + // Generate 20 Teachers + const teachers = Array.from({ length: 20 }, (_, i) => ({ + id: `teacher-${i + 1}`, + username: `teacheruser${i + 1}`, + name: faker.person.firstName(), + surname: faker.person.lastName(), + email: faker.internet.email(), + phone: faker.phone.number(), + address: faker.location.streetAddress(), + img: `https://i.pravatar.cc/300?img=${i+1}`, + bloodType: faker.helpers.arrayElement(['A+', 'A-', 'B+', 'B-', 'O+', 'O-', 'AB+', 'AB-']), + sex: faker.helpers.arrayElement(['MALE', 'FEMALE']), + createdOn: new Date(), + })); + await prisma.teacher.createMany({ data: teachers }); - // Seed HMDBelts and KickBelts - const hmdBelts = await prisma.hMDBelts.createMany({ - data: [ - { level: 'White Belt' }, - { level: 'Yellow Belt' }, - ], - }); + // Generate 50 Members + const members = Array.from({ length: 50 }, (_, i) => ({ + id: `member-${i + 1}`, + username: `memberuser${i + 1}`, + name: faker.person.firstName(), + surname: faker.person.lastName(), + email: faker.internet.email(), + phone: faker.phone.number(), + address: faker.location.streetAddress(), + img: faker.image.avatar(), + bloodType: faker.helpers.arrayElement(['A+', 'A-', 'B+', 'B-', 'O+', 'O-', 'AB+', 'AB-']), + sex: faker.helpers.arrayElement(['MALE', 'FEMALE']), + createdOn: new Date(), + hmdBeltId: faker.number.int({ min: 1, max: 5 }), // Assuming 5 HMD Belts exist + kickBeltId: faker.number.int({ min: 1, max: 5 }), // Assuming 5 Kick Belts exist + parentId: `parent-${faker.number.int({ min: 1, max: 50 })}`, + })); + await prisma.member.createMany({ data: members }); - const kickBelts = await prisma.kickBelts.createMany({ - data: [ - { level: 'White Belt' }, - { level: 'Orange Belt' }, - ], - }); + // Generate Academies + const academies = [ + { academyName: 'Elite Academy', academyOwnerId: 1 }, + { academyName: 'Champion Academy', academyOwnerId: 2 }, + ]; + await prisma.academy.createMany({ data: academies }); - // Seed Members - const members = await prisma.member.createMany({ - data: [ - { - id: 'member-1', - username: 'memberuser1', - name: 'Charlie', - surname: 'Green', - email: 'charlie.green@example.com', - phone: '2233445566', - address: '202 Birch St', - img: 'https://via.placeholder.com/150', - bloodType: 'B+', - sex: 'MALE', - createdOn: new Date(), - hmdBeltId: 1, - kickBeltId: 1, - parentId: 'parent-1', - }, - { - id: 'member-2', - username: 'memberuser2', - name: 'Diana', - surname: 'White', - email: 'diana.white@example.com', - phone: '3344556677', - address: '303 Maple St', - img: 'https://via.placeholder.com/150', - bloodType: 'AB+', - sex: 'FEMALE', - createdOn: new Date(), - hmdBeltId: 2, - kickBeltId: 2, - parentId: 'parent-2', - }, - ], - }); + - // Seed Classes - const classes = await prisma.class.createMany({ - data: [ - { - className: 'Morning Yoga', - classDescription: 'Beginner yoga class', - capacity: 20, - day: 'MONDAY', - startTime: new Date('2025-01-01T09:00:00Z'), - endTime: new Date('2025-01-01T10:00:00Z'), - teacherId: 'teacher-1', - }, - { - className: 'Kickboxing Basics', - classDescription: 'Introduction to kickboxing', - capacity: 15, - day: 'WEDNESDAY', - startTime: new Date('2025-01-01T18:00:00Z'), - endTime: new Date('2025-01-01T19:30:00Z'), - teacherId: 'teacher-2', - }, - ], - }); + // Generate Classes + const classes = Array.from({ length: 10 }, (_, i) => ({ + className: faker.company.name(), + classDescription: faker.company.catchPhrase(), + capacity: faker.number.int({ min: 10, max: 50 }), + day: faker.helpers.arrayElement(['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY']), + startTime: faker.date.future(), + endTime: faker.date.future(), + teacherId: `teacher-${faker.number.int({ min: 1, max: 20 })}`, + })); + await prisma.class.createMany({ data: classes }); - console.log({ admins, parents, teachers, academies, hmdBelts, kickBelts, members, classes }); + console.log('Seed data created successfully!'); } main() diff --git a/public/noAvatar.png b/public/noAvatar.png new file mode 100644 index 0000000000000000000000000000000000000000..2347bce6862da2f5ecfb9b0de57d7fa4b59c24d0 GIT binary patch literal 90755 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 SV#(
(

{item?.email}

{item.bloodType} {item.phone} {item?.address} @@ -76,9 +77,13 @@ const renderRow = (item:Teacher)=>(
+
{/* PAGINATION SECTION*/} diff --git a/src/components/FormModal.tsx b/src/components/FormModal.tsx index deb412ae2..b2ae381d2 100644 --- a/src/components/FormModal.tsx +++ b/src/components/FormModal.tsx @@ -32,7 +32,7 @@ const FormModal = ({table, type, data, id}:{ | "announcement"; type:"create" | "update" | "delete" | "view"; data?:any; - id?: number; + id?: string; }) => { From 5c9df567110f36132c7e3a491d027f35c5459557 Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Tue, 18 Feb 2025 14:40:21 +0200 Subject: [PATCH 32/35] Prisma and some initial Queries --- .../migration.sql | 20 ++++++++++ prisma/migrations/migration_lock.toml | 2 +- prisma/schema.prisma | 26 ++++++++++++ .../(dashboard)/list/students/[id]/page.tsx | 2 +- src/app/(dashboard)/list/teachers/page.tsx | 34 +++++++++++++--- src/components/Pagination.tsx | 40 +++++++++++++++---- src/lib/settings.ts | 1 + 7 files changed, 109 insertions(+), 16 deletions(-) create mode 100644 prisma/migrations/20250201113753_iterationcertificate/migration.sql create mode 100644 src/lib/settings.ts diff --git a/prisma/migrations/20250201113753_iterationcertificate/migration.sql b/prisma/migrations/20250201113753_iterationcertificate/migration.sql new file mode 100644 index 000000000..e7c2f59a3 --- /dev/null +++ b/prisma/migrations/20250201113753_iterationcertificate/migration.sql @@ -0,0 +1,20 @@ +-- CreateEnum +CREATE TYPE "Itteration" AS ENUM ('MONTHLY', 'QUARTERLY', 'SEMESTERLY', 'ANNUALY', 'PERPETUALLY'); + +-- CreateTable +CREATE TABLE "Certifications" ( + "id" SERIAL NOT NULL, + "certName" TEXT NOT NULL, + "certDescription" TEXT NOT NULL, + "certCircle" "Itteration" NOT NULL, + "memberId" TEXT NOT NULL, + "teacherId" TEXT NOT NULL, + + CONSTRAINT "Certifications_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "Certifications" ADD CONSTRAINT "Certifications_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "Member"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Certifications" ADD CONSTRAINT "Certifications_teacherId_fkey" FOREIGN KEY ("teacherId") REFERENCES "Teacher"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml index fbffa92c2..648c57fd5 100644 --- a/prisma/migrations/migration_lock.toml +++ b/prisma/migrations/migration_lock.toml @@ -1,3 +1,3 @@ # Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) +# It should be added in your version-control system (e.g., Git) provider = "postgresql" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index e9a85b8fb..5f4ef4c46 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -50,7 +50,10 @@ model Member { parentId String parent Parent @relation(fields: [parentId], references: [id]) + lessons Lesson[] + certifications Certifications[] + } model Parent { @@ -80,6 +83,7 @@ model Parent { lessons Lesson[] classes Class[] + certifications Certifications[] } model Class{ @@ -125,6 +129,18 @@ model Parent { members Member[] } + model Certifications { + id Int @id @default(autoincrement()) + certName String + certDescription String + certCircle Itteration + + memberId String + member Member @relation(fields:[memberId], references:[id]) + teacherId String + Teacher Teacher @relation(fields: [teacherId], references: [id]) + } + model Attendance { id Int @id @default(autoincrement()) date DateTime @@ -153,11 +169,21 @@ model Parent { } + + enum MemberSex{ MALE FEMALE } +enum Itteration { + MONTHLY + QUARTERLY + SEMESTERLY + ANNUALY + PERPETUALLY +} + enum Day { MONDAY TUESDAY diff --git a/src/app/(dashboard)/list/students/[id]/page.tsx b/src/app/(dashboard)/list/students/[id]/page.tsx index 16aff40fc..2d545c0ad 100644 --- a/src/app/(dashboard)/list/students/[id]/page.tsx +++ b/src/app/(dashboard)/list/students/[id]/page.tsx @@ -115,7 +115,7 @@ const SingleStudentPage = () => {

Shortcuts

Lessons - Teachers + Teachers Exams Results Assignments diff --git a/src/app/(dashboard)/list/teachers/page.tsx b/src/app/(dashboard)/list/teachers/page.tsx index 1484f76a6..4acd36500 100644 --- a/src/app/(dashboard)/list/teachers/page.tsx +++ b/src/app/(dashboard)/list/teachers/page.tsx @@ -7,6 +7,8 @@ import prisma from "@/lib/prisma"; import { Teacher } from "@prisma/client"; import Image from "next/image"; import Link from "next/link"; +import { ITEMS_PER_PAGE } from "@/lib/settings"; +import { count } from "console"; @@ -47,7 +49,7 @@ const renderRow = (item:Teacher)=>( className="md:hidden xl:block w-10 h-10 rounded-full object-cover" />
-

{item.name}

+

{item.name} {item.surname}

{item?.email}

@@ -77,17 +79,37 @@ const renderRow = (item:Teacher)=>( ); -const TeachersListPage = async () => { +const TeachersListPage = async ({searchParams}: + { + searchParams:{[key:string]:string | undefined}; + } +) => { - const data = await prisma.teacher.findMany(); + + const {page, ...queryParams} = searchParams; - console.log(data); + const p = page ? parseInt(page) : 1; + const [data, countItems] = await prisma.$transaction([ + prisma.teacher.findMany( + { + where:{ + id:"teacher-2", + }, + take:ITEMS_PER_PAGE, + skip: ITEMS_PER_PAGE *(p - 1), + } + ), + prisma.teacher.count({where:{ + id:"teacher-2", + }}), + ]); + return (
{/* TOP SECTION*/}
-

All Teachers

+

Teachers

{countItems} total Teachers

@@ -109,7 +131,7 @@ const TeachersListPage = async () => { {/* LIST SECTION*/}
{/* PAGINATION SECTION*/} - + ) } diff --git a/src/components/Pagination.tsx b/src/components/Pagination.tsx index e7235ce01..c91c5ec0d 100644 --- a/src/components/Pagination.tsx +++ b/src/components/Pagination.tsx @@ -1,17 +1,41 @@ -const Pagination = () => { +"use client"; + +import { ITEMS_PER_PAGE } from "@/lib/settings"; +import { useRouter } from "next/navigation"; + +const Pagination = ({page, count}:{page:number; count: number}) => { + + const router = useRouter(); + + const changePage = (newPage:number) => { + const params = new URLSearchParams(window.location.search); + params.set("page",newPage.toString()) + router.push(`${window.location.pathname}?${params}`) + } + return (
-
- - - - ... - + {Array.from({ length: Math.ceil(count / ITEMS_PER_PAGE)}, + (_, index)=>{ + const pageIndex = index+1; + return + } )} + +
-
diff --git a/src/lib/settings.ts b/src/lib/settings.ts new file mode 100644 index 000000000..93fb84ec1 --- /dev/null +++ b/src/lib/settings.ts @@ -0,0 +1 @@ +export const ITEMS_PER_PAGE = 5; \ No newline at end of file From 1d6c29297a1dea90efa5ea40482a9a55164c8a2b Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Sun, 23 Mar 2025 12:10:11 +0200 Subject: [PATCH 33/35] Schema --- .../migration.sql | 2 + prisma/schema.prisma | 1 + src/app/(dashboard)/list/belts/page.tsx | 134 ++++++++++++++++++ src/app/(dashboard)/list/teachers/page.tsx | 7 +- 4 files changed, 138 insertions(+), 6 deletions(-) create mode 100644 prisma/migrations/20250219184649_correct_hmd_belts/migration.sql create mode 100644 src/app/(dashboard)/list/belts/page.tsx diff --git a/prisma/migrations/20250219184649_correct_hmd_belts/migration.sql b/prisma/migrations/20250219184649_correct_hmd_belts/migration.sql new file mode 100644 index 000000000..1e79eda68 --- /dev/null +++ b/prisma/migrations/20250219184649_correct_hmd_belts/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "HMDBelts" ADD COLUMN "img" TEXT; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 5f4ef4c46..f52647be9 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -119,6 +119,7 @@ model Parent { model HMDBelts{ id Int @id @default(autoincrement()) level String @unique + img String? members Member[] } diff --git a/src/app/(dashboard)/list/belts/page.tsx b/src/app/(dashboard)/list/belts/page.tsx new file mode 100644 index 000000000..9cc77d5ca --- /dev/null +++ b/src/app/(dashboard)/list/belts/page.tsx @@ -0,0 +1,134 @@ +import FormModal from "@/components/FormModal"; +import Pagination from "@/components/Pagination"; +import Table from "@/components/Table"; +import TableSearch from "@/components/TableSearch"; +import { role, teachersData } from "@/lib/data"; +import prisma from "@/lib/prisma"; +import { Teacher } from "@prisma/client"; +import Image from "next/image"; +import Link from "next/link"; +import { ITEMS_PER_PAGE } from "@/lib/settings"; +import { count } from "console"; + + + + +const columns = [ + { + header:"info", accessor:"info" + }, + { + header:"Bloodtype", + accessor:"bloodType", + className:"hidden lg:table-cell" + }, + { + header:"Phone", + accessor:"phone", + className:"hidden lg:table-cell" + }, + { + header:"Address", + accessor:"address", + className:"hidden lg:table-cell" + }, + { + header:"Actions", + accessor:"actions", + }, +]; + +const renderRow = (item:Teacher)=>( +
+ + + + + + +); + +const BeltsListPage = async ({searchParams}: + { + searchParams:{[key:string]:string | undefined}; + } +) => { + + + const {page, ...queryParams} = searchParams; + + const p = page ? parseInt(page) : 1; + + const [data, countItems] = await prisma.$transaction([ + prisma.teacher.findMany( + { + take:ITEMS_PER_PAGE, + skip: ITEMS_PER_PAGE *(p - 1), + } + ), + prisma.teacher.count(), + ]); + + return ( +
+ {/* TOP SECTION*/} +
+

Teachers

{countItems} total Teachers

+
+ +
+ + + {role === "admin" && ( + // + + )} +
+
+
+ {/* LIST SECTION*/} +
+ +
+

{item.name} {item.surname}

+

{item?.email}

+
+
{item.bloodType}{item.phone}{item?.address} +
+ + + + { + role==="admin" && + ( + <> + + + + + ) + } + +
+
+ {/* PAGINATION SECTION*/} + + + ) +} + +export default BeltsListPage \ No newline at end of file diff --git a/src/app/(dashboard)/list/teachers/page.tsx b/src/app/(dashboard)/list/teachers/page.tsx index 4acd36500..bb4d06a15 100644 --- a/src/app/(dashboard)/list/teachers/page.tsx +++ b/src/app/(dashboard)/list/teachers/page.tsx @@ -93,16 +93,11 @@ const TeachersListPage = async ({searchParams}: const [data, countItems] = await prisma.$transaction([ prisma.teacher.findMany( { - where:{ - id:"teacher-2", - }, take:ITEMS_PER_PAGE, skip: ITEMS_PER_PAGE *(p - 1), } ), - prisma.teacher.count({where:{ - id:"teacher-2", - }}), + prisma.teacher.count(), ]); return ( From 08f4663f1835fca5a9ba0a4a3aea0db8b1bb652f Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Sat, 12 Apr 2025 11:59:29 +0300 Subject: [PATCH 34/35] Small Changes to Schema I --- package-lock.json | 716 +++++++++++++++--- package.json | 6 +- .../20250118115715_init/migration.sql | 208 ----- .../migration.sql | 20 - .../migration.sql | 2 - .../20250329190622_init_new01/migration.sql | 211 ++++++ .../20250330172805_init_new02/migration.sql | 12 + .../20250330175956_init_new02/migration.sql | 9 + .../20250330180501_init_new02/migration.sql | 2 + .../20250330181106_init_new033/migration.sql | 5 + prisma/schema.prisma | 317 ++++---- prisma/seed.ts | 224 +++--- src/app/(dashboard)/list/belts/page.tsx | 134 ---- src/app/(dashboard)/list/teachers/page.tsx | 25 +- src/components/FormModal.tsx | 6 +- .../{TeacherForm.tsx => InstructorForm.tsx} | 4 +- tsconfig.json | 25 +- 17 files changed, 1188 insertions(+), 738 deletions(-) delete mode 100644 prisma/migrations/20250118115715_init/migration.sql delete mode 100644 prisma/migrations/20250201113753_iterationcertificate/migration.sql delete mode 100644 prisma/migrations/20250219184649_correct_hmd_belts/migration.sql create mode 100644 prisma/migrations/20250329190622_init_new01/migration.sql create mode 100644 prisma/migrations/20250330172805_init_new02/migration.sql create mode 100644 prisma/migrations/20250330175956_init_new02/migration.sql create mode 100644 prisma/migrations/20250330180501_init_new02/migration.sql create mode 100644 prisma/migrations/20250330181106_init_new033/migration.sql delete mode 100644 src/app/(dashboard)/list/belts/page.tsx rename src/components/forms/{TeacherForm.tsx => InstructorForm.tsx} (99%) diff --git a/package-lock.json b/package-lock.json index 7a5e33b0e..0f9a8ef6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,11 +10,11 @@ "dependencies": { "@faker-js/faker": "^9.4.0", "@hookform/resolvers": "^3.9.1", - "@prisma/client": "^6.2.1", + "@prisma/client": "^6.5.0", "@types/react-big-calendar": "^1.8.11", "convex": "^1.16.0", "moment": "^2.30.1", - "next": "^14.2.7", + "next": "^15.2.4", "react": "^18", "react-big-calendar": "^1.14.1", "react-calendar": "^5.0.0", @@ -30,7 +30,7 @@ "eslint": "^8", "eslint-config-next": "14.2.5", "postcss": "^8", - "prisma": "^6.2.1", + "prisma": "^6.5.0", "tailwindcss": "^3.4.1", "ts-node": "^10.9.2", "typescript": "^5.7.3" @@ -85,6 +85,16 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@emnapi/runtime": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.0.tgz", + "integrity": "sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", @@ -592,6 +602,367 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -693,9 +1064,9 @@ } }, "node_modules/@next/env": { - "version": "14.2.23", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.23.tgz", - "integrity": "sha512-CysUC9IO+2Bh0omJ3qrb47S8DtsTKbFidGm6ow4gXIG6reZybqxbkH2nhdEm1tC8SmgzDdpq3BIML0PWsmyUYA==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.4.tgz", + "integrity": "sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -709,9 +1080,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.23", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.23.tgz", - "integrity": "sha512-WhtEntt6NcbABA8ypEoFd3uzq5iAnrl9AnZt9dXdO+PZLACE32z3a3qA5OoV20JrbJfSJ6Sd6EqGZTrlRnGxQQ==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.4.tgz", + "integrity": "sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==", "cpu": [ "arm64" ], @@ -725,9 +1096,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.23", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.23.tgz", - "integrity": "sha512-vwLw0HN2gVclT/ikO6EcE+LcIN+0mddJ53yG4eZd0rXkuEr/RnOaMH8wg/sYl5iz5AYYRo/l6XX7FIo6kwbw1Q==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.4.tgz", + "integrity": "sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew==", "cpu": [ "x64" ], @@ -741,9 +1112,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.23", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.23.tgz", - "integrity": "sha512-uuAYwD3At2fu5CH1wD7FpP87mnjAv4+DNvLaR9kiIi8DLStWSW304kF09p1EQfhcbUI1Py2vZlBO2VaVqMRtpg==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.4.tgz", + "integrity": "sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ==", "cpu": [ "arm64" ], @@ -757,9 +1128,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.23", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.23.tgz", - "integrity": "sha512-Mm5KHd7nGgeJ4EETvVgFuqKOyDh+UMXHXxye6wRRFDr4FdVRI6YTxajoV2aHE8jqC14xeAMVZvLqYqS7isHL+g==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.4.tgz", + "integrity": "sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA==", "cpu": [ "arm64" ], @@ -773,9 +1144,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.23", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.23.tgz", - "integrity": "sha512-Ybfqlyzm4sMSEQO6lDksggAIxnvWSG2cDWnG2jgd+MLbHYn2pvFA8DQ4pT2Vjk3Cwrv+HIg7vXJ8lCiLz79qoQ==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.4.tgz", + "integrity": "sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw==", "cpu": [ "x64" ], @@ -789,9 +1160,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.23", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.23.tgz", - "integrity": "sha512-OSQX94sxd1gOUz3jhhdocnKsy4/peG8zV1HVaW6DLEbEmRRtUCUQZcKxUD9atLYa3RZA+YJx+WZdOnTkDuNDNA==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.4.tgz", + "integrity": "sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw==", "cpu": [ "x64" ], @@ -805,9 +1176,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.23", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.23.tgz", - "integrity": "sha512-ezmbgZy++XpIMTcTNd0L4k7+cNI4ET5vMv/oqNfTuSXkZtSA9BURElPFyarjjGtRgZ9/zuKDHoMdZwDZIY3ehQ==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.4.tgz", + "integrity": "sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg==", "cpu": [ "arm64" ], @@ -820,26 +1191,10 @@ "node": ">= 10" } }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.23", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.23.tgz", - "integrity": "sha512-zfHZOGguFCqAJ7zldTKg4tJHPJyJCOFhpoJcVxKL9BSUHScVDnMdDuOU1zPPGdOzr/GWxbhYTjyiEgLEpAoFPA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.23", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.23.tgz", - "integrity": "sha512-xCtq5BD553SzOgSZ7UH5LH+OATQihydObTrCTvVzOro8QiWYKdBVwcB2Mn2MLMo6DGW9yH1LSPw7jS7HhgJgjw==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.4.tgz", + "integrity": "sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ==", "cpu": [ "x64" ], @@ -912,71 +1267,86 @@ } }, "node_modules/@prisma/client": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.2.1.tgz", - "integrity": "sha512-msKY2iRLISN8t5X0Tj7hU0UWet1u0KuxSPHWuf3IRkB4J95mCvGpyQBfQ6ufcmvKNOMQSq90O2iUmJEN2e5fiA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.5.0.tgz", + "integrity": "sha512-M6w1Ql/BeiGoZmhMdAZUXHu5sz5HubyVcKukbLs3l0ELcQb8hTUJxtGEChhv4SVJ0QJlwtLnwOLgIRQhpsm9dw==", "hasInstallScript": true, "license": "Apache-2.0", "engines": { "node": ">=18.18" }, "peerDependencies": { - "prisma": "*" + "prisma": "*", + "typescript": ">=5.1.0" }, "peerDependenciesMeta": { "prisma": { "optional": true + }, + "typescript": { + "optional": true } } }, + "node_modules/@prisma/config": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.5.0.tgz", + "integrity": "sha512-sOH/2Go9Zer67DNFLZk6pYOHj+rumSb0VILgltkoxOjYnlLqUpHPAN826vnx8HigqnOCxj9LRhT6U7uLiIIWgw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "esbuild": ">=0.12 <1", + "esbuild-register": "3.6.0" + } + }, "node_modules/@prisma/debug": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.2.1.tgz", - "integrity": "sha512-0KItvt39CmQxWkEw6oW+RQMD6RZ43SJWgEUnzxN8VC9ixMysa7MzZCZf22LCK5DSooiLNf8vM3LHZm/I/Ni7bQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.5.0.tgz", + "integrity": "sha512-fc/nusYBlJMzDmDepdUtH9aBsJrda2JNErP9AzuHbgUEQY0/9zQYZdNlXmKoIWENtio+qarPNe/+DQtrX5kMcQ==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.2.1.tgz", - "integrity": "sha512-lTBNLJBCxVT9iP5I7Mn6GlwqAxTpS5qMERrhebkUhtXpGVkBNd/jHnNJBZQW4kGDCKaQg/r2vlJYkzOHnAb7ZQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.5.0.tgz", + "integrity": "sha512-FVPQYHgOllJklN9DUyujXvh3hFJCY0NX86sDmBErLvoZjy2OXGiZ5FNf3J/C4/RZZmCypZBYpBKEhx7b7rEsdw==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.2.1", - "@prisma/engines-version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", - "@prisma/fetch-engine": "6.2.1", - "@prisma/get-platform": "6.2.1" + "@prisma/debug": "6.5.0", + "@prisma/engines-version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60", + "@prisma/fetch-engine": "6.5.0", + "@prisma/get-platform": "6.5.0" } }, "node_modules/@prisma/engines-version": { - "version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69.tgz", - "integrity": "sha512-7tw1qs/9GWSX6qbZs4He09TOTg1ff3gYsB3ubaVNN0Pp1zLm9NC5C5MZShtkz7TyQjx7blhpknB7HwEhlG+PrQ==", + "version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60.tgz", + "integrity": "sha512-iK3EmiVGFDCmXjSpdsKGNqy9hOdLnvYBrJB61far/oP03hlIxrb04OWmDjNTwtmZ3UZdA5MCvI+f+3k2jPTflQ==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/fetch-engine": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.2.1.tgz", - "integrity": "sha512-OO7O9d6Mrx2F9i+Gu1LW+DGXXyUFkP7OE5aj9iBfA/2jjDXEJjqa9X0ZmM9NZNo8Uo7ql6zKm6yjDcbAcRrw1A==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.5.0.tgz", + "integrity": "sha512-3LhYA+FXP6pqY8FLHCjewyE8pGXXJ7BxZw2rhPq+CZAhvflVzq4K8Qly3OrmOkn6wGlz79nyLQdknyCG2HBTuA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.2.1", - "@prisma/engines-version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", - "@prisma/get-platform": "6.2.1" + "@prisma/debug": "6.5.0", + "@prisma/engines-version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60", + "@prisma/get-platform": "6.5.0" } }, "node_modules/@prisma/get-platform": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.2.1.tgz", - "integrity": "sha512-zp53yvroPl5m5/gXYLz7tGCNG33bhG+JYCm74ohxOq1pPnrL47VQYFfF3RbTZ7TzGWCrR3EtoiYMywUBw7UK6Q==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.5.0.tgz", + "integrity": "sha512-xYcvyJwNMg2eDptBYFqFLUCfgi+wZLcj6HDMsj0Qw0irvauG4IKmkbywnqwok0B+k+W+p+jThM2DKTSmoPCkzw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.2.1" + "@prisma/debug": "6.5.0" } }, "node_modules/@restart/hooks": { @@ -1005,13 +1375,12 @@ "license": "Apache-2.0" }, "node_modules/@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", "license": "Apache-2.0", "dependencies": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" + "tslib": "^2.8.0" } }, "node_modules/@tsconfig/node10": { @@ -1841,11 +2210,25 @@ "node": ">=6" } }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -1858,9 +2241,20 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -2168,7 +2562,7 @@ "version": "4.3.6", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -2273,6 +2667,16 @@ "node": ">=6" } }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -2587,6 +2991,19 @@ "@esbuild/win32-x64": "0.23.0" } }, + "node_modules/esbuild-register": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "esbuild": ">=0.12 <1" + } + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -3466,6 +3883,7 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, "license": "ISC" }, "node_modules/graphemer": { @@ -3686,6 +4104,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT", + "optional": true + }, "node_modules/is-async-function": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", @@ -4455,7 +4880,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/mz": { @@ -4496,41 +4921,42 @@ "license": "MIT" }, "node_modules/next": { - "version": "14.2.23", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.23.tgz", - "integrity": "sha512-mjN3fE6u/tynneLiEg56XnthzuYw+kD7mCujgVqioxyPqbmiotUCGJpIZGS/VaPg3ZDT1tvWxiVyRzeqJFm/kw==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/next/-/next-15.2.4.tgz", + "integrity": "sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ==", "license": "MIT", "dependencies": { - "@next/env": "14.2.23", - "@swc/helpers": "0.5.5", + "@next/env": "15.2.4", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", - "graceful-fs": "^4.2.11", "postcss": "8.4.31", - "styled-jsx": "5.1.1" + "styled-jsx": "5.1.6" }, "bin": { "next": "dist/bin/next" }, "engines": { - "node": ">=18.17.0" + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.23", - "@next/swc-darwin-x64": "14.2.23", - "@next/swc-linux-arm64-gnu": "14.2.23", - "@next/swc-linux-arm64-musl": "14.2.23", - "@next/swc-linux-x64-gnu": "14.2.23", - "@next/swc-linux-x64-musl": "14.2.23", - "@next/swc-win32-arm64-msvc": "14.2.23", - "@next/swc-win32-ia32-msvc": "14.2.23", - "@next/swc-win32-x64-msvc": "14.2.23" + "@next/swc-darwin-arm64": "15.2.4", + "@next/swc-darwin-x64": "15.2.4", + "@next/swc-linux-arm64-gnu": "15.2.4", + "@next/swc-linux-arm64-musl": "15.2.4", + "@next/swc-linux-x64-gnu": "15.2.4", + "@next/swc-linux-x64-musl": "15.2.4", + "@next/swc-win32-arm64-msvc": "15.2.4", + "@next/swc-win32-x64-msvc": "15.2.4", + "sharp": "^0.33.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "peerDependenciesMeta": { @@ -4540,6 +4966,9 @@ "@playwright/test": { "optional": true }, + "babel-plugin-react-compiler": { + "optional": true + }, "sass": { "optional": true } @@ -5112,14 +5541,15 @@ } }, "node_modules/prisma": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.2.1.tgz", - "integrity": "sha512-hhyM0H13pQleQ+br4CkzGizS5I0oInoeTw3JfLw1BRZduBSQxPILlJLwi+46wZzj9Je7ndyQEMGw/n5cN2fknA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.5.0.tgz", + "integrity": "sha512-yUGXmWqv5F4PByMSNbYFxke/WbnyTLjnJ5bKr8fLkcnY7U5rU9rUTh/+Fja+gOrRxEgtCbCtca94IeITj4j/pg==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/engines": "6.2.1" + "@prisma/config": "6.5.0", + "@prisma/engines": "6.5.0" }, "bin": { "prisma": "build/index.js" @@ -5129,6 +5559,14 @@ }, "optionalDependencies": { "fsevents": "2.3.3" + }, + "peerDependencies": { + "typescript": ">=5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/prop-types": { @@ -5603,7 +6041,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -5646,6 +6084,46 @@ "node": ">= 0.4" } }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5701,6 +6179,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "optional": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -5963,9 +6451,9 @@ } }, "node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", "license": "MIT", "dependencies": { "client-only": "0.0.1" @@ -5974,7 +6462,7 @@ "node": ">= 12.0.0" }, "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" }, "peerDependenciesMeta": { "@babel/core": { @@ -6216,9 +6704,9 @@ } }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/type-check": { @@ -6328,7 +6816,7 @@ "version": "5.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", diff --git a/package.json b/package.json index be6707685..caf2b9c92 100644 --- a/package.json +++ b/package.json @@ -11,11 +11,11 @@ "dependencies": { "@faker-js/faker": "^9.4.0", "@hookform/resolvers": "^3.9.1", - "@prisma/client": "^6.2.1", + "@prisma/client": "^6.5.0", "@types/react-big-calendar": "^1.8.11", "convex": "^1.16.0", "moment": "^2.30.1", - "next": "^14.2.7", + "next": "^15.2.4", "react": "^18", "react-big-calendar": "^1.14.1", "react-calendar": "^5.0.0", @@ -31,7 +31,7 @@ "eslint": "^8", "eslint-config-next": "14.2.5", "postcss": "^8", - "prisma": "^6.2.1", + "prisma": "^6.5.0", "tailwindcss": "^3.4.1", "ts-node": "^10.9.2", "typescript": "^5.7.3" diff --git a/prisma/migrations/20250118115715_init/migration.sql b/prisma/migrations/20250118115715_init/migration.sql deleted file mode 100644 index 0ad22cb6e..000000000 --- a/prisma/migrations/20250118115715_init/migration.sql +++ /dev/null @@ -1,208 +0,0 @@ --- CreateEnum -CREATE TYPE "MemberSex" AS ENUM ('MALE', 'FEMALE'); - --- CreateEnum -CREATE TYPE "Day" AS ENUM ('MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY'); - --- CreateTable -CREATE TABLE "Academy" ( - "id" SERIAL NOT NULL, - "academyName" TEXT NOT NULL, - "academyOwnerId" INTEGER NOT NULL, - - CONSTRAINT "Academy_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Admin" ( - "id" TEXT NOT NULL, - "username" TEXT NOT NULL, - "email" TEXT NOT NULL, - - CONSTRAINT "Admin_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Member" ( - "id" TEXT NOT NULL, - "username" TEXT NOT NULL, - "name" TEXT NOT NULL, - "surname" TEXT NOT NULL, - "email" TEXT, - "phone" TEXT, - "address" TEXT, - "img" TEXT, - "bloodType" TEXT, - "sex" "MemberSex" NOT NULL, - "createdOn" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "hmdBeltId" INTEGER NOT NULL, - "kickBeltId" INTEGER NOT NULL, - "parentId" TEXT NOT NULL, - - CONSTRAINT "Member_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Parent" ( - "id" TEXT NOT NULL, - "username" TEXT NOT NULL, - "name" TEXT NOT NULL, - "surname" TEXT NOT NULL, - "email" TEXT, - "phone" TEXT, - "address" TEXT, - "createdOn" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - CONSTRAINT "Parent_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Teacher" ( - "id" TEXT NOT NULL, - "username" TEXT NOT NULL, - "name" TEXT NOT NULL, - "surname" TEXT NOT NULL, - "email" TEXT, - "phone" TEXT, - "address" TEXT, - "img" TEXT, - "bloodType" TEXT, - "sex" "MemberSex" NOT NULL, - "createdOn" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - CONSTRAINT "Teacher_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Class" ( - "id" SERIAL NOT NULL, - "className" TEXT NOT NULL, - "classDescription" TEXT NOT NULL, - "capacity" INTEGER NOT NULL, - "day" "Day" NOT NULL, - "startTime" TIMESTAMP(3) NOT NULL, - "endTime" TIMESTAMP(3) NOT NULL, - "teacherId" TEXT NOT NULL, - - CONSTRAINT "Class_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Lesson" ( - "id" SERIAL NOT NULL, - "lessonName" TEXT NOT NULL, - "lessonDescription" TEXT NOT NULL, - "teacherId" TEXT NOT NULL, - "classId" INTEGER NOT NULL, - "memberId" TEXT NOT NULL, - - CONSTRAINT "Lesson_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "HMDBelts" ( - "id" SERIAL NOT NULL, - "level" TEXT NOT NULL, - - CONSTRAINT "HMDBelts_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "KickBelts" ( - "id" SERIAL NOT NULL, - "level" TEXT NOT NULL, - - CONSTRAINT "KickBelts_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Attendance" ( - "id" SERIAL NOT NULL, - "date" TIMESTAMP(3) NOT NULL, - "present" BOOLEAN NOT NULL, - "memberId" TEXT NOT NULL, - "classId" INTEGER NOT NULL, - - CONSTRAINT "Attendance_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Announcements" ( - "id" SERIAL NOT NULL, - "title" TEXT NOT NULL, - "description" TEXT NOT NULL, - "date" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Announcements_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Events" ( - "id" SERIAL NOT NULL, - "startTime" TIMESTAMP(3) NOT NULL, - "endTime" TIMESTAMP(3) NOT NULL, - "title" TEXT NOT NULL, - "description" TEXT NOT NULL, - - CONSTRAINT "Events_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "Admin_username_key" ON "Admin"("username"); - --- CreateIndex -CREATE UNIQUE INDEX "Admin_email_key" ON "Admin"("email"); - --- CreateIndex -CREATE UNIQUE INDEX "Member_username_key" ON "Member"("username"); - --- CreateIndex -CREATE UNIQUE INDEX "Member_email_key" ON "Member"("email"); - --- CreateIndex -CREATE UNIQUE INDEX "Parent_username_key" ON "Parent"("username"); - --- CreateIndex -CREATE UNIQUE INDEX "Parent_email_key" ON "Parent"("email"); - --- CreateIndex -CREATE UNIQUE INDEX "Teacher_username_key" ON "Teacher"("username"); - --- CreateIndex -CREATE UNIQUE INDEX "Teacher_email_key" ON "Teacher"("email"); - --- CreateIndex -CREATE UNIQUE INDEX "Lesson_lessonName_key" ON "Lesson"("lessonName"); - --- CreateIndex -CREATE UNIQUE INDEX "HMDBelts_level_key" ON "HMDBelts"("level"); - --- CreateIndex -CREATE UNIQUE INDEX "KickBelts_level_key" ON "KickBelts"("level"); - --- AddForeignKey -ALTER TABLE "Member" ADD CONSTRAINT "Member_hmdBeltId_fkey" FOREIGN KEY ("hmdBeltId") REFERENCES "HMDBelts"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Member" ADD CONSTRAINT "Member_kickBeltId_fkey" FOREIGN KEY ("kickBeltId") REFERENCES "KickBelts"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Member" ADD CONSTRAINT "Member_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "Parent"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Class" ADD CONSTRAINT "Class_teacherId_fkey" FOREIGN KEY ("teacherId") REFERENCES "Teacher"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Lesson" ADD CONSTRAINT "Lesson_teacherId_fkey" FOREIGN KEY ("teacherId") REFERENCES "Teacher"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Lesson" ADD CONSTRAINT "Lesson_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Lesson" ADD CONSTRAINT "Lesson_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "Member"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Attendance" ADD CONSTRAINT "Attendance_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "Member"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Attendance" ADD CONSTRAINT "Attendance_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20250201113753_iterationcertificate/migration.sql b/prisma/migrations/20250201113753_iterationcertificate/migration.sql deleted file mode 100644 index e7c2f59a3..000000000 --- a/prisma/migrations/20250201113753_iterationcertificate/migration.sql +++ /dev/null @@ -1,20 +0,0 @@ --- CreateEnum -CREATE TYPE "Itteration" AS ENUM ('MONTHLY', 'QUARTERLY', 'SEMESTERLY', 'ANNUALY', 'PERPETUALLY'); - --- CreateTable -CREATE TABLE "Certifications" ( - "id" SERIAL NOT NULL, - "certName" TEXT NOT NULL, - "certDescription" TEXT NOT NULL, - "certCircle" "Itteration" NOT NULL, - "memberId" TEXT NOT NULL, - "teacherId" TEXT NOT NULL, - - CONSTRAINT "Certifications_pkey" PRIMARY KEY ("id") -); - --- AddForeignKey -ALTER TABLE "Certifications" ADD CONSTRAINT "Certifications_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "Member"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Certifications" ADD CONSTRAINT "Certifications_teacherId_fkey" FOREIGN KEY ("teacherId") REFERENCES "Teacher"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20250219184649_correct_hmd_belts/migration.sql b/prisma/migrations/20250219184649_correct_hmd_belts/migration.sql deleted file mode 100644 index 1e79eda68..000000000 --- a/prisma/migrations/20250219184649_correct_hmd_belts/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "HMDBelts" ADD COLUMN "img" TEXT; diff --git a/prisma/migrations/20250329190622_init_new01/migration.sql b/prisma/migrations/20250329190622_init_new01/migration.sql new file mode 100644 index 000000000..c475f165e --- /dev/null +++ b/prisma/migrations/20250329190622_init_new01/migration.sql @@ -0,0 +1,211 @@ +-- CreateEnum +CREATE TYPE "MemberSex" AS ENUM ('MALE', 'FEMALE'); + +-- CreateEnum +CREATE TYPE "Itteration" AS ENUM ('MONTHLY', 'QUARTERLY', 'SEMESTERLY', 'ANNUALY', 'PERPETUALLY'); + +-- CreateEnum +CREATE TYPE "Day" AS ENUM ('MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY'); + +-- CreateEnum +CREATE TYPE "BloodType" AS ENUM ('A_POSITIVE', 'A_NEGATIVE', 'B_POSITIVE', 'B_NEGATIVE', 'AB_POSITIVE', 'AB_NEGATIVE', 'O_POSITIVE', 'O_NEGATIVE'); + +-- CreateTable +CREATE TABLE "Academy" ( + "id" SERIAL NOT NULL, + "academyName" TEXT NOT NULL, + "academyLogo" TEXT, + "academyOwnerId" TEXT NOT NULL, + "academyIsActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Academy_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Admin" ( + "id" TEXT NOT NULL, + "latest002" TEXT NOT NULL, + "username" TEXT NOT NULL, + "email" TEXT NOT NULL, + + CONSTRAINT "Admin_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Member" ( + "id" TEXT NOT NULL, + "username" TEXT NOT NULL, + "name" TEXT NOT NULL, + "surname" TEXT NOT NULL, + "email" TEXT, + "phone" TEXT, + "address" TEXT, + "img" TEXT, + "bloodType" "BloodType", + "isBloodDonor" BOOLEAN DEFAULT false, + "sex" "MemberSex", + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Member_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Parent" ( + "id" TEXT NOT NULL, + "username" TEXT NOT NULL, + "name" TEXT NOT NULL, + "surname" TEXT NOT NULL, + "email" TEXT, + "phone" TEXT, + "address" TEXT, + "img" TEXT, + "bloodType" "BloodType", + "isBloodDonor" BOOLEAN DEFAULT false, + "sex" "MemberSex", + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "memberId" TEXT NOT NULL, + + CONSTRAINT "Parent_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Instructor" ( + "id" TEXT NOT NULL, + "username" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "name" TEXT NOT NULL, + "surname" TEXT NOT NULL, + "email" TEXT, + "phone" TEXT, + "address" TEXT, + "img" TEXT, + "bloodType" "BloodType", + "isBloodDonor" BOOLEAN DEFAULT false, + "sex" "MemberSex", + + CONSTRAINT "Instructor_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Class" ( + "id" SERIAL NOT NULL, + "className" TEXT NOT NULL, + "classDescription" TEXT NOT NULL, + "capacity" INTEGER NOT NULL, + "day" "Day" NOT NULL, + "startTime" TIMESTAMP(3) NOT NULL, + "endTime" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Class_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MartialArtsDiscipline" ( + "id" TEXT NOT NULL, + "artName" TEXT NOT NULL, + "artDescription" TEXT NOT NULL, + + CONSTRAINT "MartialArtsDiscipline_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Belt" ( + "id" TEXT NOT NULL, + "beltName" TEXT NOT NULL, + "martialArtsDisciplineId" TEXT NOT NULL, + "instructorID" TEXT NOT NULL, + "memberId" TEXT NOT NULL, + + CONSTRAINT "Belt_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Certifications" ( + "id" TEXT NOT NULL, + "certName" TEXT NOT NULL, + "certDescription" TEXT NOT NULL, + "certCircle" "Itteration" NOT NULL, + "memberId" TEXT NOT NULL, + + CONSTRAINT "Certifications_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Announcements" ( + "id" SERIAL NOT NULL, + "title" TEXT NOT NULL, + "description" TEXT NOT NULL, + "date" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Announcements_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Events" ( + "id" SERIAL NOT NULL, + "startTime" TIMESTAMP(3) NOT NULL, + "endTime" TIMESTAMP(3) NOT NULL, + "title" TEXT NOT NULL, + "description" TEXT NOT NULL, + + CONSTRAINT "Events_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Admin_username_key" ON "Admin"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "Admin_email_key" ON "Admin"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Member_username_key" ON "Member"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "Member_email_key" ON "Member"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Parent_username_key" ON "Parent"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "Parent_email_key" ON "Parent"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Parent_memberId_key" ON "Parent"("memberId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Instructor_username_key" ON "Instructor"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "Instructor_email_key" ON "Instructor"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "MartialArtsDiscipline_artName_key" ON "MartialArtsDiscipline"("artName"); + +-- CreateIndex +CREATE UNIQUE INDEX "Belt_instructorID_key" ON "Belt"("instructorID"); + +-- CreateIndex +CREATE UNIQUE INDEX "Belt_memberId_key" ON "Belt"("memberId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Certifications_memberId_key" ON "Certifications"("memberId"); + +-- AddForeignKey +ALTER TABLE "Parent" ADD CONSTRAINT "Parent_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "Member"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Belt" ADD CONSTRAINT "Belt_martialArtsDisciplineId_fkey" FOREIGN KEY ("martialArtsDisciplineId") REFERENCES "MartialArtsDiscipline"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Belt" ADD CONSTRAINT "Belt_instructorID_fkey" FOREIGN KEY ("instructorID") REFERENCES "Instructor"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Belt" ADD CONSTRAINT "Belt_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "Member"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Certifications" ADD CONSTRAINT "Certifications_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "Member"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20250330172805_init_new02/migration.sql b/prisma/migrations/20250330172805_init_new02/migration.sql new file mode 100644 index 000000000..a44d2dd66 --- /dev/null +++ b/prisma/migrations/20250330172805_init_new02/migration.sql @@ -0,0 +1,12 @@ +/* + Warnings: + + - You are about to drop the column `latest002` on the `Admin` table. All the data in the column will be lost. + +*/ +-- DropIndex +DROP INDEX "MartialArtsDiscipline_artName_key"; + +-- AlterTable +ALTER TABLE "Admin" DROP COLUMN "latest002", +ADD COLUMN "latest003" TEXT NOT NULL DEFAULT '003'; diff --git a/prisma/migrations/20250330175956_init_new02/migration.sql b/prisma/migrations/20250330175956_init_new02/migration.sql new file mode 100644 index 000000000..ad7acbb84 --- /dev/null +++ b/prisma/migrations/20250330175956_init_new02/migration.sql @@ -0,0 +1,9 @@ +/* + Warnings: + + - You are about to drop the column `latest003` on the `Admin` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "Admin" DROP COLUMN "latest003", +ADD COLUMN "latest002" TEXT NOT NULL DEFAULT '003'; diff --git a/prisma/migrations/20250330180501_init_new02/migration.sql b/prisma/migrations/20250330180501_init_new02/migration.sql new file mode 100644 index 000000000..54530941e --- /dev/null +++ b/prisma/migrations/20250330180501_init_new02/migration.sql @@ -0,0 +1,2 @@ +-- DropIndex +DROP INDEX "Parent_memberId_key"; diff --git a/prisma/migrations/20250330181106_init_new033/migration.sql b/prisma/migrations/20250330181106_init_new033/migration.sql new file mode 100644 index 000000000..b02c3c4df --- /dev/null +++ b/prisma/migrations/20250330181106_init_new033/migration.sql @@ -0,0 +1,5 @@ +-- DropIndex +DROP INDEX "Belt_instructorID_key"; + +-- DropIndex +DROP INDEX "Belt_memberId_key"; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index f52647be9..64007fc21 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -14,165 +14,177 @@ datasource db { } model Academy { - id Int @id @default(autoincrement()) - academyName String - academyOwnerId Int - + id Int @id @default(autoincrement()) + academyName String + academyLogo String? + academyOwnerId String + academyIsActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt } - model Admin { - id String @id - username String @unique - email String @unique + id String @id + latest002 String @default("003") + username String @unique + email String @unique } +/** + * model Profile { + * id String @id @default(cuid()) + * name String + * surname String + * email String? @unique + * phone String? + * address String? + * img String? + * bloodType BloodType? + * isBloodDonor Boolean? @default(false) + * sex MemberSex? + * createdAt DateTime @default(now()) + * updatedAt DateTime @updatedAt + * belt Belt[] + * //1 to 1 relationship with a member + * memberId String? @unique + * member Member? @relation(fields: [memberId], references: [id]) + * //1 to 1 relationship with a parent + * parentId String? @unique + * parent Parent? @relation(fields: [parentId], references: [id]) + * instructorId String? @unique + * instructor Instructor? @relation(fields: [instructorId], references: [id]) + * certifications Certifications[] + * } + */ + model Member { - id String @id + id String @id @default(cuid()) username String @unique - name String - surname String - email String? @unique - phone String? - address String? - img String? - bloodType String? - sex MemberSex - createdOn DateTime @default(now()) - - attendance Attendance[] - - hmdBeltId Int - hmdBelt HMDBelts @relation(fields:[hmdBeltId], references: [id]) - - kickBeltId Int - kickBelt KickBelts @relation(fields:[kickBeltId], references: [id]) - - parentId String - parent Parent @relation(fields: [parentId], references: [id]) - - lessons Lesson[] - certifications Certifications[] - + + name String + surname String + email String? @unique + phone String? + address String? + img String? + bloodType BloodType? + isBloodDonor Boolean? @default(false) + sex MemberSex? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + belt Belt[] + certification Certifications[] + memberMetrics MemberEvents[] + parent Parent[] +} + +model MemberEvents { + id String @id @default(cuid()) + weight Float + height Float + event String + dateofentry DateTime @default(now()) + + memberId String + member Member @relation(fields: [memberId], references: [id]) } model Parent { - id String @id + id String @id @default(cuid()) username String @unique - name String - surname String - email String? @unique - phone String? - address String? - createdOn DateTime @default(now()) - children Member[] + + name String + surname String + email String? @unique + phone String? + address String? + img String? + bloodType BloodType? + isBloodDonor Boolean? @default(false) + sex MemberSex? + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + memberId String + member Member @relation(fields: [memberId], references: [id]) } - model Teacher{ - id String @id - username String @unique - name String - surname String - email String? @unique - phone String? - address String? - img String? - bloodType String? - sex MemberSex - createdOn DateTime @default(now()) - - lessons Lesson[] - classes Class[] - certifications Certifications[] - } - - model Class{ - id Int @id @default(autoincrement()) - className String - classDescription String - capacity Int - day Day - startTime DateTime - endTime DateTime - - lessons Lesson[] - attendance Attendance[] - - teacherId String - teacher Teacher @relation(fields: [teacherId], references: [id]) - - } - - model Lesson{ - id Int @id @default(autoincrement()) - lessonName String @unique - lessonDescription String - - teacherId String - Teacher Teacher @relation(fields: [teacherId], references: [id]) - classId Int - class Class @relation(fields: [classId], references: [id]) - memberId String - member Member @relation(fields:[memberId], references:[id]) - } - - model HMDBelts{ - id Int @id @default(autoincrement()) - level String @unique - img String? - members Member[] - } - - model KickBelts{ - id Int @id @default(autoincrement()) - level String @unique - - members Member[] - } - - model Certifications { - id Int @id @default(autoincrement()) - certName String - certDescription String - certCircle Itteration - - memberId String - member Member @relation(fields:[memberId], references:[id]) - teacherId String - Teacher Teacher @relation(fields: [teacherId], references: [id]) - } - - model Attendance { - id Int @id @default(autoincrement()) - date DateTime - present Boolean - - memberId String - member Member @relation(fields:[memberId], references: [id]) - classId Int - class Class @relation(fields: [classId], references: [id]) - } - - model Announcements{ - id Int @id @default(autoincrement()) - title String - description String - date DateTime - - } - - model Events{ - id Int @id @default(autoincrement()) - startTime DateTime - endTime DateTime - title String - description String - } - - - - -enum MemberSex{ +model Instructor { + id String @id @default(cuid()) + username String @unique + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + name String + surname String + email String? @unique + phone String? + address String? + img String? + bloodType BloodType? + isBloodDonor Boolean? @default(false) + sex MemberSex? + + belt Belt[] +} + +model Class { + id Int @id @default(autoincrement()) + className String + classDescription String + capacity Int + day Day + startTime DateTime + endTime DateTime +} + +model MartialArtsDiscipline { + id String @id @default(cuid()) + artName String + artDescription String + belts Belt[] +} + +model Belt { + id String @id @default(cuid()) + beltName String + martialArtsDisciplineId String + martialArtsDiscipline MartialArtsDiscipline @relation(fields: [martialArtsDisciplineId], references: [id]) + + instructorID String + instructor Instructor @relation(fields: [instructorID], references: [id]) + + memberId String + member Member @relation(fields: [memberId], references: [id]) +} + +model Certifications { + id String @id @default(cuid()) + certName String + certDescription String + certCircle Itteration + + memberId String @unique + member Member @relation(fields: [memberId], references: [id]) +} + +model Announcements { + id Int @id @default(autoincrement()) + title String + description String + date DateTime +} + +model Events { + id Int @id @default(autoincrement()) + startTime DateTime + endTime DateTime + title String + description String +} + +enum MemberSex { MALE FEMALE } @@ -193,4 +205,15 @@ enum Day { FRIDAY SATURDAY SUNDAY -} \ No newline at end of file +} + +enum BloodType { + A_POSITIVE + A_NEGATIVE + B_POSITIVE + B_NEGATIVE + AB_POSITIVE + AB_NEGATIVE + O_POSITIVE + O_NEGATIVE +} diff --git a/prisma/seed.ts b/prisma/seed.ts index a15ebfe61..ab01cde33 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,106 +1,154 @@ -import { PrismaClient } from '@prisma/client'; -import { faker } from '@faker-js/faker'; +import { PrismaClient } from "@prisma/client"; +import { faker } from "@faker-js/faker"; const prisma = new PrismaClient(); async function main() { - // Generate 50 Parents - const parents = Array.from({ length: 50 }, (_, i) => ({ - id: `parent-${i + 1}`, - username: `parentuser${i + 1}`, - name: faker.person.firstName(), - surname: faker.person.lastName(), - email: faker.internet.email(), - phone: faker.phone.number(), - address: faker.location.streetAddress(), - createdOn: new Date(), - })); - await prisma.parent.createMany({ data: parents }); - -// Generate HMD Belts -const hmdBelts = [ - { level: 'White Belt' }, - { level: 'Yellow Belt' }, - { level: 'Orange Belt' }, - { level: 'Green Belt' }, - { level: 'Black Belt' }, -]; -await prisma.hMDBelts.createMany({ data: hmdBelts }); + // Seed Academy + const academy = await prisma.academy.create({ + data: { + academyName: faker.company.name(), + academyOwnerId: faker.string.uuid(), + academyIsActive: true, + }, + }); -// Generate Kick Belts -const kickBelts = [ - { level: 'White Belt' }, - { level: 'Yellow Belt' }, - { level: 'Orange Belt' }, - { level: 'Green Belt' }, - { level: 'Black Belt' }, -]; -await prisma.kickBelts.createMany({ data: kickBelts }); + // Seed Admins + for (let i = 0; i < 2; i++) { + await prisma.admin.create({ + data: { + id: faker.string.uuid(), + latest002: faker.lorem.word(), + username: faker.internet.userName(), + email: faker.internet.email(), + }, + }); + } - // Generate 20 Teachers - const teachers = Array.from({ length: 20 }, (_, i) => ({ - id: `teacher-${i + 1}`, - username: `teacheruser${i + 1}`, - name: faker.person.firstName(), - surname: faker.person.lastName(), - email: faker.internet.email(), - phone: faker.phone.number(), - address: faker.location.streetAddress(), - img: `https://i.pravatar.cc/300?img=${i+1}`, - bloodType: faker.helpers.arrayElement(['A+', 'A-', 'B+', 'B-', 'O+', 'O-', 'AB+', 'AB-']), - sex: faker.helpers.arrayElement(['MALE', 'FEMALE']), - createdOn: new Date(), - })); - await prisma.teacher.createMany({ data: teachers }); + // Seed Martial Arts Disciplines + const disciplines = await Promise.all( + ["Kickboxing", "Hwal Moo Do", "Tang Soo Do"].map(async (artName) => { + return prisma.martialArtsDiscipline.create({ + data: { + artName, + artDescription: faker.lorem.sentence(), + }, + }); + }) + ); - // Generate 50 Members - const members = Array.from({ length: 50 }, (_, i) => ({ - id: `member-${i + 1}`, - username: `memberuser${i + 1}`, - name: faker.person.firstName(), - surname: faker.person.lastName(), - email: faker.internet.email(), - phone: faker.phone.number(), - address: faker.location.streetAddress(), - img: faker.image.avatar(), - bloodType: faker.helpers.arrayElement(['A+', 'A-', 'B+', 'B-', 'O+', 'O-', 'AB+', 'AB-']), - sex: faker.helpers.arrayElement(['MALE', 'FEMALE']), - createdOn: new Date(), - hmdBeltId: faker.number.int({ min: 1, max: 5 }), // Assuming 5 HMD Belts exist - kickBeltId: faker.number.int({ min: 1, max: 5 }), // Assuming 5 Kick Belts exist - parentId: `parent-${faker.number.int({ min: 1, max: 50 })}`, - })); - await prisma.member.createMany({ data: members }); + // Seed Members + const memberIds: string[] = []; + for (let i = 0; i < 80; i++) { + const member = await prisma.member.create({ + data: { + id: faker.string.uuid(), + username: faker.internet.userName(), + name: faker.person.firstName(), + surname: faker.person.lastName(), + email: faker.internet.email(), + phone: faker.phone.number(), + address: faker.location.streetAddress(), + bloodType: faker.helpers.arrayElement([ + "A_POSITIVE", + "A_NEGATIVE", + "B_POSITIVE", + "B_NEGATIVE", + "AB_POSITIVE", + "AB_NEGATIVE", + "O_POSITIVE", + "O_NEGATIVE", + ]), + isBloodDonor: faker.datatype.boolean(), + sex: faker.helpers.arrayElement(["MALE", "FEMALE"]), + }, + }); + memberIds.push(member.id); + } - // Generate Academies - const academies = [ - { academyName: 'Elite Academy', academyOwnerId: 1 }, - { academyName: 'Champion Academy', academyOwnerId: 2 }, - ]; - await prisma.academy.createMany({ data: academies }); + // Seed Parents + for (let i = 0; i < 30; i++) { + await prisma.parent.create({ + data: { + id: faker.string.uuid(), + username: faker.internet.userName(), + name: faker.person.firstName(), + surname: faker.person.lastName(), + email: faker.internet.email(), + phone: faker.phone.number(), + address: faker.location.streetAddress(), + bloodType: faker.helpers.arrayElement([ + "A_POSITIVE", + "A_NEGATIVE", + "B_POSITIVE", + "B_NEGATIVE", + "AB_POSITIVE", + "AB_NEGATIVE", + "O_POSITIVE", + "O_NEGATIVE", + ]), + isBloodDonor: faker.datatype.boolean(), + sex: faker.helpers.arrayElement(["MALE", "FEMALE"]), + memberId: faker.helpers.arrayElement(memberIds), + }, + }); + } - + // Seed Instructors + const instructorIds: string[] = []; + for (let i = 0; i < 15; i++) { + const instructor = await prisma.instructor.create({ + data: { + id: faker.string.uuid(), + username: faker.internet.userName(), + name: faker.person.firstName(), + surname: faker.person.lastName(), + email: faker.internet.email(), + phone: faker.phone.number(), + address: faker.location.streetAddress(), + bloodType: faker.helpers.arrayElement([ + "A_POSITIVE", + "A_NEGATIVE", + "B_POSITIVE", + "B_NEGATIVE", + "AB_POSITIVE", + "AB_NEGATIVE", + "O_POSITIVE", + "O_NEGATIVE", + ]), + isBloodDonor: faker.datatype.boolean(), + sex: faker.helpers.arrayElement(["MALE", "FEMALE"]), + }, + }); + instructorIds.push(instructor.id); + } - // Generate Classes - const classes = Array.from({ length: 10 }, (_, i) => ({ - className: faker.company.name(), - classDescription: faker.company.catchPhrase(), - capacity: faker.number.int({ min: 10, max: 50 }), - day: faker.helpers.arrayElement(['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY']), - startTime: faker.date.future(), - endTime: faker.date.future(), - teacherId: `teacher-${faker.number.int({ min: 1, max: 20 })}`, - })); - await prisma.class.createMany({ data: classes }); + // Seed Belts for each discipline + const beltNames = ["White", "Yellow", "Orange", "Green", "Blue", "Brown", "Red", "Black"]; + await Promise.all( + disciplines.map(async (discipline) => { + await Promise.all( + beltNames.map(async (beltName, index) => { + await prisma.belt.create({ + data: { + beltName, + martialArtsDisciplineId: discipline.id, + instructorID: instructorIds[index % instructorIds.length], // Assign instructors in rotation + memberId: memberIds[index % memberIds.length], // Assign members in rotation + }, + }); + }) + ); + }) + ); - console.log('Seed data created successfully!'); + console.log("Database seeded successfully!"); } main() + .then(() => prisma.$disconnect()) .catch((e) => { console.error(e); + prisma.$disconnect(); process.exit(1); - }) - .finally(async () => { - await prisma.$disconnect(); }); diff --git a/src/app/(dashboard)/list/belts/page.tsx b/src/app/(dashboard)/list/belts/page.tsx deleted file mode 100644 index 9cc77d5ca..000000000 --- a/src/app/(dashboard)/list/belts/page.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import FormModal from "@/components/FormModal"; -import Pagination from "@/components/Pagination"; -import Table from "@/components/Table"; -import TableSearch from "@/components/TableSearch"; -import { role, teachersData } from "@/lib/data"; -import prisma from "@/lib/prisma"; -import { Teacher } from "@prisma/client"; -import Image from "next/image"; -import Link from "next/link"; -import { ITEMS_PER_PAGE } from "@/lib/settings"; -import { count } from "console"; - - - - -const columns = [ - { - header:"info", accessor:"info" - }, - { - header:"Bloodtype", - accessor:"bloodType", - className:"hidden lg:table-cell" - }, - { - header:"Phone", - accessor:"phone", - className:"hidden lg:table-cell" - }, - { - header:"Address", - accessor:"address", - className:"hidden lg:table-cell" - }, - { - header:"Actions", - accessor:"actions", - }, -]; - -const renderRow = (item:Teacher)=>( - - - - - - - -); - -const BeltsListPage = async ({searchParams}: - { - searchParams:{[key:string]:string | undefined}; - } -) => { - - - const {page, ...queryParams} = searchParams; - - const p = page ? parseInt(page) : 1; - - const [data, countItems] = await prisma.$transaction([ - prisma.teacher.findMany( - { - take:ITEMS_PER_PAGE, - skip: ITEMS_PER_PAGE *(p - 1), - } - ), - prisma.teacher.count(), - ]); - - return ( -
- {/* TOP SECTION*/} -
-

Teachers

{countItems} total Teachers

-
- -
- - - {role === "admin" && ( - // - - )} -
-
-
- {/* LIST SECTION*/} -
- -
-

{item.name} {item.surname}

-

{item?.email}

-
-
{item.bloodType}{item.phone}{item?.address} -
- - - - { - role==="admin" && - ( - <> - - - - - ) - } - -
-
- {/* PAGINATION SECTION*/} - - - ) -} - -export default BeltsListPage \ No newline at end of file diff --git a/src/app/(dashboard)/list/teachers/page.tsx b/src/app/(dashboard)/list/teachers/page.tsx index bb4d06a15..d98d6130c 100644 --- a/src/app/(dashboard)/list/teachers/page.tsx +++ b/src/app/(dashboard)/list/teachers/page.tsx @@ -4,7 +4,7 @@ import Table from "@/components/Table"; import TableSearch from "@/components/TableSearch"; import { role, teachersData } from "@/lib/data"; import prisma from "@/lib/prisma"; -import { Teacher } from "@prisma/client"; +import { Instructor } from "@prisma/client"; import Image from "next/image"; import Link from "next/link"; import { ITEMS_PER_PAGE } from "@/lib/settings"; @@ -38,7 +38,7 @@ const columns = [ }, ]; -const renderRow = (item:Teacher)=>( +const renderRow = (item:Instructor)=>( ); -const TeachersListPage = async ({searchParams}: +const InstructorListPage = async ({searchParams}: { searchParams:{[key:string]:string | undefined}; } ) => { - const {page, ...queryParams} = searchParams; + const {page, ...queryParams} = await searchParams; const p = page ? parseInt(page) : 1; const [data, countItems] = await prisma.$transaction([ - prisma.teacher.findMany( + prisma.instructor.findMany( { take:ITEMS_PER_PAGE, skip: ITEMS_PER_PAGE *(p - 1), } ), - prisma.teacher.count(), + prisma.instructor.count(), ]); + + console.log("resolving " + countItems); return (
{/* TOP SECTION*/}
-

Teachers

{countItems} total Teachers

+

Instructors (Δάσκαλοι)

{countItems} total Teachers

@@ -118,7 +119,7 @@ const TeachersListPage = async ({searchParams}: // - + )}
@@ -131,4 +132,4 @@ const TeachersListPage = async ({searchParams}: ) } -export default TeachersListPage \ No newline at end of file +export default InstructorListPage \ No newline at end of file diff --git a/src/components/FormModal.tsx b/src/components/FormModal.tsx index b2ae381d2..1850b130d 100644 --- a/src/components/FormModal.tsx +++ b/src/components/FormModal.tsx @@ -7,7 +7,7 @@ import { useState } from "react"; // import MemberForm from "./forms/MemberForm"; -const TeacherForm = dynamic(()=>import("./forms/TeacherForm"),{ +const InstructorForm = dynamic(()=>import("./forms/InstructorForm"),{ loading:()=>

Loading...

}); const MemberForm = dynamic(()=>import("./forms/MemberForm"),{ @@ -17,13 +17,13 @@ const MemberForm = dynamic(()=>import("./forms/MemberForm"),{ const forms :{[key:string]:(type:"create" | "update" , data?:any)=>JSX.Element; }={ - teacher: (type,data) => , + instructor: (type,data) => , student: (type, data) => , }; const FormModal = ({table, type, data, id}:{ table: - | "teacher" + | "instructor" | "student" | "parent" | "class" diff --git a/src/components/forms/TeacherForm.tsx b/src/components/forms/InstructorForm.tsx similarity index 99% rename from src/components/forms/TeacherForm.tsx rename to src/components/forms/InstructorForm.tsx index 55b0f7cad..ba506b320 100644 --- a/src/components/forms/TeacherForm.tsx +++ b/src/components/forms/InstructorForm.tsx @@ -28,7 +28,7 @@ const schema = z.object({ type Inputs = z.infer; -const TeacherForm = ({ +const InstructorForm = ({ type, data }:{ @@ -157,4 +157,4 @@ const TeacherForm = ({ ) } -export default TeacherForm \ No newline at end of file +export default InstructorForm \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 79c1068ce..01731839a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,10 @@ { "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -19,9 +23,20 @@ } ], "paths": { - "@/*": ["./src/*"] - } + "@/*": [ + "./src/*" + ] + }, + "target": "ES2017" }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + "prisma/seed.js" + ], + "exclude": [ + "node_modules" + ] } From fa4fead3f022a8bc9ae88d6752268b0d8984b5d2 Mon Sep 17 00:00:00 2001 From: George Antzoulis Date: Tue, 22 Apr 2025 00:18:04 +0300 Subject: [PATCH 35/35] Fixes befor crunch --- package-lock.json | 46 +++++++++++-------- package.json | 4 +- .../20250414181622_additions/migration.sql | 16 +++++++ .../20250418161719_additions_2/migration.sql | 5 ++ .../20250420093858_additions_3/migration.sql | 16 +++++++ prisma/schema.prisma | 20 ++++---- .../{teachers => instructors}/[id]/bck.tsx | 0 .../{teachers => instructors}/[id]/page.tsx | 0 .../[id]/page_.bck.tsx | 0 .../list/{teachers => instructors}/page.tsx | 19 ++++++-- src/components/AttendanceChart.tsx | 45 +++++++++--------- src/components/EventCalendar.tsx | 4 +- src/components/forms/InstructorForm.tsx | 2 +- 13 files changed, 119 insertions(+), 58 deletions(-) create mode 100644 prisma/migrations/20250414181622_additions/migration.sql create mode 100644 prisma/migrations/20250418161719_additions_2/migration.sql create mode 100644 prisma/migrations/20250420093858_additions_3/migration.sql rename src/app/(dashboard)/list/{teachers => instructors}/[id]/bck.tsx (100%) rename src/app/(dashboard)/list/{teachers => instructors}/[id]/page.tsx (100%) rename src/app/(dashboard)/list/{teachers => instructors}/[id]/page_.bck.tsx (100%) rename src/app/(dashboard)/list/{teachers => instructors}/page.tsx (88%) diff --git a/package-lock.json b/package-lock.json index 0f9a8ef6f..d2cebe9d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,10 +17,10 @@ "next": "^15.2.4", "react": "^18", "react-big-calendar": "^1.14.1", - "react-calendar": "^5.0.0", + "react-calendar": "^5.1.0", "react-dom": "^18", "react-hook-form": "^7.53.2", - "recharts": "^2.12.7", + "recharts": "^2.15.3", "zod": "^3.23.8" }, "devDependencies": { @@ -3467,9 +3467,9 @@ "license": "MIT" }, "node_modules/fast-equals": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", - "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz", + "integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==", "license": "MIT", "engines": { "node": ">=6.0.0" @@ -5661,9 +5661,9 @@ } }, "node_modules/react-calendar": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-5.0.0.tgz", - "integrity": "sha512-bHcE5e5f+VUKLd4R19BGkcSQLpuwjKBVG0fKz74cwPW5xDfNsReHdDbfd4z3mdjuUuZzVtw4Q920mkwK5/ZOEg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-5.1.0.tgz", + "integrity": "sha512-09o/rQHPZGEi658IXAJtWfra1N69D1eFnuJ3FQm9qUVzlzNnos1+GWgGiUeSs22QOpNm32aoVFOimq0p3Ug9Eg==", "license": "MIT", "dependencies": { "@wojtekmaj/date-utils": "^1.1.3", @@ -5747,9 +5747,9 @@ } }, "node_modules/react-smooth": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", - "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", + "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", "license": "MIT", "dependencies": { "fast-equals": "^5.0.1", @@ -5757,8 +5757,8 @@ "react-transition-group": "^4.4.5" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-transition-group": { @@ -5801,16 +5801,16 @@ } }, "node_modules/recharts": { - "version": "2.12.7", - "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.7.tgz", - "integrity": "sha512-hlLJMhPQfv4/3NBSAyq3gzGg4h2v69RJh6KU7b3pXYNNAELs9kEoXOjbkxdXpALqKBoVmVptGfLpxdaVYqjmXQ==", + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.3.tgz", + "integrity": "sha512-EdOPzTwcFSuqtvkDoaM5ws/Km1+WTAO2eizL7rqiG0V2UVhTnz0m7J2i0CjVPUCdEkZImaWvXLbZDS2H5t6GFQ==", "license": "MIT", "dependencies": { "clsx": "^2.0.0", "eventemitter3": "^4.0.1", "lodash": "^4.17.21", - "react-is": "^16.10.2", - "react-smooth": "^4.0.0", + "react-is": "^18.3.1", + "react-smooth": "^4.0.4", "recharts-scale": "^0.4.4", "tiny-invariant": "^1.3.1", "victory-vendor": "^36.6.8" @@ -5819,8 +5819,8 @@ "node": ">=14" }, "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/recharts-scale": { @@ -5832,6 +5832,12 @@ "decimal.js-light": "^2.4.1" } }, + "node_modules/recharts/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", diff --git a/package.json b/package.json index caf2b9c92..d6f6d73be 100644 --- a/package.json +++ b/package.json @@ -18,10 +18,10 @@ "next": "^15.2.4", "react": "^18", "react-big-calendar": "^1.14.1", - "react-calendar": "^5.0.0", + "react-calendar": "^5.1.0", "react-dom": "^18", "react-hook-form": "^7.53.2", - "recharts": "^2.12.7", + "recharts": "^2.15.3", "zod": "^3.23.8" }, "devDependencies": { diff --git a/prisma/migrations/20250414181622_additions/migration.sql b/prisma/migrations/20250414181622_additions/migration.sql new file mode 100644 index 000000000..29afcf5ee --- /dev/null +++ b/prisma/migrations/20250414181622_additions/migration.sql @@ -0,0 +1,16 @@ +-- AlterTable +ALTER TABLE "Member" ADD COLUMN "firebaseId" TEXT; + +-- CreateTable +CREATE TABLE "MemberMetrics" ( + "id" TEXT NOT NULL, + "weight" DOUBLE PRECISION NOT NULL, + "height" DOUBLE PRECISION NOT NULL, + "dateofentry" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "memberId" TEXT NOT NULL, + + CONSTRAINT "MemberMetrics_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "MemberMetrics" ADD CONSTRAINT "MemberMetrics_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "Member"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20250418161719_additions_2/migration.sql b/prisma/migrations/20250418161719_additions_2/migration.sql new file mode 100644 index 000000000..2bf9ce36b --- /dev/null +++ b/prisma/migrations/20250418161719_additions_2/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "Academy" ADD COLUMN "memberId" TEXT; + +-- AddForeignKey +ALTER TABLE "Academy" ADD CONSTRAINT "Academy_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "Member"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/20250420093858_additions_3/migration.sql b/prisma/migrations/20250420093858_additions_3/migration.sql new file mode 100644 index 000000000..5e66e1836 --- /dev/null +++ b/prisma/migrations/20250420093858_additions_3/migration.sql @@ -0,0 +1,16 @@ +-- CreateTable +CREATE TABLE "_InstructorToMartialArtsDiscipline" ( + "A" TEXT NOT NULL, + "B" TEXT NOT NULL, + + CONSTRAINT "_InstructorToMartialArtsDiscipline_AB_pkey" PRIMARY KEY ("A","B") +); + +-- CreateIndex +CREATE INDEX "_InstructorToMartialArtsDiscipline_B_index" ON "_InstructorToMartialArtsDiscipline"("B"); + +-- AddForeignKey +ALTER TABLE "_InstructorToMartialArtsDiscipline" ADD CONSTRAINT "_InstructorToMartialArtsDiscipline_A_fkey" FOREIGN KEY ("A") REFERENCES "Instructor"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_InstructorToMartialArtsDiscipline" ADD CONSTRAINT "_InstructorToMartialArtsDiscipline_B_fkey" FOREIGN KEY ("B") REFERENCES "MartialArtsDiscipline"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 64007fc21..fc428c1b9 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -21,6 +21,8 @@ model Academy { academyIsActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt + Member Member? @relation(fields: [memberId], references: [id]) + memberId String? } model Admin { @@ -58,9 +60,9 @@ model Admin { */ model Member { - id String @id @default(cuid()) - username String @unique - + id String @id @default(cuid()) + username String @unique + firebaseId String? name String surname String email String? @unique @@ -75,15 +77,15 @@ model Member { belt Belt[] certification Certifications[] - memberMetrics MemberEvents[] + memberMetrics MemberMetrics[] parent Parent[] + academy Academy[] } -model MemberEvents { +model MemberMetrics { id String @id @default(cuid()) weight Float height Float - event String dateofentry DateTime @default(now()) memberId String @@ -126,7 +128,8 @@ model Instructor { isBloodDonor Boolean? @default(false) sex MemberSex? - belt Belt[] + disciplines MartialArtsDiscipline[] + Belt Belt[] } model Class { @@ -140,10 +143,11 @@ model Class { } model MartialArtsDiscipline { - id String @id @default(cuid()) + id String @id @default(cuid()) artName String artDescription String belts Belt[] + instructor Instructor[] } model Belt { diff --git a/src/app/(dashboard)/list/teachers/[id]/bck.tsx b/src/app/(dashboard)/list/instructors/[id]/bck.tsx similarity index 100% rename from src/app/(dashboard)/list/teachers/[id]/bck.tsx rename to src/app/(dashboard)/list/instructors/[id]/bck.tsx diff --git a/src/app/(dashboard)/list/teachers/[id]/page.tsx b/src/app/(dashboard)/list/instructors/[id]/page.tsx similarity index 100% rename from src/app/(dashboard)/list/teachers/[id]/page.tsx rename to src/app/(dashboard)/list/instructors/[id]/page.tsx diff --git a/src/app/(dashboard)/list/teachers/[id]/page_.bck.tsx b/src/app/(dashboard)/list/instructors/[id]/page_.bck.tsx similarity index 100% rename from src/app/(dashboard)/list/teachers/[id]/page_.bck.tsx rename to src/app/(dashboard)/list/instructors/[id]/page_.bck.tsx diff --git a/src/app/(dashboard)/list/teachers/page.tsx b/src/app/(dashboard)/list/instructors/page.tsx similarity index 88% rename from src/app/(dashboard)/list/teachers/page.tsx rename to src/app/(dashboard)/list/instructors/page.tsx index d98d6130c..85ea1799c 100644 --- a/src/app/(dashboard)/list/teachers/page.tsx +++ b/src/app/(dashboard)/list/instructors/page.tsx @@ -4,19 +4,24 @@ import Table from "@/components/Table"; import TableSearch from "@/components/TableSearch"; import { role, teachersData } from "@/lib/data"; import prisma from "@/lib/prisma"; -import { Instructor } from "@prisma/client"; +import { Instructor, MartialArtsDiscipline } from "@prisma/client"; import Image from "next/image"; import Link from "next/link"; import { ITEMS_PER_PAGE } from "@/lib/settings"; import { count } from "console"; - +type InstsuctorList = Instructor & {disciplines:MartialArtsDiscipline[]} const columns = [ { header:"info", accessor:"info" }, + { + header:"Disciplines", + accessor:"disciplines", + className:"hidden lg:table-cell" + }, { header:"Bloodtype", accessor:"bloodType", @@ -38,7 +43,7 @@ const columns = [ }, ]; -const renderRow = (item:Instructor)=>( +const renderRow = (item:InstsuctorList)=>(
+ + @@ -94,12 +101,16 @@ const InstructorListPage = async ({searchParams}: { take:ITEMS_PER_PAGE, skip: ITEMS_PER_PAGE *(p - 1), + include:{ + disciplines:true, + } } ), prisma.instructor.count(), ]); console.log("resolving " + countItems); + return (
@@ -119,7 +130,7 @@ const InstructorListPage = async ({searchParams}: // - + )}
diff --git a/src/components/AttendanceChart.tsx b/src/components/AttendanceChart.tsx index 32a75f433..81a1a012a 100644 --- a/src/components/AttendanceChart.tsx +++ b/src/components/AttendanceChart.tsx @@ -40,27 +40,30 @@ const AttendanceChart = () => {

Attendance

- - - - - - - - - - - + + + + + + + + + + + + + + ) diff --git a/src/components/EventCalendar.tsx b/src/components/EventCalendar.tsx index aa94ddad1..c0869128d 100644 --- a/src/components/EventCalendar.tsx +++ b/src/components/EventCalendar.tsx @@ -1,4 +1,4 @@ -"use client"; +'use client'; import Image from "next/image"; import { useState } from "react"; @@ -33,7 +33,7 @@ const EventCalendar = () => { const [value, onChange] = useState(new Date()); return (
- + {/* */}

Events

diff --git a/src/components/forms/InstructorForm.tsx b/src/components/forms/InstructorForm.tsx index ba506b320..ec605dba6 100644 --- a/src/components/forms/InstructorForm.tsx +++ b/src/components/forms/InstructorForm.tsx @@ -57,7 +57,7 @@ const InstructorForm = ({ Authentication Infromation -
+
( role==="admin" && ( <> - - + + ) } -
(

{item?.email}

{item.disciplines.map(disc=>disc.artName).join(",")} {item.bloodType} {item.phone} {item?.address}