Compare commits

..

4 Commits

Author SHA1 Message Date
Oleg Proskurin f37ae00177 feat: responsive footer 2025-12-18 23:47:36 +07:00
Oleg Proskurin 12cfeeda18 feat: make sticky header 2025-12-18 23:37:35 +07:00
Oleg Proskurin 62a03749e7 feat: update header 2025-12-18 23:29:24 +07:00
Oleg Proskurin ef8be82aa8 fix: logo optimisation 2025-12-18 23:26:01 +07:00
6 changed files with 35 additions and 24 deletions

View File

@ -4,7 +4,7 @@ const nextConfig: NextConfig = {
output: 'standalone', output: 'standalone',
trailingSlash: true, trailingSlash: true,
images: { images: {
// Enable Next.js image optimization for better performance formats: ['image/avif', 'image/webp'],
}, },
eslint: { eslint: {
ignoreDuringBuilds: true, ignoreDuringBuilds: true,

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 KiB

View File

@ -1,6 +1,6 @@
import { useState, useEffect } from 'react'; import { useState, useEffect } from 'react';
export default function GlowEffect({ children }: { children: React.ReactNode }) { export default function GlowEffect({ children, id }: { children: React.ReactNode; id?: string }) {
const [isPropertyRegistered, setIsPropertyRegistered] = useState(false); const [isPropertyRegistered, setIsPropertyRegistered] = useState(false);
// Register CSS property in component body (before render) // Register CSS property in component body (before render)
@ -68,7 +68,7 @@ export default function GlowEffect({ children }: { children: React.ReactNode })
`}</style> `}</style>
)} )}
<div className="flex items-center justify-center p-4"> <div id={id} className="flex items-center justify-center p-4 scroll-mt-50">
<div className="email-form-wrapper relative isolate max-w-lg w-full mx-auto p-[2px] rounded-xl"> <div className="email-form-wrapper relative isolate max-w-lg w-full mx-auto p-[2px] rounded-xl">
{children} {children}
</div> </div>

View File

@ -85,7 +85,7 @@ export function WaitlistEmailForm() {
return ( return (
<> <>
<style dangerouslySetInnerHTML={{ __html: styles }} /> <style dangerouslySetInnerHTML={{ __html: styles }} />
<GlowEffect> <GlowEffect id="get-access">
{isSubmitted ? ( {isSubmitted ? (
<div <div
className="flex items-center justify-center gap-3 px-4 py-3 rounded-[10px]" className="flex items-center justify-center gap-3 px-4 py-3 rounded-[10px]"

View File

@ -3,6 +3,7 @@ import { Inter, Caveat } from 'next/font/google';
import Image from 'next/image'; import Image from 'next/image';
import Script from 'next/script'; import Script from 'next/script';
import { Footer } from '@/components/shared/Footer'; import { Footer } from '@/components/shared/Footer';
import banatieLogo from './_assets/banatie-logo-horisontal.png';
import './globals.css'; import './globals.css';
const inter = Inter({ const inter = Inter({
@ -47,11 +48,11 @@ export default function RootLayout({
</div> </div>
{/* Header */} {/* Header */}
<header className="relative z-10 border-b border-white/10 backdrop-blur-sm"> <header className="sticky top-0 z-10 bg-slate-900/80 backdrop-blur-md border-b border-white/5">
<nav className="max-w-7xl mx-auto px-6 py-3 flex justify-between items-center h-16"> <nav className="max-w-7xl mx-auto px-6 py-3 flex justify-between items-center h-16">
<div className="h-full flex items-center"> <div className="h-full flex items-center">
<Image <Image
src="/banatie-logo-horisontal.png" src={banatieLogo}
alt="Banatie Logo" alt="Banatie Logo"
width={150} width={150}
height={40} height={40}
@ -60,10 +61,10 @@ export default function RootLayout({
/> />
</div> </div>
<a <a
href="#waitlist" href="#get-access"
className="text-sm text-gray-300 hover:text-white transition-colors" className="text-sm text-gray-300 hover:text-white transition-colors"
> >
Join Beta Get Access
</a> </a>
</nav> </nav>
</header> </header>

View File

@ -2,34 +2,44 @@
import Image from 'next/image'; import Image from 'next/image';
import { footerLinks, footerCopyright } from '@/config/footer'; import { footerLinks, footerCopyright } from '@/config/footer';
import banatieLogo from '@/app/_assets/banatie-logo-horisontal.png';
export const Footer = () => { export const Footer = () => {
return ( return (
<footer className="relative z-10 border-t border-white/10 backdrop-blur-sm"> <footer className="relative z-10 border-t border-white/10 backdrop-blur-sm">
<div className="max-w-7xl mx-auto px-6 pt-12 pb-4"> <div className="max-w-7xl mx-auto px-4 sm:px-6 pt-8 sm:pt-10 md:pt-12 pb-4">
<div className="flex flex-col md:flex-row justify-between items-center gap-6"> <div className="flex flex-col md:flex-row justify-between items-center gap-6 md:gap-8">
<div className="h-16 flex items-center"> {/* Logo - responsive sizing */}
<div className="h-10 sm:h-12 md:h-14 lg:h-16 flex items-center">
<Image <Image
src="/banatie-logo-horisontal.png" src={banatieLogo}
alt="Banatie Logo" alt="Banatie Logo"
width={200} width={200}
height={60} height={60}
loading="lazy"
className="h-full w-auto object-contain" className="h-full w-auto object-contain"
/> />
</div> </div>
<div className="flex gap-8 text-sm text-gray-400">
{/* Navigation - grid on mobile, row on desktop */}
<nav aria-label="Footer navigation">
<div className="grid grid-cols-2 gap-x-4 gap-y-3 sm:flex sm:flex-wrap sm:justify-center sm:gap-6 md:gap-8 text-sm text-gray-400">
{footerLinks.map((link) => ( {footerLinks.map((link) => (
<a <a
key={link.label} key={link.label}
href={link.href} href={link.href}
className="hover:text-white transition-colors" className="hover:text-white transition-colors text-center sm:text-left"
> >
{link.label} {link.label}
</a> </a>
))} ))}
</div> </div>
</nav>
</div>
<div className="mt-8 md:mt-10 text-center text-sm text-gray-500">
{footerCopyright}
</div> </div>
<div className="mt-8 text-center text-sm text-gray-500">{footerCopyright}</div>
</div> </div>
</footer> </footer>
); );