Skip to content

Commit

Permalink
up
Browse files Browse the repository at this point in the history
  • Loading branch information
govinda777 committed Jan 4, 2025
1 parent 1f30552 commit 3f80a3b
Showing 9 changed files with 154 additions and 41 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -34,6 +34,7 @@
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-is": "^18.3.1",
"react-router-dom": "^7.1.1",
"styled-components": "^6.1.13",
"ton": "^13.9.0",
"ton-core": "^0.53.0",
Binary file added public/solutions/hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 11 additions & 3 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
// src/App.tsx
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import "./App.css";
import Home from './pages/Home';
import Solutions from './pages/Solutions';
import DefaultLayout from './layouts/DefaultLayout';
import "@twa-dev/sdk";

function App() {
return (
<DefaultLayout>
<Home />
</DefaultLayout>
<BrowserRouter>
<DefaultLayout>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/solutions" element={<Solutions />} />
</Routes>
</DefaultLayout>
</BrowserRouter>
);
}

86 changes: 49 additions & 37 deletions src/components/Navbar/index.tsx
Original file line number Diff line number Diff line change
@@ -1,61 +1,69 @@
import React, { useState } from 'react';
import { Link, useLocation } from 'react-router-dom';
import { Menu, X, User } from 'lucide-react';

const logo = new URL('/public/logo.svg', import.meta.url).href;

const Navbar = () => {
const [isOpen, setIsOpen] = useState(false);
const location = useLocation();

const navItems = [
'Soluções',
'Quem somos',
'Contato',
'Comunidade',
'Blog',
'Planos'
{ name: 'Soluções', path: '/solutions' },
{ name: 'Quem somos', path: '/about' },
{ name: 'Contato', path: '/contact' },
{ name: 'Comunidade', path: '/community' },
{ name: 'Blog', path: '/blog' },
{ name: 'Planos', path: '/plans' }
];

return (
<header className="w-full bg-[#FED7AA] px-4 md:px-6 py-4">
<div className="max-w-7xl mx-auto flex items-center justify-between">
{/* Logo */}
<div className="flex items-center">
<img
src={logo}
alt="Xperience"
className="w-[100px] h-auto"
/>
<Link to="/">
<img
src={logo}
alt="Xperience"
className="w-[100px] h-auto"
/>
</Link>
</div>

{/* Desktop Navigation */}
<nav className="hidden md:flex gap-8">
{navItems.map((item) => (
<a
key={item}
href="#"
className="relative text-sm text-gray-900 hover:text-gray-900 whitespace-nowrap transition-colors duration-300 group"
<Link
key={item.name}
to={item.path}
className={`relative text-sm text-gray-900 hover:text-gray-900 whitespace-nowrap transition-colors duration-300 group ${
location.pathname === item.path ? 'font-medium' : ''
}`}
>
{item}
<span className="absolute -bottom-1 left-0 w-0 h-0.5 bg-black transition-all duration-300 group-hover:w-full"></span>
</a>
{item.name}
<span className={`absolute -bottom-1 left-0 h-0.5 bg-black transition-all duration-300 ${
location.pathname === item.path ? 'w-full' : 'w-0 group-hover:w-full'
}`}></span>
</Link>
))}
</nav>

{/* Desktop Auth Buttons */}
<div className="hidden md:flex items-center gap-4">
<a
href="#"
<Link
to="/login"
className="flex items-center gap-2 px-6 py-2 rounded-full border border-black transition-all duration-300 hover:bg-white/10 hover:shadow-md"
>
<User className="h-5 w-5" />
Login
</a>
<a
href="#"
</Link>
<Link
to="/signup"
className="px-6 py-2 bg-black text-white rounded-full transition-all duration-300 hover:bg-gray-900 hover:shadow-md hover:-translate-y-0.5"
>
Primeiro acesso
</a>
</Link>
</div>

{/* Mobile Menu Button */}
@@ -73,31 +81,35 @@ const Navbar = () => {
<div className="flex flex-col p-4 space-y-4">
<nav className="flex flex-col space-y-4">
{navItems.map((item) => (
<a
key={item}
href="#"
className="relative text-lg text-gray-900 hover:text-gray-900 transition-colors duration-300 group w-fit"
<Link
key={item.name}
to={item.path}
className={`relative text-lg text-gray-900 hover:text-gray-900 transition-colors duration-300 group w-fit ${
location.pathname === item.path ? 'font-medium' : ''
}`}
onClick={() => setIsOpen(false)}
>
{item}
<span className="absolute -bottom-1 left-0 w-0 h-0.5 bg-black transition-all duration-300 group-hover:w-full"></span>
</a>
{item.name}
<span className={`absolute -bottom-1 left-0 h-0.5 bg-black transition-all duration-300 ${
location.pathname === item.path ? 'w-full' : 'w-0 group-hover:w-full'
}`}></span>
</Link>
))}
</nav>
<div className="flex flex-col space-y-4 pt-4">
<a
href="#"
<Link
to="/login"
className="flex items-center justify-center gap-2 px-6 py-3 rounded-full border border-black transition-all duration-300 hover:bg-white/10 hover:shadow-md"
>
<User className="h-5 w-5" />
Login
</a>
<a
href="#"
</Link>
<Link
to="/signup"
className="flex items-center justify-center px-6 py-3 bg-black text-white rounded-full transition-all duration-300 hover:bg-gray-900 hover:shadow-md hover:-translate-y-0.5"
>
Primeiro acesso
</a>
</Link>
</div>
</div>
</div>
File renamed without changes.
2 changes: 1 addition & 1 deletion src/pages/Home/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// pages/Home/index.tsx
import React from 'react';
import Hero from '../../components/Hero';
import Hero from './Hero';
import Solutions from './Solutions';
import IaDoEmpreendedor from './IaDoEmpreendedor';
import WhyXperience from './WhyXperience';
42 changes: 42 additions & 0 deletions src/pages/Solutions/Hero.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import React from 'react';

const Hero: React.FC = () => {
const heroImage = new URL('/public/solutions/hero.png', import.meta.url).href;

return (
<div className="w-full min-h-screen">
<div className="max-w-7xl mx-auto px-4 md:px-8 pt-32 pb-16 grid grid-cols-1 md:grid-cols-2 gap-12 items-center">
{/* Text Content */}
<div className="space-y-8">
<div className="space-y-4">
<h1 className="text-5xl md:text-6xl font-bold text-white">
Soluções que
<span className="block mt-4 text-4xl md:text-5xl font-normal">
transformam seu negócio
</span>
</h1>
<p className="text-xl md:text-2xl text-white/90 max-w-xl">
Descubra como nossa expertise em inovação e tecnologia pode impulsionar o crescimento da sua empresa.
</p>
</div>

<button className="bg-black text-white text-lg md:text-xl px-8 py-4 rounded-full hover:bg-gray-900 transition-colors duration-300 hover:shadow-lg">
Conheça nossas soluções
</button>
</div>

{/* Image */}
<div className="relative h-full flex justify-center">
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[500px] h-[500px] bg-[#F07D35] rounded-full opacity-30 blur-3xl" />
<img
src={heroImage}
alt="Soluções Xperience"
className="relative z-10 max-w-lg w-full h-auto object-contain"
/>
</div>
</div>
</div>
);
};

export default Hero;
13 changes: 13 additions & 0 deletions src/pages/Solutions/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// src/pages/Solutions/index.tsx
import React from 'react';
import Hero from './Hero';

const Solutions: React.FC = () => {
return (
<div className="bg-[#E85D04]">
<Hero />
</div>
);
};

export default Solutions;
37 changes: 37 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
@@ -1282,6 +1282,11 @@
dependencies:
"@babel/types" "^7.20.7"

"@types/cookie@^0.6.0":
version "0.6.0"
resolved "https://registry.npmmirror.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5"
integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==

"@types/[email protected]", "@types/estree@^1.0.0", "@types/estree@^1.0.6":
version "1.0.6"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
@@ -2509,6 +2514,11 @@ convert-source-map@^2.0.0:
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==

cookie@^1.0.1:
version "1.0.2"
resolved "https://registry.npmmirror.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610"
integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==

[email protected]:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@@ -5949,6 +5959,23 @@ react-refresh@^0.14.2:
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==

react-router-dom@^7.1.1:
version "7.1.1"
resolved "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-7.1.1.tgz#9e76fb63a762ba5da13032f5fd9e4a24946396b6"
integrity sha512-vSrQHWlJ5DCfyrhgo0k6zViOe9ToK8uT5XGSmnuC2R3/g261IdIMpZVqfjD6vWSXdnf5Czs4VA/V60oVR6/jnA==
dependencies:
react-router "7.1.1"

[email protected]:
version "7.1.1"
resolved "https://registry.npmmirror.com/react-router/-/react-router-7.1.1.tgz#88f5657fa5b8f0b918c7222ec710de0274d00b2e"
integrity sha512-39sXJkftkKWRZ2oJtHhCxmoCrBCULr/HAH4IT5DHlgu/Q0FCPV0S4Lx+abjDTx/74xoZzNYDYbOZWlJjruyuDQ==
dependencies:
"@types/cookie" "^0.6.0"
cookie "^1.0.1"
set-cookie-parser "^2.6.0"
turbo-stream "2.4.0"

react@^18.2.0:
version "18.3.1"
resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
@@ -6230,6 +6257,11 @@ semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==

set-cookie-parser@^2.6.0:
version "2.7.1"
resolved "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz#3016f150072202dfbe90fadee053573cc89d2943"
integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==

set-function-length@^1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
@@ -6944,6 +6976,11 @@ tunnel-agent@^0.6.0:
dependencies:
safe-buffer "^5.0.1"

[email protected]:
version "2.4.0"
resolved "https://registry.npmmirror.com/turbo-stream/-/turbo-stream-2.4.0.tgz#1e4fca6725e90fa14ac4adb782f2d3759a5695f0"
integrity sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==

tweetnacl-util@^0.15.1:
version "0.15.1"
resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b"

0 comments on commit 3f80a3b

Please sign in to comment.