diff --git a/src/components/Header.jsx b/src/components/Header.jsx
index deb40e6..eb0f21f 100644
--- a/src/components/Header.jsx
+++ b/src/components/Header.jsx
@@ -1,5 +1,6 @@
import { Link } from "react-router-dom";
const Header = () => {
+<<<<<<< HEAD
return (
@@ -22,5 +23,14 @@ const Header = () => {
);
};
+=======
+
+ return (
+
+ );
+}
+>>>>>>> homepage
export default Header;
diff --git a/src/components/Hero.jsx b/src/components/Hero.jsx
new file mode 100644
index 0000000..8d237d3
--- /dev/null
+++ b/src/components/Hero.jsx
@@ -0,0 +1,28 @@
+import React from 'react';
+import '../scss/components/Hero.scss';
+
+function Hero() {
+ return (
+
+
+
Welcome to BattleSnake!!!
+
Play for Fun!
+
+ A competitive game where your code is the controller. All you need is a web server that responds to the Battlesnake API.
+
+
Start Battle
+
+
+
+
+
+ {/*
Battle
+
📈
+
👁️
+
Available for Freelance
*/}
+
+
+ );
+}
+
+export default Hero;
diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx
new file mode 100644
index 0000000..a705b7e
--- /dev/null
+++ b/src/components/Navbar.jsx
@@ -0,0 +1,19 @@
+import React from 'react'
+import '../scss/styles.scss'
+import '../scss/components/_navbar.scss'
+
+const Navbar = () => {
+ return (
+
+ MyApp
+
+
+ )
+}
+
+export default Navbar
\ No newline at end of file
diff --git a/src/components/Services.jsx b/src/components/Services.jsx
new file mode 100644
index 0000000..c4e59ce
--- /dev/null
+++ b/src/components/Services.jsx
@@ -0,0 +1,33 @@
+import React from 'react';
+import '../scss/components/Services.scss';
+import ServiceCard from '../components/ServicesCard.jsx';
+
+function Services() {
+ return (
+
+ Develop your own algorithm to find food, stay alive, and eliminate others. Battlesnakes are controlled by a web server you deploy, running the code you write.
+
+
+
+
+
+
+ );
+}
+
+export default Services;
diff --git a/src/components/ServicesCard.jsx b/src/components/ServicesCard.jsx
new file mode 100644
index 0000000..473dee7
--- /dev/null
+++ b/src/components/ServicesCard.jsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import '../scss/components/ServicesCard.scss';
+
+function ServiceCard({ icon, title, desc, cta }) {
+ return (
+
+
{icon}
+
{title}
+
{desc}
+
{cta} →
+
+ );
+}
+
+export default ServiceCard;
diff --git a/src/main.jsx b/src/main.jsx
index 7ec9dde..eea7121 100644
--- a/src/main.jsx
+++ b/src/main.jsx
@@ -2,9 +2,16 @@ import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import AppRouter from "./routers/AppRouter";
import "./scss/styles.scss";
+import Navbar from "./components/Navbar";
+import Hero from "./components/Hero";
+import Services from "./components/Services";
createRoot(document.getElementById("root")).render(
+
+
+
+
);
diff --git a/src/scss/components/Hero.scss b/src/scss/components/Hero.scss
new file mode 100644
index 0000000..b1cec79
--- /dev/null
+++ b/src/scss/components/Hero.scss
@@ -0,0 +1,100 @@
+.hero {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 4rem 3rem;
+ background-color: #f9f5f2;
+
+ .hero-text {
+ max-width: 50%;
+ // font-family: "Limelight", sans-serif;
+
+ .intro {
+ font-size: 1rem;
+ }
+
+ h1 {
+ font-size: 4rem;
+ font-weight: 900;
+ margin: 1rem 0;
+ }
+
+ .desc {
+ font-size: 1.125rem;
+ margin-bottom: 2rem;
+ }
+
+ .cta {
+ background-color: #ffcc3a;
+ border: none;
+ padding: 1rem 2rem;
+ font-size: 1rem;
+ font-weight: bold;
+ border-radius: 12px;
+ cursor: pointer;
+ box-shadow: 3px 3px 0 #000;
+ }
+ }
+
+ .hero-image {
+ position: relative;
+
+ // .hex-bg {
+ // width: 500px;
+ // height: auto;
+ // background-color: #2900F5;
+ // padding: 3rem;
+ // clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0 75%, 0 25%);
+ // box-shadow: 6px 6px 0 #000;
+
+ img {
+ width: 70%;
+ border-radius: 6px;
+ }
+ }
+
+ .tag {
+ position: absolute;
+ top: -2rem;
+ right: 0;
+ background: #b1b9f9;
+ padding: 0.3rem 0.8rem;
+ border-radius: 999px;
+ font-weight: 700;
+ font-size: 0.9rem;
+ }
+
+ .icon {
+ position: absolute;
+ font-size: 2rem;
+
+ &.top-left {
+ top: -2rem;
+ left: -2rem;
+ background: #00c2a8;
+ padding: 0.5rem;
+ border-radius: 0.5rem;
+ }
+
+ &.bottom-right {
+ bottom: -2rem;
+ right: -2rem;
+ background: #ffdf4f;
+ padding: 0.5rem;
+ border-radius: 50%;
+ }
+ }
+
+ .freelance-tag {
+ position: absolute;
+ bottom: -1.5rem;
+ left: 0;
+ background: #00d18c;
+ padding: 0.5rem 1rem;
+ font-size: 0.9rem;
+ border-radius: 999px;
+ font-weight: 600;
+ }
+ }
+
+
\ No newline at end of file
diff --git a/src/scss/components/Services.scss b/src/scss/components/Services.scss
new file mode 100644
index 0000000..9cc9695
--- /dev/null
+++ b/src/scss/components/Services.scss
@@ -0,0 +1,18 @@
+.services {
+ padding: 5rem 3rem;
+ background-color: #fdfaf6;
+
+ h2 {
+ font-size: 2.5rem;
+ font-weight: 900;
+ text-align: center;
+ margin-bottom: 3rem;
+ }
+
+ .cards {
+ display: flex;
+ justify-content: space-between;
+ gap: 2rem;
+ }
+ }
+
\ No newline at end of file
diff --git a/src/scss/components/ServicesCard.scss b/src/scss/components/ServicesCard.scss
new file mode 100644
index 0000000..f6a5848
--- /dev/null
+++ b/src/scss/components/ServicesCard.scss
@@ -0,0 +1,32 @@
+.service-card {
+ background-color: #fff;
+ border: 2px solid #000;
+ border-radius: 1rem;
+ padding: 2rem;
+ box-shadow: 6px 6px 0 #000;
+ flex: 1;
+
+ .icon {
+ font-size: 2.5rem;
+ margin-bottom: 1rem;
+ }
+
+ h3 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ margin-bottom: 1rem;
+ }
+
+ p {
+ font-size: 1rem;
+ line-height: 1.6;
+ margin-bottom: 1.5rem;
+ }
+
+ .link {
+ font-weight: bold;
+ text-decoration: none;
+ color: #202020;
+ }
+ }
+
\ No newline at end of file
diff --git a/src/scss/components/_header.scss b/src/scss/components/_header.scss
index 58bb0f4..94d69af 100644
--- a/src/scss/components/_header.scss
+++ b/src/scss/components/_header.scss
@@ -3,43 +3,31 @@
@use "../base/settings" as *;
@use "../utilities/mixins" as *;
-header {
- padding: $section-padding;
- display: flex;
- justify-content: space-between;
- align-items: center;
- border-bottom: 1px solid $grey;
-
- h1 {
- @include flatten;
-
- a {
- text-decoration: none;
- color: $dark;
-
- &:hover {
- color: $yellow;
- }
+.header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 2rem 3rem;
+
+ .logo {
+ font-weight: bold;
+ font-size: 1.25rem;
+ color: #3a3a3a;
}
- }
-
- nav {
- ul {
- @include flatten(true);
- display: flex;
- gap: 1rem;
-
- li {
- a {
- text-decoration: none;
- color: $dark;
- font-weight: bold;
-
- &:hover {
- color: $yellow;
- }
+
+ .nav {
+ a {
+ margin-left: 2rem;
+ text-decoration: none;
+ color: #202020;
+ font-weight: 500;
+
+ &:last-child::before {
+ content: '● ';
+ color: #ce9a76;
+ margin-right: 0.4rem;
}
}
}
}
-}
+
\ No newline at end of file
diff --git a/src/scss/components/_navbar.scss b/src/scss/components/_navbar.scss
new file mode 100644
index 0000000..b68ac54
--- /dev/null
+++ b/src/scss/components/_navbar.scss
@@ -0,0 +1,39 @@
+.navbar {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ background-color: #f9f5f2;
+ padding: 1rem 2rem;
+ color: white;
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
+
+ &__logo {
+ font-size: 1.5rem;
+ font-weight: bold;
+ color: #91a8ed;
+ }
+
+ &__links {
+ list-style: none;
+ display: flex;
+ gap: 2rem;
+ margin: 0;
+
+ @media (max-width: 768px) {
+ flex-direction: column;
+ gap: 1rem;
+ }
+ }
+
+ &__link {
+ text-decoration: none;
+ color: #91a8ed;
+ font-weight: 500;
+ transition: color 0.2s;
+
+ &:hover {
+ color: #6888E9;
+ }
+ }
+ }
+
\ No newline at end of file