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.",
+ });
});
};