feat: redesign Login/Register with HUD aesthetic and Google Auth integration

This commit is contained in:
2026-02-22 15:31:02 -05:00
parent c6b97c4188
commit 33154169c8
12 changed files with 1116 additions and 419 deletions

View File

@ -16,6 +16,7 @@
"@tailwindcss/vite": "^4.2.0",
"axios": "^1.13.2",
"chart.js": "^4.5.1",
"firebase": "^12.9.0",
"firebase-tools": "^15.7.0",
"html2canvas": "^1.4.1",
"jspdf": "^4.1.0",
@ -2367,6 +2368,649 @@
"node": ">=18"
}
},
"node_modules/@firebase/ai": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/@firebase/ai/-/ai-2.8.0.tgz",
"integrity": "sha512-grWYGFPsSo+pt+6CYeKR0kWnUfoLLS3xgWPvNrhAS5EPxl6xWq7+HjDZqX24yLneETyl45AVgDsTbVgxeWeRfg==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/app-check-interop-types": "0.3.3",
"@firebase/component": "0.7.0",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x",
"@firebase/app-types": "0.x"
}
},
"node_modules/@firebase/analytics": {
"version": "0.10.19",
"resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.19.tgz",
"integrity": "sha512-3wU676fh60gaiVYQEEXsbGS4HbF2XsiBphyvvqDbtC1U4/dO4coshbYktcCHq+HFaGIK07iHOh4pME0hEq1fcg==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/installations": "0.6.19",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/analytics-compat": {
"version": "0.2.25",
"resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.25.tgz",
"integrity": "sha512-fdzoaG0BEKbqksRDhmf4JoyZf16Wosrl0Y7tbZtJyVDOOwziE0vrFjmZuTdviL0yhak+Nco6rMsUUbkbD+qb6Q==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/analytics": "0.10.19",
"@firebase/analytics-types": "0.8.3",
"@firebase/component": "0.7.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/analytics-types": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.3.tgz",
"integrity": "sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg==",
"license": "Apache-2.0"
},
"node_modules/@firebase/app": {
"version": "0.14.8",
"resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.14.8.tgz",
"integrity": "sha512-WiE9uCGRLUnShdjb9iP20sA3ToWrBbNXr14/N5mow7Nls9dmKgfGaGX5cynLvrltxq2OrDLh1VDNaUgsnS/k/g==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"idb": "7.1.1",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
}
},
"node_modules/@firebase/app-check": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.11.0.tgz",
"integrity": "sha512-XAvALQayUMBJo58U/rxW02IhsesaxxfWVmVkauZvGEz3vOAjMEQnzFlyblqkc2iAaO82uJ2ZVyZv9XzPfxjJ6w==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/app-check-compat": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.4.0.tgz",
"integrity": "sha512-UfK2Q8RJNjYM/8MFORltZRG9lJj11k0nW84rrffiKvcJxLf1jf6IEjCIkCamykHE73C6BwqhVfhIBs69GXQV0g==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/app-check": "0.11.0",
"@firebase/app-check-types": "0.5.3",
"@firebase/component": "0.7.0",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/app-check-interop-types": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.3.tgz",
"integrity": "sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A==",
"license": "Apache-2.0"
},
"node_modules/@firebase/app-check-types": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.3.tgz",
"integrity": "sha512-hyl5rKSj0QmwPdsAxrI5x1otDlByQ7bvNvVt8G/XPO2CSwE++rmSVf3VEhaeOR4J8ZFaF0Z0NDSmLejPweZ3ng==",
"license": "Apache-2.0"
},
"node_modules/@firebase/app-compat": {
"version": "0.5.8",
"resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.5.8.tgz",
"integrity": "sha512-4De6SUZ36zozl9kh5rZSxKWULpgty27rMzZ6x+xkoo7+NWyhWyFdsdvhFsWhTw/9GGj0wXIcbTjwHYCUIUuHyg==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@firebase/app": "0.14.8",
"@firebase/component": "0.7.0",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
}
},
"node_modules/@firebase/app-types": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.3.tgz",
"integrity": "sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==",
"license": "Apache-2.0",
"peer": true
},
"node_modules/@firebase/auth": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.12.0.tgz",
"integrity": "sha512-zkvLpsrxynWHk07qGrUDfCSqKf4AvfZGEqJ7mVCtYGjNNDbGE71k0Yn84rg8QEZu4hQw1BC0qDEHzpNVBcSVmA==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x",
"@react-native-async-storage/async-storage": "^2.2.0"
},
"peerDependenciesMeta": {
"@react-native-async-storage/async-storage": {
"optional": true
}
}
},
"node_modules/@firebase/auth-compat": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.6.2.tgz",
"integrity": "sha512-8UhCzF6pav9bw/eXA8Zy1QAKssPRYEYXaWagie1ewLTwHkXv6bKp/j6/IwzSYQP67sy/BMFXIFaCCsoXzFLr7A==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/auth": "1.12.0",
"@firebase/auth-types": "0.13.0",
"@firebase/component": "0.7.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/auth-interop-types": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.4.tgz",
"integrity": "sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA==",
"license": "Apache-2.0"
},
"node_modules/@firebase/auth-types": {
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.13.0.tgz",
"integrity": "sha512-S/PuIjni0AQRLF+l9ck0YpsMOdE8GO2KU6ubmBB7P+7TJUCQDa3R1dlgYm9UzGbbePMZsp0xzB93f2b/CgxMOg==",
"license": "Apache-2.0",
"peerDependencies": {
"@firebase/app-types": "0.x",
"@firebase/util": "1.x"
}
},
"node_modules/@firebase/component": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.7.0.tgz",
"integrity": "sha512-wR9En2A+WESUHexjmRHkqtaVH94WLNKt6rmeqZhSLBybg4Wyf0Umk04SZsS6sBq4102ZsDBFwoqMqJYj2IoDSg==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
}
},
"node_modules/@firebase/data-connect": {
"version": "0.3.12",
"resolved": "https://registry.npmjs.org/@firebase/data-connect/-/data-connect-0.3.12.tgz",
"integrity": "sha512-baPddcoNLj/+vYo+HSJidJUdr5W4OkhT109c5qhR8T1dJoZcyJpkv/dFpYlw/VJ3dV66vI8GHQFrmAZw/xUS4g==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/auth-interop-types": "0.2.4",
"@firebase/component": "0.7.0",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/database": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.1.0.tgz",
"integrity": "sha512-gM6MJFae3pTyNLoc9VcJNuaUDej0ctdjn3cVtILo3D5lpp0dmUHHLFN/pUKe7ImyeB1KAvRlEYxvIHNF04Filg==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/app-check-interop-types": "0.3.3",
"@firebase/auth-interop-types": "0.2.4",
"@firebase/component": "0.7.0",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"faye-websocket": "0.11.4",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
}
},
"node_modules/@firebase/database-compat": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.1.0.tgz",
"integrity": "sha512-8nYc43RqxScsePVd1qe1xxvWNf0OBnbwHxmXJ7MHSuuTVYFO3eLyLW3PiCKJ9fHnmIz4p4LbieXwz+qtr9PZDg==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/database": "1.1.0",
"@firebase/database-types": "1.0.16",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
}
},
"node_modules/@firebase/database-types": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.16.tgz",
"integrity": "sha512-xkQLQfU5De7+SPhEGAXFBnDryUWhhlFXelEg2YeZOQMCdoe7dL64DDAd77SQsR+6uoXIZY5MB4y/inCs4GTfcw==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/app-types": "0.9.3",
"@firebase/util": "1.13.0"
}
},
"node_modules/@firebase/firestore": {
"version": "4.11.0",
"resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.11.0.tgz",
"integrity": "sha512-Zb88s8rssBd0J2Tt+NUXMPt2sf+Dq7meatKiJf5t9oto1kZ8w9gK59Koe1uPVbaKfdgBp++N/z0I4G/HamyEhg==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"@firebase/webchannel-wrapper": "1.0.5",
"@grpc/grpc-js": "~1.9.0",
"@grpc/proto-loader": "^0.7.8",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/firestore-compat": {
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.4.5.tgz",
"integrity": "sha512-yVX1CkVvqBI4qbA56uZo42xFA4TNU0ICQ+9AFDvYq9U9Xu6iAx9lFDAk/tN+NGereQQXXCSnpISwc/oxsQqPLA==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/firestore": "4.11.0",
"@firebase/firestore-types": "3.0.3",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/firestore-types": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.3.tgz",
"integrity": "sha512-hD2jGdiWRxB/eZWF89xcK9gF8wvENDJkzpVFb4aGkzfEaKxVRD1kjz1t1Wj8VZEp2LCB53Yx1zD8mrhQu87R6Q==",
"license": "Apache-2.0",
"peerDependencies": {
"@firebase/app-types": "0.x",
"@firebase/util": "1.x"
}
},
"node_modules/@firebase/firestore/node_modules/@grpc/grpc-js": {
"version": "1.9.15",
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.15.tgz",
"integrity": "sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==",
"license": "Apache-2.0",
"dependencies": {
"@grpc/proto-loader": "^0.7.8",
"@types/node": ">=12.12.47"
},
"engines": {
"node": "^8.13.0 || >=10.10.0"
}
},
"node_modules/@firebase/firestore/node_modules/@grpc/proto-loader": {
"version": "0.7.15",
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz",
"integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==",
"license": "Apache-2.0",
"dependencies": {
"lodash.camelcase": "^4.3.0",
"long": "^5.0.0",
"protobufjs": "^7.2.5",
"yargs": "^17.7.2"
},
"bin": {
"proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
},
"engines": {
"node": ">=6"
}
},
"node_modules/@firebase/functions": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.13.1.tgz",
"integrity": "sha512-sUeWSb0rw5T+6wuV2o9XNmh9yHxjFI9zVGFnjFi+n7drTEWpl7ZTz1nROgGrSu472r+LAaj+2YaSicD4R8wfbw==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/app-check-interop-types": "0.3.3",
"@firebase/auth-interop-types": "0.2.4",
"@firebase/component": "0.7.0",
"@firebase/messaging-interop-types": "0.2.3",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/functions-compat": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.4.1.tgz",
"integrity": "sha512-AxxUBXKuPrWaVNQ8o1cG1GaCAtXT8a0eaTDfqgS5VsRYLAR0ALcfqDLwo/QyijZj1w8Qf8n3Qrfy/+Im245hOQ==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/functions": "0.13.1",
"@firebase/functions-types": "0.6.3",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/functions-types": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.3.tgz",
"integrity": "sha512-EZoDKQLUHFKNx6VLipQwrSMh01A1SaL3Wg6Hpi//x6/fJ6Ee4hrAeswK99I5Ht8roiniKHw4iO0B1Oxj5I4plg==",
"license": "Apache-2.0"
},
"node_modules/@firebase/installations": {
"version": "0.6.19",
"resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.19.tgz",
"integrity": "sha512-nGDmiwKLI1lerhwfwSHvMR9RZuIH5/8E3kgUWnVRqqL7kGVSktjLTWEMva7oh5yxQ3zXfIlIwJwMcaM5bK5j8Q==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/util": "1.13.0",
"idb": "7.1.1",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/installations-compat": {
"version": "0.2.19",
"resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.19.tgz",
"integrity": "sha512-khfzIY3EI5LePePo7vT19/VEIH1E3iYsHknI/6ek9T8QCozAZshWT9CjlwOzZrKvTHMeNcbpo/VSOSIWDSjWdQ==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/installations": "0.6.19",
"@firebase/installations-types": "0.5.3",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/installations-types": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.3.tgz",
"integrity": "sha512-2FJI7gkLqIE0iYsNQ1P751lO3hER+Umykel+TkLwHj6plzWVxqvfclPUZhcKFVQObqloEBTmpi2Ozn7EkCABAA==",
"license": "Apache-2.0",
"peerDependencies": {
"@firebase/app-types": "0.x"
}
},
"node_modules/@firebase/logger": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.5.0.tgz",
"integrity": "sha512-cGskaAvkrnh42b3BA3doDWeBmuHFO/Mx5A83rbRDYakPjO9bJtRL3dX7javzc2Rr/JHZf4HlterTW2lUkfeN4g==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
}
},
"node_modules/@firebase/messaging": {
"version": "0.12.23",
"resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.23.tgz",
"integrity": "sha512-cfuzv47XxqW4HH/OcR5rM+AlQd1xL/VhuaeW/wzMW1LFrsFcTn0GND/hak1vkQc2th8UisBcrkVcQAnOnKwYxg==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/installations": "0.6.19",
"@firebase/messaging-interop-types": "0.2.3",
"@firebase/util": "1.13.0",
"idb": "7.1.1",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/messaging-compat": {
"version": "0.2.23",
"resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.23.tgz",
"integrity": "sha512-SN857v/kBUvlQ9X/UjAqBoQ2FEaL1ZozpnmL1ByTe57iXkmnVVFm9KqAsTfmf+OEwWI4kJJe9NObtN/w22lUgg==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/messaging": "0.12.23",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/messaging-interop-types": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.3.tgz",
"integrity": "sha512-xfzFaJpzcmtDjycpDeCUj0Ge10ATFi/VHVIvEEjDNc3hodVBQADZ7BWQU7CuFpjSHE+eLuBI13z5F/9xOoGX8Q==",
"license": "Apache-2.0"
},
"node_modules/@firebase/performance": {
"version": "0.7.9",
"resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.7.9.tgz",
"integrity": "sha512-UzybENl1EdM2I1sjYm74xGt/0JzRnU/0VmfMAKo2LSpHJzaj77FCLZXmYQ4oOuE+Pxtt8Wy2BVJEENiZkaZAzQ==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/installations": "0.6.19",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0",
"web-vitals": "^4.2.4"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/performance-compat": {
"version": "0.2.22",
"resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.22.tgz",
"integrity": "sha512-xLKxaSAl/FVi10wDX/CHIYEUP13jXUjinL+UaNXT9ByIvxII5Ne5150mx6IgM8G6Q3V+sPiw9C8/kygkyHUVxg==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/logger": "0.5.0",
"@firebase/performance": "0.7.9",
"@firebase/performance-types": "0.2.3",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/performance-types": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.3.tgz",
"integrity": "sha512-IgkyTz6QZVPAq8GSkLYJvwSLr3LS9+V6vNPQr0x4YozZJiLF5jYixj0amDtATf1X0EtYHqoPO48a9ija8GocxQ==",
"license": "Apache-2.0"
},
"node_modules/@firebase/remote-config": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.8.0.tgz",
"integrity": "sha512-sJz7C2VACeE257Z/3kY9Ap2WXbFsgsDLfaGfZmmToKAK39ipXxFan+vzB9CSbF6mP7bzjyzEnqPcMXhAnYE6fQ==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/installations": "0.6.19",
"@firebase/logger": "0.5.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/remote-config-compat": {
"version": "0.2.21",
"resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.21.tgz",
"integrity": "sha512-9+lm0eUycxbu8GO25JfJe4s6R2xlDqlVt0CR6CvN9E6B4AFArEV4qfLoDVRgIEB7nHKwvH2nYRocPWfmjRQTnw==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/logger": "0.5.0",
"@firebase/remote-config": "0.8.0",
"@firebase/remote-config-types": "0.5.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/remote-config-types": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.5.0.tgz",
"integrity": "sha512-vI3bqLoF14L/GchtgayMiFpZJF+Ao3uR8WCde0XpYNkSokDpAKca2DxvcfeZv7lZUqkUwQPL2wD83d3vQ4vvrg==",
"license": "Apache-2.0"
},
"node_modules/@firebase/storage": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.14.0.tgz",
"integrity": "sha512-xWWbb15o6/pWEw8H01UQ1dC5U3rf8QTAzOChYyCpafV6Xki7KVp3Yaw2nSklUwHEziSWE9KoZJS7iYeyqWnYFA==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/storage-compat": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.4.0.tgz",
"integrity": "sha512-vDzhgGczr1OfcOy285YAPur5pWDEvD67w4thyeCUh6Ys0izN9fNYtA1MJERmNBfqjqu0lg0FM5GLbw0Il21M+g==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.7.0",
"@firebase/storage": "0.14.0",
"@firebase/storage-types": "0.8.3",
"@firebase/util": "1.13.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/storage-types": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.3.tgz",
"integrity": "sha512-+Muk7g9uwngTpd8xn9OdF/D48uiQ7I1Fae7ULsWPuKoCH3HU7bfFPhxtJYzyhjdniowhuDpQcfPmuNRAqZEfvg==",
"license": "Apache-2.0",
"peerDependencies": {
"@firebase/app-types": "0.x",
"@firebase/util": "1.x"
}
},
"node_modules/@firebase/util": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.13.0.tgz",
"integrity": "sha512-0AZUyYUfpMNcztR5l09izHwXkZpghLgCUaAGjtMwXnCg3bj4ml5VgiwqOMOxJ+Nw4qN/zJAaOQBcJ7KGkWStqQ==",
"hasInstallScript": true,
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"tslib": "^2.1.0"
},
"engines": {
"node": ">=20.0.0"
}
},
"node_modules/@firebase/webchannel-wrapper": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.5.tgz",
"integrity": "sha512-+uGNN7rkfn41HLO0vekTFhTxk61eKa8mTpRGLO0QSqlQdKvIoGAvLp3ppdVIWbTGYJWM6Kp0iN+PjMIOcnVqTw==",
"license": "Apache-2.0"
},
"node_modules/@google-cloud/cloud-sql-connector": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/@google-cloud/cloud-sql-connector/-/cloud-sql-connector-1.9.1.tgz",
@ -8787,6 +9431,18 @@
],
"license": "BSD-3-Clause"
},
"node_modules/faye-websocket": {
"version": "0.11.4",
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
"integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
"license": "Apache-2.0",
"dependencies": {
"websocket-driver": ">=0.5.1"
},
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/fd-slicer": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
@ -8923,6 +9579,42 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
"node_modules/firebase": {
"version": "12.9.0",
"resolved": "https://registry.npmjs.org/firebase/-/firebase-12.9.0.tgz",
"integrity": "sha512-CwwTYoqZg6KxygPOaaJqIc4aoLvo0RCRrXoln9GoxLE8QyAwTydBaSLGVlR4WPcuOgN3OEL0tJLT1H4IU/dv7w==",
"license": "Apache-2.0",
"dependencies": {
"@firebase/ai": "2.8.0",
"@firebase/analytics": "0.10.19",
"@firebase/analytics-compat": "0.2.25",
"@firebase/app": "0.14.8",
"@firebase/app-check": "0.11.0",
"@firebase/app-check-compat": "0.4.0",
"@firebase/app-compat": "0.5.8",
"@firebase/app-types": "0.9.3",
"@firebase/auth": "1.12.0",
"@firebase/auth-compat": "0.6.2",
"@firebase/data-connect": "0.3.12",
"@firebase/database": "1.1.0",
"@firebase/database-compat": "2.1.0",
"@firebase/firestore": "4.11.0",
"@firebase/firestore-compat": "0.4.5",
"@firebase/functions": "0.13.1",
"@firebase/functions-compat": "0.4.1",
"@firebase/installations": "0.6.19",
"@firebase/installations-compat": "0.2.19",
"@firebase/messaging": "0.12.23",
"@firebase/messaging-compat": "0.2.23",
"@firebase/performance": "0.7.9",
"@firebase/performance-compat": "0.2.22",
"@firebase/remote-config": "0.8.0",
"@firebase/remote-config-compat": "0.2.21",
"@firebase/storage": "0.14.0",
"@firebase/storage-compat": "0.4.0",
"@firebase/util": "1.13.0"
}
},
"node_modules/firebase-tools": {
"version": "15.7.0",
"resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-15.7.0.tgz",
@ -10261,6 +10953,12 @@
"url": "https://opencollective.com/express"
}
},
"node_modules/http-parser-js": {
"version": "0.5.10",
"resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz",
"integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==",
"license": "MIT"
},
"node_modules/http-proxy-agent": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
@ -10307,7 +11005,6 @@
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
"integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==",
"dev": true,
"license": "ISC"
},
"node_modules/ieee754": {
@ -16550,6 +17247,12 @@
"node": ">= 8"
}
},
"node_modules/web-vitals": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz",
"integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==",
"license": "Apache-2.0"
},
"node_modules/webidl-conversions": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
@ -16557,6 +17260,29 @@
"dev": true,
"license": "BSD-2-Clause"
},
"node_modules/websocket-driver": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
"integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
"license": "Apache-2.0",
"dependencies": {
"http-parser-js": ">=0.5.1",
"safe-buffer": ">=5.1.0",
"websocket-extensions": ">=0.1.1"
},
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/websocket-extensions": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
"license": "Apache-2.0",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/whatwg-fetch": {
"version": "3.6.20",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",