aboutsummaryrefslogtreecommitdiff
path: root/source/about
diff options
context:
space:
mode:
Diffstat (limited to 'source/about')
-rw-r--r--source/about/.gitignore36
-rw-r--r--source/about/.zuedev/mirrors1
-rw-r--r--source/about/README.md7
-rw-r--r--source/about/cloudflare/_headers2
-rw-r--r--source/about/cloudflare/_redirects4
-rw-r--r--source/about/jsconfig.json7
-rw-r--r--source/about/next.config.mjs7
-rw-r--r--source/about/package-lock.json1894
-rw-r--r--source/about/package.json27
-rw-r--r--source/about/postcss.config.mjs8
-rw-r--r--source/about/public/avatar.pngbin0 -> 7794 bytes
-rw-r--r--source/about/public/header.jpgbin0 -> 2792022 bytes
-rw-r--r--source/about/public/privacy-policy/index.html9
-rw-r--r--source/about/public/pro_avatar.pngbin0 -> 1077225 bytes
-rw-r--r--source/about/public/resume/index.html924
-rw-r--r--source/about/public/tabAnimation.js27
-rw-r--r--source/about/src/app/globals.css101
-rw-r--r--source/about/src/app/layout.js39
-rw-r--r--source/about/src/app/mentoring/page.js64
-rw-r--r--source/about/src/app/page.js179
-rw-r--r--source/about/tailwind.config.js14
-rw-r--r--source/about/wrangler.jsonc17
22 files changed, 3367 insertions, 0 deletions
diff --git a/source/about/.gitignore b/source/about/.gitignore
new file mode 100644
index 0000000..fd3dbb5
--- /dev/null
+++ b/source/about/.gitignore
@@ -0,0 +1,36 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+.yarn/install-state.gz
+
+# 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/source/about/.zuedev/mirrors b/source/about/.zuedev/mirrors
new file mode 100644
index 0000000..b5bfa64
--- /dev/null
+++ b/source/about/.zuedev/mirrors
@@ -0,0 +1 @@
+https://github.com/zuedev/zue.dev.git
diff --git a/source/about/README.md b/source/about/README.md
new file mode 100644
index 0000000..380065f
--- /dev/null
+++ b/source/about/README.md
@@ -0,0 +1,7 @@
+# zue.dev
+
+> My ever-changing personal website...
+
+## Development
+
+**This project is mirrored!** Please do not push directly to this repository. Instead, format your changes using [`git format-patch`](https://git-scm.com/docs/git-format-patch) and send them to me via [email](mailto:git@zue.dev) or [Discord](https://discord.com/users/723361818940276736).
diff --git a/source/about/cloudflare/_headers b/source/about/cloudflare/_headers
new file mode 100644
index 0000000..a920bac
--- /dev/null
+++ b/source/about/cloudflare/_headers
@@ -0,0 +1,2 @@
+/*
+ zuedev-Tag: 84377 \ No newline at end of file
diff --git a/source/about/cloudflare/_redirects b/source/about/cloudflare/_redirects
new file mode 100644
index 0000000..9cc0dfa
--- /dev/null
+++ b/source/about/cloudflare/_redirects
@@ -0,0 +1,4 @@
+/cv /resume
+/cv.pdf /resume
+/resume.pdf /resume
+/resume /resume/index.html
diff --git a/source/about/jsconfig.json b/source/about/jsconfig.json
new file mode 100644
index 0000000..b8d6842
--- /dev/null
+++ b/source/about/jsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ }
+}
diff --git a/source/about/next.config.mjs b/source/about/next.config.mjs
new file mode 100644
index 0000000..b85876f
--- /dev/null
+++ b/source/about/next.config.mjs
@@ -0,0 +1,7 @@
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ output: "export",
+ assetPrefix: "/about/",
+};
+
+export default nextConfig;
diff --git a/source/about/package-lock.json b/source/about/package-lock.json
new file mode 100644
index 0000000..969445d
--- /dev/null
+++ b/source/about/package-lock.json
@@ -0,0 +1,1894 @@
+{
+ "name": "my-app",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "my-app",
+ "version": "0.1.0",
+ "dependencies": {
+ "@fontsource/monaspace-argon": "^5.1.0",
+ "@fontsource/monaspace-krypton": "^5.1.0",
+ "@fontsource/monaspace-neon": "^5.1.0",
+ "@fontsource/monaspace-radon": "^5.1.0",
+ "@fontsource/monaspace-xenon": "^5.1.0",
+ "@tailwindcss/aspect-ratio": "^0.4.2",
+ "@tailwindcss/forms": "^0.5.9",
+ "@tailwindcss/typography": "^0.5.15",
+ "next": "14.2.15",
+ "postcss": "^8",
+ "react": "^18",
+ "react-dom": "^18",
+ "tailwindcss": "^3.4.1"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@fontsource/monaspace-argon": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@fontsource/monaspace-argon/-/monaspace-argon-5.1.0.tgz",
+ "integrity": "sha512-4UyqaM5GT0TEEl2h+2MFuXrqGF4U6mpOur7p64fzzyC2dRA5zznUknJ3nGbxq3jUSfOp3xf+LxvJ+zvmhW/nLA==",
+ "license": "OFL-1.1"
+ },
+ "node_modules/@fontsource/monaspace-krypton": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@fontsource/monaspace-krypton/-/monaspace-krypton-5.1.0.tgz",
+ "integrity": "sha512-lzVknOiqLZJ/hDrVoKMQjoRPWM5VXHctEEYfSoWGft+Ik58KCWe+AHuUEAf1Ro//YaelpTq19TpSQACql5cyeA==",
+ "license": "OFL-1.1"
+ },
+ "node_modules/@fontsource/monaspace-neon": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@fontsource/monaspace-neon/-/monaspace-neon-5.1.0.tgz",
+ "integrity": "sha512-nW56kEvbPwNHHYfouTEI6KR2BAcXhqjGc/KkQdDvC+bcpRFc9olZTBd+Jw+l8MhcbnFwX+GWE5VP8EUrAcshew==",
+ "license": "OFL-1.1"
+ },
+ "node_modules/@fontsource/monaspace-radon": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@fontsource/monaspace-radon/-/monaspace-radon-5.1.0.tgz",
+ "integrity": "sha512-zMKiYKAgCjrHsmL/+oU2vU/FkC7Z5b9V2EFlmCtiN7KUX8VVVAwM3D5zBuvyWJRQjKQBtyFDSUWtwOyCzfyrmA==",
+ "license": "OFL-1.1"
+ },
+ "node_modules/@fontsource/monaspace-xenon": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@fontsource/monaspace-xenon/-/monaspace-xenon-5.1.0.tgz",
+ "integrity": "sha512-ragBwqgjA/A5u6G9/47KurZ7ZDkEtHV5NSfgwssRppNyCFNUjB5DPMwRgcKzJRCryoj+KLFWoPNkSRE7ATBhKg==",
+ "license": "OFL-1.1"
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.15.tgz",
+ "integrity": "sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==",
+ "license": "MIT"
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.15.tgz",
+ "integrity": "sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.15.tgz",
+ "integrity": "sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.15.tgz",
+ "integrity": "sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.15.tgz",
+ "integrity": "sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.15.tgz",
+ "integrity": "sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.15.tgz",
+ "integrity": "sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.15.tgz",
+ "integrity": "sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.15.tgz",
+ "integrity": "sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.15.tgz",
+ "integrity": "sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@swc/counter": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
+ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz",
+ "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@swc/counter": "^0.1.3",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@tailwindcss/aspect-ratio": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz",
+ "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1"
+ }
+ },
+ "node_modules/@tailwindcss/forms": {
+ "version": "0.5.9",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.9.tgz",
+ "integrity": "sha512-tM4XVr2+UVTxXJzey9Twx48c1gcxFStqn1pQz0tRsX8o3DvxhN5oY5pvyAbUx7VTaZxpej4Zzvc6h+1RJBzpIg==",
+ "license": "MIT",
+ "dependencies": {
+ "mini-svg-data-uri": "^1.2.3"
+ },
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20"
+ }
+ },
+ "node_modules/@tailwindcss/typography": {
+ "version": "0.5.15",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.15.tgz",
+ "integrity": "sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash.castarray": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.merge": "^4.6.2",
+ "postcss-selector-parser": "6.0.10"
+ },
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "license": "MIT"
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001690",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz",
+ "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "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/chokidar/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==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
+ "license": "MIT"
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "license": "MIT"
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "license": "MIT"
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/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==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz",
+ "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.7",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
+ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
+ "license": "MIT",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/lilconfig": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.castarray": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
+ "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "license": "MIT"
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mini-svg-data-uri": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
+ "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
+ "license": "MIT",
+ "bin": {
+ "mini-svg-data-uri": "cli.js"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+ "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/next": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.2.15.tgz",
+ "integrity": "sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==",
+ "license": "MIT",
+ "dependencies": {
+ "@next/env": "14.2.15",
+ "@swc/helpers": "0.5.5",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001579",
+ "graceful-fs": "^4.2.11",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.1"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": ">=18.17.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "14.2.15",
+ "@next/swc-darwin-x64": "14.2.15",
+ "@next/swc-linux-arm64-gnu": "14.2.15",
+ "@next/swc-linux-arm64-musl": "14.2.15",
+ "@next/swc-linux-x64-gnu": "14.2.15",
+ "@next/swc-linux-x64-musl": "14.2.15",
+ "@next/swc-win32-arm64-msvc": "14.2.15",
+ "@next/swc-win32-ia32-msvc": "14.2.15",
+ "@next/swc-win32-x64-msvc": "14.2.15"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "@playwright/test": "^1.41.2",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@playwright/test": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/next/node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "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.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "license": "MIT"
+ },
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.49",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
+ "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+ "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",
+ "peer": true,
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-js": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
+ "license": "MIT",
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-nested": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
+ "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.1.1"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
+ "node_modules/postcss-nested/node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "license": "MIT"
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
+ },
+ "peerDependencies": {
+ "react": "^18.3.1"
+ }
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.16.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "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==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
+ "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
+ "license": "MIT",
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.17",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
+ "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.6.0",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.3.2",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.21.6",
+ "lilconfig": "^3.1.3",
+ "micromatch": "^4.0.8",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.1.1",
+ "postcss": "^8.4.47",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.2",
+ "postcss-nested": "^6.2.0",
+ "postcss-selector-parser": "^6.1.2",
+ "resolve": "^1.22.8",
+ "sucrase": "^3.35.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "license": "MIT",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yaml": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz",
+ "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==",
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ }
+ }
+}
diff --git a/source/about/package.json b/source/about/package.json
new file mode 100644
index 0000000..c510070
--- /dev/null
+++ b/source/about/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "my-app",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint",
+ "deploy": "rm -rf out/ && next build && cp cloudflare/* out/ && wrangler deploy"
+ },
+ "dependencies": {
+ "@fontsource/monaspace-argon": "^5.1.0",
+ "@fontsource/monaspace-krypton": "^5.1.0",
+ "@fontsource/monaspace-neon": "^5.1.0",
+ "@fontsource/monaspace-radon": "^5.1.0",
+ "@fontsource/monaspace-xenon": "^5.1.0",
+ "@tailwindcss/aspect-ratio": "^0.4.2",
+ "@tailwindcss/forms": "^0.5.9",
+ "@tailwindcss/typography": "^0.5.15",
+ "next": "14.2.15",
+ "react": "^18",
+ "react-dom": "^18",
+ "postcss": "^8",
+ "tailwindcss": "^3.4.1"
+ }
+}
diff --git a/source/about/postcss.config.mjs b/source/about/postcss.config.mjs
new file mode 100644
index 0000000..1a69fd2
--- /dev/null
+++ b/source/about/postcss.config.mjs
@@ -0,0 +1,8 @@
+/** @type {import('postcss-load-config').Config} */
+const config = {
+ plugins: {
+ tailwindcss: {},
+ },
+};
+
+export default config;
diff --git a/source/about/public/avatar.png b/source/about/public/avatar.png
new file mode 100644
index 0000000..b7ea482
--- /dev/null
+++ b/source/about/public/avatar.png
Binary files differ
diff --git a/source/about/public/header.jpg b/source/about/public/header.jpg
new file mode 100644
index 0000000..985697d
--- /dev/null
+++ b/source/about/public/header.jpg
Binary files differ
diff --git a/source/about/public/privacy-policy/index.html b/source/about/public/privacy-policy/index.html
new file mode 100644
index 0000000..fb9fd3f
--- /dev/null
+++ b/source/about/public/privacy-policy/index.html
@@ -0,0 +1,9 @@
+zue.dev ("we", "us") values your privacy.
+
+We do not store your personal data on our own systems. Any data processing required for our services is handled by third-party companies.
+
+We only partner with third parties (e.g., for hosting, analytics) that we believe maintain high security and privacy standards to protect data. We encourage you to review their individual privacy policies.
+
+We may update this policy occasionally; please review it periodically. Changes will be posted here.
+
+If you have questions, contact us at: privacy@zue.dev \ No newline at end of file
diff --git a/source/about/public/pro_avatar.png b/source/about/public/pro_avatar.png
new file mode 100644
index 0000000..61096db
--- /dev/null
+++ b/source/about/public/pro_avatar.png
Binary files differ
diff --git a/source/about/public/resume/index.html b/source/about/public/resume/index.html
new file mode 100644
index 0000000..6227dd8
--- /dev/null
+++ b/source/about/public/resume/index.html
@@ -0,0 +1,924 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Alex Pooley's Resume 👨‍💼📄</title>
+ <meta
+ name="description"
+ content="Results-oriented Engineering Leader with over a decade of experience specializing in scalable and redundant system architecture. Demonstrated success leading distributed, cross-functional development teams to deliver world-class technical solutions impacting millions of users, consistently ensuring quality and efficiency in fast-paced settings."
+ />
+ <link rel="icon" href="../assets/images/pro_avatar.png" />
+ <!-- get tailwindcss -->
+ <script src="https://cdn.tailwindcss.com"></script>
+ <!-- tailwind config -->
+ <script>
+ tailwind.config = {
+ theme: {
+ fontFamily: {
+ sans: ["Inter"],
+ },
+ },
+ };
+ </script>
+ <!-- do our own styling -->
+ <style>
+ /* import default font */
+ @import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap");
+
+ /* setup css vars */
+ :root {
+ --zuedev-purple: #240054;
+ }
+
+ /* define zd stuff */
+ .bg-zd-purple {
+ background-color: var(--zuedev-purple);
+ }
+
+ /* main background */
+ html {
+ background: black;
+ }
+
+ /* disable black background on prints */
+ @media print {
+ html {
+ background: white;
+ }
+ }
+
+ /* make body at least viewport height */
+ body {
+ min-height: 100vh;
+ }
+
+ /* pan stuff */
+ .panText {
+ background: linear-gradient(
+ 45deg,
+ #ff1b8d 33%,
+ #ffd800 33%,
+ #ffd800 66%,
+ #21b1ff 66%
+ );
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+ }
+
+ /* rave stuff */
+ .raveBackground {
+ /* rainbow */
+ background: red;
+ animation: raveBackgroundAnimation 1s linear infinite;
+ }
+
+ @keyframes raveBackgroundAnimation {
+ 0% {
+ background-color: red;
+ }
+ 16.666% {
+ background-color: orange;
+ }
+ 33.333% {
+ background-color: yellow;
+ }
+ 50% {
+ background-color: green;
+ }
+ 66.666% {
+ background-color: blue;
+ }
+ 83.333% {
+ background-color: indigo;
+ }
+ 100% {
+ background-color: violet;
+ }
+ }
+
+ .raveBackgroundText {
+ background: black;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+ animation: raveBackgroundTextAnimation 1s linear infinite;
+ }
+
+ @keyframes raveBackgroundTextAnimation {
+ 0% {
+ background-color: black;
+ }
+ 16.666% {
+ background-color: black;
+ }
+ 33.333% {
+ background-color: black;
+ }
+ 50% {
+ background-color: white;
+ }
+ 66.666% {
+ background-color: white;
+ }
+ 83.333% {
+ background-color: white;
+ }
+ 100% {
+ background-color: black;
+ }
+ }
+ </style>
+ </head>
+ <body>
+ <div id="root"></div>
+
+ <!-- twemoji -->
+ <script
+ src="https://unpkg.com/twemoji@latest/dist/twemoji.min.js"
+ crossorigin="anonymous"
+ ></script>
+ <script>
+ // on load
+ document.addEventListener("ReactDone", async () => {
+ console.log("React done, parsing twemoji");
+
+ // parse twemoji
+ twemoji.parse(document.body, {
+ folder: "svg",
+ ext: ".svg",
+ base: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/",
+ });
+
+ // apply twemoji style fixes
+ document.querySelectorAll("img.emoji").forEach((img) => {
+ img.style.height = "1em";
+ img.style.width = "1em";
+ img.style.margin = "0 0.05em 0 0.1em";
+ img.style.verticalAlign = "-0.1em";
+ img.style.display = "inline";
+ });
+ });
+ </script>
+
+ <!-- load react -->
+ <script
+ src="https://unpkg.com/react@18/umd/react.development.js"
+ crossorigin
+ ></script>
+ <script
+ src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"
+ crossorigin
+ ></script>
+
+ <!-- load babel for jsx support -->
+ <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
+
+ <!-- run the resume code -->
+ <script type="text/babel">
+ // https://shields.io/badges/static-badge
+ const skillsBadges = {
+ nodejs: {
+ badgeContent: "Node.js",
+ style: "flat-square",
+ logo: "nodedotjs",
+ logoColor: "white",
+ color: "026e00",
+ link: "https://nodejs.org",
+ },
+ react: {
+ badgeContent: "React",
+ style: "flat-square",
+ logo: "react",
+ logoColor: "white",
+ color: "61dafb",
+ link: "https://reactjs.org",
+ },
+ docker: {
+ badgeContent: "Docker",
+ style: "flat-square",
+ logo: "docker",
+ logoColor: "white",
+ color: "2496ed",
+ link: "https://docker.com",
+ },
+ nextjs: {
+ badgeContent: "Next.js",
+ style: "flat-square",
+ logo: "nextdotjs",
+ logoColor: "white",
+ color: "000000",
+ link: "https://nextjs.org",
+ },
+ tailwindcss: {
+ badgeContent: "Tailwind CSS",
+ style: "flat-square",
+ logo: "tailwindcss",
+ logoColor: "white",
+ color: "38b2ac",
+ link: "https://tailwindcss.com",
+ },
+ mongodb: {
+ badgeContent: "MongoDB",
+ style: "flat-square",
+ logo: "mongodb",
+ logoColor: "white",
+ color: "47a248",
+ link: "https://mongodb.com",
+ },
+ cloudflare: {
+ badgeContent: "Cloudflare",
+ style: "flat-square",
+ logo: "cloudflare",
+ logoColor: "white",
+ color: "f38020",
+ link: "https://cloudflare.com",
+ },
+ vercel: {
+ badgeContent: "Vercel",
+ style: "flat-square",
+ logo: "vercel",
+ logoColor: "white",
+ color: "000000",
+ link: "https://vercel.com",
+ },
+ unity: {
+ badgeContent: "Unity",
+ style: "flat-square",
+ logo: "unity",
+ logoColor: "white",
+ color: "000000",
+ link: "https://unity.com",
+ },
+ csharp: {
+ badgeContent: "C#",
+ style: "flat-square",
+ logo: "csharp",
+ logoColor: "white",
+ color: "239120",
+ link: "https://docs.microsoft.com/en-us/dotnet/csharp/",
+ },
+ golang: {
+ badgeContent: "Go",
+ style: "flat-square",
+ logo: "go",
+ logoColor: "white",
+ color: "00add8",
+ link: "https://golang.org",
+ },
+ aws: {
+ badgeContent: "AWS",
+ style: "flat-square",
+ logo: "amazonaws",
+ logoColor: "white",
+ color: "232f3e",
+ link: "https://aws.amazon.com",
+ },
+ dynamodb: {
+ badgeContent: "DynamoDB",
+ style: "flat-square",
+ logo: "amazonaws",
+ logoColor: "white",
+ color: "4053d6",
+ link: "https://aws.amazon.com/dynamodb",
+ },
+ php: {
+ badgeContent: "PHP",
+ style: "flat-square",
+ logo: "php",
+ logoColor: "white",
+ color: "777bb4",
+ link: "https://php.net",
+ },
+ symfony: {
+ badgeContent: "Symfony",
+ style: "flat-square",
+ logo: "symfony",
+ logoColor: "white",
+ color: "000000",
+ link: "https://symfony.com",
+ },
+ mysql: {
+ badgeContent: "MySQL",
+ style: "flat-square",
+ logo: "mysql",
+ logoColor: "white",
+ color: "4479a1",
+ link: "https://mysql.com",
+ },
+ gcp: {
+ badgeContent: "GCP",
+ style: "flat-square",
+ logo: "googlecloud",
+ logoColor: "white",
+ color: "4285f4",
+ link: "https://cloud.google.com",
+ },
+ kubernetes: {
+ badgeContent: "Kubernetes",
+ style: "flat-square",
+ logo: "kubernetes",
+ logoColor: "white",
+ color: "326ce5",
+ link: "https://kubernetes.io",
+ },
+ wordpress: {
+ badgeContent: "WordPress",
+ style: "flat-square",
+ logo: "wordpress",
+ logoColor: "white",
+ color: "21759b",
+ link: "https://wordpress.org",
+ },
+ apache: {
+ badgeContent: "Apache",
+ style: "flat-square",
+ logo: "apache",
+ logoColor: "white",
+ color: "d22128",
+ link: "https://httpd.apache.org",
+ },
+ nginx: {
+ badgeContent: "NGINX",
+ style: "flat-square",
+ logo: "nginx",
+ logoColor: "white",
+ color: "269539",
+ link: "https://nginx.com",
+ },
+ digitalocean: {
+ badgeContent: "DigitalOcean",
+ style: "flat-square",
+ logo: "digitalocean",
+ logoColor: "white",
+ color: "0080ff",
+ link: "https://digitalocean.com",
+ },
+ html: {
+ badgeContent: "HTML5",
+ style: "flat-square",
+ logo: "html5",
+ logoColor: "white",
+ color: "e34f26",
+ link: "https://html.spec.whatwg.org",
+ },
+ css: {
+ badgeContent: "CSS3",
+ style: "flat-square",
+ logo: "css3",
+ logoColor: "white",
+ color: "1572b6",
+ link: "https://www.w3.org/Style/CSS/Overview.en.html",
+ },
+ javascript: {
+ badgeContent: "JavaScript",
+ style: "flat-square",
+ logo: "javascript",
+ logoColor: "white",
+ color: "f7df1e",
+ link: "https://developer.mozilla.org/en-US/docs/Web/JavaScript",
+ },
+ linux: {
+ badgeContent: "Linux",
+ style: "flat-square",
+ logo: "linux",
+ logoColor: "white",
+ color: "fcc624",
+ link: "https://kernel.org",
+ },
+ };
+
+ const resumeData = {
+ name: "Alex Pooley",
+ bio: [
+ "Cloud Specialist.",
+ "Gaming Enthusiast.",
+ "Open Source Fanatic.",
+ ],
+ about:
+ "Results-oriented Engineering Leader with over a decade of experience specializing in scalable and redundant system architecture. Demonstrated success leading distributed, cross-functional development teams to deliver world-class technical solutions impacting millions of users, consistently ensuring quality and efficiency in fast-paced settings.",
+ title: "Solutions Architect",
+ avatar: "https://zue.dev/pro_avatar.png",
+ status: "Looking for a new challenge.",
+ location: "Harwich, United Kingdom",
+ email: "alex@zue.dev",
+ phone: "+44 7 943 941 456",
+ website: "https://zue.dev",
+ socials: [
+ {
+ href: "https://linkedin.com/in/zuedev",
+ // icon: "https://cdn.simpleicons.org/linkedin",
+ icon: "https://media.licdn.com/dms/image/v2/D4E0BAQFUop5hiHtk0g/company-logo_100_100/company-logo_100_100/0/1719363313093/linkedin_talent_solutions_logo?e=1749686400&v=beta&t=xJ0wC8Lj38RsgAkC9jb7uvFE0hhCKrx74EHPi_rlXxw",
+ title: "LinkedIn",
+ },
+ {
+ href: "https://github.com/zuedev",
+ icon: "https://cdn.simpleicons.org/github",
+ title: "GitHub",
+ },
+ // {
+ // href: "https://gitlab.sovereign.zue.dev",
+ // icon: "https://cdn.simpleicons.org/gitlab",
+ // title: "GitLab",
+ // },
+ {
+ href: "https://zue.dev/discord",
+ icon: "https://cdn.simpleicons.org/discord",
+ title: "Discord",
+ },
+ // {
+ // href: "https://zuedev.gumroad.com",
+ // icon: "https://cdn.simpleicons.org/gumroad",
+ // title: "Gumroad",
+ // },
+ ],
+ career: [
+ {
+ position: "Director of Engineering",
+ company: "Unnamed Group",
+ url: "https://unnamed.group",
+ brief: "Non-Profit Community Builders",
+ start: new Date("2022-12-01"),
+ end: null,
+ type: "Full-Time",
+ location: "Harwich, United Kingdom",
+ skills: [
+ skillsBadges.nodejs,
+ skillsBadges.react,
+ skillsBadges.docker,
+ skillsBadges.nextjs,
+ skillsBadges.tailwindcss,
+ skillsBadges.mongodb,
+ skillsBadges.cloudflare,
+ ],
+ expound: `Architected and directed the technical evolution of community platforms, ensuring scalability and reliability for over 1,000 active users. Led a team of 13 engineers, designers, and moderators, guiding technical decisions, providing mentorship, and fostering an innovative environment. Established best practices for development, deployment (CI/CD), and maintenance, driving projects that measurably improved user engagement and platform performance.`,
+ achievements: [
+ "Directed engineering efforts to develop and scale platform features such as user onboarding, engagement tools, and notification systems, crucial for supporting community growth to over 1,000 active members.",
+ "Led the technical configuration, optimization, and integration of custom bots, API connections, and role automation of the community Discord server, enhancing functionality and contributing to measurable increases in user retention and satisfaction.",
+ "Initiated and led fundraising efforts for charitable causes, raising over $1,000, which significantly contributed to community goodwill and social impact.",
+ "Architected the technical implementation of the Patreon monetization strategy, overseeing API integrations, development of tiered access controls, and automated subscription management features to create a sustainable revenue stream.",
+ ],
+ },
+ {
+ position: "Solutions Architect",
+ company: "November Games",
+ url: "https://novembergames.com",
+ brief: "Game Studio (MMO + SDKs)",
+ start: new Date("2022-02-01"),
+ end: new Date("2022-12-01"),
+ type: "Contract",
+ location: "New Zealand (Remote)",
+ skills: [
+ skillsBadges.nodejs,
+ skillsBadges.unity,
+ skillsBadges.csharp,
+ skillsBadges.golang,
+ skillsBadges.aws,
+ skillsBadges.dynamodb,
+ ],
+ expound: `Led the design and implementation of the backend architecture for an innovative MMO game, ensuring scalability and performance. Developed and released robust SDKs for Unity and Unreal Engine, facilitating seamless integration for other developers into our platform and enhancing the developer experience.`,
+ achievements: [
+ "Engineered and launched a globally-distributed game server with an API, optimizing for high availability and minimal latency.",
+ "Developed a sophisticated ticket-based party system achieving sub-second matchmaking, significantly enhancing player experience.",
+ "Served as a domain expert during strategic meetings with major industry partners including AWS, Twitch, and NVIDIA, driving technical alignment and collaboration.",
+ "Successfully delivered a multifaceted project under stringent deadlines, demonstrating effective project management and problem-solving skills.",
+ ],
+ },
+ {
+ position: "Technical Lead",
+ company: "CORE Data Systems",
+ url: "https://www.coredatasystems.co.uk",
+ brief: "Educational Games Platform",
+ start: new Date("2018-03-01"),
+ end: new Date("2022-02-01"),
+ type: "Full-Time",
+ location: "Colchester, United Kingdom",
+ skills: [
+ skillsBadges.php,
+ skillsBadges.symfony,
+ skillsBadges.nodejs,
+ skillsBadges.react,
+ skillsBadges.mysql,
+ skillsBadges.gcp,
+ skillsBadges.kubernetes,
+ ],
+ expound: `I led the strategic technical direction of the company, spearheading the development of the innovative "CoreSciences" platform. In my role, I managed and coordinated a multidisciplinary team comprising developers, designers, and QA testers to ensure seamless project execution.`,
+ achievements: [
+ "Developed a scalable platform that attracted over 100,000 active users.",
+ "Successfully launched an educational games platform, resulting in high user engagement and positive feedback.",
+ "Implemented a subscription-based monetization strategy, significantly increasing revenue streams.",
+ "Effectively managed and mentored a diverse team of over 10 developers, fostering collaboration and productivity.",
+ ],
+ },
+ {
+ position: "Full Stack Developer",
+ company: "Aspen Woolf",
+ url: "https://aspenwoolf.co.uk",
+ brief: "Real Estate Investment Firm",
+ start: new Date("2017-04-01"),
+ end: new Date("2018-03-01"),
+ type: "Freelance",
+ location: "Manchester, United Kingdom",
+ skills: [
+ skillsBadges.php,
+ skillsBadges.wordpress,
+ skillsBadges.apache,
+ skillsBadges.nginx,
+ skillsBadges.mysql,
+ skillsBadges.digitalocean,
+ ],
+ expound: `Employed by a white-label agency, BayCat, I spearheaded the development and maintenance of a high-traffic WordPress site. My role involved creating custom plugins and themes to enhance functionality and user experience, ensuring the platform remained robust and innovative.`,
+ achievements: [
+ "Engineered and sustained a bespoke WordPress theme, elevating site aesthetics and functionality.",
+ "Designed and launched an innovative property search engine, enhancing user access and discovery.",
+ "Enhanced website SEO and performance, boosting search rankings and reducing load times.",
+ "Supervised a cross-functional team of 2 developers and 1 designer, fostering collaboration and productivity.",
+ ],
+ },
+ {
+ position: "Backend Engineer",
+ company: "World Registration Systems",
+ url: "https://find-and-update.company-information.service.gov.uk/company/06370780",
+ brief: "Event Registration Platform",
+ start: new Date("2016-11-01"),
+ end: new Date("2017-04-01"),
+ type: "Full-Time",
+ location: "London, United Kingdom",
+ skills: [
+ skillsBadges.html,
+ skillsBadges.css,
+ skillsBadges.javascript,
+ skillsBadges.php,
+ skillsBadges.apache,
+ skillsBadges.linux,
+ ],
+ expound: `Spearheaded the development and maintenance of the company's event registration platform, ensuring seamless user experience and system reliability. Developed and implemented custom APIs and integrations with third-party services, including payment processing through WorldPay, enhancing the platform's functionality.`,
+ achievements: [
+ "Led the development of a custom event registration platform, enhancing user engagement and transaction efficiency.",
+ "Successfully integrated with WorldPay to streamline payment processes.",
+ "Optimized platform for SEO and enhanced performance, resulting in increased traffic and user retention.",
+ "Managed and mentored a team of 2 developers, fostering a collaborative and productive work environment.",
+ ],
+ },
+ {
+ position: "Backend Engineer",
+ company: "Peccy Networks",
+ url: "https://web.archive.org/web/20160305203701/http://peccy.net/",
+ brief: "Web Development Agency",
+ start: new Date("2014-07-28"),
+ end: new Date("2016-11-01"),
+ type: "Full-Time",
+ location: "London, United Kingdom",
+ skills: [
+ skillsBadges.html,
+ skillsBadges.css,
+ skillsBadges.javascript,
+ skillsBadges.php,
+ skillsBadges.apache,
+ skillsBadges.mysql,
+ ],
+ expound: `Spearheaded the development and maintenance of the company's client websites, ensuring a seamless user experience across various platforms. Enhanced website functionality by developing custom plugins and themes tailored for WordPress, Joomla, and Magento environments.`,
+ achievements: [
+ "Engineered innovative custom themes and plugins for Content Management Systems (CMS) platforms, significantly enhancing user engagement.",
+ "Optimized website architecture to achieve top SEO rankings and superior performance metrics, boosting client visibility.",
+ "Led and mentored a cross-functional team of 3 developers and 1 designer, fostering a collaborative and efficient work environment.",
+ "Devised and implemented a custom ticketing system, improving the efficiency and responsiveness of client support services.",
+ ],
+ },
+ ],
+ projects: [
+ {
+ name: "World Anvil",
+ brief: "Worldbuilding Platform",
+ url: "https://worldanvil.com",
+ start: new Date("2017-12-01"),
+ end: new Date("2023-02-01"),
+ type: "Professional",
+ contribution:
+ "Enhanced World Anvil, a leading worldbuilding platform for writers, gamers, and creators, by spearheading efforts to achieve 99.9% uptime through innovative DevOps pipelines and advanced monitoring systems. Successfully implemented comprehensive networking and security strategies, resulting in a 30% reduction in security incidents and improved system resilience. Improved platform scalability, supporting a 50% increase in user traffic, and facilitated seamless environment deployments to enhance collaboration and creativity across the community.",
+ },
+ ],
+ certifications: [
+ {
+ issuer: "freeCodeCamp",
+ issuerIcon: "https://cdn.simpleicons.org/freecodecamp",
+ issuerProfile: "https://www.freecodecamp.org/zuedev",
+ title: "Responsive Web Design",
+ url: "https://www.freecodecamp.org/certification/zuedev/responsive-web-design",
+ },
+ {
+ issuer: "freeCodeCamp",
+ issuerIcon: "https://cdn.simpleicons.org/freecodecamp",
+ issuerProfile: "https://www.freecodecamp.org/zuedev",
+ title: "JavaScript Algorithms and Data Structures",
+ url: "https://www.freecodecamp.org/certification/zuedev/javascript-algorithms-and-data-structures",
+ },
+ {
+ issuer: "freeCodeCamp",
+ issuerIcon: "https://cdn.simpleicons.org/freecodecamp",
+ issuerProfile: "https://www.freecodecamp.org/zuedev",
+ title: "Python for Data Science",
+ url: "https://www.freecodecamp.org/certification/zuedev/python-for-data-science",
+ },
+ {
+ issuer: "freeCodeCamp",
+ issuerIcon: "https://cdn.simpleicons.org/freecodecamp",
+ issuerProfile: "https://www.freecodecamp.org/zuedev",
+ title: "Data Visualization",
+ url: "https://www.freecodecamp.org/certification/zuedev/data-visualization",
+ },
+ ],
+ };
+
+ function Resume() {
+ React.useEffect(() => {
+ document.dispatchEvent(new Event("ReactDone"));
+ }, []);
+
+ return (
+ <main className="bg-white min-h-screen p-4 space-y-4 max-w-screen-sm md:max-w-screen-md lg:max-w-[795px] print:max-w-full mx-auto">
+ <div className="raveBackground p-4 text-center text-2xl font-bold print:hidden">
+ ⚠️
+ <span className="raveBackgroundText px-2">
+ This resume is currently a work in progress!
+ </span>
+ ⚠️
+ </div>
+
+ <header className="flex flex-row h-24">
+ <div className="flex flex-row space-x-4 align-middle flex-grow">
+ <img src={resumeData.avatar} alt={resumeData.name} />
+ <div className="flex flex-col place-content-evenly">
+ {resumeData.bio.map((line, index) => (
+ <span
+ key={index}
+ className="text-xl font-bold text-gray-500"
+ >
+ {line}
+ </span>
+ ))}
+ </div>
+ </div>
+ <div className="flex flex-col place-content-evenly text-gray-500 text-right">
+ <span>
+ <a
+ href={
+ "https://www.google.co.uk/maps/place/" +
+ resumeData.location
+ }
+ className="text-blue-500 underline decoration-dotted"
+ target="_blank"
+ >
+ {resumeData.location}
+ </a>{" "}
+ 📍
+ </span>
+ <span>
+ <a
+ href={"mailto:" + resumeData.email}
+ className="text-blue-500 underline decoration-dotted"
+ target="_blank"
+ >
+ {resumeData.email}
+ </a>{" "}
+ 📧
+ </span>
+ <span>
+ <a
+ href={"tel:" + resumeData.phone.replaceAll(" ", "")}
+ className="text-blue-500 underline decoration-dotted"
+ target="_blank"
+ >
+ {resumeData.phone}
+ </a>{" "}
+ 📱
+ </span>
+ <span>
+ <a
+ href={resumeData.website}
+ className="text-blue-500 underline decoration-dotted"
+ target="_blank"
+ >
+ {resumeData.website}
+ </a>{" "}
+ 🌎
+ </span>
+ </div>
+ </header>
+
+ <section className="space-y-4">
+ <div className="flex flex-row text-4xl font-black">
+ <h1 className="bg-zd-purple text-white px-2 py-1">
+ <span className="panText">{resumeData.name}</span>
+ </h1>
+ <h2 className="bg-black text-white px-2 py-1">
+ {resumeData.title}
+ </h2>
+ </div>
+ <div>
+ <ul className="flex flex-row h-full items-center">
+ {resumeData.socials.map((social) => (
+ <li key={social.href} className="px-2">
+ <a href={social.href}>
+ <img
+ src={`${social.icon}`}
+ className="h-8"
+ title={social.title}
+ />
+ </a>
+ </li>
+ ))}
+ </ul>
+ </div>
+ </section>
+
+ <hr />
+
+ <section className="space-y-4">
+ <h3 className="text-4xl font-bold">About</h3>
+ <p className="text-lg text-justify">{resumeData.about}</p>
+ </section>
+
+ <hr />
+
+ <section className="space-y-4">
+ <h3 className="text-4xl font-bold">Career</h3>
+ <ul>
+ {resumeData.career.map((job) => (
+ <li
+ key={job.company}
+ className="space-y-4 border-black border-l-4 px-4 py-4 odd:bg-gray-100"
+ >
+ <div className="flex flex-row space-x-4 place-content-between">
+ <div className="flex flex-col">
+ <h4 className="text-xl font-bold">{job.position}</h4>
+ <a
+ href={job.url}
+ className="text-lg font-bold text-gray-500 underline"
+ >
+ {job.company}
+ </a>
+ <p className="text-lg text-gray-500">{job.brief}</p>
+ </div>
+ <div className="flex flex-col text-right">
+ <span>
+ {job.start.toLocaleDateString("en-GB", {
+ year: "numeric",
+ month: "long",
+ })}
+ {" - "}
+ {job.end
+ ? job.end.toLocaleDateString("en-GB", {
+ year: "numeric",
+ month: "long",
+ })
+ : "Present"}{" "}
+ 📅
+ </span>
+ <span>{job.type} 👔</span>
+ <span>{job.location} 🏢</span>
+ </div>
+ </div>
+
+ <div className="space-y-2">
+ {/*<span className="text-xl font-bold">Brief</span>*/}
+ <p className="text-justify">{job.expound}</p>
+ </div>
+
+ <div className="space-y-2">
+ <span className="text-xl font-bold">Achievements</span>
+ <ul className="ml-8 list-disc">
+ {job.achievements.map((achievement) => (
+ <li key={achievement}>{achievement}</li>
+ ))}
+ </ul>
+ </div>
+
+ <div className="space-y-2">
+ <span className="text-xl font-bold">Technologies</span>
+ <p className="flex flex-row space-x-2">
+ {job.skills.map((skill) => (
+ <a key={skill.badgeContent} href={skill.link}>
+ <img
+ src={`https://img.shields.io/badge/${encodeURIComponent(
+ skill.badgeContent
+ )}-${skill.color}?style=${skill.style}&logo=${
+ skill.logo
+ }&logoColor=${skill.logoColor}`}
+ alt={skill.badgeContent}
+ />
+ </a>
+ ))}
+ </p>
+ </div>
+ </li>
+ ))}
+ </ul>
+ </section>
+
+ <hr />
+
+ <section className="space-y-4">
+ <h3 className="text-4xl font-bold">Projects</h3>
+ <ul>
+ {resumeData.projects.map((project) => (
+ <li
+ key={project.name}
+ className="space-y-4 border-black border-l-4 px-4 py-4 odd:bg-gray-100"
+ >
+ <div className="flex flex-row space-x-4 place-content-between">
+ <div className="flex flex-col">
+ <h4 className="text-xl font-bold">
+ <a
+ href={project.url}
+ className="text-lg font-bold underline"
+ >
+ {project.name}
+ </a>
+ </h4>
+ <p className="text-lg text-gray-500">{project.brief}</p>
+ </div>
+ <div className="flex flex-col text-right">
+ <span>
+ {project.start.toLocaleDateString("en-GB", {
+ year: "numeric",
+ month: "long",
+ })}
+ {" - "}
+ {project.end.toLocaleDateString("en-GB", {
+ year: "numeric",
+ month: "long",
+ })}
+ </span>
+ <span>{project.type}</span>
+ </div>
+ </div>
+
+ <p className="text-justify">{project.contribution}</p>
+ </li>
+ ))}
+ </ul>
+ </section>
+
+ <hr />
+
+ <section className="space-y-4">
+ <h3 className="text-4xl font-bold">Certifications</h3>
+ <ul className="grid grid-cols-3 gap-2">
+ {resumeData.certifications.map((certification) => (
+ <li
+ key={certification.title}
+ className="px-2 py-2 odd:bg-gray-100"
+ >
+ <div className="flex flex-col">
+ <h4 className="text-xl font-bold">
+ <img
+ src={certification.issuerIcon}
+ alt={certification.issuer}
+ className="h-8"
+ />
+ <a
+ href={certification.url}
+ target="_blank"
+ className="text-lg font-bold underline"
+ >
+ {certification.title}
+ </a>
+ </h4>
+ <div>
+ <span>from </span>
+ <a
+ href={certification.issuerProfile}
+ target="_blank"
+ className="text-lg text-gray-500 underline"
+ >
+ {certification.issuer}
+ </a>
+ </div>
+ </div>
+ </li>
+ ))}
+ </ul>
+ </section>
+
+ <hr />
+
+ <footer className="text-center text-gray-500 text-sm">
+ <p>
+ This resume was generated by{" "}
+ <a
+ href="https://zue.dev/resume"
+ className="text-blue-500 underline decoration-dotted"
+ >
+ zue.dev/resume
+ </a>
+ ; visit the link for the latest version.
+ </p>
+ </footer>
+ </main>
+ );
+ }
+
+ ReactDOM.createRoot(document.querySelector("#root")).render(<Resume />);
+ </script>
+ </body>
+</html>
diff --git a/source/about/public/tabAnimation.js b/source/about/public/tabAnimation.js
new file mode 100644
index 0000000..f0040d0
--- /dev/null
+++ b/source/about/public/tabAnimation.js
@@ -0,0 +1,27 @@
+// animated tab
+const animation = [
+ {
+ emoji: "🌍",
+ title: "AROUND the world",
+ },
+ {
+ emoji: "🌏",
+ title: "around THE world",
+ },
+ {
+ emoji: "🌎",
+ title: "around the WORLD",
+ },
+];
+
+let tabAnimationStep = 0;
+const favicon = document.querySelector("link[rel='icon']");
+const updateTab = () => {
+ const currentAnimation = animation[tabAnimationStep % animation.length];
+ favicon.href = `data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text y=".9em" font-size="90">${currentAnimation.emoji}</text></svg>`;
+ document.title = currentAnimation.title;
+ tabAnimationStep++;
+ setTimeout(updateTab, 1000);
+};
+
+updateTab();
diff --git a/source/about/src/app/globals.css b/source/about/src/app/globals.css
new file mode 100644
index 0000000..404fef7
--- /dev/null
+++ b/source/about/src/app/globals.css
@@ -0,0 +1,101 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+/* set default font */
+html {
+ font-family: "Monaspace Neon";
+ font-feature-settings: "calt", "ss01", "ss02", "ss03", "ss04", "ss05", "ss06",
+ "ss07", "ss08", "ss09", "liga";
+}
+
+/* hide scrollbar */
+::-webkit-scrollbar {
+ display: none;
+}
+
+/* make text pan :3 */
+pan {
+ background: linear-gradient(
+ 45deg,
+ #ff1b8d 33%,
+ #ffd800 33%,
+ #ffd800 66%,
+ #21b1ff 66%
+ );
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+}
+
+/* RAVE!!! */
+.rave {
+ background: red;
+ animation: raveBackgroundAnimation 1s linear infinite;
+}
+
+@keyframes raveBackgroundAnimation {
+ 0% {
+ background-color: red;
+ }
+ 16.666% {
+ background-color: orange;
+ }
+ 33.333% {
+ background-color: yellow;
+ }
+ 50% {
+ background-color: green;
+ }
+ 66.666% {
+ background-color: blue;
+ }
+ 83.333% {
+ background-color: indigo;
+ }
+ 100% {
+ background-color: violet;
+ }
+}
+
+.rave > * {
+ background: black;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+ animation: raveBackgroundTextAnimation 1s linear infinite;
+}
+
+@keyframes raveBackgroundTextAnimation {
+ 0% {
+ background-color: black;
+ }
+ 16.666% {
+ background-color: black;
+ }
+ 33.333% {
+ background-color: black;
+ }
+ 50% {
+ background-color: white;
+ }
+ 66.666% {
+ background-color: white;
+ }
+ 83.333% {
+ background-color: white;
+ }
+ 100% {
+ background-color: black;
+ }
+}
+
+/* page fade in */
+body {
+ opacity: 0;
+ animation: fadeIn 1s ease-in-out forwards;
+}
+
+@keyframes fadeIn {
+ to {
+ opacity: 1;
+ }
+}
diff --git a/source/about/src/app/layout.js b/source/about/src/app/layout.js
new file mode 100644
index 0000000..532ed42
--- /dev/null
+++ b/source/about/src/app/layout.js
@@ -0,0 +1,39 @@
+// get those fonts!
+import "@fontsource/monaspace-neon";
+import "@fontsource/monaspace-krypton";
+import "@fontsource/monaspace-radon";
+import "@fontsource/monaspace-argon";
+import "@fontsource/monaspace-xenon";
+
+// always import global styles last
+import "./globals.css";
+
+import Script from "next/script";
+
+export const metadata = {
+ title: "zuedev's space",
+ description: "Hello, World! I'm zuedev.",
+ icons: {
+ icon: "/avatar.png",
+ },
+};
+
+export const viewport = {
+ width: "device-width",
+ initialScale: 1,
+ maximumScale: 1,
+ userScalable: false,
+};
+
+export default ({ children }) => {
+ return (
+ <html lang="en" className="bg-black text-white">
+ <body>
+ <header></header>
+ <main>{children}</main>
+ <footer></footer>
+ <Script src="/tabAnimation.js" />
+ </body>
+ </html>
+ );
+};
diff --git a/source/about/src/app/mentoring/page.js b/source/about/src/app/mentoring/page.js
new file mode 100644
index 0000000..1a7e265
--- /dev/null
+++ b/source/about/src/app/mentoring/page.js
@@ -0,0 +1,64 @@
+"use client";
+
+export default () => {
+ return (
+ <>
+ <div className="p-4 text-2xl space-y-4">
+ <section className="text-6xl font-bold">
+ <h1>What can I teach you?</h1>
+ </section>
+
+ <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4">
+ {[
+ // {
+ // title: "Basics of X language",
+ // description:
+ // "From JavaScript to Python, I can help you get started with the basics of a language.",
+ // classes: "bg-gradient-to-r from-cyan-500 to-blue-500",
+ // bgImage: "https://placehold.co/500/lime/white",
+ // url: "/mentoring/basics",
+ // },
+ // {
+ // title: "Basics of X language",
+ // description:
+ // "From JavaScript to Python, I can help you get started with the basics of a language.",
+ // classes: "bg-gradient-to-br from-blue-500 to-cyan-500",
+ // url: "/mentoring/basics",
+ // },
+ {
+ title: "Web Basics",
+ description:
+ "Learn HTML, CSS & JavaScript to Create Stunning Websites!",
+ classes: "bg-gradient-to-br from-blue-500 to-cyan-500 text-black",
+ bgImage:
+ "https://public-files.gumroad.com/xocc3smd5lmeq7ahiz1o8pggx9z4",
+ url: "https://zuedev.gumroad.com/l/web-basics?layout=profile",
+ },
+ {
+ title: "Python Fundamentals",
+ description:
+ "Master the Basics of Python & Kickstart Your Coding Journey!",
+ classes: "bg-gradient-to-br from-blue-500 to-cyan-500 text-black",
+ bgImage:
+ "https://public-files.gumroad.com/jjfjnqk9jqfdqidfmzyfqnaht1d2",
+ url: "https://zuedev.gumroad.com/l/python-fundamentals?layout=profile",
+ },
+ ].map((item) => (
+ <a
+ key={item.title}
+ href={item.url}
+ className={`p-4 space-y-4 bg-cover bg-center flex flex-col justify-center items-centertransition-transform transform hover:scale-105 ${item.classes}`}
+ style={{
+ backgroundImage: item.bgImage ? `url(${item.bgImage})` : "",
+ }}
+ target="_blank"
+ >
+ <h2 className="text-4xl font-bold">{item.title}</h2>
+ <p className="text-lg">{item.description}</p>
+ </a>
+ ))}
+ </div>
+ </div>
+ </>
+ );
+};
diff --git a/source/about/src/app/page.js b/source/about/src/app/page.js
new file mode 100644
index 0000000..435918a
--- /dev/null
+++ b/source/about/src/app/page.js
@@ -0,0 +1,179 @@
+export default () => {
+ const yearsAsEngineer = new Date().getFullYear() - 2012;
+
+ return (
+ <>
+ <div className="space-y-8 p-4 text-2xl">
+ <section className="text-8xl font-bold">
+ <h1>
+ Hello, World!
+ <br />
+ I'm <pan>zuedev</pan>.
+ </h1>
+ </section>
+ <section className="border-4 border-white">
+ <h2 className="text-6xl font-bold bg-white text-black p-2">
+ Who am I? ✨
+ </h2>
+
+ <div className="space-y-4 p-4 text-justify">
+ <div className="space-y-2">
+ <h3 className="text-4xl font-bold">Formally...</h3>
+ <p>
+ I'm a software engineer and entrepreneur from the UK who thrives
+ on building things that help and entertain people.
+ </p>
+ <p>
+ If you want to learn more about me, check out my{" "}
+ <a
+ className="underline decoration-wavy text-yellow-300"
+ href="https://zue.dev/resume"
+ target="_blank"
+ >
+ resume
+ </a>
+ . In short:
+ </p>
+ <ul className="pl-4 list-disc list-inside">
+ <li>
+ Software engineer (full-stack) for more than {yearsAsEngineer}{" "}
+ years;
+ </li>
+ <li>Trusted with leadership for 9 of those years;</li>
+ <li>
+ Director of a{" "}
+ <a
+ className="underline decoration-wavy text-cyan-300"
+ href="https://unnamed.group"
+ target="_blank"
+ >
+ non-profit
+ </a>{" "}
+ since 2016;
+ </li>
+ <li>
+ Programming polyglot (JavaScript, Python, C#, and more);
+ </li>
+ <li>
+ Running Linux (Arch), Windows, and macOS on a daily basis;
+ </li>
+ <li>Been living in the Unreal Engine for ~4 years;</li>
+ <li>
+ Started{" "}
+ <a
+ className="underline decoration-wavy text-green-400"
+ href="https://zuedev.gumroad.com"
+ >
+ mentoring
+ </a>{" "}
+ the next generation of developers in 2021;
+ </li>
+ </ul>
+ </div>
+
+ <div className="space-y-2">
+ <h3 className="text-4xl font-bold">Informally...</h3>
+ <p>
+ I'm an{" "}
+ <a
+ className="underline decoration-wavy text-purple-400"
+ href="https://zue.dev/steam"
+ target="_blank"
+ >
+ avid gamer
+ </a>{" "}
+ and a hobbyist musician in my spare time. On the weekends I can
+ usually be found DM'ing games such as Dungeons & Dragons and
+ Cyberpunk RED with my friends. I'm nearly always listening to
+ music and programming something, probably working on my latest
+ game or open-source project.
+ </p>
+ </div>
+ </div>
+ </section>
+ <section className="p-4 space-y-4 border-4 bg-white text-black border-white">
+ <h2 className="text-6xl font-bold">What am I up to? 💼</h2>
+
+ <div className="text-justify space-y-4">
+ <p>
+ I'm always working on something... There's not enough time in the
+ day to do everything I want to do! Here's a few things I'm
+ currently working on:
+ </p>
+
+ <div className="grid grid-cols-1 xl:grid-cols-3 gap-4">
+ {[
+ {
+ title: "For Money 💵",
+ description: (
+ <>
+ Money makes the world go round, unfortunately... That's
+ why I founded and run both{" "}
+ <a
+ className="underline decoration-wavy text-yellow-300"
+ href="https://t1.zue.dev"
+ target="_blank"
+ >
+ Termina One
+ </a>{" "}
+ and{" "}
+ <a
+ className="underline decoration-wavy text-green-400"
+ href="https://96.zue.dev"
+ target="_blank"
+ >
+ Area96 Digital
+ </a>{" "}
+ to help build capital for my other projects.
+ </>
+ ),
+ },
+ {
+ title: "For Fun 🎉",
+ description: (
+ <>
+ What don't I do? I have a backlog of games to play, music
+ to make, and projects to work on. Right now, I'm trying to
+ get back into making mods for{" "}
+ <a
+ className="underline decoration-wavy text-red-500"
+ href="https://minecraft.net"
+ target="_blank"
+ >
+ Minecraft
+ </a>
+ .
+ </>
+ ),
+ },
+ {
+ title: "For Charity ❤️",
+ description: (
+ <>
+ I'm currently working on directing a non-profit project
+ called{" "}
+ <a
+ className="underline decoration-wavy text-pink-400"
+ href="https://unnamed.group"
+ target="_blank"
+ >
+ Unnamed Group
+ </a>{" "}
+ to help support people online who are looking for a safe
+ space to play games and socialise.
+ </>
+ ),
+ },
+ ].map((item, index) => (
+ <div key={index} className="p-4 space-y-2 bg-black text-white">
+ <h3 className="text-4xl font-bold">{item.title}</h3>
+ <p>{item.description}</p>
+ </div>
+ ))}
+ </div>
+ </div>
+ </section>
+ </div>
+ </>
+ );
+};
diff --git a/source/about/tailwind.config.js b/source/about/tailwind.config.js
new file mode 100644
index 0000000..603ca36
--- /dev/null
+++ b/source/about/tailwind.config.js
@@ -0,0 +1,14 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: [
+ "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
+ "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
+ "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
+ ],
+ theme: {},
+ plugins: [
+ require("@tailwindcss/typography"),
+ require("@tailwindcss/forms"),
+ require("@tailwindcss/aspect-ratio"),
+ ],
+};
diff --git a/source/about/wrangler.jsonc b/source/about/wrangler.jsonc
new file mode 100644
index 0000000..887352a
--- /dev/null
+++ b/source/about/wrangler.jsonc
@@ -0,0 +1,17 @@
+{
+ "name": "about-zue-dev",
+ "compatibility_date": "2025-03-01",
+ "assets": {
+ "directory": "./out/",
+ "not_found_handling": "single-page-application"
+ },
+ "observability": {
+ "enabled": true
+ },
+ "routes": [
+ {
+ "pattern": "about.zue.dev",
+ "custom_domain": true
+ }
+ ]
+}