From 517511ddb41cff3c8f7faf46de4e65ae27595cc6 Mon Sep 17 00:00:00 2001 From: DotNaos Date: Fri, 18 Oct 2024 10:47:23 +0200 Subject: [PATCH] Frontend Setup --- .gitignore | 43 + README.md | 24 + docs/main.tex | 53 + out/main.pdf | Bin 0 -> 59649 bytes package-lock.json | 2538 +++++++++++++++++ package.json | 6 + src/frontend/blackboard/.eslintignore | 20 + src/frontend/blackboard/.eslintrc.json | 92 + src/frontend/blackboard/.gitignore | 35 + src/frontend/blackboard/.npmrc | 1 + src/frontend/blackboard/.vscode/settings.json | 3 + src/frontend/blackboard/LICENSE | 21 + src/frontend/blackboard/README.md | 53 + src/frontend/blackboard/app/error.tsx | 31 + src/frontend/blackboard/app/layout.tsx | 54 + src/frontend/blackboard/app/page.tsx | 3 + src/frontend/blackboard/app/providers.tsx | 22 + .../blackboard/components/BottomNavbar.tsx | 14 + .../blackboard/components/counter.tsx | 14 + src/frontend/blackboard/components/icons.tsx | 215 ++ .../blackboard/components/primitives.ts | 53 + .../blackboard/components/theme-switch.tsx | 81 + src/frontend/blackboard/config/fonts.ts | 11 + src/frontend/blackboard/config/site.ts | 24 + src/frontend/blackboard/next.config.js | 15 + src/frontend/blackboard/package.json | 56 + src/frontend/blackboard/postcss.config.js | 6 + src/frontend/blackboard/public/favicon.ico | Bin 0 -> 25931 bytes src/frontend/blackboard/public/next.svg | 1 + src/frontend/blackboard/public/vercel.svg | 1 + src/frontend/blackboard/styles/globals.css | 7 + src/frontend/blackboard/tailwind.config.js | 21 + src/frontend/blackboard/tsconfig.json | 28 + src/frontend/blackboard/types/index.ts | 5 + src/frontend/blackboard/uno.config.ts | 5 + 35 files changed, 3556 insertions(+) create mode 100644 docs/main.tex create mode 100644 out/main.pdf create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/frontend/blackboard/.eslintignore create mode 100644 src/frontend/blackboard/.eslintrc.json create mode 100644 src/frontend/blackboard/.gitignore create mode 100644 src/frontend/blackboard/.npmrc create mode 100644 src/frontend/blackboard/.vscode/settings.json create mode 100644 src/frontend/blackboard/LICENSE create mode 100644 src/frontend/blackboard/README.md create mode 100644 src/frontend/blackboard/app/error.tsx create mode 100644 src/frontend/blackboard/app/layout.tsx create mode 100644 src/frontend/blackboard/app/page.tsx create mode 100644 src/frontend/blackboard/app/providers.tsx create mode 100644 src/frontend/blackboard/components/BottomNavbar.tsx create mode 100644 src/frontend/blackboard/components/counter.tsx create mode 100644 src/frontend/blackboard/components/icons.tsx create mode 100644 src/frontend/blackboard/components/primitives.ts create mode 100644 src/frontend/blackboard/components/theme-switch.tsx create mode 100644 src/frontend/blackboard/config/fonts.ts create mode 100644 src/frontend/blackboard/config/site.ts create mode 100644 src/frontend/blackboard/next.config.js create mode 100644 src/frontend/blackboard/package.json create mode 100644 src/frontend/blackboard/postcss.config.js create mode 100644 src/frontend/blackboard/public/favicon.ico create mode 100644 src/frontend/blackboard/public/next.svg create mode 100644 src/frontend/blackboard/public/vercel.svg create mode 100644 src/frontend/blackboard/styles/globals.css create mode 100644 src/frontend/blackboard/tailwind.config.js create mode 100644 src/frontend/blackboard/tsconfig.json create mode 100644 src/frontend/blackboard/types/index.ts create mode 100644 src/frontend/blackboard/uno.config.ts diff --git a/.gitignore b/.gitignore index e69de29..a64ee0f 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,43 @@ +# IDE +**/.idea/ + +# dependencies +**/node_modules +**/.pnp +**/.pnp.js + +# testing +**/coverage + +# next.js +**/.next/ +**/out/* + + +# production +**/build + + +# misc +**/.DS_Store +**/*.pem + + +# debug +**/npm-debug.log* +**/yarn-debug.log* +**/yarn-error.log* + +# local env files +**/.env*.local + +# vercel +**/.vercel + +# typescript +**/*.tsbuildinfo +**/next-env.d.ts + +# Latex +!**/out/*.pdf +**/auxil/* diff --git a/README.md b/README.md index e69de29..920649d 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,24 @@ +## Tech Stack + +- **Frontend** + - **React** + - **Redux** + - **TailwindCSS** + - **Axios** + - **Framer Motion** + +- **Backend** + - **SQLite** + - **Docker** + - **Python/FastAPI** + +## Structure + +### Design +- **Apple Design Guidelines** +- **Shades of Gray**: The first Iteration will not have Color. + - Adding and removing transparency / brightness from white or black. + +### Layout + +### Deployment diff --git a/docs/main.tex b/docs/main.tex new file mode 100644 index 0000000..df4f39f --- /dev/null +++ b/docs/main.tex @@ -0,0 +1,53 @@ +\documentclass[twocolumn]{article} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lipsum} % Zum Generieren von Blindtext +\usepackage{hyperref} % Für klickbare E-Mail-Adresse + +\begin{document} + +% Titelseite + \begin{titlepage} + % Platzieren Sie die zusätzlichen Informationen oben links + \begin{flushleft} + \textbf{Studiengang:} Beispielstudiengang \\ + \textbf{Dozent:} Prof. Beispiel \\ + \textbf{Jahrgang:} 2023 % Fügen Sie hier den Jahrgang hinzu + \end{flushleft} + + \vspace{2cm} + + % Zentrieren Sie den Titel und die Autoreninformationen + \begin{center} + {\LARGE \bfseries Zweispaltiges Dokument\par} + \vspace{1cm} + {\large Dein Name \\ \href{mailto:email@example.com}{email@example.com}\par} + \vspace{1cm} + {\large \today\par} + \vspace{1cm} + \begin{abstract} + Dies ist die Zusammenfassung des Artikels. Sie gibt einen kurzen Überblick über den Inhalt des Dokuments. + \end{abstract} + \end{center} + \end{titlepage} + +% Beginn des zweispaltigen Layouts ab hier + \twocolumn + + \section{Einleitung} + + \lipsum[1] % Blindtext Beispiel + + \section{Hauptteil} + + \lipsum[2-4] + + \section{Fazit} + + \lipsum[5] + + \bibliographystyle{plain} + \bibliography{references} + +\end{document} diff --git a/out/main.pdf b/out/main.pdf new file mode 100644 index 0000000000000000000000000000000000000000..234a2118eaeaf80b8d668b1b8b131f7fd8bb8447 GIT binary patch literal 59649 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 SjRROTkm_tQGRB)t*!~~PFtBC- literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e4cc7e4 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2538 @@ +{ + "name": "computer_science_blackboard", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@unocss/postcss": "^0.63.4", + "unocss": "^0.63.4" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz", + "integrity": "sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "package-manager-detector": "^0.2.0", + "tinyexec": "^0.3.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", + "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.33.tgz", + "integrity": "sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^0.4.0", + "@antfu/utils": "^0.7.10", + "@iconify/types": "^2.0.0", + "debug": "^4.3.6", + "kolorist": "^1.8.0", + "local-pkg": "^0.5.0", + "mlly": "^1.7.1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "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" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "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": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", + "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@unocss/astro": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.63.4.tgz", + "integrity": "sha512-qu1uMDUT8lXU3mm5EjZpnizvjSYtfY0TTDivR5QNm1i3Xd+ErHfdfOpXdJ2mYvxv+X7C570//KUugkTI3Mb3kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4", + "@unocss/reset": "0.63.4", + "@unocss/vite": "0.63.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/@unocss/cli": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.63.4.tgz", + "integrity": "sha512-kBWEiVW7KWfjptAJsk38w9dVqOmrO2/z0WADFnlX2RuKNDoCn422Rus6tFB12wZsEujC9eFM34P2nnU7IWWtlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.2", + "@unocss/config": "0.63.4", + "@unocss/core": "0.63.4", + "@unocss/preset-uno": "0.63.4", + "cac": "^6.7.14", + "chokidar": "^3.6.0", + "colorette": "^2.0.20", + "consola": "^3.2.3", + "magic-string": "^0.30.11", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "tinyglobby": "^0.2.9" + }, + "bin": { + "unocss": "bin/unocss.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/config": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.63.4.tgz", + "integrity": "sha512-LfAzM8z0r2comUW94KaSo4JaaEZjPkvrfyVWfO/hyaXa+/xSVIkCTW7+lfWh77hrg1e2SUY1HEvIFBg9Jvb1xQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4", + "unconfig": "~0.5.5" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/core": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.63.4.tgz", + "integrity": "sha512-VB4DJ5DsRWpX64si5tWYRXf1n5UkYQqe2s1V22qFiWmXa7Ec+Vf9s3cxWZmoWFC5P9RQiwM9kAqxdg1G+elVkQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/extractor-arbitrary-variants": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.63.4.tgz", + "integrity": "sha512-gI/+2Nv+cH/ZoOc/4X7RLD9CuBXH51jfwGJ1xRveS7tj+EBs8VshP7Vhbn6Jyp69E00wt4hyzjviDoGqcIA8bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/inspector": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.63.4.tgz", + "integrity": "sha512-NHvOTScsMrh6oMmwGMrqB1q1RCFTHZCIK0Vwp8hL8/gmNlza2Kd2cQ/WYSEsjW132xeLCOqTME5qny1gpG6SpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4", + "@unocss/rule-utils": "0.63.4", + "gzip-size": "^6.0.0", + "sirv": "^2.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/postcss": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.63.4.tgz", + "integrity": "sha512-JnSAV1hAZumkm0KZGXYqWsP2I7wnOdr+oeDckHKLdZR2mHNVbDm46H8XGbie55t/gPftaLSsMbaPvRjU2Fclqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/config": "0.63.4", + "@unocss/core": "0.63.4", + "@unocss/rule-utils": "0.63.4", + "css-tree": "^3.0.0", + "postcss": "^8.4.47", + "tinyglobby": "^0.2.9" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/@unocss/preset-attributify": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.63.4.tgz", + "integrity": "sha512-Q2DT4oVdxaL7XxD9sDP3adb5tnYr05sCxCxPhv3ch8brU7uvwbyqkiEw105pWbj0Hb3i/0kD4iq7lVMZYRH5nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-icons": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.63.4.tgz", + "integrity": "sha512-V7JV2xvEGeNVjP6HT4IG/BY/HgajJt9CLT2sgKbaVCU9hNOuBs1YTOxua0KLynbTYwr5F5cDMuE/9slQYinZmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/utils": "^2.1.33", + "@unocss/core": "0.63.4", + "ofetch": "^1.4.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-mini": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.63.4.tgz", + "integrity": "sha512-sim1/uy/XaVzdnMdepXdbdacXF5QNkPDnl4PYBWTyGuT5yKFpuipWpJDS5zZH5W6PYzKdcDA3YiaJ0S5CiUWpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4", + "@unocss/extractor-arbitrary-variants": "0.63.4", + "@unocss/rule-utils": "0.63.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-tagify": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.63.4.tgz", + "integrity": "sha512-RQkeSCKrGAowomjh8/chlnVWWOFlC+QkHB1oY5isRXNO2HStESZljyL/MisRpgjj0ubPiocoFCI2hRzXT/HrSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-typography": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.63.4.tgz", + "integrity": "sha512-PtRXDqF8dW1GYDxiF1Opl+M5fhZeKx63bhvtXXf3iHjVzPDSHB6w1kTElh6vIWeLDNM9GZbbJyB5f2C8DBjibw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4", + "@unocss/preset-mini": "0.63.4" + } + }, + "node_modules/@unocss/preset-uno": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.63.4.tgz", + "integrity": "sha512-VMc2R0XRMjXA5u5HnP0SkiWtc8EnEJvipNPKsWBuyyVb0QrsIXtF5z3l3cuZmD6V7m/o9s81yshL0gFOBpF7iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4", + "@unocss/preset-mini": "0.63.4", + "@unocss/preset-wind": "0.63.4", + "@unocss/rule-utils": "0.63.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-web-fonts": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.63.4.tgz", + "integrity": "sha512-XuU4dNwTQ0ULlYpQFSKk2JRYACTzpIzpPGP5ZnqdwBxEQH5JhXx4mEmaOhu1OH3c2hZURAkdQvBzYWia4oZ6og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4", + "ofetch": "^1.4.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-wind": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.63.4.tgz", + "integrity": "sha512-8fTUp6ZxH9YiScz4nZ1tRqprayrlQSfguzkjxDvOrwazfNcmxvHSZfC9dtpEmY+QssM1zHH0mmWmWgQYwU9Zdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4", + "@unocss/preset-mini": "0.63.4", + "@unocss/rule-utils": "0.63.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/reset": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.63.4.tgz", + "integrity": "sha512-7lnVH9zuVMekY0IUtcQRrbEqlkhvyGixgzHSWPBF/JA/Pto18bhd+cMeZhuz4eHRbN274bANX+//I+Ilfo7SSg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/rule-utils": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.63.4.tgz", + "integrity": "sha512-7yRWF881ymxnMcCJSiI/1kMI8uwRqRi3l5XnV+JSGjjF2fDr1POUQjSLaA4s7ZfdEgmjagdLK3F5xqkfMMECNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.63.4", + "magic-string": "^0.30.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-attributify-jsx": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.63.4.tgz", + "integrity": "sha512-5cO9BY/Bga6YmbTch1Neg+E46HerJp5wLxPkIcFCDNsqy2MsB97jsFG1dO0jDUg43E26MRI19tg1eqrWL6sTYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-compile-class": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.63.4.tgz", + "integrity": "sha512-ta6mqq2S5OWcfBzzYnaiMt3ekn2ECNZTqzzqMglnIKPkE+GmqUmmRavRnpc+NGobuqMRcI4F6x8MSSHf4MV0jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-directives": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.63.4.tgz", + "integrity": "sha512-N/dNhmn3e9/Z4IvAujxCdwhNMfx2SihPA2/7GFSMMRi7F0Hn/o2hOqQquRqIJbQwIvi6bJtKwyasxjDoUhJqBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4", + "@unocss/rule-utils": "0.63.4", + "css-tree": "^3.0.0" + } + }, + "node_modules/@unocss/transformer-variant-group": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.63.4.tgz", + "integrity": "sha512-uEHltdfR0Y1nvs1eqHwsgevRFhZkLmA/MsaMEfNblDJ6CLHe/ACNmMoLX1Mcuq/lAPs0X6jGnKudk4QTrCv15Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.63.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/vite": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.63.4.tgz", + "integrity": "sha512-YK0L177GD8Kx+JtfiCJy4YyBYckAXo4ogC8LZ+pYVNXDMN+F+XItpGI/ofLRaGIaewNg+MJgGY+CQZceABEAfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.2", + "@unocss/config": "0.63.4", + "@unocss/core": "0.63.4", + "@unocss/inspector": "0.63.4", + "chokidar": "^3.6.0", + "magic-string": "^0.30.11", + "tinyglobby": "^0.2.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/acorn": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bundle-require": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.0.0.tgz", + "integrity": "sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.18" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/css-tree": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz", + "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.10.0", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "dev": true, + "license": "MIT" + }, + "node_modules/destr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", + "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "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, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/importx": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/importx/-/importx-0.4.4.tgz", + "integrity": "sha512-Lo1pukzAREqrBnnHC+tj+lreMTAvyxtkKsMxLY8H15M/bvLl54p3YuoTI70Tz7Il0AsgSlD7Lrk/FaApRcBL7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-require": "^5.0.0", + "debug": "^4.3.6", + "esbuild": "^0.20.2 || ^0.21.0 || ^0.22.0 || ^0.23.0", + "jiti": "2.0.0-beta.3", + "jiti-v1": "npm:jiti@^1.21.6", + "pathe": "^1.1.2", + "tsx": "^4.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "2.0.0-beta.3", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.0.0-beta.3.tgz", + "integrity": "sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jiti-v1": { + "name": "jiti", + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/magic-string": { + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/mdn-data": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz", + "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/mlly": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.2.tgz", + "integrity": "sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.12.1", + "pathe": "^1.1.2", + "pkg-types": "^1.2.0", + "ufo": "^1.5.4" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ofetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", + "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", + "dev": true, + "license": "MIT", + "dependencies": { + "destr": "^2.0.3", + "node-fetch-native": "^1.6.4", + "ufo": "^1.5.4" + } + }, + "node_modules/package-manager-detector": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.2.tgz", + "integrity": "sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", + "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.2", + "pathe": "^1.1.2" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/rollup": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", + "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.24.0", + "@rollup/rollup-android-arm64": "4.24.0", + "@rollup/rollup-darwin-arm64": "4.24.0", + "@rollup/rollup-darwin-x64": "4.24.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", + "@rollup/rollup-linux-arm-musleabihf": "4.24.0", + "@rollup/rollup-linux-arm64-gnu": "4.24.0", + "@rollup/rollup-linux-arm64-musl": "4.24.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", + "@rollup/rollup-linux-riscv64-gnu": "4.24.0", + "@rollup/rollup-linux-s390x-gnu": "4.24.0", + "@rollup/rollup-linux-x64-gnu": "4.24.0", + "@rollup/rollup-linux-x64-musl": "4.24.0", + "@rollup/rollup-win32-arm64-msvc": "4.24.0", + "@rollup/rollup-win32-ia32-msvc": "4.24.0", + "@rollup/rollup-win32-x64-msvc": "4.24.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyexec": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", + "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.9.tgz", + "integrity": "sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tsx": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.1.tgz", + "integrity": "sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unconfig": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.5.5.tgz", + "integrity": "sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.10", + "defu": "^6.1.4", + "importx": "^0.4.3" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unocss": { + "version": "0.63.4", + "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.63.4.tgz", + "integrity": "sha512-MQ/ktuJ2MoXBsd117DEONFubJRQN6Og4mQJLbT+0nna2aTW4jYJESJ479mJYWq/ajonxEaM+zrf8M92VIWxzEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/astro": "0.63.4", + "@unocss/cli": "0.63.4", + "@unocss/core": "0.63.4", + "@unocss/postcss": "0.63.4", + "@unocss/preset-attributify": "0.63.4", + "@unocss/preset-icons": "0.63.4", + "@unocss/preset-mini": "0.63.4", + "@unocss/preset-tagify": "0.63.4", + "@unocss/preset-typography": "0.63.4", + "@unocss/preset-uno": "0.63.4", + "@unocss/preset-web-fonts": "0.63.4", + "@unocss/preset-wind": "0.63.4", + "@unocss/transformer-attributify-jsx": "0.63.4", + "@unocss/transformer-compile-class": "0.63.4", + "@unocss/transformer-directives": "0.63.4", + "@unocss/transformer-variant-group": "0.63.4", + "@unocss/vite": "0.63.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@unocss/webpack": "0.63.4", + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@unocss/webpack": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/vite": { + "version": "5.4.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.9.tgz", + "integrity": "sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e686efb --- /dev/null +++ b/package.json @@ -0,0 +1,6 @@ +{ + "devDependencies": { + "@unocss/postcss": "^0.63.4", + "unocss": "^0.63.4" + } +} diff --git a/src/frontend/blackboard/.eslintignore b/src/frontend/blackboard/.eslintignore new file mode 100644 index 0000000..af6ab76 --- /dev/null +++ b/src/frontend/blackboard/.eslintignore @@ -0,0 +1,20 @@ +.now/* +*.css +.changeset +dist +esm/* +public/* +tests/* +scripts/* +*.config.js +.DS_Store +node_modules +coverage +.next +build +!.commitlintrc.cjs +!.lintstagedrc.cjs +!jest.config.js +!plopfile.js +!react-shim.js +!tsup.config.ts \ No newline at end of file diff --git a/src/frontend/blackboard/.eslintrc.json b/src/frontend/blackboard/.eslintrc.json new file mode 100644 index 0000000..d3067d4 --- /dev/null +++ b/src/frontend/blackboard/.eslintrc.json @@ -0,0 +1,92 @@ +{ + "$schema": "https://json.schemastore.org/eslintrc.json", + "env": { + "browser": false, + "es2021": true, + "node": true + }, + "extends": [ + "plugin:react/recommended", + "plugin:prettier/recommended", + "plugin:react-hooks/recommended", + "plugin:jsx-a11y/recommended" + ], + "plugins": ["react", "unused-imports", "import", "@typescript-eslint", "jsx-a11y", "prettier"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": 12, + "sourceType": "module" + }, + "settings": { + "react": { + "version": "detect" + } + }, + "rules": { + "no-console": "warn", + "react/prop-types": "off", + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off", + "react-hooks/exhaustive-deps": "off", + "jsx-a11y/click-events-have-key-events": "warn", + "jsx-a11y/interactive-supports-focus": "warn", + "prettier/prettier": "warn", + "no-unused-vars": "off", + "unused-imports/no-unused-vars": "off", + "unused-imports/no-unused-imports": "warn", + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "args": "after-used", + "ignoreRestSiblings": false, + "argsIgnorePattern": "^_.*?$" + } + ], + "import/order": [ + "warn", + { + "groups": [ + "type", + "builtin", + "object", + "external", + "internal", + "parent", + "sibling", + "index" + ], + "pathGroups": [ + { + "pattern": "~/**", + "group": "external", + "position": "after" + } + ], + "newlines-between": "always" + } + ], + "react/self-closing-comp": "warn", + "react/jsx-sort-props": [ + "warn", + { + "callbacksLast": true, + "shorthandFirst": true, + "noSortAlphabetically": false, + "reservedFirst": true + } + ], + "padding-line-between-statements": [ + "warn", + {"blankLine": "always", "prev": "*", "next": "return"}, + {"blankLine": "always", "prev": ["const", "let", "var"], "next": "*"}, + { + "blankLine": "any", + "prev": ["const", "let", "var"], + "next": ["const", "let", "var"] + } + ] + } +} diff --git a/src/frontend/blackboard/.gitignore b/src/frontend/blackboard/.gitignore new file mode 100644 index 0000000..8f322f0 --- /dev/null +++ b/src/frontend/blackboard/.gitignore @@ -0,0 +1,35 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/src/frontend/blackboard/.npmrc b/src/frontend/blackboard/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/src/frontend/blackboard/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/src/frontend/blackboard/.vscode/settings.json b/src/frontend/blackboard/.vscode/settings.json new file mode 100644 index 0000000..3662b37 --- /dev/null +++ b/src/frontend/blackboard/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib" +} \ No newline at end of file diff --git a/src/frontend/blackboard/LICENSE b/src/frontend/blackboard/LICENSE new file mode 100644 index 0000000..7f91f84 --- /dev/null +++ b/src/frontend/blackboard/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Next UI + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/frontend/blackboard/README.md b/src/frontend/blackboard/README.md new file mode 100644 index 0000000..08df0a9 --- /dev/null +++ b/src/frontend/blackboard/README.md @@ -0,0 +1,53 @@ +# Next.js & NextUI Template + +This is a template for creating applications using Next.js 14 (app directory) and NextUI (v2). + +[Try it on CodeSandbox](https://githubbox.com/nextui-org/next-app-template) + +## Technologies Used + +- [Next.js 14](https://nextjs.org/docs/getting-started) +- [NextUI v2](https://nextui.org/) +- [Tailwind CSS](https://tailwindcss.com/) +- [Tailwind Variants](https://tailwind-variants.org) +- [TypeScript](https://www.typescriptlang.org/) +- [Framer Motion](https://www.framer.com/motion/) +- [next-themes](https://github.com/pacocoursey/next-themes) + +## How to Use + +### Use the template with create-next-app + +To create a new project based on this template using `create-next-app`, run the following command: + +```bash +npx create-next-app -e https://github.com/nextui-org/next-app-template +``` + +### Install dependencies + +You can use one of them `npm`, `yarn`, `pnpm`, `bun`, Example using `npm`: + +```bash +npm install +``` + +### Run the development server + +```bash +npm run dev +``` + +### Setup pnpm (optional) + +If you are using `pnpm`, you need to add the following code to your `.npmrc` file: + +```bash +public-hoist-pattern[]=*@nextui-org/* +``` + +After modifying the `.npmrc` file, you need to run `pnpm install` again to ensure that the dependencies are installed correctly. + +## License + +Licensed under the [MIT license](https://github.com/nextui-org/next-app-template/blob/main/LICENSE). diff --git a/src/frontend/blackboard/app/error.tsx b/src/frontend/blackboard/app/error.tsx new file mode 100644 index 0000000..034669b --- /dev/null +++ b/src/frontend/blackboard/app/error.tsx @@ -0,0 +1,31 @@ +'use client' + +import { useEffect } from 'react' + +export default function Error({ + error, + reset, +}: { + error: Error + reset: () => void +}) { + useEffect(() => { + // Log the error to an error reporting service + /* eslint-disable no-console */ + console.error(error) + }, [error]) + + return ( +
+

Something went wrong!

+ +
+ ) +} diff --git a/src/frontend/blackboard/app/layout.tsx b/src/frontend/blackboard/app/layout.tsx new file mode 100644 index 0000000..4445978 --- /dev/null +++ b/src/frontend/blackboard/app/layout.tsx @@ -0,0 +1,54 @@ +import "@/styles/globals.css"; +import { Metadata, Viewport } from "next"; +import clsx from "clsx"; + +import { Providers } from "./providers"; + +import { siteConfig } from "@/config/site"; +import { fontSans } from "@/config/fonts"; +import BottomNavbar from "@/components/BottomNavbar"; + +export const metadata: Metadata = { + title: { + default: siteConfig.name, + template: `%s - ${siteConfig.name}`, + }, + description: siteConfig.description, + icons: { + icon: "/favicon.ico", + }, +}; + +export const viewport: Viewport = { + themeColor: [ + { media: "(prefers-color-scheme: light)", color: "white" }, + { media: "(prefers-color-scheme: dark)", color: "black" }, + ], +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + + + +
+
+ {children} +
+ +
+
+ + + ); +} diff --git a/src/frontend/blackboard/app/page.tsx b/src/frontend/blackboard/app/page.tsx new file mode 100644 index 0000000..c36d5a8 --- /dev/null +++ b/src/frontend/blackboard/app/page.tsx @@ -0,0 +1,3 @@ +export default function App() { + return <>Content; +} diff --git a/src/frontend/blackboard/app/providers.tsx b/src/frontend/blackboard/app/providers.tsx new file mode 100644 index 0000000..d661078 --- /dev/null +++ b/src/frontend/blackboard/app/providers.tsx @@ -0,0 +1,22 @@ +'use client' + +import * as React from 'react' +import { NextUIProvider } from '@nextui-org/system' +import { useRouter } from 'next/navigation' +import { ThemeProvider as NextThemesProvider } from 'next-themes' +import { ThemeProviderProps } from 'next-themes/dist/types' + +export interface ProvidersProps { + children: React.ReactNode + themeProps?: ThemeProviderProps +} + +export function Providers({ children, themeProps }: ProvidersProps) { + const router = useRouter() + + return ( + + {children} + + ) +} diff --git a/src/frontend/blackboard/components/BottomNavbar.tsx b/src/frontend/blackboard/components/BottomNavbar.tsx new file mode 100644 index 0000000..e8a5e64 --- /dev/null +++ b/src/frontend/blackboard/components/BottomNavbar.tsx @@ -0,0 +1,14 @@ +import Link from "next/link"; + +import { siteConfig } from "@/config/site"; +export default function BottomNavbar() { + return ( +
+ {siteConfig.navItems.map((item) => ( + + {item.label} + + ))} +
+ ); +} diff --git a/src/frontend/blackboard/components/counter.tsx b/src/frontend/blackboard/components/counter.tsx new file mode 100644 index 0000000..9daf54e --- /dev/null +++ b/src/frontend/blackboard/components/counter.tsx @@ -0,0 +1,14 @@ +'use client' + +import { useState } from 'react' +import { Button } from '@nextui-org/button' + +export const Counter = () => { + const [count, setCount] = useState(0) + + return ( + + ) +} diff --git a/src/frontend/blackboard/components/icons.tsx b/src/frontend/blackboard/components/icons.tsx new file mode 100644 index 0000000..3d71983 --- /dev/null +++ b/src/frontend/blackboard/components/icons.tsx @@ -0,0 +1,215 @@ +import * as React from 'react' + +import { IconSvgProps } from '@/types' + +export const Logo: React.FC = ({ + size = 36, + width, + height, + ...props +}) => ( + + + +) + +export const DiscordIcon: React.FC = ({ + size = 24, + width, + height, + ...props +}) => { + return ( + + + + ) +} + +export const TwitterIcon: React.FC = ({ + size = 24, + width, + height, + ...props +}) => { + return ( + + + + ) +} + +export const GithubIcon: React.FC = ({ + size = 24, + width, + height, + ...props +}) => { + return ( + + + + ) +} + +export const MoonFilledIcon = ({ + size = 24, + width, + height, + ...props +}: IconSvgProps) => ( + +) + +export const SunFilledIcon = ({ + size = 24, + width, + height, + ...props +}: IconSvgProps) => ( + +) + +export const HeartFilledIcon = ({ + size = 24, + width, + height, + ...props +}: IconSvgProps) => ( + +) + +export const SearchIcon = (props: IconSvgProps) => ( + +) + +export const NextUILogo: React.FC = (props) => { + const { width, height = 40 } = props + + return ( + + + + + + ) +} diff --git a/src/frontend/blackboard/components/primitives.ts b/src/frontend/blackboard/components/primitives.ts new file mode 100644 index 0000000..72cd159 --- /dev/null +++ b/src/frontend/blackboard/components/primitives.ts @@ -0,0 +1,53 @@ +import { tv } from 'tailwind-variants' + +export const title = tv({ + base: 'tracking-tight inline font-semibold', + variants: { + color: { + violet: 'from-[#FF1CF7] to-[#b249f8]', + yellow: 'from-[#FF705B] to-[#FFB457]', + blue: 'from-[#5EA2EF] to-[#0072F5]', + cyan: 'from-[#00b7fa] to-[#01cfea]', + green: 'from-[#6FEE8D] to-[#17c964]', + pink: 'from-[#FF72E1] to-[#F54C7A]', + foreground: 'dark:from-[#FFFFFF] dark:to-[#4B4B4B]', + }, + size: { + sm: 'text-3xl lg:text-4xl', + md: 'text-[2.3rem] lg:text-5xl leading-9', + lg: 'text-4xl lg:text-6xl', + }, + fullWidth: { + true: 'w-full block', + }, + }, + defaultVariants: { + size: 'md', + }, + compoundVariants: [ + { + color: [ + 'violet', + 'yellow', + 'blue', + 'cyan', + 'green', + 'pink', + 'foreground', + ], + class: 'bg-clip-text text-transparent bg-gradient-to-b', + }, + ], +}) + +export const subtitle = tv({ + base: 'w-full md:w-1/2 my-2 text-lg lg:text-xl text-default-600 block max-w-full', + variants: { + fullWidth: { + true: '!w-full', + }, + }, + defaultVariants: { + fullWidth: true, + }, +}) diff --git a/src/frontend/blackboard/components/theme-switch.tsx b/src/frontend/blackboard/components/theme-switch.tsx new file mode 100644 index 0000000..dd04644 --- /dev/null +++ b/src/frontend/blackboard/components/theme-switch.tsx @@ -0,0 +1,81 @@ +'use client' + +import { FC } from 'react' +import { VisuallyHidden } from '@react-aria/visually-hidden' +import { SwitchProps, useSwitch } from '@nextui-org/switch' +import { useTheme } from 'next-themes' +import { useIsSSR } from '@react-aria/ssr' +import clsx from 'clsx' + +import { SunFilledIcon, MoonFilledIcon } from '@/components/icons' + +export interface ThemeSwitchProps { + className?: string + classNames?: SwitchProps['classNames'] +} + +export const ThemeSwitch: FC = ({ + className, + classNames, +}) => { + const { theme, setTheme } = useTheme() + const isSSR = useIsSSR() + + const onChange = () => { + theme === 'light' ? setTheme('dark') : setTheme('light') + } + + const { + Component, + slots, + isSelected, + getBaseProps, + getInputProps, + getWrapperProps, + } = useSwitch({ + isSelected: theme === 'light' || isSSR, + 'aria-label': `Switch to ${theme === 'light' || isSSR ? 'dark' : 'light'} mode`, + onChange, + }) + + return ( + + + + +
+ {!isSelected || isSSR ? ( + + ) : ( + + )} +
+
+ ) +} diff --git a/src/frontend/blackboard/config/fonts.ts b/src/frontend/blackboard/config/fonts.ts new file mode 100644 index 0000000..9b53d3c --- /dev/null +++ b/src/frontend/blackboard/config/fonts.ts @@ -0,0 +1,11 @@ +import { Fira_Code as FontMono, Inter as FontSans } from 'next/font/google' + +export const fontSans = FontSans({ + subsets: ['latin'], + variable: '--font-sans', +}) + +export const fontMono = FontMono({ + subsets: ['latin'], + variable: '--font-mono', +}) diff --git a/src/frontend/blackboard/config/site.ts b/src/frontend/blackboard/config/site.ts new file mode 100644 index 0000000..c41c112 --- /dev/null +++ b/src/frontend/blackboard/config/site.ts @@ -0,0 +1,24 @@ +export type SiteConfig = typeof siteConfig + +export const siteConfig = { + name: 'Blackboard', + description: 'Overview of the day', + navItems: [ + { + label: '📝 Todo', + href: '/todo', + }, + { + label: '🍔 Food Glance', + href: '/food', + }, + { + label: '🤖 Study Rundown', + href: '/study', + }, + { + label: 'Weather', + href: '/weather', + }, + ], +} diff --git a/src/frontend/blackboard/next.config.js b/src/frontend/blackboard/next.config.js new file mode 100644 index 0000000..6737660 --- /dev/null +++ b/src/frontend/blackboard/next.config.js @@ -0,0 +1,15 @@ +// next.config.js +const UnoCSS = require('@unocss/webpack').default + +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + webpack: (config) => { + config.plugins.push( + UnoCSS(), + ) + return config + }, +} + +module.exports = nextConfig \ No newline at end of file diff --git a/src/frontend/blackboard/package.json b/src/frontend/blackboard/package.json new file mode 100644 index 0000000..3af6c7d --- /dev/null +++ b/src/frontend/blackboard/package.json @@ -0,0 +1,56 @@ +{ + "name": "next-app-template", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "next dev --turbo", + "build": "next build", + "start": "next start", + "lint": "eslint . --ext .ts,.tsx -c .eslintrc.json --fix" + }, + "dependencies": { + "@nextui-org/button": "2.0.38", + "@nextui-org/code": "2.0.33", + "@nextui-org/input": "2.2.5", + "@nextui-org/kbd": "2.0.34", + "@nextui-org/link": "2.0.35", + "@nextui-org/listbox": "2.1.27", + "@nextui-org/navbar": "2.0.37", + "@nextui-org/react": "^2.4.8", + "@nextui-org/snippet": "2.0.43", + "@nextui-org/switch": "2.0.34", + "@nextui-org/system": "2.2.6", + "@nextui-org/theme": "2.2.11", + "@react-aria/ssr": "3.9.4", + "@react-aria/visually-hidden": "3.8.12", + "clsx": "2.1.1", + "framer-motion": "~11.1.1", + "intl-messageformat": "^10.5.0", + "next": "14.2.4", + "next-themes": "^0.2.1", + "react": "18.3.1", + "react-dom": "18.3.1" + }, + "devDependencies": { + "@types/node": "20.5.7", + "@types/react": "18.3.3", + "@types/react-dom": "18.3.0", + "@typescript-eslint/eslint-plugin": "7.2.0", + "@typescript-eslint/parser": "7.2.0", + "autoprefixer": "10.4.19", + "eslint": "^8.57.0", + "eslint-config-next": "14.2.1", + "eslint-config-prettier": "^8.2.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.23.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-unused-imports": "^3.2.0", + "postcss": "8.4.38", + "tailwind-variants": "0.1.20", + "tailwindcss": "3.4.3", + "typescript": "5.0.4" + } +} diff --git a/src/frontend/blackboard/postcss.config.js b/src/frontend/blackboard/postcss.config.js new file mode 100644 index 0000000..33ad091 --- /dev/null +++ b/src/frontend/blackboard/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/src/frontend/blackboard/public/favicon.ico b/src/frontend/blackboard/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/src/frontend/blackboard/public/next.svg b/src/frontend/blackboard/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/src/frontend/blackboard/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/frontend/blackboard/public/vercel.svg b/src/frontend/blackboard/public/vercel.svg new file mode 100644 index 0000000..d2f8422 --- /dev/null +++ b/src/frontend/blackboard/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/frontend/blackboard/styles/globals.css b/src/frontend/blackboard/styles/globals.css new file mode 100644 index 0000000..d347afe --- /dev/null +++ b/src/frontend/blackboard/styles/globals.css @@ -0,0 +1,7 @@ +@import '@unocss/reset/tailwind.css'; + +@tailwind base; +@tailwind components; +@tailwind utilities; + +@unocss all; \ No newline at end of file diff --git a/src/frontend/blackboard/tailwind.config.js b/src/frontend/blackboard/tailwind.config.js new file mode 100644 index 0000000..573fa4c --- /dev/null +++ b/src/frontend/blackboard/tailwind.config.js @@ -0,0 +1,21 @@ +import {nextui} from '@nextui-org/theme' + +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + './components/**/*.{js,ts,jsx,tsx,mdx}', + './app/**/*.{js,ts,jsx,tsx,mdx}', + './node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}' + ], + theme: { + extend: { + fontFamily: { + sans: ["var(--font-sans)"], + mono: ["var(--font-mono)"], + }, + }, + }, + darkMode: "class", + darkMode: "class", + plugins: [nextui()], +} diff --git a/src/frontend/blackboard/tsconfig.json b/src/frontend/blackboard/tsconfig.json new file mode 100644 index 0000000..e06a445 --- /dev/null +++ b/src/frontend/blackboard/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/src/frontend/blackboard/types/index.ts b/src/frontend/blackboard/types/index.ts new file mode 100644 index 0000000..aab3c21 --- /dev/null +++ b/src/frontend/blackboard/types/index.ts @@ -0,0 +1,5 @@ +import { SVGProps } from 'react' + +export type IconSvgProps = SVGProps & { + size?: number +} diff --git a/src/frontend/blackboard/uno.config.ts b/src/frontend/blackboard/uno.config.ts new file mode 100644 index 0000000..9948b76 --- /dev/null +++ b/src/frontend/blackboard/uno.config.ts @@ -0,0 +1,5 @@ +import { defineConfig, presetUno } from "unocss"; + +export default defineConfig({ + presets: [presetUno()], +});