diff --git a/.github/workflows/deploy.staging.yml b/.github/workflows/deploy.staging.yml
index 5a3217b..545c61c 100644
--- a/.github/workflows/deploy.staging.yml
+++ b/.github/workflows/deploy.staging.yml
@@ -41,6 +41,7 @@ jobs: # remove these tests in production - Anton
NOTION_TEAMS_ID: ${{ secrets.NOTION_TEAMS_ID }}
WEBFORMS_TOKEN: ${{ secrets.WEBFORMS_TOKEN }}
NOTION_PROJECTS_ID: ${{ secrets.NOTION_PROJECTS_ID}}
+ NOTION_REFRESH_ID: ${{ secrets.NOTION_REFRESH_ID }}
steps:
- name: actions checkout v3
@@ -50,4 +51,4 @@ jobs: # remove these tests in production - Anton
uses: superfly/flyctl-actions/setup-flyctl@master
- name: Fly deploy
- run: flyctl deploy --build-arg ANTON=${{ secrets.ANTON }} --build-arg WEBFORMS_TOKEN=${{ secrets.WEBFORMS_TOKEN }} --build-arg NOTION_MEMBERS_ID=${{ secrets.NOTION_MEMBERS_ID }} --build-arg NOTION_TOKEN=${{ secrets.NOTION_TOKEN }} --build-arg NOTION_PROJECTS_ID=${{ secrets.NOTION_PROJECTS_ID }} --build-arg NOTION_TEAMS_ID=${{ secrets.NOTION_TEAMS_ID}} --build-arg NOTION_HOMEPAGE_ID=${{ secrets.NOTION_HOMEPAGE_ID}} --remote-only --config fly.staging.toml
\ No newline at end of file
+ run: flyctl deploy --build-arg ANTON=${{ secrets.ANTON }} --build-arg WEBFORMS_TOKEN=${{ secrets.WEBFORMS_TOKEN }} --build-arg NOTION_MEMBERS_ID=${{ secrets.NOTION_MEMBERS_ID }} --build-arg NOTION_TOKEN=${{ secrets.NOTION_TOKEN }} --build-arg NOTION_PROJECTS_ID=${{ secrets.NOTION_PROJECTS_ID }} --build-arg NOTION_TEAMS_ID=${{ secrets.NOTION_TEAMS_ID}} --build-arg NOTION_HOMEPAGE_ID=${{ secrets.NOTION_HOMEPAGE_ID}} --build-arg NOTION_REFRESH_ID=${{ secrets.NOTION_REFRESH_ID}} --remote-only --config fly.staging.toml
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index c9061fd..0107ccd 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -22,6 +22,7 @@ ARG NOTION_MEMBERS_ID
ARG NOTION_PROJECTS_ID
ARG NOTION_TEAMS_ID
ARG NOTION_HOMEPAGE_ID
+ARG NOTION_REFRESH_ID
# Set build-time environment variables
@@ -32,6 +33,7 @@ ENV NOTION_MEMBERS_ID=${NOTION_MEMBERS_ID}
ENV NOTION_PROJECTS_ID=${NOTION_PROJECTS_ID}
ENV NOTION_TEAMS_ID=${NOTION_TEAMS_ID}
ENV NOTION_HOMEPAGE_ID=${NOTION_HOMEPAGE_ID}
+ENV NOTION_REFRESH_ID=${NOTION_REFRESH_ID}
diff --git a/package-lock.json b/package-lock.json
index 781d4cd..d1525ac 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,11 +20,13 @@
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"astro": "^4.4.3",
+ "axios": "^1.7.7",
"dotenv": "^16.4.5",
"notion-client": "^6.16.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-notion-x": "^6.16.0",
+ "sharp": "^0.33.5",
"tailwindcss": "^3.4.1",
"typescript": "^5.3.3",
"vitest": "^1.4.0",
@@ -32,6 +34,7 @@
},
"devDependencies": {
"@flydotio/dockerfile": "^0.5.2",
+ "@types/bcrypt": "^5.0.2",
"@types/node": "^20.11.30"
}
},
@@ -146,9 +149,10 @@
}
},
"node_modules/@astrojs/node": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-8.2.0.tgz",
- "integrity": "sha512-keQIPvdx8hquG+KnWoJp7io/GoczBEJer9X8WzPHK2fnVRXYDKGzXWZw3Dbg0ZhXJreVV3xzniN7nr6e7hgDXg==",
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-8.3.3.tgz",
+ "integrity": "sha512-idrKhnnPSi0ABV+PCQsRQqVNwpOvVDF/+fkwcIiE8sr9J8EMvW9g/oyAt8T4X2OBJ8FUzYPL8klfCdG7r0eB5g==",
+ "license": "MIT",
"dependencies": {
"send": "^0.18.0",
"server-destroy": "^1.0.1"
@@ -613,6 +617,16 @@
"resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz",
"integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA=="
},
+ "node_modules/@emnapi/runtime": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz",
+ "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@emotion/babel-plugin": {
"version": "11.11.0",
"resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz",
@@ -1131,6 +1145,367 @@
"node": ">=16.0.0"
}
},
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
+ "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz",
+ "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
+ "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz",
+ "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz",
+ "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz",
+ "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
+ "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
+ "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz",
+ "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
+ "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz",
+ "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.0.5"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz",
+ "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
+ "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
+ "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz",
+ "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
+ "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz",
+ "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/runtime": "^1.2.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
+ "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz",
+ "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -1781,6 +2156,16 @@
"@babel/types": "^7.20.7"
}
},
+ "node_modules/@types/bcrypt": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-5.0.2.tgz",
+ "integrity": "sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/cacheable-request": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
@@ -2568,6 +2953,30 @@
"node": ">=10"
}
},
+ "node_modules/astro/node_modules/sharp": {
+ "version": "0.32.6",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
+ "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.2",
+ "node-addon-api": "^6.1.0",
+ "prebuild-install": "^7.1.1",
+ "semver": "^7.5.4",
+ "simple-get": "^4.0.1",
+ "tar-fs": "^3.0.4",
+ "tunnel-agent": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
"node_modules/astro/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -2620,6 +3029,16 @@
"postcss": "^8.1.0"
}
},
+ "node_modules/axios": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
+ "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
"node_modules/axobject-query": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz",
@@ -2632,6 +3051,7 @@
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
"integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==",
+ "license": "Apache-2.0",
"optional": true
},
"node_modules/babel-plugin-macros": {
@@ -2663,38 +3083,52 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/bare-events": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.0.tgz",
- "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz",
+ "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==",
+ "license": "Apache-2.0",
"optional": true
},
"node_modules/bare-fs": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.1.5.tgz",
- "integrity": "sha512-5t0nlecX+N2uJqdxe9d18A98cp2u9BETelbjKpiVgQqzzmVNFYWEAjQHqS+2Khgto1vcwhik9cXucaj5ve2WWA==",
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz",
+ "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
"bare-events": "^2.0.0",
- "bare-os": "^2.0.0",
"bare-path": "^2.0.0",
- "streamx": "^2.13.0"
+ "bare-stream": "^2.0.0"
}
},
"node_modules/bare-os": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.0.tgz",
- "integrity": "sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==",
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz",
+ "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==",
+ "license": "Apache-2.0",
"optional": true
},
"node_modules/bare-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.0.tgz",
- "integrity": "sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz",
+ "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
"bare-os": "^2.1.0"
}
},
+ "node_modules/bare-stream": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.0.tgz",
+ "integrity": "sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "b4a": "^1.6.6",
+ "streamx": "^2.20.0"
+ }
+ },
"node_modules/base-64": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz",
@@ -2798,11 +3232,12 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "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.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -3074,6 +3509,7 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "license": "ISC",
"optional": true
},
"node_modules/chrome-trace-event": {
@@ -3260,7 +3696,6 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
"integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
- "optional": true,
"dependencies": {
"color-convert": "^2.0.1",
"color-string": "^1.9.0"
@@ -3289,7 +3724,6 @@
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
"integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
- "optional": true,
"dependencies": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
@@ -3492,6 +3926,7 @@
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=4.0.0"
@@ -3539,10 +3974,10 @@
}
},
"node_modules/detect-libc": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
- "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
- "optional": true,
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=8"
}
@@ -3622,9 +4057,10 @@
}
},
"node_modules/dset": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz",
- "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz",
+ "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -3640,10 +4076,11 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/ejs": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
- "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"jake": "^10.8.5"
},
@@ -3924,6 +4361,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
"integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+ "license": "(MIT OR WTFPL)",
"optional": true,
"engines": {
"node": ">=6"
@@ -3954,6 +4392,7 @@
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "license": "MIT",
"optional": true
},
"node_modules/fast-glob": {
@@ -4044,9 +4483,10 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "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"
},
@@ -4091,6 +4531,25 @@
"node": ">=8"
}
},
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
"node_modules/foreground-child": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -4143,6 +4602,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents": {
@@ -4216,6 +4676,7 @@
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
"integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+ "license": "MIT",
"optional": true
},
"node_modules/github-slugger": {
@@ -4654,6 +5115,7 @@
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "license": "ISC",
"optional": true
},
"node_modules/inline-style-prefixer": {
@@ -4675,8 +5137,7 @@
"node_modules/is-arrayish": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
- "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
- "optional": true
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
},
"node_modules/is-binary-path": {
"version": "2.1.0",
@@ -4803,6 +5264,7 @@
"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"
}
@@ -6131,11 +6593,12 @@
]
},
"node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "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.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@@ -6210,6 +6673,7 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "license": "MIT",
"optional": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -6227,6 +6691,7 @@
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+ "license": "MIT",
"optional": true
},
"node_modules/mlly": {
@@ -6305,6 +6770,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
"integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
+ "license": "MIT",
"optional": true
},
"node_modules/neo-async": {
@@ -6326,9 +6792,10 @@
}
},
"node_modules/node-abi": {
- "version": "3.55.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.55.0.tgz",
- "integrity": "sha512-uPEjtyh2tFEvWYt4Jw7McOD5FPcHkcxm/tHZc5PWaDB3JYq0rGFUbgaAK+CT5pYpQddBfsZVWI08OwoRfdfbcQ==",
+ "version": "3.67.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.67.0.tgz",
+ "integrity": "sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"semver": "^7.3.5"
@@ -6337,26 +6804,12 @@
"node": ">=10"
}
},
- "node_modules/node-abi/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "optional": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/node-abi/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
"optional": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
"bin": {
"semver": "bin/semver.js"
},
@@ -6364,16 +6817,11 @@
"node": ">=10"
}
},
- "node_modules/node-abi/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "optional": true
- },
"node_modules/node-addon-api": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
"integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
+ "license": "MIT",
"optional": true
},
"node_modules/node-fetch": {
@@ -6822,9 +7270,10 @@
}
},
"node_modules/path-to-regexp": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
- "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
+ "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
+ "license": "MIT"
},
"node_modules/path-type": {
"version": "4.0.0",
@@ -7097,9 +7546,10 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
"node_modules/prebuild-install": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
- "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz",
+ "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"detect-libc": "^2.0.0",
@@ -7126,6 +7576,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"buffer": "^5.5.0",
@@ -7151,6 +7602,7 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"optional": true,
"dependencies": {
"base64-js": "^1.3.1",
@@ -7161,6 +7613,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
"integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"chownr": "^1.1.1",
@@ -7173,6 +7626,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"bl": "^4.0.3",
@@ -7287,6 +7741,11 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
"node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -7327,6 +7786,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
"integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
+ "license": "MIT",
"optional": true
},
"node_modules/quick-lru": {
@@ -7361,6 +7821,7 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
"optional": true,
"dependencies": {
"deep-extend": "^0.6.0",
@@ -8429,48 +8890,49 @@
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"node_modules/sharp": {
- "version": "0.32.6",
- "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
- "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
+ "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
"hasInstallScript": true,
- "optional": true,
+ "license": "Apache-2.0",
"dependencies": {
"color": "^4.2.3",
- "detect-libc": "^2.0.2",
- "node-addon-api": "^6.1.0",
- "prebuild-install": "^7.1.1",
- "semver": "^7.5.4",
- "simple-get": "^4.0.1",
- "tar-fs": "^3.0.4",
- "tunnel-agent": "^0.6.0"
+ "detect-libc": "^2.0.3",
+ "semver": "^7.6.3"
},
"engines": {
- "node": ">=14.15.0"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/sharp/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "optional": true,
- "dependencies": {
- "yallist": "^4.0.0"
},
- "engines": {
- "node": ">=10"
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.33.5",
+ "@img/sharp-darwin-x64": "0.33.5",
+ "@img/sharp-libvips-darwin-arm64": "1.0.4",
+ "@img/sharp-libvips-darwin-x64": "1.0.4",
+ "@img/sharp-libvips-linux-arm": "1.0.5",
+ "@img/sharp-libvips-linux-arm64": "1.0.4",
+ "@img/sharp-libvips-linux-s390x": "1.0.4",
+ "@img/sharp-libvips-linux-x64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4",
+ "@img/sharp-linux-arm": "0.33.5",
+ "@img/sharp-linux-arm64": "0.33.5",
+ "@img/sharp-linux-s390x": "0.33.5",
+ "@img/sharp-linux-x64": "0.33.5",
+ "@img/sharp-linuxmusl-arm64": "0.33.5",
+ "@img/sharp-linuxmusl-x64": "0.33.5",
+ "@img/sharp-wasm32": "0.33.5",
+ "@img/sharp-win32-ia32": "0.33.5",
+ "@img/sharp-win32-x64": "0.33.5"
}
},
"node_modules/sharp/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "optional": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -8478,12 +8940,6 @@
"node": ">=10"
}
},
- "node_modules/sharp/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "optional": true
- },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -8559,6 +9015,7 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"optional": true
},
"node_modules/simple-get": {
@@ -8579,6 +9036,7 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"optional": true,
"dependencies": {
"decompress-response": "^6.0.0",
@@ -8590,7 +9048,6 @@
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
"integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
- "optional": true,
"dependencies": {
"is-arrayish": "^0.3.1"
}
@@ -8722,13 +9179,15 @@
}
},
"node_modules/streamx": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz",
- "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==",
+ "version": "2.20.1",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz",
+ "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==",
+ "license": "MIT",
"optional": true,
"dependencies": {
- "fast-fifo": "^1.1.0",
- "queue-tick": "^1.0.1"
+ "fast-fifo": "^1.3.2",
+ "queue-tick": "^1.0.1",
+ "text-decoder": "^1.1.0"
},
"optionalDependencies": {
"bare-events": "^2.2.0"
@@ -8874,6 +9333,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
@@ -9008,9 +9468,10 @@
}
},
"node_modules/tar-fs": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz",
- "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==",
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz",
+ "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"pump": "^3.0.0",
@@ -9025,6 +9486,7 @@
"version": "3.1.7",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
"integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"b4a": "^1.6.4",
@@ -9090,6 +9552,16 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"peer": true
},
+ "node_modules/text-decoder": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz",
+ "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "b4a": "^1.6.4"
+ }
+ },
"node_modules/thenify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
@@ -9160,6 +9632,7 @@
"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"
},
@@ -9241,6 +9714,7 @@
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
"safe-buffer": "^5.0.1"
diff --git a/package.json b/package.json
index 187bda8..1a28d92 100644
--- a/package.json
+++ b/package.json
@@ -23,11 +23,13 @@
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"astro": "^4.4.3",
+ "axios": "^1.7.7",
"dotenv": "^16.4.5",
"notion-client": "^6.16.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-notion-x": "^6.16.0",
+ "sharp": "^0.33.5",
"tailwindcss": "^3.4.1",
"typescript": "^5.3.3",
"vitest": "^1.4.0",
@@ -35,6 +37,7 @@
},
"devDependencies": {
"@flydotio/dockerfile": "^0.5.2",
+ "@types/bcrypt": "^5.0.2",
"@types/node": "^20.11.30"
}
}
diff --git a/public/homepage/carousel_item_1_image_0.webp b/public/homepage/carousel_item_1_image_0.webp
new file mode 100644
index 0000000..d4d3514
Binary files /dev/null and b/public/homepage/carousel_item_1_image_0.webp differ
diff --git a/public/homepage/carousel_item_2_image_0.webp b/public/homepage/carousel_item_2_image_0.webp
new file mode 100644
index 0000000..5d1fbab
Binary files /dev/null and b/public/homepage/carousel_item_2_image_0.webp differ
diff --git a/public/homepage/carousel_item_3_image_0.webp b/public/homepage/carousel_item_3_image_0.webp
new file mode 100644
index 0000000..7f95fb3
Binary files /dev/null and b/public/homepage/carousel_item_3_image_0.webp differ
diff --git a/public/homepage/homepageData.json b/public/homepage/homepageData.json
new file mode 100644
index 0000000..2428aa1
--- /dev/null
+++ b/public/homepage/homepageData.json
@@ -0,0 +1,83 @@
+{
+ "About Us": {
+ "heading": "About Us",
+ "subheadings": [
+ "Who we are",
+ "What we do"
+ ],
+ "paragraphs": [
+ "A group of 26 young leaders (aged 12-24) from the Ōrākei Local Board area who are determined to make a positive impact in our community. As a group we help provide a voice to the youth in our community. The youth council is supported by the Ōrākei Local Board.",
+ "The Youth of Ōrākei not only organises and supports events, but they equip and engage youth. But it is also our priority to give a voice to the youth in the community for the future of Ōrākei and wider Auckland by advising and submitting on council policies.",
+ "",
+ ""
+ ],
+ "images": []
+ },
+ "Carousel Item #1": {
+ "heading": "Carousel Item #1",
+ "subheadings": [
+ "Beach Cleanup"
+ ],
+ "paragraphs": [
+ "2nd September, 12:30 - 3:30PM",
+ "Come join us to clean the local beach and save our environment!",
+ ""
+ ],
+ "images": [
+ "/homepage/carousel_item_1_image_0.webp"
+ ]
+ },
+ "Carousel Item #2": {
+ "heading": "Carousel Item #2",
+ "subheadings": [
+ "Art Gallery"
+ ],
+ "paragraphs": [
+ "2nd August, 12:30 - 3:30PM",
+ "Come along and view some fine art! Maybe even meet some new friends!"
+ ],
+ "images": [
+ "/homepage/carousel_item_2_image_0.webp"
+ ]
+ },
+ "Carousel Item #3": {
+ "heading": "Carousel Item #3",
+ "subheadings": [
+ "Quiz Night"
+ ],
+ "paragraphs": [
+ "2nd July 12:30 - 3:30PM",
+ "This is a description about quizzes at YOO. Quizzes are good to learn from."
+ ],
+ "images": [
+ "/homepage/carousel_item_3_image_0.webp"
+ ]
+ },
+ "Goals": {
+ "heading": "Goals",
+ "subheadings": [
+ "Support",
+ "Connect",
+ "Empower"
+ ],
+ "paragraphs": [
+ "We support Ōrākei youth with networks, friends, and community-building events that help both our members and the wider Ōrākei community. We represent the voice of Ōrākei youth in scenarios that involve leaders from all across Auckland.",
+ "We have a mission to connect young people from around the region with each other to promote learning and community. Our teams work on group activities and engagements that build positive relationships across all of Ōrākei.",
+ "We help empower Ōrākei youth to do amazing things, with events, activities, and meetups designed to foster positive engagement and wellbeing."
+ ],
+ "images": []
+ },
+ "Hero": {
+ "heading": "Hero",
+ "subheadings": [
+ "Youth of Ōrākei",
+ "Empowering and engaging Ōrākei youth to promote their wellbeing"
+ ],
+ "paragraphs": [
+ "",
+ "We’re the Youth of Ōrākei, a group of 26 young leaders (aged 12-24) from the Ōrākei Local Board area who are determined to make a positive impact in our community.",
+ ""
+ ],
+ "images": []
+ }
+}
\ No newline at end of file
diff --git a/public/members/_zzz.webp b/public/members/_zzz.webp
new file mode 100644
index 0000000..1a87a0f
Binary files /dev/null and b/public/members/_zzz.webp differ
diff --git a/public/members/communication_team_katerina.webp b/public/members/communication_team_katerina.webp
new file mode 100644
index 0000000..069664e
Binary files /dev/null and b/public/members/communication_team_katerina.webp differ
diff --git a/public/members/communication_team_saffron.webp b/public/members/communication_team_saffron.webp
new file mode 100644
index 0000000..379ada7
Binary files /dev/null and b/public/members/communication_team_saffron.webp differ
diff --git a/public/members/communication_team_stella.webp b/public/members/communication_team_stella.webp
new file mode 100644
index 0000000..a5dcef4
Binary files /dev/null and b/public/members/communication_team_stella.webp differ
diff --git a/public/members/communication_team_testing.webp b/public/members/communication_team_testing.webp
new file mode 100644
index 0000000..15f4ab7
Binary files /dev/null and b/public/members/communication_team_testing.webp differ
diff --git a/public/members/communication_team_thanishka.webp b/public/members/communication_team_thanishka.webp
new file mode 100644
index 0000000..cb18e8f
Binary files /dev/null and b/public/members/communication_team_thanishka.webp differ
diff --git a/public/members/houston_anna.webp b/public/members/houston_anna.webp
new file mode 100644
index 0000000..c10f7d1
Binary files /dev/null and b/public/members/houston_anna.webp differ
diff --git a/public/members/houston_chris.webp b/public/members/houston_chris.webp
new file mode 100644
index 0000000..3c0a4b5
Binary files /dev/null and b/public/members/houston_chris.webp differ
diff --git a/public/members/houston_emmanuel.webp b/public/members/houston_emmanuel.webp
new file mode 100644
index 0000000..d638e53
Binary files /dev/null and b/public/members/houston_emmanuel.webp differ
diff --git a/public/members/leadership_team_ben.webp b/public/members/leadership_team_ben.webp
new file mode 100644
index 0000000..535bfa9
Binary files /dev/null and b/public/members/leadership_team_ben.webp differ
diff --git a/public/members/leadership_team_ishita.webp b/public/members/leadership_team_ishita.webp
new file mode 100644
index 0000000..8e32466
Binary files /dev/null and b/public/members/leadership_team_ishita.webp differ
diff --git a/public/members/leadership_team_joshua_(left).webp b/public/members/leadership_team_joshua_(left).webp
new file mode 100644
index 0000000..3247637
Binary files /dev/null and b/public/members/leadership_team_joshua_(left).webp differ
diff --git a/public/members/leadership_team_rashmi.webp b/public/members/leadership_team_rashmi.webp
new file mode 100644
index 0000000..b4b8ea2
Binary files /dev/null and b/public/members/leadership_team_rashmi.webp differ
diff --git a/public/members/leadership_team_thanishka.webp b/public/members/leadership_team_thanishka.webp
new file mode 100644
index 0000000..cb18e8f
Binary files /dev/null and b/public/members/leadership_team_thanishka.webp differ
diff --git a/public/members/leadership_team_yixuan.webp b/public/members/leadership_team_yixuan.webp
new file mode 100644
index 0000000..fc6c3e7
Binary files /dev/null and b/public/members/leadership_team_yixuan.webp differ
diff --git a/public/members/membersData.json b/public/members/membersData.json
new file mode 100644
index 0000000..0dcafe0
--- /dev/null
+++ b/public/members/membersData.json
@@ -0,0 +1,254 @@
+[
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "✨ andrew ✨",
+ "cover": ""
+ },
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "⭐Kimberley⭐🐮",
+ "cover": ""
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Team Lead",
+ "name": "Aaron",
+ "cover": "/members/projects_fermata_aaron.webp"
+ },
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "Anna",
+ "cover": "/members/houston_anna.webp"
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Developer",
+ "name": "Anton",
+ "cover": "/members/projects_fermata_anton.webp"
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Project Member",
+ "name": "AntonCACHE",
+ "cover": ""
+ },
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "Becky Pog",
+ "cover": ""
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Treasurer",
+ "name": "Ben",
+ "cover": "/members/leadership_team_ben.webp"
+ },
+ {
+ "team": "Houston",
+ "desc": "Exec & Tech Lead",
+ "name": "Chris",
+ "cover": "/members/houston_chris.webp"
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Project Member",
+ "name": "David",
+ "cover": "/members/projects_fermata_david.webp"
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Project Member",
+ "name": "Dhivya",
+ "cover": "/members/projects_fermata_dhivya.webp"
+ },
+ {
+ "team": "Projects: Legato",
+ "desc": "Project Member",
+ "name": "Ella",
+ "cover": "/members/projects_legato_ella.webp"
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Project Member",
+ "name": "Emily",
+ "cover": "/members/projects_fermata_emily.webp"
+ },
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "Emmanuel",
+ "cover": "/members/houston_emmanuel.webp"
+ },
+ {
+ "team": "Projects: Schmetterlinge",
+ "desc": "Team Lead",
+ "name": "Enya",
+ "cover": "/members/projects_schmetterlinge_enya.webp"
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Co-chair",
+ "name": "Ishita",
+ "cover": "/members/leadership_team_ishita.webp"
+ },
+ {
+ "team": "Projects: Legato",
+ "desc": "Project Member",
+ "name": "James",
+ "cover": "/members/projects_legato_james.webp"
+ },
+ {
+ "team": "Projects: The Gaggle",
+ "desc": "Team Lead",
+ "name": "Jamie",
+ "cover": "/members/projects_the_gaggle_jamie.webp"
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Project Member",
+ "name": "Jessica",
+ "cover": "/members/projects_fermata_jessica.webp"
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Co-chair",
+ "name": "Joshua (Left)",
+ "cover": "/members/leadership_team_joshua_(left).webp"
+ },
+ {
+ "team": "Communication Team",
+ "desc": "Communications Member",
+ "name": "Katerina",
+ "cover": "/members/communication_team_katerina.webp"
+ },
+ {
+ "team": "Projects: Legato",
+ "desc": "Project Member",
+ "name": "Leo",
+ "cover": "/members/projects_legato_leo.webp"
+ },
+ {
+ "team": "Projects: Schmetterlinge",
+ "desc": "Project Member",
+ "name": "Olivia",
+ "cover": "/members/projects_schmetterlinge_olivia.webp"
+ },
+ {
+ "team": "Projects: Legato",
+ "desc": "Project Member",
+ "name": "Olivia",
+ "cover": "/members/projects_legato_olivia.webp"
+ },
+ {
+ "team": "Projects: The Gaggle",
+ "desc": "Project Member",
+ "name": "Olivia",
+ "cover": "/members/projects_the_gaggle_olivia.webp"
+ },
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "Owen",
+ "cover": ""
+ },
+ {
+ "team": "Projects: Schmetterlinge",
+ "desc": "Project Member",
+ "name": "Paidashe",
+ "cover": "/members/projects_schmetterlinge_paidashe.webp"
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Council Engagement Lead",
+ "name": "Rashmi",
+ "cover": "/members/leadership_team_rashmi.webp"
+ },
+ {
+ "team": "Communication Team",
+ "desc": "Communications Member",
+ "name": "Saffron",
+ "cover": "/members/communication_team_saffron.webp"
+ },
+ {
+ "team": "Projects: Schmetterlinge",
+ "desc": "Project Member",
+ "name": "Sebastian",
+ "cover": "/members/projects_schmetterlinge_sebastian.webp"
+ },
+ {
+ "team": "Projects: The Gaggle",
+ "desc": "Project Member",
+ "name": "Shreevali",
+ "cover": "/members/projects_the_gaggle_shreevali.webp"
+ },
+ {
+ "team": "Communication Team",
+ "desc": "Communications Member",
+ "name": "Stella",
+ "cover": "/members/communication_team_stella.webp"
+ },
+ {
+ "team": "Projects: The Gaggle",
+ "desc": "Project Member",
+ "name": "Tessa",
+ "cover": "/members/projects_the_gaggle_tessa.webp"
+ },
+ {
+ "team": "Communication Team",
+ "desc": "Communications Member",
+ "name": "testing",
+ "cover": "/members/communication_team_testing.webp"
+ },
+ {
+ "team": "Communication Team",
+ "desc": "Communications Lead",
+ "name": "Thanishka",
+ "cover": "/members/communication_team_thanishka.webp"
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Communications Lead",
+ "name": "Thanishka",
+ "cover": "/members/leadership_team_thanishka.webp"
+ },
+ {
+ "team": "Projects: Legato",
+ "desc": "Team Lead",
+ "name": "Toby",
+ "cover": "/members/projects_legato_toby.webp"
+ },
+ {
+ "team": "Projects: The Gaggle",
+ "desc": "Project Member",
+ "name": "Tommy",
+ "cover": "/members/projects_the_gaggle_tommy.webp"
+ },
+ {
+ "team": "Projects: Schmetterlinge",
+ "desc": "Project Member",
+ "name": "William",
+ "cover": "/members/projects_schmetterlinge_william.webp"
+ },
+ {
+ "team": "Houston",
+ "desc": "Project Manager",
+ "name": "Yash the mekanic",
+ "cover": ""
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Secretary",
+ "name": "Yixuan",
+ "cover": "/members/leadership_team_yixuan.webp"
+ },
+ {
+ "team": "",
+ "desc": "",
+ "name": "zzz",
+ "cover": "/members/_zzz.webp"
+ }
+]
\ No newline at end of file
diff --git a/public/members/projects_fermata_aaron.webp b/public/members/projects_fermata_aaron.webp
new file mode 100644
index 0000000..f302a4f
Binary files /dev/null and b/public/members/projects_fermata_aaron.webp differ
diff --git a/public/members/projects_fermata_anton.webp b/public/members/projects_fermata_anton.webp
new file mode 100644
index 0000000..8e26220
Binary files /dev/null and b/public/members/projects_fermata_anton.webp differ
diff --git a/public/members/projects_fermata_david.webp b/public/members/projects_fermata_david.webp
new file mode 100644
index 0000000..20d189e
Binary files /dev/null and b/public/members/projects_fermata_david.webp differ
diff --git a/public/members/projects_fermata_dhivya.webp b/public/members/projects_fermata_dhivya.webp
new file mode 100644
index 0000000..a130dd0
Binary files /dev/null and b/public/members/projects_fermata_dhivya.webp differ
diff --git a/public/members/projects_fermata_emily.webp b/public/members/projects_fermata_emily.webp
new file mode 100644
index 0000000..20f8bbb
Binary files /dev/null and b/public/members/projects_fermata_emily.webp differ
diff --git a/public/members/projects_fermata_jessica.webp b/public/members/projects_fermata_jessica.webp
new file mode 100644
index 0000000..1f5e02a
Binary files /dev/null and b/public/members/projects_fermata_jessica.webp differ
diff --git a/public/members/projects_legato_ella.webp b/public/members/projects_legato_ella.webp
new file mode 100644
index 0000000..e5497c2
Binary files /dev/null and b/public/members/projects_legato_ella.webp differ
diff --git a/public/members/projects_legato_james.webp b/public/members/projects_legato_james.webp
new file mode 100644
index 0000000..d064792
Binary files /dev/null and b/public/members/projects_legato_james.webp differ
diff --git a/public/members/projects_legato_leo.webp b/public/members/projects_legato_leo.webp
new file mode 100644
index 0000000..f11d7dd
Binary files /dev/null and b/public/members/projects_legato_leo.webp differ
diff --git a/public/members/projects_legato_olivia.webp b/public/members/projects_legato_olivia.webp
new file mode 100644
index 0000000..ee7ccf7
Binary files /dev/null and b/public/members/projects_legato_olivia.webp differ
diff --git a/public/members/projects_legato_toby.webp b/public/members/projects_legato_toby.webp
new file mode 100644
index 0000000..227c0f7
Binary files /dev/null and b/public/members/projects_legato_toby.webp differ
diff --git a/public/members/projects_schmetterlinge_enya.webp b/public/members/projects_schmetterlinge_enya.webp
new file mode 100644
index 0000000..dc66c00
Binary files /dev/null and b/public/members/projects_schmetterlinge_enya.webp differ
diff --git a/public/members/projects_schmetterlinge_olivia.webp b/public/members/projects_schmetterlinge_olivia.webp
new file mode 100644
index 0000000..ee7ccf7
Binary files /dev/null and b/public/members/projects_schmetterlinge_olivia.webp differ
diff --git a/public/members/projects_schmetterlinge_paidashe.webp b/public/members/projects_schmetterlinge_paidashe.webp
new file mode 100644
index 0000000..bc6fc4f
Binary files /dev/null and b/public/members/projects_schmetterlinge_paidashe.webp differ
diff --git a/public/members/projects_schmetterlinge_sebastian.webp b/public/members/projects_schmetterlinge_sebastian.webp
new file mode 100644
index 0000000..cec52cd
Binary files /dev/null and b/public/members/projects_schmetterlinge_sebastian.webp differ
diff --git a/public/members/projects_schmetterlinge_william.webp b/public/members/projects_schmetterlinge_william.webp
new file mode 100644
index 0000000..4c3a724
Binary files /dev/null and b/public/members/projects_schmetterlinge_william.webp differ
diff --git a/public/members/projects_the_gaggle_jamie.webp b/public/members/projects_the_gaggle_jamie.webp
new file mode 100644
index 0000000..95085cd
Binary files /dev/null and b/public/members/projects_the_gaggle_jamie.webp differ
diff --git a/public/members/projects_the_gaggle_olivia.webp b/public/members/projects_the_gaggle_olivia.webp
new file mode 100644
index 0000000..9516969
Binary files /dev/null and b/public/members/projects_the_gaggle_olivia.webp differ
diff --git a/public/members/projects_the_gaggle_shreevali.webp b/public/members/projects_the_gaggle_shreevali.webp
new file mode 100644
index 0000000..06f6847
Binary files /dev/null and b/public/members/projects_the_gaggle_shreevali.webp differ
diff --git a/public/members/projects_the_gaggle_tessa.webp b/public/members/projects_the_gaggle_tessa.webp
new file mode 100644
index 0000000..1238266
Binary files /dev/null and b/public/members/projects_the_gaggle_tessa.webp differ
diff --git a/public/members/projects_the_gaggle_tommy.webp b/public/members/projects_the_gaggle_tommy.webp
new file mode 100644
index 0000000..b10085d
Binary files /dev/null and b/public/members/projects_the_gaggle_tommy.webp differ
diff --git a/public/membersData.json b/public/membersData.json
new file mode 100644
index 0000000..28dbf17
--- /dev/null
+++ b/public/membersData.json
@@ -0,0 +1,254 @@
+[
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "✨ andrew ✨",
+ "cover": ""
+ },
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "⭐Kimberley⭐🐮",
+ "cover": ""
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Team Lead",
+ "name": "Aaron",
+ "cover": "/members/projects_fermata_aaron.webp"
+ },
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "Anna",
+ "cover": "/members/houston_anna.webp"
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Developer",
+ "name": "Anton",
+ "cover": "/members/projects_fermata_anton.webp"
+ },
+ {
+ "team": "",
+ "desc": "",
+ "name": "asdf",
+ "cover": "/members/_asdf.webp"
+ },
+ {
+ "team": "",
+ "desc": "",
+ "name": "asdf",
+ "cover": "/members/_asdf.webp"
+ },
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "Becky Pog",
+ "cover": ""
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Treasurer",
+ "name": "Ben",
+ "cover": "/members/leadership_team_ben.webp"
+ },
+ {
+ "team": "Houston",
+ "desc": "Exec & Tech Lead",
+ "name": "Chris",
+ "cover": "/members/houston_chris.webp"
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Project Member",
+ "name": "David",
+ "cover": "/members/projects_fermata_david.webp"
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Project Member",
+ "name": "Dhivya",
+ "cover": "/members/projects_fermata_dhivya.webp"
+ },
+ {
+ "team": "Projects: Legato",
+ "desc": "Project Member",
+ "name": "Ella",
+ "cover": "/members/projects_legato_ella.webp"
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Project Member",
+ "name": "Emily",
+ "cover": "/members/projects_fermata_emily.webp"
+ },
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "Emmanuel",
+ "cover": "/members/houston_emmanuel.webp"
+ },
+ {
+ "team": "Projects: Schmetterlinge",
+ "desc": "Team Lead",
+ "name": "Enya",
+ "cover": "/members/projects_schmetterlinge_enya.webp"
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Co-chair",
+ "name": "Ishita",
+ "cover": "/members/leadership_team_ishita.webp"
+ },
+ {
+ "team": "Projects: Legato",
+ "desc": "Project Member",
+ "name": "James",
+ "cover": "/members/projects_legato_james.webp"
+ },
+ {
+ "team": "Projects: The Gaggle",
+ "desc": "Team Lead",
+ "name": "Jamie",
+ "cover": "/members/projects_the_gaggle_jamie.webp"
+ },
+ {
+ "team": "Projects: Fermata",
+ "desc": "Project Member",
+ "name": "Jessica",
+ "cover": "/members/projects_fermata_jessica.webp"
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Co-chair",
+ "name": "Joshua (Left)",
+ "cover": "/members/leadership_team_joshua_(left).webp"
+ },
+ {
+ "team": "Communication Team",
+ "desc": "Communications Member",
+ "name": "Katerina",
+ "cover": "/members/communication_team_katerina.webp"
+ },
+ {
+ "team": "Projects: Legato",
+ "desc": "Project Member",
+ "name": "Leo",
+ "cover": "/members/projects_legato_leo.webp"
+ },
+ {
+ "team": "Projects: Schmetterlinge",
+ "desc": "Project Member",
+ "name": "Olivia",
+ "cover": "/members/projects_schmetterlinge_olivia.webp"
+ },
+ {
+ "team": "Projects: Legato",
+ "desc": "Project Member",
+ "name": "Olivia",
+ "cover": "/members/projects_legato_olivia.webp"
+ },
+ {
+ "team": "Projects: The Gaggle",
+ "desc": "Project Member",
+ "name": "Olivia",
+ "cover": "/members/projects_the_gaggle_olivia.webp"
+ },
+ {
+ "team": "Houston",
+ "desc": "Developer",
+ "name": "Owen",
+ "cover": ""
+ },
+ {
+ "team": "Projects: Schmetterlinge",
+ "desc": "Project Member",
+ "name": "Paidashe",
+ "cover": "/members/projects_schmetterlinge_paidashe.webp"
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Council Engagement Lead",
+ "name": "Rashmi",
+ "cover": "/members/leadership_team_rashmi.webp"
+ },
+ {
+ "team": "Communication Team",
+ "desc": "Communications Member",
+ "name": "Saffron",
+ "cover": "/members/communication_team_saffron.webp"
+ },
+ {
+ "team": "Projects: Schmetterlinge",
+ "desc": "Project Member",
+ "name": "Sebastian",
+ "cover": "/members/projects_schmetterlinge_sebastian.webp"
+ },
+ {
+ "team": "Projects: The Gaggle",
+ "desc": "Project Member",
+ "name": "Shreevali",
+ "cover": "/members/projects_the_gaggle_shreevali.webp"
+ },
+ {
+ "team": "Communication Team",
+ "desc": "Communications Member",
+ "name": "Stella",
+ "cover": "/members/communication_team_stella.webp"
+ },
+ {
+ "team": "Projects: The Gaggle",
+ "desc": "Project Member",
+ "name": "Tessa",
+ "cover": "/members/projects_the_gaggle_tessa.webp"
+ },
+ {
+ "team": "Communication Team",
+ "desc": "Communications Lead",
+ "name": "Thanishka",
+ "cover": "/members/communication_team_thanishka.webp"
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Communications Lead",
+ "name": "Thanishka",
+ "cover": "/members/leadership_team_thanishka.webp"
+ },
+ {
+ "team": "Projects: Legato",
+ "desc": "Team Lead",
+ "name": "Toby",
+ "cover": "/members/projects_legato_toby.webp"
+ },
+ {
+ "team": "Projects: The Gaggle",
+ "desc": "Project Member",
+ "name": "Tommy",
+ "cover": "/members/projects_the_gaggle_tommy.webp"
+ },
+ {
+ "team": "Projects: Schmetterlinge",
+ "desc": "Project Member",
+ "name": "William",
+ "cover": "/members/projects_schmetterlinge_william.webp"
+ },
+ {
+ "team": "Houston",
+ "desc": "Project Manager",
+ "name": "Yash the mekanic",
+ "cover": ""
+ },
+ {
+ "team": "Leadership Team",
+ "desc": "Secretary",
+ "name": "Yixuan",
+ "cover": "/members/leadership_team_yixuan.webp"
+ },
+ {
+ "team": "",
+ "desc": "",
+ "name": "zzz",
+ "cover": "/members/_zzz.webp"
+ }
+]
\ No newline at end of file
diff --git a/public/projects/beach_clean_up_cover.webp b/public/projects/beach_clean_up_cover.webp
new file mode 100644
index 0000000..a6b6550
Binary files /dev/null and b/public/projects/beach_clean_up_cover.webp differ
diff --git a/public/projects/board_game_night_cover.webp b/public/projects/board_game_night_cover.webp
new file mode 100644
index 0000000..77e5f57
Binary files /dev/null and b/public/projects/board_game_night_cover.webp differ
diff --git a/public/projects/careers_workshop_cover.webp b/public/projects/careers_workshop_cover.webp
new file mode 100644
index 0000000..bfa5322
Binary files /dev/null and b/public/projects/careers_workshop_cover.webp differ
diff --git a/public/projects/carouselList.json b/public/projects/carouselList.json
new file mode 100644
index 0000000..3319aff
--- /dev/null
+++ b/public/projects/carouselList.json
@@ -0,0 +1,41 @@
+[
+ {
+ "heading": "Quiz Night",
+ "subheadings": [
+ "Quiz Night"
+ ],
+ "paragraphs": [
+ "2nd July 12:30 - 3:30PM",
+ "This is a description about quizzes at YOO. Quizzes are good to learn from."
+ ],
+ "images": [
+ "/projects/carousel_content_2_image_0.webp"
+ ]
+ },
+ {
+ "heading": "YOO meeting",
+ "subheadings": [
+ "YOO meeting"
+ ],
+ "paragraphs": [
+ "2nd July 12:30 - 3:30PM",
+ "This is a description about quizzes at YOO. Quizzes are good to learn from."
+ ],
+ "images": [
+ "/projects/carousel_content_3_image_0.webp"
+ ]
+ },
+ {
+ "heading": "Art Gallery",
+ "subheadings": [
+ "Art Gallery"
+ ],
+ "paragraphs": [
+ "2nd August, 12:30 - 3:30PM",
+ "Come along and view some fine art! Maybe even meet some new friends!"
+ ],
+ "images": [
+ "/projects/carousel_content_1_image_0.webp"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/public/projects/carousel_content_1_image_0.webp b/public/projects/carousel_content_1_image_0.webp
new file mode 100644
index 0000000..5d1fbab
Binary files /dev/null and b/public/projects/carousel_content_1_image_0.webp differ
diff --git a/public/projects/carousel_content_2_image_0.webp b/public/projects/carousel_content_2_image_0.webp
new file mode 100644
index 0000000..7f95fb3
Binary files /dev/null and b/public/projects/carousel_content_2_image_0.webp differ
diff --git a/public/projects/carousel_content_3_image_0.webp b/public/projects/carousel_content_3_image_0.webp
new file mode 100644
index 0000000..b2a2f06
Binary files /dev/null and b/public/projects/carousel_content_3_image_0.webp differ
diff --git a/public/projects/film_festival_cover.webp b/public/projects/film_festival_cover.webp
new file mode 100644
index 0000000..576ee55
Binary files /dev/null and b/public/projects/film_festival_cover.webp differ
diff --git a/public/projects/kahoot_games_night_cover.webp b/public/projects/kahoot_games_night_cover.webp
new file mode 100644
index 0000000..9c270f6
Binary files /dev/null and b/public/projects/kahoot_games_night_cover.webp differ
diff --git a/public/projects/kahoot_night_cover.webp b/public/projects/kahoot_night_cover.webp
new file mode 100644
index 0000000..7330fb8
Binary files /dev/null and b/public/projects/kahoot_night_cover.webp differ
diff --git a/public/projects/life_skills_workshop_cover.webp b/public/projects/life_skills_workshop_cover.webp
new file mode 100644
index 0000000..aa0399f
Binary files /dev/null and b/public/projects/life_skills_workshop_cover.webp differ
diff --git a/public/projects/music_showcase_cover.webp b/public/projects/music_showcase_cover.webp
new file mode 100644
index 0000000..9c270f6
Binary files /dev/null and b/public/projects/music_showcase_cover.webp differ
diff --git a/public/projects/orakei_youth_expo_cover.webp b/public/projects/orakei_youth_expo_cover.webp
new file mode 100644
index 0000000..b2a2f06
Binary files /dev/null and b/public/projects/orakei_youth_expo_cover.webp differ
diff --git a/public/projects/projectsData.json b/public/projects/projectsData.json
new file mode 100644
index 0000000..7ea22a7
--- /dev/null
+++ b/public/projects/projectsData.json
@@ -0,0 +1,169 @@
+[
+ {
+ "title": "propject 4",
+ "date": "2024-09-24",
+ "description": "desc",
+ "cover": "",
+ "team": "tean 43",
+ "tags": [
+ "volunteering"
+ ],
+ "id": "10339839-0b9f-8011-971c-c5ae9a87cce2"
+ },
+ {
+ "title": "Board Game Night",
+ "date": "2024-06-09",
+ "description": "Placeholder project description.",
+ "cover": "/projects/board_game_night_cover.webp",
+ "team": "Team 2",
+ "tags": [
+ "games"
+ ],
+ "id": "3d6b89d6-e7e5-4a71-a315-90ec000ba0d3"
+ },
+ {
+ "title": "Quizex - Quiz Night",
+ "date": "2024-05-18",
+ "description": "Placeholder project description.",
+ "cover": "/projects/quizex_-_quiz_night_cover.webp",
+ "team": "Team 3",
+ "tags": [
+ "games"
+ ],
+ "id": "0fe7cf87-01e8-40e8-af75-dbcd12df8bda"
+ },
+ {
+ "title": "Beach clean up",
+ "date": "2024-05-13",
+ "description": "Come join us to clean the local beach and save our environment!",
+ "cover": "/projects/beach_clean_up_cover.webp",
+ "team": "Team 4",
+ "tags": [
+ "volunteering"
+ ],
+ "id": "f75a6e96-82dc-4dc7-ad9f-d63ff136aa47"
+ },
+ {
+ "title": "Kahoot Night",
+ "date": "2024-05-11",
+ "description": "Placeholder project description.",
+ "cover": "/projects/kahoot_night_cover.webp",
+ "team": "Team 1",
+ "tags": [
+ "games"
+ ],
+ "id": "7e15c320-90b6-4bfb-bb75-c18222fb157b"
+ },
+ {
+ "title": "Kahoot Games Night",
+ "date": "2024-05-05",
+ "description": "Placeholder project description.",
+ "cover": "/projects/kahoot_games_night_cover.webp",
+ "team": "Team 2",
+ "tags": [
+ "games"
+ ],
+ "id": "256fe646-3750-48d1-9cbf-30e8ea05cd33"
+ },
+ {
+ "title": "Orakei Youth Expo",
+ "date": "2023-12-09",
+ "description": "Placeholder project description.",
+ "cover": "/projects/orakei_youth_expo_cover.webp",
+ "team": "Team 3",
+ "tags": [
+ "volunteering",
+ "educational"
+ ],
+ "id": "ab70378e-268f-4791-b9ac-6a286c88ff3c"
+ },
+ {
+ "title": "Film Festival",
+ "date": "2023-09-30",
+ "description": "Placeholder project description.",
+ "cover": "/projects/film_festival_cover.webp",
+ "team": "Team 4",
+ "tags": [
+ "art",
+ "music"
+ ],
+ "id": "dde22970-d29c-4bc8-af59-e445a4026bfe"
+ },
+ {
+ "title": "Music Showcase",
+ "date": "2023-09-17",
+ "description": "Placeholder project description.",
+ "cover": "/projects/music_showcase_cover.webp",
+ "team": "Team 1",
+ "tags": [
+ "music"
+ ],
+ "id": "dbd309c6-55ec-4149-bd83-2cc4761e4e85"
+ },
+ {
+ "title": "Sportathon",
+ "date": "2023-09-02",
+ "description": "Placeholder project description.",
+ "cover": "/projects/sportathon_cover.webp",
+ "team": "Team 2",
+ "tags": [
+ "games",
+ "sports"
+ ],
+ "id": "6cf27617-6cee-4af5-a1ba-c0b7cecf81f0"
+ },
+ {
+ "title": "",
+ "date": "",
+ "description": "",
+ "cover": "",
+ "team": "",
+ "tags": [],
+ "id": "10339839-0b9f-8032-a51d-e9a191b15227"
+ },
+ {
+ "title": "Careers Workshop",
+ "date": "",
+ "description": "Placeholder project description.",
+ "cover": "/projects/careers_workshop_cover.webp",
+ "team": "Team 3",
+ "tags": [
+ "educational"
+ ],
+ "id": "78294581-4f99-4efa-9d4c-f88a00f6e2ae"
+ },
+ {
+ "title": "Student Leadership Conference",
+ "date": "",
+ "description": "Placeholder project description.",
+ "cover": "/projects/student_leadership_conference_cover.webp",
+ "team": "Team 2",
+ "tags": [
+ "educational",
+ "volunteering"
+ ],
+ "id": "9d0e4b44-04e2-41ae-9388-5bd07d91551c"
+ },
+ {
+ "title": "Life Skills Workshop",
+ "date": "",
+ "description": "Placeholder project description.",
+ "cover": "/projects/life_skills_workshop_cover.webp",
+ "team": "Team 4",
+ "tags": [
+ "educational"
+ ],
+ "id": "3d447c69-eb7b-41ce-a0f3-3651620873fe"
+ },
+ {
+ "title": "Quiz Night",
+ "date": "",
+ "description": "Placeholder project description.",
+ "cover": "/projects/quiz_night_cover.webp",
+ "team": "Team 1",
+ "tags": [
+ "games"
+ ],
+ "id": "5a11c339-08bc-4587-9417-2c3cb9ea858f"
+ }
+]
\ No newline at end of file
diff --git a/public/projects/quiz_night_cover.webp b/public/projects/quiz_night_cover.webp
new file mode 100644
index 0000000..34267b9
Binary files /dev/null and b/public/projects/quiz_night_cover.webp differ
diff --git a/public/projects/quizex_-_quiz_night_cover.webp b/public/projects/quizex_-_quiz_night_cover.webp
new file mode 100644
index 0000000..cf1e41f
Binary files /dev/null and b/public/projects/quizex_-_quiz_night_cover.webp differ
diff --git a/public/projects/sportathon_cover.webp b/public/projects/sportathon_cover.webp
new file mode 100644
index 0000000..9937e28
Binary files /dev/null and b/public/projects/sportathon_cover.webp differ
diff --git a/public/projects/student_leadership_conference_cover.webp b/public/projects/student_leadership_conference_cover.webp
new file mode 100644
index 0000000..7d2d695
Binary files /dev/null and b/public/projects/student_leadership_conference_cover.webp differ
diff --git a/public/webb3.jpg b/public/webb3.jpg
new file mode 100644
index 0000000..e270d19
Binary files /dev/null and b/public/webb3.jpg differ
diff --git a/src/components/AdminPage/RefreshSection.tsx b/src/components/AdminPage/RefreshSection.tsx
new file mode 100644
index 0000000..f565828
--- /dev/null
+++ b/src/components/AdminPage/RefreshSection.tsx
@@ -0,0 +1,88 @@
+import { useState } from 'react';
+
+interface RefreshSectionProps {
+ newPassword: string;
+ setNewPassword: (value: string) => void;
+ setErrorMessage: (message: string) => void;
+ handleKeyDown: (event: React.KeyboardEvent Logged in