diff --git a/package.json b/package.json
index 22ddd966..fe0c4d69 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,8 @@
},
"dependencies": {
"react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "react-dom": "^18.2.0",
+ "styled-components": "^5.3.10"
},
"devDependencies": {
"@types/react": "^18.0.26",
@@ -18,4 +19,4 @@
"@vitejs/plugin-react": "^3.0.0",
"vite": "^4.0.0"
}
-}
\ No newline at end of file
+}
diff --git a/public/img/background.png b/public/img/background.png
new file mode 100644
index 00000000..9a1f8bd6
Binary files /dev/null and b/public/img/background.png differ
diff --git a/src/App.jsx b/src/App.jsx
index 46647c3e..ffc7bd5d 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -1,9 +1,32 @@
+import styled from "styled-components"
+import Hero from "./components/Hero"
+import Who from "./components/Who"
+import Works from "./components/Works"
+import Contact from "./components/Contact"
+
+const Container = styled.div`
+ height: 100vh;
+ scroll-snap-type: y mandatory;
+ scroll-behavior: smooth;
+ overflow-y: auto;
+ scrollbar-width: none;
+ color: #000;
+ background: url("./public/img/background.png");
+ &::-webkit-scrollbar {
+ display: none;
+ }
+
+`
+
function App() {
return (
-
- Hello world!
-
+
+
+
+
+
+
)
}
diff --git a/src/components/Contact.jsx b/src/components/Contact.jsx
new file mode 100644
index 00000000..5c9b39aa
--- /dev/null
+++ b/src/components/Contact.jsx
@@ -0,0 +1,15 @@
+import React from 'react'
+import styled from 'styled-components'
+
+const Section = styled.div`
+ height: 100vh;
+ scroll-snap-align: center;
+`
+
+const Contact = () => {
+ return (
+
+ )
+}
+
+export default Contact
\ No newline at end of file
diff --git a/src/components/Hero.jsx b/src/components/Hero.jsx
new file mode 100644
index 00000000..41d3046f
--- /dev/null
+++ b/src/components/Hero.jsx
@@ -0,0 +1,105 @@
+import React from 'react'
+import styled from 'styled-components'
+import Navbar from './Navbar'
+
+const Section = styled.div`
+ height: 100vh;
+ scroll-snap-align: center;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: space-between;
+`
+
+const Container = styled.div`
+ height: 100vh;
+ scroll-snap-align: center;
+ width: 75rem;
+ display: flex;
+ justify-content: space-between;
+`
+
+const Left = styled.div`
+ flex: 2;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ gap: 20px;
+`
+const Title = styled.h1`
+ font-size: 3rem;
+`;
+const WhatWeDo = styled.div`
+ display: flex;
+ align-items: center;
+ gap: 10px;
+`;
+const Line = styled.img`
+height: 5px;
+`;
+
+const Subtitle = styled.h3`
+ color: #da4ea2;
+`;
+const Desc = styled.p`
+ font-size: 24px;
+ color: #000;
+`;
+
+const Button = styled.button`
+ width: 100px;
+ padding: 10px;
+ cursor: pointer;
+ background-color: #000;
+ color: #fff;
+ border: none;
+ border-radius: 5px;
+`
+
+const Right = styled.div`
+ flex: 3;
+ position: relative;
+`
+const Img = styled.img`
+ width: 800px;
+ height: 600px;
+ object-fit: contain;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ margin: auto;
+ animation: animate 2s infinite ease alternate;
+
+ @keyframes animate {
+ to {
+ transform: translateY(50px);
+ }
+ }
+`;
+
+const Hero = () => {
+ return (
+
+
+
+
+ Lorem. Ipsum. Dolor.
+
+
+ What we do
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
+
+
+
+ {/* 3d model */}
+
+
+
+
+ )
+}
+
+export default Hero
\ No newline at end of file
diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx
new file mode 100644
index 00000000..70ddaff0
--- /dev/null
+++ b/src/components/Navbar.jsx
@@ -0,0 +1,76 @@
+import React from 'react'
+import styled from 'styled-components'
+
+const Section = styled.div`
+ display: flex;
+ justify-content: center;
+`
+
+const Container = styled.div`
+ width: 75rem;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 10px 0px;
+`
+
+const Links = styled.div`
+ display: flex;
+ align-items: center;
+ Gap: 50px;
+ `;
+const Icons = styled.div`
+ display: flex;
+ align-items: center;
+ Gap: 20px;`;
+
+const Logo = styled.img`
+height: 50px;
+`;
+const List = styled.ul`
+ display: flex;
+ gap: 20px;
+ list-style: none;
+`;
+
+const ListItem = styled.li`
+cursor: pointer;`;
+
+const Icon = styled.img`
+width: 20px;
+cursor: pointer;`;
+
+const Button = styled.button`
+ width: 100px;
+ padding: 10px;
+ cursor: pointer;
+ background-color: #000;
+ color: #fff;
+ border: none;
+ border-radius: 5px;
+`
+
+const Navbar = () => {
+ return (
+
+
+
+
+
+ Home
+ About
+ Works
+ Contact
+
+
+
+
+
+
+
+
+
+ )
+}
+
+export default Navbar
\ No newline at end of file
diff --git a/src/components/Who.jsx b/src/components/Who.jsx
new file mode 100644
index 00000000..0b29f691
--- /dev/null
+++ b/src/components/Who.jsx
@@ -0,0 +1,81 @@
+import React from 'react'
+import styled from 'styled-components'
+
+const Section = styled.div`
+ height: 100vh;
+ scroll-snap-align: center;
+ display: flex;
+ justify-content: center;
+`
+
+const Container = styled.div`
+ height: 100vh;
+ scroll-snap-align: center;
+ width: 75rem;
+ display: flex;
+ justify-content: space-between;
+`
+
+const Left = styled.div`
+ flex: 1;
+
+`
+const Title = styled.h1`
+ font-size: 3rem;
+`;
+
+const Right = styled.div`
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ gap: 20px;
+`
+const WhatWeDo = styled.div`
+ display: flex;
+ align-items: center;
+ gap: 10px;
+`;
+const Line = styled.img`
+height: 5px;
+`;
+
+const Subtitle = styled.h3`
+ color: #da4ea2;
+`;
+const Desc = styled.p`
+ font-size: 24px;
+ color: lightgray;
+`;
+
+const Button = styled.button`
+ width: 100px;
+ padding: 10px;
+ cursor: pointer;
+ background-color: #000;
+ color: #fff;
+ border: none;
+ border-radius: 5px;
+`
+
+const Who = () => {
+ return (
+
+
+
+
+
+ think outside the box.
+
+
+ Who we are
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
+
+
+
+
+ )
+}
+
+export default Who
\ No newline at end of file
diff --git a/src/components/Works.jsx b/src/components/Works.jsx
new file mode 100644
index 00000000..481acbd6
--- /dev/null
+++ b/src/components/Works.jsx
@@ -0,0 +1,15 @@
+import React from 'react'
+import styled from 'styled-components'
+
+const Section = styled.div`
+ height: 100vh;
+ scroll-snap-align: center;
+`
+
+const Works = () => {
+ return (
+
+ )
+}
+
+export default Works
\ No newline at end of file