From ab72dd88cb5aa0740e27e48d5ea9a8cc190bd2c8 Mon Sep 17 00:00:00 2001 From: Tim Howitz Date: Mon, 28 Apr 2025 19:03:29 +0100 Subject: [PATCH] Did a lot of cleaning up and improving --- package-lock.json | 102 +++++++- package.json | 1 + src/app/contact-us/page.tsx | 286 ++++++++++------------ src/app/earthquakes/page.tsx | 147 +++++------ src/app/layout.tsx | 50 ++-- src/app/observatories/page.tsx | 120 ++++----- src/app/our-mission/page.tsx | 90 ++++--- src/app/shop/page.tsx | 433 ++++++++++++++++++++------------- src/app/warehouse/page.tsx | 100 ++++---- src/components/AuthModal.tsx | 244 ++++++++++--------- src/components/Sidebar.tsx | 169 ++++++------- src/components/navbar.tsx | 172 ++++++++----- src/components/sidebar_e.tsx | 72 +++--- src/components/sidebar_o.tsx | 70 +++--- src/hooks/store.ts | 10 + src/types/Artifact.ts | 11 + src/types/StoreModel.ts | 17 ++ tsconfig.json | 10 +- 18 files changed, 1178 insertions(+), 926 deletions(-) create mode 100644 src/hooks/store.ts create mode 100644 src/types/Artifact.ts create mode 100644 src/types/StoreModel.ts diff --git a/package-lock.json b/package-lock.json index 383ebc5..fc39165 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "bcryptjs": "^3.0.2", "body-parser": "^2.2.0", "csv-parser": "^3.2.0", + "easy-peasy": "^6.1.0", "express": "^5.1.0", "fs": "^0.0.1-security", "jwt-decode": "^4.0.0", @@ -55,6 +56,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@babel/runtime": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@emnapi/runtime": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", @@ -1637,7 +1650,7 @@ "version": "19.0.10", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz", "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "csstype": "^3.0.2" @@ -1647,7 +1660,7 @@ "version": "19.0.4", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz", "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==", - "dev": true, + "devOptional": true, "license": "MIT", "peerDependencies": { "@types/react": "^19.0.0" @@ -2803,7 +2816,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/csv-parser": { @@ -3048,6 +3061,42 @@ "dev": true, "license": "MIT" }, + "node_modules/easy-peasy": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/easy-peasy/-/easy-peasy-6.1.0.tgz", + "integrity": "sha512-zW7mUATJRohNWWSrihmeFhS85jjsIHa1ptTDn6bSXa2DXh8Zeawfpmm1LtKa+Y6jNNz5aQlMjWZ8uuuVk5bdVQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.22.6", + "fast-deep-equal": "^3.1.3", + "immer": "^9.0.21", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "ts-toolbelt": "^9.6.0", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@types/react": "^18.0 || ^19.0", + "@types/react-dom": "^18.0 || ^19.0", + "react": "^18.0 || ^19.0", + "react-dom": "^18.0 || ^19.0", + "react-native": ">=0.59" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -3844,7 +3893,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, "license": "MIT" }, "node_modules/fast-glob": { @@ -4561,6 +4609,16 @@ "node": ">= 4" } }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -6605,6 +6663,21 @@ "node": ">=0.10.0" } }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -6628,6 +6701,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -7770,6 +7849,12 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/ts-toolbelt": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "license": "Apache-2.0" + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -7953,6 +8038,15 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/util": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", diff --git a/package.json b/package.json index a93180e..6bec9ce 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "bcryptjs": "^3.0.2", "body-parser": "^2.2.0", "csv-parser": "^3.2.0", + "easy-peasy": "^6.1.0", "express": "^5.1.0", "fs": "^0.0.1-security", "jwt-decode": "^4.0.0", diff --git a/src/app/contact-us/page.tsx b/src/app/contact-us/page.tsx index ac3ebc2..7c7f00e 100644 --- a/src/app/contact-us/page.tsx +++ b/src/app/contact-us/page.tsx @@ -1,173 +1,143 @@ "use client"; -import React, { useState } from "react"; import Image from "next/image"; +import React, { useState } from "react"; const ContactUs = () => { - const [formData, setFormData] = useState({ - name: "", - email: "", - message: "", - }); + const [formData, setFormData] = useState({ + name: "", + email: "", + message: "", + }); - const handleChange = (e) => { - setFormData({ ...formData, [e.target.name]: e.target.value }); - }; + const handleChange = (e) => { + setFormData({ ...formData, [e.target.name]: e.target.value }); + }; - const handleSubmit = (e) => { - e.preventDefault(); - console.log("Form submitted with data:", formData); - alert("Thank you for reaching out! We will get back to you soon."); - setFormData({ name: "", email: "", message: "" }); - }; + const handleSubmit = (e) => { + e.preventDefault(); + console.log("Form submitted with data:", formData); + alert("Thank you for reaching out! We will get back to you soon."); + setFormData({ name: "", email: "", message: "" }); + }; - return ( -
- Logo - - {/* Overlay for readability */} -
- {/* Container */} -
- {/* Header */} -

- Contact Us -

-

- Have questions or concerns about earthquake preparedness? Contact us - using the form below or through the provided contact details. -

+ return ( +
+ Logo - {/* Content Section */} -
- {/* Contact Form Section */} -
-
-
- - -
+ {/* Overlay for readability */} +
+ {/* Container */} +
+ {/* Header */} +

Contact Us

+

+ Have questions or concerns about earthquake preparedness? Contact us using the form below or through the provided + contact details. +

-
- - -
+ {/* Content Section */} +
+ {/* Contact Form Section */} +
+ +
+ + +
-
- -