diff --git a/app/contact/page.tsx b/app/contact/page.tsx index e59fc88..9a1cea3 100644 --- a/app/contact/page.tsx +++ b/app/contact/page.tsx @@ -1,15 +1,14 @@ "use client"; -import "react-toastify/dist/ReactToastify.css"; -import { ToastContainer } from "react-toastify"; - import { useState, useEffect } from "react"; import { ImSpinner9 } from "react-icons/im"; import { BiSolidPaperPlane } from "react-icons/bi"; import { motion, AnimatePresence } from "framer-motion"; +import { Toaster } from "sonner"; import { handleSubmit } from "@/utils/handleSubmit"; import { fadeInAnimation } from "@/utils/framerAnimations"; import { Blur, InputField, Navbar, Socials } from "@/components"; +import ParticlesComponent from "@/components/Particles"; export default function Page() { const [isLoading, setIsLoading] = useState(false); @@ -29,10 +28,12 @@ export default function Page() { + +
-

+

Contact

@@ -43,7 +44,7 @@ export default function Page() {

-
+

Address

@@ -54,13 +55,6 @@ export default function Page() {
diff --git a/app/layout.tsx b/app/layout.tsx index 9ffc389..7c628da 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,10 +1,10 @@ import "./globals.css"; import type { Metadata } from "next"; -import { Inter } from "next/font/google"; +import { Hanken_Grotesk } from "next/font/google"; import { Analytics } from "@vercel/analytics/react"; import { SpeedInsights } from "@vercel/speed-insights/next"; -const inter = Inter({ subsets: ["latin"] }); +const hankenGrotesk = Hanken_Grotesk({ subsets: ["latin"] }); export const metadata: Metadata = { title: "Jeremiah Aworetan | Skilled Frontend Developer in Nigeria", @@ -47,7 +47,7 @@ export default function RootLayout({ }) { return ( - + {children} diff --git a/app/page.tsx b/app/page.tsx index ef9df2c..cb8e8fd 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -4,13 +4,17 @@ import Image from "next/image"; import { useState } from "react"; import { BsArrowRight } from "react-icons/bs"; import { motion, AnimatePresence } from "framer-motion"; +import { FaGithub } from "react-icons/fa"; import ParticlesComponent from "@/components/Particles"; -import { Blur, Navbar, Preloader, Socials } from "@/components"; import { - fadeInAnimation, - fadeInFromLeftAnimation, -} from "@/utils/framerAnimations"; + Blur, + FloatingContactIcon, + Navbar, + Preloader, + Socials, +} from "@/components"; +import { fadeInAnimation } from "@/utils/framerAnimations"; export default function Home() { const [isLoading, setIsLoading] = useState(true); @@ -27,23 +31,21 @@ export default function Home() { > - + - I am + Hey, I'm JEREMY @@ -77,51 +79,73 @@ export default function Home() { a frontend developer - - - - - - View Projects +
+ + + + + + View Projects + + + + + + + + + + + + GitHub + + - - - - + + +
- + - + + )} diff --git a/app/projects/page.tsx b/app/projects/page.tsx index 18dff6c..4aa7d30 100644 --- a/app/projects/page.tsx +++ b/app/projects/page.tsx @@ -4,7 +4,7 @@ import Image from "next/image"; import { useState } from "react"; import { motion, AnimatePresence } from "framer-motion"; -import { Blur, Navbar } from "@/components"; +import { Blur, FloatingContactIcon, Navbar } from "@/components"; import ParticlesComponent from "@/components/Particles"; import { fadeInAnimation } from "@/utils/framerAnimations"; @@ -91,6 +91,8 @@ export default function Projects() { Use pagination or drag to navigate through projects.

+ + @@ -168,6 +170,32 @@ interface ProjectData { } const projectsData: ProjectData[] = [ + { + name: "Basepay", + link: "https://basepay.link", + description: + "Receive direct fiat payments with crypto powered by stablecoins.", + logos: [ + , + , + , + , + ], + imageSrc: "/projects/basepay.jpg", + }, + { + name: "Noblocks Waitlist", + link: "https://noblocks.xyz", + description: + "Waitlist for the Noblocks web app - Zap by Paycrest reimagined.", + logos: [ + , + , + , + , + ], + imageSrc: "/projects/noblocks-waitlist.jpg", + }, { name: "Zap by Paycrest", link: "https://zap.paycrest.io", @@ -178,7 +206,7 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/zap.jpg", + imageSrc: "/projects/zap.jpg", }, { name: "Paycrest", @@ -190,7 +218,7 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/paycrest.jpg", + imageSrc: "/projects/paycrest.jpg", }, { name: "$Dogatoshi", @@ -202,10 +230,10 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/dogatoshi.jpg", + imageSrc: "/projects/dogatoshi.jpg", }, { - name: "SentFi", + name: "Sentinel Finance", link: "https://sentfi.jeremy0x.codes", githubLink: "https://github.com/jeremy0x/sentinel-finance", description: "Proof-of-concept website for a dCommerce platform.", @@ -214,7 +242,7 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/sentfi.jpg", + imageSrc: "/projects/sentfi.jpg", }, { name: "Elder Wallet", @@ -226,20 +254,8 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/elder-wallet.jpg", + imageSrc: "/projects/elder-wallet.jpg", }, - { - name: "BahamaFoodie", - link: "https://hellobahamafoodie.com", - description: "Digital plant-based restaurant in The Bahamas.", - logos: [ - , - , - , - ], - imageSrc: "/hellobahamafoodie.jpg", - }, - { name: "Valtrix", link: "https://valtrix.co", @@ -250,18 +266,19 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/valtrix.jpg", + imageSrc: "/projects/valtrix.jpg", }, { name: "MentorMeInTech Waitlist", - link: "https://mentormeintech.com", - description: "MentorMeInTech - a platform for mentorship in tech.", + link: "https://mentormeintech.jeremy0x.codes", + description: + "Waitlist for the MentorMeInTech web app - a mentorship platform.", logos: [ , , , ], - imageSrc: "/mentormeintech.jpg", + imageSrc: "/projects/mentormeintech.jpg", }, { @@ -274,7 +291,7 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/foodie-fetch.jpg", + imageSrc: "/projects/foodie-fetch.jpg", }, { name: "LingoLookup", @@ -286,7 +303,7 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/lingo-lookup.jpg", + imageSrc: "/projects/lingo-lookup.jpg", }, { name: "Sesshin", @@ -298,7 +315,7 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/sesshin.jpg", + imageSrc: "/projects/sesshin.jpg", }, { name: "Mullti", @@ -310,7 +327,7 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/mullti.jpg", + imageSrc: "/projects/mullti.jpg", }, { name: "Sways", @@ -321,7 +338,18 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/sways.jpg", + imageSrc: "/projects/sways.jpg", + }, + { + name: "BahamaFoodie", + link: "https://hellobahamafoodie.com", + description: "Digital plant-based restaurant in The Bahamas.", + logos: [ + , + , + , + ], + imageSrc: "/projects/hellobahamafoodie.jpg", }, { name: "Altos (ClientView)", @@ -333,6 +361,6 @@ const projectsData: ProjectData[] = [ , , ], - imageSrc: "/altos.jpg", + imageSrc: "/projects/altos.jpg", }, ]; diff --git a/components/FloatingContactIcon.tsx b/components/FloatingContactIcon.tsx new file mode 100644 index 0000000..a20bd8e --- /dev/null +++ b/components/FloatingContactIcon.tsx @@ -0,0 +1,12 @@ +import Link from "next/link"; +import { BiSolidPaperPlane } from "react-icons/bi"; + +export const FloatingContactIcon = () => { + return ( + +
+ +
+ + ); +}; diff --git a/components/Preloader.tsx b/components/Preloader.tsx index 3385cd0..8886eaa 100644 --- a/components/Preloader.tsx +++ b/components/Preloader.tsx @@ -20,12 +20,12 @@ export const Preloader = ({ isLoading, setIsLoading }: PreloaderProps) => { const timer = setTimeout(() => { setFadeOut(true); - }, 2000); + }, 1500); const fadeOutTimer = setTimeout(() => { setIsLoading(false); sessionStorage.setItem("hasSeenAnimation", "true"); - }, 3000); + }, 2000); return () => { clearTimeout(timer); @@ -39,14 +39,14 @@ export const Preloader = ({ isLoading, setIsLoading }: PreloaderProps) => { className="flex min-h-screen items-center justify-center bg-neutral-900 uppercase text-white" initial={{ opacity: 1 }} animate={{ opacity: isLoading ? 1 : 0 }} - transition={{ duration: 1 }} + transition={{ duration: 0.5 }} > {isLoading && showAnimation && ( Hi diff --git a/components/Socials.tsx b/components/Socials.tsx index 4fbb321..64de2e6 100644 --- a/components/Socials.tsx +++ b/components/Socials.tsx @@ -8,7 +8,7 @@ import { AiFillGithub, AiFillLinkedin } from "react-icons/ai"; export const Socials = ({ animationDelay = 0.5 }) => { return ( diff --git a/components/index.ts b/components/index.ts index ed447cd..4f4ce6e 100644 --- a/components/index.ts +++ b/components/index.ts @@ -3,3 +3,4 @@ export { Navbar } from "./Navbar"; export { Socials } from "./Socials"; export { Preloader } from "./Preloader"; export { InputField } from "./Input"; +export { FloatingContactIcon } from "./FloatingContactIcon"; diff --git a/package.json b/package.json index 509301e..b6cdda7 100644 --- a/package.json +++ b/package.json @@ -29,13 +29,13 @@ "eslint": "8.46.0", "eslint-config-next": "13.4.12", "framer-motion": "^10.15.0", - "next": "^14.2.4", + "next": "^15.0.3", "postcss": "8.4.31", "react": "18.2.0", "react-dom": "18.2.0", "react-icons": "^4.11.0", - "react-toastify": "^10.0.5", "react-tsparticles": "^2.12.2", + "sonner": "^1.7.0", "swiper": "^10.2.0", "tailwindcss": "3.3.3", "tsparticles-engine": "^2.12.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 464171c..82806f8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,8 +36,8 @@ importers: specifier: ^10.15.0 version: 10.16.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) next: - specifier: ^14.2.4 - version: 14.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^15.0.3 + version: 15.0.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) postcss: specifier: 8.4.31 version: 8.4.31 @@ -50,12 +50,12 @@ importers: react-icons: specifier: ^4.11.0 version: 4.12.0(react@18.2.0) - react-toastify: - specifier: ^10.0.5 - version: 10.0.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-tsparticles: specifier: ^2.12.2 version: 2.12.2(react@18.2.0) + sonner: + specifier: ^1.7.0 + version: 1.7.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) swiper: specifier: ^10.2.0 version: 10.3.1 @@ -93,6 +93,9 @@ packages: resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} engines: {node: '>=6.9.0'} + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@emotion/is-prop-valid@0.8.8': resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} @@ -130,6 +133,111 @@ packages: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} deprecated: Use @eslint/object-schema instead + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@jridgewell/gen-mapping@0.3.3': resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -148,62 +256,56 @@ packages: '@jridgewell/trace-mapping@0.3.20': resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} - '@next/env@14.2.4': - resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} + '@next/env@15.0.3': + resolution: {integrity: sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==} '@next/eslint-plugin-next@13.4.12': resolution: {integrity: sha512-6rhK9CdxEgj/j1qvXIyLTWEaeFv7zOK8yJMulz3Owel0uek0U9MJCGzmKgYxM3aAUBo3gKeywCZKyQnJKto60A==} - '@next/swc-darwin-arm64@14.2.4': - resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} + '@next/swc-darwin-arm64@15.0.3': + resolution: {integrity: sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@14.2.4': - resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} + '@next/swc-darwin-x64@15.0.3': + resolution: {integrity: sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@14.2.4': - resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} + '@next/swc-linux-arm64-gnu@15.0.3': + resolution: {integrity: sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.4': - resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} + '@next/swc-linux-arm64-musl@15.0.3': + resolution: {integrity: sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.4': - resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} + '@next/swc-linux-x64-gnu@15.0.3': + resolution: {integrity: sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.4': - resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} + '@next/swc-linux-x64-musl@15.0.3': + resolution: {integrity: sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@14.2.4': - resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} + '@next/swc-win32-arm64-msvc@15.0.3': + resolution: {integrity: sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.4': - resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-x64-msvc@14.2.4': - resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} + '@next/swc-win32-x64-msvc@15.0.3': + resolution: {integrity: sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -226,8 +328,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.5': - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -409,8 +511,8 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - caniuse-lite@1.0.30001617: - resolution: {integrity: sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==} + caniuse-lite@1.0.30001680: + resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -423,10 +525,6 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -434,6 +532,13 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -488,6 +593,10 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -812,6 +921,9 @@ packages: is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} @@ -1008,21 +1120,24 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - next@14.2.4: - resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} - engines: {node: '>=18.17.0'} + next@15.0.3: + resolution: {integrity: sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-66855b96-20241106 + react-dom: ^18.2.0 || 19.0.0-rc-66855b96-20241106 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true '@playwright/test': optional: true + babel-plugin-react-compiler: + optional: true sass: optional: true @@ -1249,12 +1364,6 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-toastify@10.0.5: - resolution: {integrity: sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw==} - peerDependencies: - react: '>=18' - react-dom: '>=18' - react-tsparticles@2.12.2: resolution: {integrity: sha512-/nrEbyL8UROXKIMXe+f+LZN2ckvkwV2Qa+GGe/H26oEIc+wq/ybSG9REDwQiSt2OaDQGu0MwmA4BKmkL6wAWcA==} deprecated: '@tsparticles/react is the new version, please use that' @@ -1329,6 +1438,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + server-only@0.0.1: resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} @@ -1340,6 +1454,10 @@ packages: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -1351,10 +1469,19 @@ packages: side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + sonner@1.7.0: + resolution: {integrity: sha512-W6dH7m5MujEPyug3lpI2l3TC3Pp1+LTgK0Efg+IHDrBbtEjyCmCHHo6yfNBOsf1tFZ6zf+jceWwB38baC8yO9g==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -1388,13 +1515,13 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' peerDependenciesMeta: '@babel/core': optional: true @@ -1681,6 +1808,11 @@ snapshots: dependencies: regenerator-runtime: 0.14.0 + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.6.2 + optional: true + '@emotion/is-prop-valid@0.8.8': dependencies: '@emotion/memoize': 0.7.4 @@ -1724,6 +1856,81 @@ snapshots: '@humanwhocodes/object-schema@2.0.1': {} + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + '@jridgewell/gen-mapping@0.3.3': dependencies: '@jridgewell/set-array': 1.1.2 @@ -1741,37 +1948,34 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@next/env@14.2.4': {} + '@next/env@15.0.3': {} '@next/eslint-plugin-next@13.4.12': dependencies: glob: 7.1.7 - '@next/swc-darwin-arm64@14.2.4': + '@next/swc-darwin-arm64@15.0.3': optional: true - '@next/swc-darwin-x64@14.2.4': + '@next/swc-darwin-x64@15.0.3': optional: true - '@next/swc-linux-arm64-gnu@14.2.4': + '@next/swc-linux-arm64-gnu@15.0.3': optional: true - '@next/swc-linux-arm64-musl@14.2.4': + '@next/swc-linux-arm64-musl@15.0.3': optional: true - '@next/swc-linux-x64-gnu@14.2.4': + '@next/swc-linux-x64-gnu@15.0.3': optional: true - '@next/swc-linux-x64-musl@14.2.4': + '@next/swc-linux-x64-musl@15.0.3': optional: true - '@next/swc-win32-arm64-msvc@14.2.4': + '@next/swc-win32-arm64-msvc@15.0.3': optional: true - '@next/swc-win32-ia32-msvc@14.2.4': - optional: true - - '@next/swc-win32-x64-msvc@14.2.4': + '@next/swc-win32-x64-msvc@15.0.3': optional: true '@nodelib/fs.scandir@2.1.5': @@ -1790,9 +1994,8 @@ snapshots: '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.5': + '@swc/helpers@0.5.13': dependencies: - '@swc/counter': 0.1.3 tslib: 2.6.2 '@types/json5@0.0.29': {} @@ -1955,7 +2158,7 @@ snapshots: autoprefixer@10.4.14(postcss@8.4.31): dependencies: browserslist: 4.22.2 - caniuse-lite: 1.0.30001617 + caniuse-lite: 1.0.30001680 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -1985,7 +2188,7 @@ snapshots: browserslist@4.22.2: dependencies: - caniuse-lite: 1.0.30001617 + caniuse-lite: 1.0.30001680 electron-to-chromium: 1.4.609 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) @@ -2004,7 +2207,7 @@ snapshots: camelcase-css@2.0.1: {} - caniuse-lite@1.0.30001617: {} + caniuse-lite@1.0.30001680: {} chalk@4.1.2: dependencies: @@ -2025,14 +2228,24 @@ snapshots: client-only@0.0.1: {} - clsx@2.1.1: {} - color-convert@2.0.1: dependencies: color-name: 1.1.4 color-name@1.1.4: {} + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + commander@4.1.1: {} concat-map@0.0.1: {} @@ -2073,6 +2286,9 @@ snapshots: dequal@2.0.3: {} + detect-libc@2.0.3: + optional: true + didyoumean@1.2.2: {} dir-glob@3.0.1: @@ -2185,7 +2401,7 @@ snapshots: eslint: 8.46.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.46.0))(eslint@8.46.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.46.0) eslint-plugin-react: 7.33.2(eslint@8.46.0) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.46.0) @@ -2208,8 +2424,8 @@ snapshots: debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.46.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -2220,7 +2436,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0): + eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0): dependencies: debug: 3.2.7 optionalDependencies: @@ -2231,7 +2447,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0): + eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0): dependencies: array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 @@ -2241,7 +2457,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.46.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -2553,6 +2769,9 @@ snapshots: get-intrinsic: 1.2.2 is-typed-array: 1.1.12 + is-arrayish@0.3.2: + optional: true + is-async-function@2.0.0: dependencies: has-tostringtag: 1.0.0 @@ -2737,27 +2956,27 @@ snapshots: natural-compare@1.4.0: {} - next@14.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next@15.0.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@next/env': 14.2.4 - '@swc/helpers': 0.5.5 + '@next/env': 15.0.3 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.13 busboy: 1.6.0 - caniuse-lite: 1.0.30001617 - graceful-fs: 4.2.11 + caniuse-lite: 1.0.30001680 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + styled-jsx: 5.1.6(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.4 - '@next/swc-darwin-x64': 14.2.4 - '@next/swc-linux-arm64-gnu': 14.2.4 - '@next/swc-linux-arm64-musl': 14.2.4 - '@next/swc-linux-x64-gnu': 14.2.4 - '@next/swc-linux-x64-musl': 14.2.4 - '@next/swc-win32-arm64-msvc': 14.2.4 - '@next/swc-win32-ia32-msvc': 14.2.4 - '@next/swc-win32-x64-msvc': 14.2.4 + '@next/swc-darwin-arm64': 15.0.3 + '@next/swc-darwin-x64': 15.0.3 + '@next/swc-linux-arm64-gnu': 15.0.3 + '@next/swc-linux-arm64-musl': 15.0.3 + '@next/swc-linux-x64-gnu': 15.0.3 + '@next/swc-linux-x64-musl': 15.0.3 + '@next/swc-win32-arm64-msvc': 15.0.3 + '@next/swc-win32-x64-msvc': 15.0.3 + sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -2923,12 +3142,6 @@ snapshots: react-is@16.13.1: {} - react-toastify@10.0.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - clsx: 2.1.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-tsparticles@2.12.2(react@18.2.0): dependencies: react: 18.2.0 @@ -3012,6 +3225,9 @@ snapshots: dependencies: lru-cache: 6.0.0 + semver@7.6.3: + optional: true + server-only@0.0.1: {} set-function-length@1.1.1: @@ -3027,6 +3243,33 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + 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 + optional: true + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -3039,8 +3282,18 @@ snapshots: get-intrinsic: 1.2.2 object-inspect: 1.13.1 + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + optional: true + slash@3.0.0: {} + sonner@1.7.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + source-map-js@1.0.2: {} streamsearch@1.1.0: {} @@ -3083,7 +3336,7 @@ snapshots: strip-json-comments@3.1.1: {} - styled-jsx@5.1.1(react@18.2.0): + styled-jsx@5.1.6(react@18.2.0): dependencies: client-only: 0.0.1 react: 18.2.0 diff --git a/public/elder-wallet.png b/public/elder-wallet.png deleted file mode 100644 index b4e863d..0000000 Binary files a/public/elder-wallet.png and /dev/null differ diff --git a/public/paycrest.jpg b/public/paycrest.jpg deleted file mode 100644 index 0aaa440..0000000 Binary files a/public/paycrest.jpg and /dev/null differ diff --git a/public/altos.jpg b/public/projects/altos.jpg similarity index 100% rename from public/altos.jpg rename to public/projects/altos.jpg diff --git a/public/projects/basepay.jpg b/public/projects/basepay.jpg new file mode 100644 index 0000000..0644736 Binary files /dev/null and b/public/projects/basepay.jpg differ diff --git a/public/dogatoshi.jpg b/public/projects/dogatoshi.jpg similarity index 100% rename from public/dogatoshi.jpg rename to public/projects/dogatoshi.jpg diff --git a/public/elder-wallet.jpg b/public/projects/elder-wallet.jpg similarity index 100% rename from public/elder-wallet.jpg rename to public/projects/elder-wallet.jpg diff --git a/public/foodie-fetch.jpg b/public/projects/foodie-fetch.jpg similarity index 100% rename from public/foodie-fetch.jpg rename to public/projects/foodie-fetch.jpg diff --git a/public/hellobahamafoodie.jpg b/public/projects/hellobahamafoodie.jpg similarity index 100% rename from public/hellobahamafoodie.jpg rename to public/projects/hellobahamafoodie.jpg diff --git a/public/interllo.jpg b/public/projects/interllo.jpg similarity index 100% rename from public/interllo.jpg rename to public/projects/interllo.jpg diff --git a/public/lingo-lookup.jpg b/public/projects/lingo-lookup.jpg similarity index 100% rename from public/lingo-lookup.jpg rename to public/projects/lingo-lookup.jpg diff --git a/public/mentormeintech.jpg b/public/projects/mentormeintech.jpg similarity index 100% rename from public/mentormeintech.jpg rename to public/projects/mentormeintech.jpg diff --git a/public/mullti.jpg b/public/projects/mullti.jpg similarity index 100% rename from public/mullti.jpg rename to public/projects/mullti.jpg diff --git a/public/projects/noblocks-waitlist.jpg b/public/projects/noblocks-waitlist.jpg new file mode 100644 index 0000000..dca5b8b Binary files /dev/null and b/public/projects/noblocks-waitlist.jpg differ diff --git a/public/projects/paycrest.jpg b/public/projects/paycrest.jpg new file mode 100644 index 0000000..ffe9cbb Binary files /dev/null and b/public/projects/paycrest.jpg differ diff --git a/public/sentfi.jpg b/public/projects/sentfi.jpg similarity index 100% rename from public/sentfi.jpg rename to public/projects/sentfi.jpg diff --git a/public/sesshin.jpg b/public/projects/sesshin.jpg similarity index 100% rename from public/sesshin.jpg rename to public/projects/sesshin.jpg diff --git a/public/sways.jpg b/public/projects/sways.jpg similarity index 100% rename from public/sways.jpg rename to public/projects/sways.jpg diff --git a/public/thumbnail.jpg b/public/projects/thumbnail.jpg similarity index 100% rename from public/thumbnail.jpg rename to public/projects/thumbnail.jpg diff --git a/public/valtrix.jpg b/public/projects/valtrix.jpg similarity index 100% rename from public/valtrix.jpg rename to public/projects/valtrix.jpg diff --git a/public/zap.jpg b/public/projects/zap.jpg similarity index 100% rename from public/zap.jpg rename to public/projects/zap.jpg diff --git a/utils/handleSubmit.ts b/utils/handleSubmit.ts index 55f101c..05384f9 100644 --- a/utils/handleSubmit.ts +++ b/utils/handleSubmit.ts @@ -1,5 +1,5 @@ import { Dispatch, FormEvent } from "react"; -import { toast } from "react-toastify"; +import { toast } from "sonner"; interface HandleSubmitProps { event: FormEvent; @@ -16,13 +16,6 @@ export const handleSubmit = ({ event, setIsLoading }: HandleSubmitProps) => { message: { value: string }; }; - const toastStyle = { - padding: "16px", - color: "#FFFAEE", - background: "#171717", - boxShadow: "0 0 40px #1b1b1c", - }; - fetch("https://formsubmit.co/ajax/5ad6e90d1d6c9847586699d8ecf9fee2", { method: "POST", headers: { @@ -41,11 +34,15 @@ export const handleSubmit = ({ event, setIsLoading }: HandleSubmitProps) => { target.name.value = ""; target.email.value = ""; target.message.value = ""; - toast.success("Message sent successfully!", { style: toastStyle }); + toast.success("Message sent successfully!", { + description: "Keep an eye on your inbox for a response.", + }); }) .catch((error) => { console.log(error); setIsLoading(false); - toast.error("Oops! Message MIA. Try again!", { style: toastStyle }); + toast.error("Oops! Message MIA. Try again!", { + description: "If the issue persists, reach out via email.", + }); }); };