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 ( +
Contact
+ ) +} + +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 ( +
Works
+ ) +} + +export default Works \ No newline at end of file