From fc0c323278a56bf9f02f5ec24060b2fe8b1bf546 Mon Sep 17 00:00:00 2001
From: Modupe Akanni
Date: Sat, 7 Jan 2023 15:05:55 +0100
Subject: [PATCH] next-app
---
components/Acomplishments/Acomplishments.js | 27 +
.../Acomplishments/AcomplishmentsStyles.js | 134 +++
.../BackgroundAnimation.js | 365 ++++++++
components/Footer/Footer.js | 40 +
components/Footer/FooterStyles.js | 159 ++++
components/Header/Header.js | 48 +
components/Header/HeaderStyles.js | 129 +++
components/Hero/Hero.js | 22 +
components/Hero/HeroStyles.js | 19 +
components/NavDropDown/NavDropDown.js | 76 ++
components/NavDropDown/index.js | 13 +
components/Projects/Projects.js | 38 +
components/Projects/ProjectsStyles.js | 112 +++
components/Technologies/Technologies.js | 50 ++
components/Technologies/TechnologiesStyles.js | 133 +++
components/TimeLine/TimeLine.js | 117 +++
components/TimeLine/TimeLineStyles.js | 154 ++++
constants/constants.js | 46 +
layout/Layout.js | 15 +
layout/LayoutStyles.js | 7 +
package-lock.json | 825 +++++++++++++++++-
package.json | 5 +-
pages/_app.js | 11 +-
pages/_document.js | 54 +-
pages/api/hello.js | 4 +-
pages/index.js | 143 +--
public/favicon.ico | Bin 25931 -> 15086 bytes
public/images/1.png | Bin 0 -> 168810 bytes
public/images/2.png | Bin 0 -> 145557 bytes
public/images/3.jpg | Bin 0 -> 61243 bytes
public/images/4.jpg | Bin 0 -> 61166 bytes
public/images/Screenshot (88).png | Bin 0 -> 681952 bytes
public/images/Screenshot (89).png | Bin 0 -> 1054855 bytes
public/images/Screenshot (90).png | Bin 0 -> 1125983 bytes
public/images/Screenshot (91).png | Bin 0 -> 2210313 bytes
public/images/profile.jpeg | Bin 0 -> 70198 bytes
public/images/projects.jpeg | Bin 0 -> 584127 bytes
public/next.svg | 1 -
public/thirteen.svg | 1 -
public/vercel.svg | 5 +-
styles/GlobalComponents/Button.js | 11 +
styles/GlobalComponents/index.js | 281 ++++++
styles/Home.module.css | 278 ------
styles/globals.css | 107 ---
styles/globals.js | 37 +
styles/theme.js | 13 +
themes/default.js | 22 +
47 files changed, 2977 insertions(+), 525 deletions(-)
create mode 100644 components/Acomplishments/Acomplishments.js
create mode 100644 components/Acomplishments/AcomplishmentsStyles.js
create mode 100644 components/BackgrooundAnimation/BackgroundAnimation.js
create mode 100644 components/Footer/Footer.js
create mode 100644 components/Footer/FooterStyles.js
create mode 100644 components/Header/Header.js
create mode 100644 components/Header/HeaderStyles.js
create mode 100644 components/Hero/Hero.js
create mode 100644 components/Hero/HeroStyles.js
create mode 100644 components/NavDropDown/NavDropDown.js
create mode 100644 components/NavDropDown/index.js
create mode 100644 components/Projects/Projects.js
create mode 100644 components/Projects/ProjectsStyles.js
create mode 100644 components/Technologies/Technologies.js
create mode 100644 components/Technologies/TechnologiesStyles.js
create mode 100644 components/TimeLine/TimeLine.js
create mode 100644 components/TimeLine/TimeLineStyles.js
create mode 100644 constants/constants.js
create mode 100644 layout/Layout.js
create mode 100644 layout/LayoutStyles.js
create mode 100644 public/images/1.png
create mode 100644 public/images/2.png
create mode 100644 public/images/3.jpg
create mode 100644 public/images/4.jpg
create mode 100644 public/images/Screenshot (88).png
create mode 100644 public/images/Screenshot (89).png
create mode 100644 public/images/Screenshot (90).png
create mode 100644 public/images/Screenshot (91).png
create mode 100644 public/images/profile.jpeg
create mode 100644 public/images/projects.jpeg
delete mode 100644 public/next.svg
delete mode 100644 public/thirteen.svg
create mode 100644 styles/GlobalComponents/Button.js
create mode 100644 styles/GlobalComponents/index.js
delete mode 100644 styles/Home.module.css
delete mode 100644 styles/globals.css
create mode 100644 styles/globals.js
create mode 100644 styles/theme.js
create mode 100644 themes/default.js
diff --git a/components/Acomplishments/Acomplishments.js b/components/Acomplishments/Acomplishments.js
new file mode 100644
index 0000000..1d8f437
--- /dev/null
+++ b/components/Acomplishments/Acomplishments.js
@@ -0,0 +1,27 @@
+import React from 'react';
+
+import { Section, SectionDivider, SectionTitle } from '../../styles/GlobalComponents';
+import { Box, Boxes, BoxNum, BoxText } from './AcomplishmentsStyles';
+
+const data = [
+ { number: 20, text: 'Open Source Projects'},
+ { number: 1000, text: 'Students', },
+ { number: 1900, text: 'Github Followers', },
+ { number: 5000, text: 'Github Stars', }
+];
+
+const Acomplishments = () => (
+
+ Personal Accomplishments
+
+ {data.map((card, index) => (
+
+ {card.number}+
+ {card.text}
+
+ ))}
+
+
+);
+
+export default Acomplishments;
diff --git a/components/Acomplishments/AcomplishmentsStyles.js b/components/Acomplishments/AcomplishmentsStyles.js
new file mode 100644
index 0000000..95daa29
--- /dev/null
+++ b/components/Acomplishments/AcomplishmentsStyles.js
@@ -0,0 +1,134 @@
+import styled from "styled-components"
+
+export const Boxes = styled.div`
+ width: 100%;
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 24px;
+ margin: 24px 0 40px;
+
+ @media ${props => props.theme.breakpoints.md}{
+ gap: 16px;
+ margin: 20px 0 32px;
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
+ }
+
+ @media ${props => props.theme.breakpoints.sm}{
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 10px;
+ max-width: 500px;
+ margin: 24px auto;
+ }
+`
+
+export const Box = styled.div`
+ background: #212D45;
+ border-radius: 12px;
+ height: 144px;
+ padding: 24px;
+ @media ${props => props.theme.breakpoints.lg} {
+ height: 210px;
+
+ }
+
+ @media ${props => props.theme.breakpoints.md} {
+ height: 135px;
+ padding: 16px;
+ }
+
+ @media ${props => props.theme.breakpoints.sm} {
+ height: 110px;
+ padding: 12px;
+
+ &:nth-child(2n){
+ grid-row:2;
+ }
+ }
+`
+export const BoxNum = styled.h5`
+ font-style: normal;
+ font-weight: 600;
+ font-size: 36px;
+ line-height: 40px;
+ letter-spacing: 0.01em;
+ color: #FFFFFF;
+ margin-bottom: 8px;
+
+ @media ${props => props.theme.breakpoints.md} {
+ font-size: 28px;
+ line-height: 32px;
+ }
+ @media ${props => props.theme.breakpoints.sm} {
+ font-size: 24px;
+ line-height: 26px;
+}
+`
+
+export const BoxText = styled.p`
+ font-style: normal;
+ font-weight: normal;
+ font-size: 18px;
+ line-height: 24px;
+ letter-spacing: 0.02em;
+ color: rgba(255, 255, 255, 0.75);
+
+ @media ${props => props.theme.breakpoints.md}{
+ font-size: 16px;
+ line-height: 20px;
+ };
+
+ @media ${props => props.theme.breakpoints.sm} {
+ font-size: 10px;
+ line-height: 14px;
+ }
+`
+
+export const Join = styled.div`
+ display: flex;
+ max-width: 1040px;
+ justify-content: center;
+ align-items: center;
+ padding-bottom: 80px;
+
+ @media ${props => props.theme.breakpoints.md}{
+ display: flex;
+ justify-content: center;
+ padding-bottom: 64px;
+ }
+
+ @media ${props => props.theme.breakpoints.sm}{
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ padding-bottom: 32px;
+ }
+`
+
+export const JoinText = styled.h5`
+ display: flex;
+ font-size: 24px;
+ line-height: 40px;
+ letter-spacing: 0.02em;
+ color: rgba(255, 255, 255, 0.5);
+
+@media ${props => props.theme.breakpoints.md}{
+ line-height: 32px;
+ font-size: 20px;
+};
+
+@media ${props => props.theme.breakpoints.sm}{
+ font-size: 16px;
+ line-height: 24px;
+ margin: 0 0 16px;
+}
+`
+
+export const IconContainer = styled.div`
+ display: flex;
+
+ @media ${props => props.theme.breakpoints.sm}{
+ width: 160px;
+ justify-content: space-between;
+ }
+`
diff --git a/components/BackgrooundAnimation/BackgroundAnimation.js b/components/BackgrooundAnimation/BackgroundAnimation.js
new file mode 100644
index 0000000..1dd2e12
--- /dev/null
+++ b/components/BackgrooundAnimation/BackgroundAnimation.js
@@ -0,0 +1,365 @@
+import React from 'react';
+
+const BackgroundAnimation = () => (
+
+
+
+);
+
+export default BackgroundAnimation;
\ No newline at end of file
diff --git a/components/Footer/Footer.js b/components/Footer/Footer.js
new file mode 100644
index 0000000..05d4f63
--- /dev/null
+++ b/components/Footer/Footer.js
@@ -0,0 +1,40 @@
+import React from 'react';
+import { AiFillGithub, AiFillInstagram, AiFillLinkedin } from 'react-icons/ai';
+
+import { SocialIcons } from '../Header/HeaderStyles';
+import { CompanyContainer, FooterWrapper, LinkColumn, LinkItem, LinkList, LinkTitle, Slogan, SocialContainer, SocialIconsContainer } from './FooterStyles';
+
+const Footer = () => {
+ return (
+
+
+
+ Call
+ +234-8117266403
+
+
+ Mail
+ modupe775@gmail.com
+
+
+
+
+ Solving Problems one code at a time
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Footer;
diff --git a/components/Footer/FooterStyles.js b/components/Footer/FooterStyles.js
new file mode 100644
index 0000000..63b4f5d
--- /dev/null
+++ b/components/Footer/FooterStyles.js
@@ -0,0 +1,159 @@
+import styled from "styled-components"
+
+export const FooterWrapper = styled.section`
+ width: calc(100vw - 96px);
+ max-width: 1040px;
+ padding: 2rem 48px 40px;
+ margin: 1rem auto;
+ box-sizing: content-box;
+
+
+ @media ${props => props.theme.breakpoints.sm} {
+ padding: 0 16px 48px;
+ width: calc(100vw - 32px);
+ }
+`
+
+export const LinkItem = styled.a`
+ font-size: 18px;
+ line-height: 30px;
+ color: rgba(255, 255, 255, 0.75);
+ margin-bottom: 16px;
+ transition: .3s ease;
+ position: relative;
+ left: 0;
+
+ &:hover {
+ color: #fff;
+ left: 6px;
+ }
+
+ @media ${props => props.theme.breakpoints.md} {
+ font-size: 16px;
+ line-height: 28px;
+ display: flex;
+ }
+
+ @media ${props => props.theme.breakpoints.sm} {
+ font-size: 8px;
+ line-height: 14px;
+ margin-bottom: 8px;
+ display: flex;
+ align-items: center;
+ }
+`
+
+export const SocialIconsContainer = styled.div`
+max-width: 1040px;
+display: flex;
+justify-content: space-between;
+
+@media ${props => props.theme.breakpoints.md}{
+ display: flex;
+ justify-content: space-between;
+}
+
+@media ${props => props.theme.breakpoints.sm}{
+ display: flex;
+ width: 100%;
+ flex-direction: column;
+}
+`
+
+export const CompanyContainer = styled.div`
+ display: flex;
+ align-items:baseline;
+ flex-wrap: wrap;
+ margin-right: auto;
+
+
+ @media ${props => props.theme.breakpoints.md}{
+ flex-direction: column;
+ align-items: baseline;
+ }
+
+ @media ${props => props.theme.breakpoints.sm}{
+ display: flex;
+ flex-direction: column;
+ margin: 0 0 32px;
+ align-items: center;
+ }
+`
+
+
+export const Slogan = styled.p`
+ color: rgba(255, 255, 255, 0.5);
+ min-width: 280px;
+ letter-spacing: 0.02em;
+ font-size: 18px;
+ line-height: 30px;
+ padding: 1rem;
+
+ @media ${props => props.theme.breakpoints.md}{
+ font-size: 16px;
+ line-height: 28px;
+ }
+
+ @media ${props => props.theme.breakpoints.sm}{
+ line-height: 22px;
+ font-size: 14px;
+ min-width: 100px;
+ }
+`
+
+export const SocialContainer = styled.div`
+ display: flex;
+ align-items: center;
+
+ @media ${props => props.theme.breakpoints.md}{
+ justify-content: center;
+ padding-right: 16px;
+ flex-wrap: wrap;
+ }
+`
+
+
+export const LinkList = styled.ul`
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
+ display: grid;
+ grid-template-columns: repeat(3, minmax(85px, 220px));
+ gap: 40px;
+ padding: 40px 0 28px;
+
+ @media ${props => props.theme.breakpoints.lg} {
+ padding: 32px 0 16px;
+ }
+
+ @media ${props => props.theme.breakpoints.md} {
+ width: 100%;
+ padding: 32px 0 16px;
+ gap: 16px;
+ }
+ @media ${props => props.theme.breakpoints.sm} {
+ width: 100%;
+ padding: 32px 4px 16px;
+ gap: 5px;
+ }
+`
+
+export const LinkColumn = styled.div`
+ display: flex;
+ flex-direction: column;
+ max-width: 220px;
+ width: 100%;
+`
+export const LinkTitle = styled.h4`
+ font-style: normal;
+ font-weight: 600;
+ font-size: 12px;
+ line-height: 24px;
+ text-transform: uppercase;
+ color: rgba(255, 255, 255, 0.4);
+ margin-bottom: 16px;
+
+ @media ${props => props.theme.breakpoints.sm} {
+ font-size: 10px;
+ line-height: 12px;
+ margin-bottom: 8px;
+ }
+`
diff --git a/components/Header/Header.js b/components/Header/Header.js
new file mode 100644
index 0000000..f4bee09
--- /dev/null
+++ b/components/Header/Header.js
@@ -0,0 +1,48 @@
+import Link from 'next/link';
+import React from 'react';
+import { AiFillGithub, AiFillInstagram, AiFillLinkedin } from 'react-icons/ai';
+import { DiCssdeck } from 'react-icons/di';
+
+import { Container, Div1, Div2, Div3, NavLink, SocialIcons, Span } from './HeaderStyles';
+
+const Header = () => (
+
+
+
+
+ Portfolio
+
+
+
+
+
+
+ Projects
+
+
+
+
+ Technologies
+
+
+
+
+ About
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+
+export default Header;
diff --git a/components/Header/HeaderStyles.js b/components/Header/HeaderStyles.js
new file mode 100644
index 0000000..e8bb1b8
--- /dev/null
+++ b/components/Header/HeaderStyles.js
@@ -0,0 +1,129 @@
+import { IoIosArrowDropdown } from 'react-icons/io';
+import styled from 'styled-components';
+
+export const Container = styled.div`
+ display: grid;
+ grid-template-columns: repeat(5, 1fr);
+ grid-template-rows: 1fr;
+ grid-column-gap: 2rem;
+ padding: 1rem;
+ padding-top: 2rem;
+
+ @media ${(props) => props.theme.breakpoints.sm} {
+ display: grid;
+ grid-template-columns: repeat(5, 1fr);
+ grid-template-rows: repeat(2, 60px);
+ grid-column-gap: 0.5rem;
+ grid-row-gap: 0.5rem;
+ }
+`;
+
+export const Span = styled.span`
+ font-size: 2rem;
+`;
+
+export const Div1 = styled.div`
+ grid-area: 1 / 1 / 2 / 2;
+ display: flex;
+ flex-direction: row;
+ align-content: center;
+ @media ${(props) => props.theme.breakpoints.sm} {
+ grid-area: 1 / 1 / 2 / 3;
+ }
+`;
+export const Div2 = styled.div`
+ grid-area: 1 / 2 / 2 / 4;
+ display: flex;
+ justify-content: space-around;
+ @media ${(props) => props.theme.breakpoints.sm} {
+ grid-area: 2 / 2 / 3 / 5;
+ }
+`;
+export const Div3 = styled.div`
+ grid-area: 1 / 5 / 2 / 6;
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+ @media ${(props) => props.theme.breakpoints.sm} {
+ align-items: center;
+ grid-area: 1 / 4 / 2 / 6;
+ }
+`;
+
+// Navigation Links
+export const NavLink = styled.a`
+ font-size: 2rem;
+ line-height: 32px;
+ color: rgba(255, 255, 255, 0.75);
+ transition: 0.4s ease;
+ &:hover {
+ color: #fff;
+ opacity: 1;
+ cursor: pointer;
+ }
+ @media ${(props) => props.theme.breakpoints.sm} {
+ padding: 0.5rem;
+ }
+`;
+
+/// DropDown Contact
+export const ContactDropDown = styled.button`
+ border: none;
+ display: flex;
+ position: relative;
+ background: none;
+ font-size: 1.7rem;
+
+ line-height: 32px;
+ color: rgba(255, 255, 255, 0.75);
+ cursor: pointer;
+ transition: 0.3s ease;
+
+ &:focus {
+ outline: none;
+ }
+ &:hover {
+ color: #fff;
+ }
+
+ @media ${(props) => props.theme.breakpoints.sm} {
+ padding: 0.4rem 0;
+ }
+ @media ${(props) => props.theme.breakpoints.md} {
+ padding: 0;
+ }
+`;
+
+export const NavProductsIcon = styled(IoIosArrowDropdown)`
+ margin-left: 8px;
+ display: flex;
+ align-self: center;
+ transition: 0.3s ease;
+ opacity: ${({ isOpen }) => (isOpen ? '1' : '.75')};
+ transform: ${({ isOpen }) => (isOpen ? 'scaleY(-1)' : 'scaleY(1)')};
+
+ &:hover {
+ opacity: 1;
+ }
+
+ @media ${(props) => props.theme.breakpoints.sm} {
+ margin: 2px 0 0 2px;
+ width: 15px;
+ }
+`;
+
+
+// Social Icons
+
+export const SocialIcons = styled.a`
+transition: 0.3s ease;
+color: white;
+border-radius: 50px;
+ padding: 8px;
+&:hover {
+ background-color: #212d45;
+ transform: scale(1.2);
+ cursor: pointer;
+
+ }
+`
\ No newline at end of file
diff --git a/components/Hero/Hero.js b/components/Hero/Hero.js
new file mode 100644
index 0000000..70e5bf2
--- /dev/null
+++ b/components/Hero/Hero.js
@@ -0,0 +1,22 @@
+import React from 'react';
+
+import { Section, SectionText, SectionTitle } from '../../styles/GlobalComponents';
+import Button from '../../styles/GlobalComponents/Button';
+import { LeftSection } from './HeroStyles';
+
+const Hero = () => (
+
+
+
+ Welcome To
+ My Personal Portfolio
+
+
+ An Experienced Front-end Developer passionate about making Impact and building beautiful modern websites.
+
+
+
+
+);
+
+export default Hero;
\ No newline at end of file
diff --git a/components/Hero/HeroStyles.js b/components/Hero/HeroStyles.js
new file mode 100644
index 0000000..6a0c7fc
--- /dev/null
+++ b/components/Hero/HeroStyles.js
@@ -0,0 +1,19 @@
+import styled from 'styled-components';
+
+export const LeftSection = styled.div`
+ width: 100%;
+ @media ${(props) => props.theme.breakpoints.sm} {
+ width: 80%;
+ display: flex;
+ flex-direction: column;
+
+ margin: 0 auto;
+ }
+ @media ${(props) => props.theme.breakpoints.md} {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+
+ margin: 0 auto;
+ }
+`;
diff --git a/components/NavDropDown/NavDropDown.js b/components/NavDropDown/NavDropDown.js
new file mode 100644
index 0000000..93bbc3d
--- /dev/null
+++ b/components/NavDropDown/NavDropDown.js
@@ -0,0 +1,76 @@
+import styled from 'styled-components'
+
+export const DropDownContainer = styled.div`
+ position: absolute;
+ display: flex;
+ flex-direction: column;
+ right: -25%;
+ top: 40px;
+ width: 280px;
+ background-color: #fff;
+ border-radius: 8px;
+ z-index: 100;
+ padding: 4px 0;
+ cursor: default;
+ overflow: hidden;
+ transition: 0.3s ease;
+ visibility: ${({ active }) => active ? 'visible' : 'hidden'};
+ opacity: ${({ active }) => active ? '1' : '0'};
+ transform-origin: top;
+ transform: ${({ active }) => active ? 'scaleY(1)' : 'scaleY(.3)'};
+
+ @media ${(props) => props.theme.breakpoints.md} {
+ top: 32px;
+ }
+ @media ${(props) => props.theme.breakpoints.sm} {
+ top: 24px;
+ }
+`
+export const DropDownItem = styled.a`
+ width: 100%;
+ display: flex;
+ align-items: flex-start;
+ cursor: pointer;
+ transition: .3s ease;
+ padding: 12px 16px;
+
+ &:hover {
+ transform: scale(1.05);
+ background-color: #eee;
+ box-shadow: 0 3px 6px 3px rgba(0,0,0,.3);
+ }
+
+ &:nth-of-type(2n):hover {
+ box-shadow: 0 0 8px 4px rgba(0,0,0,.3);
+ }
+
+ &:nth-of-type(3n):hover {
+ box-shadow: 0 -3px 6px 3px rgba(0,0,0,.3);
+ }
+`
+
+export const DropDownIcon = styled.div`
+ width: 32px;
+ height: 32px;
+ margin-right: 16px;
+`
+
+export const DropDownTextContainer = styled.div`
+ display: flex;
+ flex-direction: column;
+`
+
+export const DropDownItemTitle = styled.h2`
+ color: #0f1624;
+ font-size: 18px;
+ line-height: 26px;
+ text-align: start;
+`
+
+export const DropDownItemDesc = styled.p`
+ color: #0f1624;
+ opacity: 0.5;
+ font-size: 14px;
+ line-height: 22px;
+ text-align: start;
+`
\ No newline at end of file
diff --git a/components/NavDropDown/index.js b/components/NavDropDown/index.js
new file mode 100644
index 0000000..f2e8ee4
--- /dev/null
+++ b/components/NavDropDown/index.js
@@ -0,0 +1,13 @@
+import React from 'react'
+import { AiFillPhone, AiOutlineMail } from 'react-icons/ai'
+import { FaLocationArrow } from "react-icons/fa"
+
+import { DropDownContainer, DropDownIcon, DropDownItem, DropDownItemDesc, DropDownItemTitle, DropDownTextContainer } from './NavDropDown'
+
+const NavDropDown = (props) => (
+
+ NavDropDown
+
+);
+
+export default NavDropDown
diff --git a/components/Projects/Projects.js b/components/Projects/Projects.js
new file mode 100644
index 0000000..d4433fb
--- /dev/null
+++ b/components/Projects/Projects.js
@@ -0,0 +1,38 @@
+import React from 'react';
+
+import { BlogCard, CardInfo, ExternalLinks, GridContainer, HeaderThree, Hr, Tag, TagList, TitleContent, UtilityList, Img } from './ProjectsStyles';
+import { Section, SectionDivider, SectionTitle } from '../../styles/GlobalComponents';
+import { projects } from '../../constants/constants';
+
+
+const Projects = () => (
+
+
+ Projects
+
+ {projects.map(({ id, image, title, description, tags, source, visit }) => (
+
+
+
+ {title}
+
+
+ {description}
+
+ Stack
+
+ {tags.map((tag, i) => (
+ {tag}
+ ) )}
+
+
+
+ Code
+ Live
+
+
+ ))}
+
+);
+
+export default Projects;
\ No newline at end of file
diff --git a/components/Projects/ProjectsStyles.js b/components/Projects/ProjectsStyles.js
new file mode 100644
index 0000000..c3eab89
--- /dev/null
+++ b/components/Projects/ProjectsStyles.js
@@ -0,0 +1,112 @@
+import styled from 'styled-components';
+
+export const Img = styled.img`
+ width:100%;
+ height:100%;
+ object-fit: cover;
+ overflow: hidden;
+`
+
+export const GridContainer = styled.section`
+display: grid;
+grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
+padding: 3rem;
+place-items: center;
+column-gap: 2rem;
+row-gap: 3rem;
+@media ${(props) => props.theme.breakpoints.sm} {
+ display: flex;
+ flex-direction: column;
+ padding: 2rem;
+ padding-bottom: 0;
+}
+
+`
+export const BlogCard = styled.div`
+ border-radius: 10px;
+ box-shadow: 3px 3px 20px rgba(80, 78, 78, 0.5);
+ text-align: center;
+ width: 400px;
+ @media ${(props) => props.theme.breakpoints.sm} {
+ width: 100%;
+ }
+`;
+export const TitleContent = styled.div`
+ text-align: center;
+ z-index: 20;
+ width: 100%;
+
+`;
+
+
+export const HeaderThree = styled.h3`
+ font-weight: 500;
+ letter-spacing: 2px;
+ color: #9cc9e3;
+ padding: .5rem 0;
+ font-size: ${(props) => props.title ? '3rem' : '2rem'};
+`;
+
+export const Hr = styled.hr`
+ width: 50px;
+ height: 3px;
+ margin: 20px auto;
+ border: 0;
+ background: #d0bb57;
+`;
+
+export const Intro = styled.div`
+ width: 170px;
+ margin: 0 auto;
+ color: #dce3e7;
+ font-family: 'Droid Serif', serif;
+ font-size: 13px;
+ font-style: italic;
+ line-height: 18px;
+`;
+
+
+export const CardInfo = styled.p`
+ width: 100%;
+ padding: 0 50px;
+ color: #e4e6e7;
+ font-style: 2rem;
+ line-height: 24px;
+ text-align: justify;
+ @media ${(props) => props.theme.breakpoints.sm} {
+ padding:.3rem
+
+}
+`;
+
+
+export const UtilityList = styled.ul`
+ list-style-type: none;
+ padding: 0;
+ display: flex;
+ justify-content: space-around;
+ margin: 2.5rem 0;
+`;
+
+export const ExternalLinks = styled.a`
+color:#d4c0c0;
+font-size: 1.6rem;
+padding:1rem 1.5rem;
+background: #6b3030;
+border-radius: 15px;
+transition: 0.5s;
+&:hover{
+ background: #801414;
+
+}
+`;
+
+export const TagList = styled.ul`
+display: flex;
+justify-content: space-around;
+padding: 2rem;
+`
+export const Tag = styled.li`
+color: #d8bfbf;
+font-size: 1.5rem;
+`
\ No newline at end of file
diff --git a/components/Technologies/Technologies.js b/components/Technologies/Technologies.js
new file mode 100644
index 0000000..e55905c
--- /dev/null
+++ b/components/Technologies/Technologies.js
@@ -0,0 +1,50 @@
+import React from 'react';
+import { DiFirebase, DiReact, DiZend } from 'react-icons/di';
+import { Section, SectionDivider, SectionText, SectionTitle } from '../../styles/GlobalComponents';
+import { List, ListContainer, ListItem, ListParagraph, ListTitle } from './TechnologiesStyles';
+
+const Technologies = () => (
+
+
+
+ Technologies
+
+ I've worked with a range of technologies in the web development world.
+ From Front-end to Back-end.
+
+
+
+
+
+ Front-End
+
+ Experience with
+ React.js
+
+
+
+
+
+
+ Back-End
+
+ Experience with
+ Node and Databases
+
+
+
+
+
+
+ UI/UX
+
+ Experience with
+ tools like Figma
+
+
+
+
+
+);
+
+export default Technologies;
diff --git a/components/Technologies/TechnologiesStyles.js b/components/Technologies/TechnologiesStyles.js
new file mode 100644
index 0000000..11959ad
--- /dev/null
+++ b/components/Technologies/TechnologiesStyles.js
@@ -0,0 +1,133 @@
+import styled from 'styled-components'
+
+export const ImageContainer = styled.div`
+ text-align: center;
+ background-image: radial-gradient(50% 50% at 50% 50%, rgba(79, 108, 176, 0.25) 53.8%, rgba(79, 108, 176, 0) 100%);
+ width: 100%;
+ padding: 60px;
+ margin-top: 48px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+
+ @media ${props => props.theme.breakpoints.lg} {
+ background-image: none;
+ padding: 0;
+ margin-top: 40px;
+ }
+ @media ${props => props.theme.breakpoints.md} {
+ background-image: none;
+ padding: 0;
+ margin-top: 16px;
+ }
+`
+
+export const MainImage = styled.img`
+ width: 100%;
+`
+
+export const List = styled.ul`
+ list-style-type: none;
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 40px;
+ margin: 3rem 0;
+
+ @media ${props => props.theme.breakpoints.lg}{
+ margin: 64px 0;
+ }
+
+ @media ${props => props.theme.breakpoints.md}{
+ margin: 64px 0;
+ gap: 24px
+ }
+
+ @media ${props => props.theme.breakpoints.sm}{
+ display: flex;
+ flex-direction: column;
+ margin: 32px 0;
+ }
+`
+
+export const ListContainer = styled.div`
+ display: flex;
+ flex-direction: column;
+
+ @media ${props => props.theme.breakpoints.sm}{
+ display: flex;
+ margin-left: 18px;
+ }
+`
+
+export const ListTitle = styled.h4`
+ font-weight: 700;
+ font-size: 28px;
+ line-height: 32px;
+ letter-spacing: 0.02em;
+ color: #FFFFFF;
+ margin-bottom: 8px;
+
+@media ${props => props.theme.breakpoints.md}{
+ font-size: 24px;
+ line-height: 28px;
+}
+
+@media ${props => props.theme.breakpoints.sm}{
+ font-size: 20px;
+ line-height: 28px;
+ letter-spacing: 0.02em;
+ margin-bottom: 4px;
+}
+`
+
+export const ListParagraph = styled.p`
+ font-size: 18px;
+ line-height: 30px;
+ color: rgba(255, 255, 255, 0.75);
+
+ @media ${props => props.theme.breakpoints.md}{
+ font-size: 16px;
+ line-height: 28px;
+ }
+
+ @media ${props => props.theme.breakpoints.sm}{
+ font-size: 14px;
+ line-height: 22px;
+ }
+`
+
+export const ListItem = styled.li`
+ max-width: 320px;
+ display: flex;
+ flex-direction: column;
+
+@media ${props => props.theme.breakpoints.md}{
+ max-width: 203px;
+}
+
+@media ${props => props.theme.breakpoints.sm}{
+ margin-bottom: 14px;
+ max-width: 320px;
+ flex-direction: row;
+}
+`
+
+export const ListIcon = styled.img`
+ display: block;
+ width: 48px;
+ height: 48px;
+ margin-bottom: 10px;
+
+ @media ${props => props.theme.breakpoints.md}{
+ width: 40px;
+ height: 40px;
+ margin-bottom: 8px;
+ }
+
+ @media ${props => props.theme.breakpoints.sm}{
+ width: 32px;
+ height: 32px;
+ margin-bottom: 0px;
+ }
+`
diff --git a/components/TimeLine/TimeLine.js b/components/TimeLine/TimeLine.js
new file mode 100644
index 0000000..160a9e3
--- /dev/null
+++ b/components/TimeLine/TimeLine.js
@@ -0,0 +1,117 @@
+import React, { useState, useRef, useEffect } from 'react';
+
+import { CarouselButton, CarouselButtonDot, CarouselButtons, CarouselContainer, CarouselItem, CarouselItemImg, CarouselItemText, CarouselItemTitle, CarouselMobileScrollNode } from './TimeLineStyles';
+import { Section, SectionDivider, SectionText, SectionTitle } from '../../styles/GlobalComponents';
+import { TimeLineData } from '../../constants/constants';
+
+const TOTAL_CAROUSEL_COUNT = TimeLineData.length;
+
+const Timeline = () => {
+ const [activeItem, setActiveItem] = useState(0);
+ const carouselRef = useRef();
+
+ const scroll = (node, left) => {
+ return node.scrollTo({ left, behavior: 'smooth' });
+ }
+
+ const handleClick = (e, i) => {
+ e.preventDefault();
+
+ if (carouselRef.current) {
+ const scrollLeft = Math.floor(carouselRef.current.scrollWidth * 0.7 * (i / TimeLineData.length));
+
+ scroll(carouselRef.current, scrollLeft);
+ }
+ }
+
+ const handleScroll = () => {
+ if (carouselRef.current) {
+ const index = Math.round((carouselRef.current.scrollLeft / (carouselRef.current.scrollWidth * 0.7)) * TimeLineData.length);
+
+ setActiveItem(index);
+ }
+ }
+
+ // snap back to beginning of scroll when window is resized
+ // avoids a bug where content is covered up if coming from smaller screen
+ useEffect(() => {
+ const handleResize = () => {
+ scroll(carouselRef.current, 0);
+ }
+
+ window.addEventListener('resize', handleResize);
+ }, []);
+
+ return (
+
+ About Me
+
+ I’m Modupe, but people call me “Goke.” I’m a frontend developer, and I specialize in efficient React apps and CSS & HTML that just work across all platforms and browsers. I care deeply about building interfaces that are usable and pleasant for the most number of people possible.
+
+ My professional life has been 100% driven by my passion for design and structure. I’ve had the opportunity to intern at a talent development agency "Zuri", where I was able to utilise skills learnt to collaborate with developers, provide solutions to problems and work on projects. After that, I was a front-end developer at Techaton, where I worked on projects weekly that involved bringing beautiful modern UI/UX designs to life.
+
+ Right now, I’m excited about the still very complicated Web3, and working towards becoming a React senior. In the following years, I also plan to explore the “server-side” more and become a better-rounded full-stack dev.
+
+ {/*
+ <>
+ {TimeLineData.map((item, index) => (
+
+ handleClick(e, index)}>
+
+ {item.year}
+
+
+
+
+
+
+
+
+
+
+ {item.text}
+
+
+ ))}
+ >
+
+
+ {TimeLineData.map((item, index) => (
+ handleClick(e, index)}
+ type="button"
+ >
+
+
+ ))}
+ */}
+ {/* */}
+
+ );
+};
+
+export default Timeline;
diff --git a/components/TimeLine/TimeLineStyles.js b/components/TimeLine/TimeLineStyles.js
new file mode 100644
index 0000000..61a8ccd
--- /dev/null
+++ b/components/TimeLine/TimeLineStyles.js
@@ -0,0 +1,154 @@
+
+import styled from 'styled-components'
+
+export const CarouselContainer = styled.ul`
+ max-width: 1040px;
+ background: #0F1624;
+ padding: 0rem;
+ list-style:none;
+ display: flex;
+ justify-content: space-between;
+ /* overflow-x: hidden; */
+
+ margin-left: 32px;
+ &:first-of-type{
+ margin-left: 0px;
+ }
+
+ margin-bottom: 80px;
+
+ //remove scrollbar
+ scrollbar-width: none;
+ &::-webkit-scrollbar {
+ display: none;
+ }
+
+ @media ${props => props.theme.breakpoints.sm} {
+ overflow-x: scroll;
+ -webkit-overflow-scrolling: touch;
+ scroll-snap-type: x mandatory;
+ touch-action: pan-x;
+ justify-content: initial;
+ margin-bottom: 8px;
+ }
+`
+export const CarouselMobileScrollNode = styled.div`
+ @media ${props => props.theme.breakpoints.sm} {
+ display: flex;
+ min-width: ${({ final }) => final ? `120%;` : `min-content`}
+ }
+`
+
+export const CarouselItem = styled.div`
+ background: #0F1624;
+ border-radius: 3px;
+ max-width: 196px;
+
+ @media ${props => props.theme.breakpoints.md} {
+ max-width: 124px;
+ }
+
+ @media ${props => props.theme.breakpoints.sm} {
+ margin-left: 32px;
+ min-width: 120px;
+ background: #0E131F;
+ padding: 4px;
+ align-content: start;
+ scroll-snap-align: start;
+ border-radius: 3px;
+ overflow: visible;
+ position: relative;
+ height: fit-content;
+
+ ${(props) => props.active === props.index ? `opacity: 1` : `opacity: 0.5`};
+ }
+`
+
+export const CarouselItemTitle = styled.h4`
+ font-weight: bold;
+ font-size: 24px;
+ line-height: 32px;
+ letter-spacing: 0.02em;
+ display: flex;
+ /* This gradient is different due to the size of the Title container, it must transition sooner to be visible on the text */
+ background: linear-gradient(121.57deg, #FFFFFF 10%, rgba(255, 255, 255, 0.66) 30.15%);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ margin-bottom: 8px;
+
+ @media ${props => props.theme.breakpoints.md} {
+ font-size: 20px;
+ line-height: 28px;
+ margin-bottom: 4px;
+ }
+
+ @media ${props => props.theme.breakpoints.sm} {
+ font-size: 16px;
+ line-height: 24px;
+ }
+`
+export const CarouselItemImg = styled.svg`
+ margin-left: 21px;
+ -webkit-mask-image: linear-gradient(to right, rgba(0,0,0,1), rgba(0,0,0,0));
+ width: 100%;
+
+ @media ${props => props.theme.breakpoints.sm} {
+ -webkit-mask-image: none;
+ margin-left: 16px;
+ overflow: visible;
+ }
+`
+
+export const CarouselItemText = styled.p`
+ font-size: 14px;
+ line-height: 22px;
+ letter-spacing: 0.02em;
+ color: rgba(255, 255, 255, 0.75);
+ padding-right: 16px;
+
+ @media ${props => props.theme.breakpoints.md} {
+ font-size: 12px;
+ line-height: 18px;
+ padding-right: 32px;
+ }
+ @media ${props => props.theme.breakpoints.sm} {
+ font-size: 10px;
+ line-height: 16px;
+ padding-right: 0;
+ }
+`
+export const CarouselButtons = styled.div`
+ width: 288px;
+
+ display: none;
+ visibility: hidden;
+
+ @media ${props => props.theme.breakpoints.sm} {
+ display: flex;
+ visibility: visible;
+ margin-bottom: 48px;
+ }
+`
+
+export const CarouselButton = styled.button`
+ box-sizing: border-box;
+ background: none;
+ padding: 4px;
+ border: none;
+ cursor: pointer;
+ margin-right: 4px;
+ opacity: ${(props) => props.active === props.index ? `1` : `.33`};
+ transform: ${(props) => props.active === props.index ? `scale(1.6)` : `scale(1)`};
+
+ &:focus {
+ outline: none;
+ }
+`
+
+export const CarouselButtonDot = styled.div`
+ background-color: white;
+ border-radius: 10px;
+ margin: auto;
+ width: 3px;
+ height: 3px;
+`
diff --git a/constants/constants.js b/constants/constants.js
new file mode 100644
index 0000000..0fe3f29
--- /dev/null
+++ b/constants/constants.js
@@ -0,0 +1,46 @@
+export const projects = [
+ {
+ title: 'Hoo Bank',
+ description: "Using React and Tailwind, I built a mobile responsive bank website by transforming a UI/UX design into reality.",
+ image: '/images/screenshot (88).png',
+ tags: ['React', 'Node', 'Vite'],
+ source: 'https://github.com/Goketech/bank_modern_app',
+ visit: 'https://bank-modern-app-r9rw.vercel.app/',
+ id: 0,
+ },
+ {
+ title: 'Restaurant',
+ description:"Created a beautiful frontend restaurant site. It contains Hero Section, About, History, Menu, Chef, full screen video and lot's more.",
+ image: '/images/screenshot (89).png',
+ tags: ['React', 'JavaScript'],
+ source: 'https://github.com/Goketech/gerich-restaurant',
+ visit: 'https://gerich-restaurant-chi.vercel.app/',
+ id: 1,
+ },
+ {
+ title: 'AI Website',
+ description: "This is a .",
+ image: '/images/screenshot (90).png',
+ tags: ['React'],
+ source: 'https://github.com/Goketech/gpt3_goke',
+ visit: 'https://gpt3-goke.vercel.app/',
+ id: 2,
+ },
+ {
+ title: 'Netflix-clone',
+ description: "Created a Netflix movie Web App that fetches current and Trending using the movie database API.",
+ image: '/images/screenshot (91).png',
+ tags: ['React', 'Tailwind', 'Firebase', 'TMD API'],
+ source: 'https://github.com/Goketech/netflix',
+ visit: 'https://netflix-ten-iota.vercel.app/',
+ id: 3,
+ },
+];
+
+export const TimeLineData = [
+ { year: 2017, text: 'Started my journey', },
+ { year: 2018, text: 'Worked as a freelance developer', },
+ { year: 2019, text: 'Founded JavaScript Mastery', },
+ { year: 2020, text: 'Shared my projects with the world', },
+ { year: 2021, text: 'Started my own platform', },
+];
\ No newline at end of file
diff --git a/layout/Layout.js b/layout/Layout.js
new file mode 100644
index 0000000..43fd0a6
--- /dev/null
+++ b/layout/Layout.js
@@ -0,0 +1,15 @@
+import React from 'react'
+
+import Footer from '../components/Footer/Footer'
+import Header from '../components/Header/Header'
+import { Container } from './LayoutStyles'
+
+export const Layout = ({children}) => {
+ return (
+
+
+ {children}
+
+
+ )
+}
diff --git a/layout/LayoutStyles.js b/layout/LayoutStyles.js
new file mode 100644
index 0000000..63f1d1f
--- /dev/null
+++ b/layout/LayoutStyles.js
@@ -0,0 +1,7 @@
+import styled from 'styled-components';
+
+export const Container = styled.div`
+max-width: 1280px;
+width: 100%;
+margin: auto;
+`;
diff --git a/package-lock.json b/package-lock.json
index e265ee6..6a4a732 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,7 +13,202 @@
"eslint-config-next": "13.1.1",
"next": "13.1.1",
"react": "18.2.0",
- "react-dom": "18.2.0"
+ "react-dom": "18.2.0",
+ "react-icons": "^4.7.1",
+ "styled-components": "^5.3.0",
+ "styled-normalize": "^8.0.7"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+ "dependencies": {
+ "@babel/highlight": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz",
+ "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==",
+ "dependencies": {
+ "@babel/types": "^7.20.7",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+ "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+ "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
+ "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
+ "dependencies": {
+ "@babel/template": "^7.18.10",
+ "@babel/types": "^7.19.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.19.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
+ "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.19.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz",
+ "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
"node_modules/@babel/runtime": {
@@ -39,6 +234,83 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/template": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
+ "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
+ "dependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.20.12",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz",
+ "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==",
+ "dependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.20.7",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
+ "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.19.4",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
+ "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
+ "dependencies": {
+ "@emotion/memoize": "^0.8.0"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
+ "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
+ },
+ "node_modules/@emotion/stylis": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
+ "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
+ },
"node_modules/@eslint/eslintrc": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
@@ -91,6 +363,49 @@
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA=="
},
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.17",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+ },
"node_modules/@next/env": {
"version": "13.1.1",
"resolved": "https://registry.npmjs.org/@next/env/-/env-13.1.1.tgz",
@@ -643,6 +958,26 @@
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
"integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA=="
},
+ "node_modules/babel-plugin-styled-components": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz",
+ "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.16.0",
+ "@babel/helper-module-imports": "^7.16.0",
+ "babel-plugin-syntax-jsx": "^6.18.0",
+ "lodash": "^4.17.11",
+ "picomatch": "^2.3.0"
+ },
+ "peerDependencies": {
+ "styled-components": ">= 2"
+ }
+ },
+ "node_modules/babel-plugin-syntax-jsx": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
+ "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw=="
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -688,6 +1023,14 @@
"node": ">=6"
}
},
+ "node_modules/camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/caniuse-lite": {
"version": "1.0.30001442",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz",
@@ -767,6 +1110,24 @@
"node": ">= 8"
}
},
+ "node_modules/css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/css-to-react-native": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz",
+ "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==",
+ "dependencies": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
"node_modules/damerau-levenshtein": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
@@ -1743,6 +2104,14 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
"node_modules/ignore": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
@@ -2073,6 +2442,17 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -2145,6 +2525,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -2536,6 +2921,11 @@
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+ },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -2604,6 +2994,14 @@
"react": "^18.2.0"
}
},
+ "node_modules/react-icons": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.7.1.tgz",
+ "integrity": "sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw==",
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
"node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@@ -2745,6 +3143,11 @@
"node": ">=10"
}
},
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -2867,6 +3270,55 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/styled-components": {
+ "version": "5.3.6",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.6.tgz",
+ "integrity": "sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/traverse": "^7.4.5",
+ "@emotion/is-prop-valid": "^1.1.0",
+ "@emotion/stylis": "^0.8.4",
+ "@emotion/unitless": "^0.7.4",
+ "babel-plugin-styled-components": ">= 1.12.0",
+ "css-to-react-native": "^3.0.0",
+ "hoist-non-react-statics": "^3.0.0",
+ "shallowequal": "^1.1.0",
+ "supports-color": "^5.5.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/styled-components"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0",
+ "react-dom": ">= 16.8.0",
+ "react-is": ">= 16.8.0"
+ }
+ },
+ "node_modules/styled-components/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/styled-components/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/styled-jsx": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
@@ -2889,6 +3341,14 @@
}
}
},
+ "node_modules/styled-normalize": {
+ "version": "8.0.7",
+ "resolved": "https://registry.npmjs.org/styled-normalize/-/styled-normalize-8.0.7.tgz",
+ "integrity": "sha512-qQV4O7B9g7ZUnStCwGde7Dc/mcFF/pz0Ha/LL7+j/r6uopf6kJCmmR7jCPQMCBrDkYiQ4xvw1hUoceVJkdaMuQ==",
+ "peerDependencies": {
+ "styled-components": "^4.0.0 || ^5.0.0"
+ }
+ },
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -2948,6 +3408,14 @@
"globrex": "^0.1.2"
}
},
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -3143,6 +3611,146 @@
}
},
"dependencies": {
+ "@babel/code-frame": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+ "requires": {
+ "@babel/highlight": "^7.18.6"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz",
+ "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==",
+ "requires": {
+ "@babel/types": "^7.20.7",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "jsesc": "^2.5.1"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+ "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-environment-visitor": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+ "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg=="
+ },
+ "@babel/helper-function-name": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
+ "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
+ "requires": {
+ "@babel/template": "^7.18.10",
+ "@babel/types": "^7.19.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-string-parser": {
+ "version": "7.19.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
+ "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw=="
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.19.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
+ },
+ "@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "@babel/parser": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz",
+ "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg=="
+ },
"@babel/runtime": {
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz",
@@ -3160,6 +3768,73 @@
"regenerator-runtime": "^0.13.11"
}
},
+ "@babel/template": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
+ "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
+ "requires": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.20.12",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz",
+ "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==",
+ "requires": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.20.7",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "dependencies": {
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
+ "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.19.4",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@emotion/is-prop-valid": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
+ "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
+ "requires": {
+ "@emotion/memoize": "^0.8.0"
+ }
+ },
+ "@emotion/memoize": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
+ "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
+ },
+ "@emotion/stylis": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
+ "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
+ },
+ "@emotion/unitless": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
+ },
"@eslint/eslintrc": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
@@ -3196,6 +3871,40 @@
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA=="
},
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "requires": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
+ },
+ "@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.17",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+ "requires": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+ },
"@next/env": {
"version": "13.1.1",
"resolved": "https://registry.npmjs.org/@next/env/-/env-13.1.1.tgz",
@@ -3514,6 +4223,23 @@
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
"integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA=="
},
+ "babel-plugin-styled-components": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz",
+ "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.16.0",
+ "@babel/helper-module-imports": "^7.16.0",
+ "babel-plugin-syntax-jsx": "^6.18.0",
+ "lodash": "^4.17.11",
+ "picomatch": "^2.3.0"
+ }
+ },
+ "babel-plugin-syntax-jsx": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
+ "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw=="
+ },
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -3550,6 +4276,11 @@
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
},
+ "camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ=="
+ },
"caniuse-lite": {
"version": "1.0.30001442",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz",
@@ -3602,6 +4333,21 @@
"which": "^2.0.1"
}
},
+ "css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg=="
+ },
+ "css-to-react-native": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz",
+ "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==",
+ "requires": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
"damerau-levenshtein": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
@@ -4320,6 +5066,14 @@
"has-symbols": "^1.0.2"
}
},
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ },
"ignore": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
@@ -4535,6 +5289,11 @@
"argparse": "^2.0.1"
}
},
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+ },
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -4592,6 +5351,11 @@
"p-locate": "^5.0.0"
}
},
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
"lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -4845,6 +5609,11 @@
"source-map-js": "^1.0.2"
}
},
+ "postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+ },
"prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -4887,6 +5656,12 @@
"scheduler": "^0.23.0"
}
},
+ "react-icons": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.7.1.tgz",
+ "integrity": "sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw==",
+ "requires": {}
+ },
"react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@@ -4974,6 +5749,11 @@
"lru-cache": "^6.0.0"
}
},
+ "shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+ },
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -5060,6 +5840,38 @@
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
},
+ "styled-components": {
+ "version": "5.3.6",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.6.tgz",
+ "integrity": "sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/traverse": "^7.4.5",
+ "@emotion/is-prop-valid": "^1.1.0",
+ "@emotion/stylis": "^0.8.4",
+ "@emotion/unitless": "^0.7.4",
+ "babel-plugin-styled-components": ">= 1.12.0",
+ "css-to-react-native": "^3.0.0",
+ "hoist-non-react-statics": "^3.0.0",
+ "shallowequal": "^1.1.0",
+ "supports-color": "^5.5.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
"styled-jsx": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
@@ -5068,6 +5880,12 @@
"client-only": "0.0.1"
}
},
+ "styled-normalize": {
+ "version": "8.0.7",
+ "resolved": "https://registry.npmjs.org/styled-normalize/-/styled-normalize-8.0.7.tgz",
+ "integrity": "sha512-qQV4O7B9g7ZUnStCwGde7Dc/mcFF/pz0Ha/LL7+j/r6uopf6kJCmmR7jCPQMCBrDkYiQ4xvw1hUoceVJkdaMuQ==",
+ "requires": {}
+ },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -5109,6 +5927,11 @@
"globrex": "^0.1.2"
}
},
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
+ },
"to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
diff --git a/package.json b/package.json
index 2449640..b4e121f 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,9 @@
"eslint-config-next": "13.1.1",
"next": "13.1.1",
"react": "18.2.0",
- "react-dom": "18.2.0"
+ "react-dom": "18.2.0",
+ "react-icons": "^4.7.1",
+ "styled-components": "^5.3.0",
+ "styled-normalize": "^8.0.7"
}
}
diff --git a/pages/_app.js b/pages/_app.js
index 048541e..84762e7 100644
--- a/pages/_app.js
+++ b/pages/_app.js
@@ -1,5 +1,12 @@
-import '../styles/globals.css'
+import Theme from '../styles/theme';
export default function App({ Component, pageProps }) {
- return
+ return (
+ <>
+
+
+
+ >
+ );
}
+
\ No newline at end of file
diff --git a/pages/_document.js b/pages/_document.js
index 54e8bf3..c10c231 100644
--- a/pages/_document.js
+++ b/pages/_document.js
@@ -1,13 +1,43 @@
-import { Html, Head, Main, NextScript } from 'next/document'
+import Document, { Head, Html, Main, NextScript } from 'next/document'
+import { ServerStyleSheet } from 'styled-components'
-export default function Document() {
- return (
-
-
-
-
-
-
-
- )
-}
+export default class MyDocument extends Document {
+ static async getInitialProps(ctx) {
+ const sheet = new ServerStyleSheet()
+ const originalRenderPage = ctx.renderPage
+
+ try {
+ ctx.renderPage = () =>
+ originalRenderPage({
+ enhanceApp: (App) => (props) =>
+ sheet.collectStyles(),
+ })
+
+ const initialProps = await Document.getInitialProps(ctx)
+ return {
+ ...initialProps,
+ styles: (
+ <>
+ {initialProps.styles}
+ {sheet.getStyleElement()}
+ >
+ ),
+ }
+ } finally {
+ sheet.seal()
+ }
+ }
+ render() {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
\ No newline at end of file
diff --git a/pages/api/hello.js b/pages/api/hello.js
index df63de8..84ae0e8 100644
--- a/pages/api/hello.js
+++ b/pages/api/hello.js
@@ -1,5 +1,5 @@
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
-export default function handler(req, res) {
+export default (req, res) => {
res.status(200).json({ name: 'John Doe' })
-}
+}
\ No newline at end of file
diff --git a/pages/index.js b/pages/index.js
index dc5a1cc..e515232 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -1,123 +1,28 @@
-import Head from 'next/head'
-import Image from 'next/image'
-import { Inter } from '@next/font/google'
-import styles from '../styles/Home.module.css'
+import Acomplishments from '../components/Acomplishments/Acomplishments';
+import BgAnimation from '../components/BackgrooundAnimation/BackgroundAnimation';
+import Hero from '../components/Hero/Hero';
+import Projects from '../components/Projects/Projects';
+import Technologies from '../components/Technologies/Technologies';
+import Timeline from '../components/TimeLine/TimeLine';
+import { Layout } from '../layout/Layout';
+import { Section } from '../styles/GlobalComponents';
-const inter = Inter({ subsets: ['latin'] })
-export default function Home() {
- return (
- <>
-
- Create Next App
-
-
-
-
-
-
-
- Get started by editing
- pages/index.js
-
-
-
-
-
-
-
-
- >
- )
-}
+export default Home;
diff --git a/public/favicon.ico b/public/favicon.ico
index 718d6fea4835ec2d246af9800eddb7ffb276240c..4965832f2c9b0605eaa189b7c7fb11124d24e48a 100644
GIT binary patch
literal 15086
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
LrJugUA?W`A8`#=m
diff --git a/public/images/1.png b/public/images/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..3060d190646a93d2b4fafba6cd058391070949bd
GIT binary patch
literal 168810
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
z
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 |