From 063c499ff46125092d2e566c07b0bc446ee451bf Mon Sep 17 00:00:00 2001 From: alexisvvega Date: Fri, 30 May 2025 18:47:29 -0700 Subject: [PATCH 1/2] created the structure for the admin portal --- admin-portal/package-lock.json | 105 ++++++++++++ admin-portal/public/Primary-Liberation.svg | 23 +++ admin-portal/public/editor.svg | 3 + admin-portal/public/statistics.svg | 3 + admin-portal/public/user-settings.svg | 3 + admin-portal/src/app/page.module.css | 186 +++++---------------- admin-portal/src/app/page.tsx | 113 ++++--------- 7 files changed, 203 insertions(+), 233 deletions(-) create mode 100644 admin-portal/public/Primary-Liberation.svg create mode 100644 admin-portal/public/editor.svg create mode 100644 admin-portal/public/statistics.svg create mode 100644 admin-portal/public/user-settings.svg diff --git a/admin-portal/package-lock.json b/admin-portal/package-lock.json index e14a8f0..09f086e 100644 --- a/admin-portal/package-lock.json +++ b/admin-portal/package-lock.json @@ -5085,6 +5085,111 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.2.tgz", + "integrity": "sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.2.tgz", + "integrity": "sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.2.tgz", + "integrity": "sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.2.tgz", + "integrity": "sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.2.tgz", + "integrity": "sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.2.tgz", + "integrity": "sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.2.tgz", + "integrity": "sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } } } diff --git a/admin-portal/public/Primary-Liberation.svg b/admin-portal/public/Primary-Liberation.svg new file mode 100644 index 0000000..30c008c --- /dev/null +++ b/admin-portal/public/Primary-Liberation.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/admin-portal/public/editor.svg b/admin-portal/public/editor.svg new file mode 100644 index 0000000..ab7d6fb --- /dev/null +++ b/admin-portal/public/editor.svg @@ -0,0 +1,3 @@ + + + diff --git a/admin-portal/public/statistics.svg b/admin-portal/public/statistics.svg new file mode 100644 index 0000000..09981f9 --- /dev/null +++ b/admin-portal/public/statistics.svg @@ -0,0 +1,3 @@ + + + diff --git a/admin-portal/public/user-settings.svg b/admin-portal/public/user-settings.svg new file mode 100644 index 0000000..e8ae32a --- /dev/null +++ b/admin-portal/public/user-settings.svg @@ -0,0 +1,3 @@ + + + diff --git a/admin-portal/src/app/page.module.css b/admin-portal/src/app/page.module.css index a11c8f3..06ec86c 100644 --- a/admin-portal/src/app/page.module.css +++ b/admin-portal/src/app/page.module.css @@ -1,168 +1,58 @@ .page { - --gray-rgb: 0, 0, 0; - --gray-alpha-200: rgba(var(--gray-rgb), 0.08); - --gray-alpha-100: rgba(var(--gray-rgb), 0.05); + --background-color: #F6F6EA; + --sidebar-color: #2E563C; + --sidebar-text-color: #F6F6EA; + --main-text-color: #000000; + --sidebar-button-color: #1A3222; - --button-primary-hover: #383838; - --button-secondary-hover: #f2f2f2; - - display: grid; - grid-template-rows: 20px 1fr 20px; - align-items: center; - justify-items: center; - min-height: 100svh; - padding: 80px; - gap: 64px; - font-family: var(--font-geist-sans); -} - -@media (prefers-color-scheme: dark) { - .page { - --gray-rgb: 255, 255, 255; - --gray-alpha-200: rgba(var(--gray-rgb), 0.145); - --gray-alpha-100: rgba(var(--gray-rgb), 0.06); - - --button-primary-hover: #ccc; - --button-secondary-hover: #1a1a1a; - } -} - -.main { - display: flex; - flex-direction: column; - gap: 32px; - grid-row-start: 2; -} - -.main ol { - font-family: var(--font-geist-mono); - padding-left: 0; - margin: 0; - font-size: 14px; - line-height: 24px; - letter-spacing: -0.01em; - list-style-position: inside; -} - -.main li:not(:last-of-type) { - margin-bottom: 8px; -} - -.main code { - font-family: inherit; - background: var(--gray-alpha-100); - padding: 2px 4px; - border-radius: 4px; - font-weight: 600; -} - -.ctas { display: flex; - gap: 16px; + min-height: 100vh; + background-color: var(--background-color); } -.ctas a { - appearance: none; - border-radius: 128px; - height: 48px; - padding: 0 20px; - border: none; - border: 1px solid transparent; - transition: - background 0.2s, - color 0.2s, - border-color 0.2s; - cursor: pointer; +.sidebar { + width: 243px; + background-color: var(--sidebar-color); + color: var(--sidebar-text-color); display: flex; + flex-direction: column; align-items: center; - justify-content: center; - font-size: 16px; - line-height: 20px; - font-weight: 500; -} - -a.primary { - background: var(--foreground); - color: var(--background); - gap: 8px; + padding: 50px 40px 40px; + gap: 26px; } -a.secondary { - border-color: var(--gray-alpha-200); - min-width: 158px; -} - -.footer { - grid-row-start: 3; +.navWrapper { display: flex; - gap: 24px; + flex-direction: column; + gap: 26px; + width: 100%; } -.footer a { +.navButton { display: flex; align-items: center; - gap: 8px; -} - -.footer img { - flex-shrink: 0; + gap: 16px; + width: 163px; + height: 50px; + background-color: var(--sidebar-color); + border: none; + padding: 0px 10px; + border-radius: 8px; + color: var(--sidebar-text-color); + font-size: 16px; + cursor: pointer; + width: 100%; + justify-content: flex-start; + transition: background 0.2s; } -/* Enable hover only on non-touch devices */ -@media (hover: hover) and (pointer: fine) { - a.primary:hover { - background: var(--button-primary-hover); - border-color: transparent; - } - - a.secondary:hover { - background: var(--button-secondary-hover); - border-color: transparent; - } - - .footer a:hover { - text-decoration: underline; - text-underline-offset: 4px; - } +.navButton:hover { + background-color: var(--sidebar-button-color); } -@media (max-width: 600px) { - .page { - padding: 32px; - padding-bottom: 80px; - } - - .main { - align-items: center; - } - - .main ol { - text-align: center; - } - - .ctas { - flex-direction: column; - } - - .ctas a { - font-size: 14px; - height: 40px; - padding: 0 16px; - } - - a.secondary { - min-width: auto; - } - - .footer { - flex-wrap: wrap; - align-items: center; - justify-content: center; - } +.main { + flex-grow: 1; + padding: 32px; + color: var(--main-text-color); } -@media (prefers-color-scheme: dark) { - .logo { - filter: invert(); - } -} diff --git a/admin-portal/src/app/page.tsx b/admin-portal/src/app/page.tsx index 84af2cb..4faabaf 100644 --- a/admin-portal/src/app/page.tsx +++ b/admin-portal/src/app/page.tsx @@ -1,95 +1,38 @@ import Image from "next/image"; + import styles from "./page.module.css"; -export default function Home() { +export default function AdminHome() { return (
-
- Next.js logo -
    -
  1. - Get started by editing src/app/page.tsx. -
  2. -
  3. Save and see your changes instantly.
  4. -
- -
- - Vercel logomark - Deploy now - - - Read our docs - -
-
- +
+ + + + +
+
); } From 1c02b7838857d03fe3c995d8be848ad4af8d3795 Mon Sep 17 00:00:00 2001 From: alexisvvega Date: Fri, 30 May 2025 18:48:08 -0700 Subject: [PATCH 2/2] created the structure for the admin portal --- admin-portal/.eslintrc.json | 15 ++------------- admin-portal/src/app/layout.tsx | 7 +++---- admin-portal/src/app/page.module.css | 11 +++++------ admin-portal/src/app/page.tsx | 3 +-- 4 files changed, 11 insertions(+), 25 deletions(-) diff --git a/admin-portal/.eslintrc.json b/admin-portal/.eslintrc.json index 73979bf..22166f6 100644 --- a/admin-portal/.eslintrc.json +++ b/admin-portal/.eslintrc.json @@ -15,10 +15,7 @@ // From https://github.com/TritonSE/linters/blob/main/nextjs.eslintrc.json // Avoid bugs. - "@typescript-eslint/no-shadow": [ - "error", - { "ignoreTypeValueShadow": true } - ], + "@typescript-eslint/no-shadow": ["error", { "ignoreTypeValueShadow": true }], "@typescript-eslint/no-unsafe-unary-minus": "error", "@typescript-eslint/no-unused-expressions": "error", "@typescript-eslint/no-unused-vars": [ @@ -57,15 +54,7 @@ "warn", { "alphabetize": { "order": "asc" }, - "groups": [ - "builtin", - "external", - "parent", - "sibling", - "index", - "object", - "type" - ], + "groups": ["builtin", "external", "parent", "sibling", "index", "object", "type"], "newlines-between": "always" } ], diff --git a/admin-portal/src/app/layout.tsx b/admin-portal/src/app/layout.tsx index 42fc323..8f14a15 100644 --- a/admin-portal/src/app/layout.tsx +++ b/admin-portal/src/app/layout.tsx @@ -1,5 +1,6 @@ -import type { Metadata } from "next"; import { Geist, Geist_Mono } from "next/font/google"; + +import type { Metadata } from "next"; import "./globals.css"; const geistSans = Geist({ @@ -24,9 +25,7 @@ export default function RootLayout({ }>) { return ( - - {children} - + {children} ); } diff --git a/admin-portal/src/app/page.module.css b/admin-portal/src/app/page.module.css index 06ec86c..7b19d1b 100644 --- a/admin-portal/src/app/page.module.css +++ b/admin-portal/src/app/page.module.css @@ -1,9 +1,9 @@ .page { - --background-color: #F6F6EA; - --sidebar-color: #2E563C; - --sidebar-text-color: #F6F6EA; + --background-color: #f6f6ea; + --sidebar-color: #2e563c; + --sidebar-text-color: #f6f6ea; --main-text-color: #000000; - --sidebar-button-color: #1A3222; + --sidebar-button-color: #1a3222; display: flex; min-height: 100vh; @@ -17,7 +17,7 @@ display: flex; flex-direction: column; align-items: center; - padding: 50px 40px 40px; + padding: 50px 40px 40px; gap: 26px; } @@ -55,4 +55,3 @@ padding: 32px; color: var(--main-text-color); } - diff --git a/admin-portal/src/app/page.tsx b/admin-portal/src/app/page.tsx index 4faabaf..0ddf546 100644 --- a/admin-portal/src/app/page.tsx +++ b/admin-portal/src/app/page.tsx @@ -31,8 +31,7 @@ export default function AdminHome() { -
-
+
); }