refactor(responsive): Adjust breakpoint from md to lg for better layout

The previous `md` breakpoint (768px) caused the desktop layout to activate too early, resulting in a cramped appearance on tablet-sized screens.

This commit updates the responsive design by changing the primary breakpoint from `md` to `lg` (1024px) across the home page, contact page, and main layouts. This change ensures a more appropriate and visually balanced layout is maintained on medium-sized devices, improving the overall user experience.
This commit is contained in:
AmirReza Jamali
2025-10-26 10:42:13 +03:30
parent a78726303a
commit 3d626daa0a
11 changed files with 64 additions and 63 deletions
+1 -1
View File
@@ -38,7 +38,7 @@ const ContactUsPage = () => {
</p>
</div>
<div className="flex flex-col items-center mt-16 px-8 ">
<section className="border border-gray-300 rounded-4xl w-full md:max-w-2/3 flex flex-col items-center bg-white">
<section className="border border-gray-300 rounded-4xl w-full lg:max-w-2/3 flex flex-col items-center bg-white">
<ContactUsForm columnsPerRow={1} />
</section>
</div>
+5 -4
View File
@@ -17,7 +17,8 @@ const geistMono = Geist_Mono({
export const metadata: Metadata = {
title: "Opp lens - AI-Powered Tender Management",
description: "Democratizing Tender Access for SMEs with AI-Powered Tender Management.",
description:
"Democratizing Tender Access for SMEs with AI-Powered Tender Management.",
icons: {
icon: "/fav-icon.svg",
},
@@ -98,8 +99,8 @@ export default async function RootLayout({
return (
<html lang="en">
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased flex flex-col bg-[url('/header-bg.svg')] bg-top-right bg-no-repeat bg-contain md:bg-cover`}>
<header className="flex justify-center pt-8 items-center pb-4 container px-4 py-4 m-auto md:px-28 md:justify-between flex-wrap gap-5">
className={`${geistSans.variable} ${geistMono.variable} antialiased flex flex-col bg-[url('/header-bg.svg')] bg-top-right bg-no-repeat bg-contain lg:bg-cover`}>
<header className="flex justify-center pt-8 items-center pb-4 container px-4 py-4 m-auto lg:px-28 lg:justify-between flex-wrap gap-5">
<section>
<Link
href="/"
@@ -133,7 +134,7 @@ export default async function RootLayout({
<div className="container px-4 py-4 m-auto flex-grow">{children}</div>
<footer className="relative h-full bg-[url('/footer-bg.svg')] bg-cover bg-no-repeat mt-40">
<div className="relative z-10 container px-4 py-4 m-auto flex flex-col justify-center items-center mt-24 ">
<div className="flex justify-between flex-col md:flex-row gap-14 w-full md:w-1/2">
<div className="flex justify-between flex-col lg:flex-row gap-14 w-full lg:w-1/2">
<div className="flex flex-col gap-10">
<Image
src={"/footer-logo.svg"}
+5 -5
View File
@@ -43,8 +43,8 @@ export default function Home() {
];
return (
<main>
<section className="md:flex md:flex-row justify-around items-center">
<div className=" md:ml-28 w-full md:w-1/2 flex flex-col gap-10">
<section className="lg:flex lg:flex-row justify-around items-center">
<div className=" lg:ml-28 w-full lg:w-1/2 flex flex-col gap-10">
<h1 className="font-black text-8xl text-[#013280]">AI-Powered</h1>
<h2 className="font-black text-(--primary) text-5xl leading-14">
Tender
@@ -62,7 +62,7 @@ export default function Home() {
</p>
</div>
</div>
<div className="m-auto mt-5 w-xs -z-20 relative flex justify-center h-[650px] md:h-[750px] md:w-auto">
<div className="m-auto mt-5 w-xs -z-20 relative flex justify-center h-[650px] lg:h-[750px] lg:w-auto">
<Image
src={"/dynamic-island.svg"}
alt="dynamic island"
@@ -80,8 +80,8 @@ export default function Home() {
/>
</div>
</section>
<section className="text-left flex flex-col gap-6 bg-gradient-to-b from-[#011132] to-[#012B80] text-white rounded-[56px] relative p-6 md:p-14 -mt-16 z-20 md:ml-28">
<div className="md:flex gap-5 text-center">
<section className="text-left flex flex-col gap-6 bg-gradient-to-b from-[#011132] to-[#012B80] text-white rounded-[56px] relative p-6 lg:p-14 -mt-16 z-20 lg:ml-28">
<div className="lg:flex gap-5 text-center">
{advItems.map((item) => (
<article
key={item.title}
+3 -3
View File
@@ -98,8 +98,8 @@ export default async function RootLayout({
return (
<html lang="en">
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased flex flex-col bg-[url('/header-bg.svg')] bg-top-right bg-no-repeat bg-contain md:bg-cover`}>
<header className="flex justify-center pt-8 md:justify-between items-center pb-4 container px-4 py-4 m-auto">
className={`${geistSans.variable} ${geistMono.variable} antialiased flex flex-col bg-[url('/header-bg.svg')] bg-top-right bg-no-repeat bg-contain lg:bg-cover`}>
<header className="flex justify-center pt-8 lg:justify-between items-center pb-4 container px-4 py-4 m-auto">
<Link
href="/"
aria-label="Opp lens home">
@@ -129,7 +129,7 @@ export default async function RootLayout({
<main className="container px-4 py-4 m-auto flex-grow">{children}</main>
<footer className="relative h-full bg-[url('/footer-bg.svg')] bg-cover bg-no-repeat mt-20">
<div className="relative z-10 container px-4 py-4 m-auto flex flex-col justify-center items-center">
<div className="flex justify-between flex-col md:flex-row gap-14 w-full md:w-1/2 mt-20">
<div className="flex justify-between flex-col lg:flex-row gap-14 w-full lg:w-1/2 mt-20">
<div className="flex flex-col gap-10">
<Image
src={"/footer-logo.svg"}
+1 -1
View File
@@ -2,7 +2,7 @@ import ContactUs from "../_contact-us/page";
const FooterForm = () => {
return (
<div className="absolute w-full -top-[420px] md:-top-72 z-10">
<div className="absolute w-full -top-[420px] lg:-top-72 z-10">
<ContactUs />
</div>
);
+1 -1
View File
@@ -5,7 +5,7 @@ import { usePathname } from "next/navigation";
export default function HeaderButtons() {
const pathname = usePathname();
return (
<div className="flex justify-between items-center gap-5 mt-4 md:mt-0">
<div className="flex justify-between items-center gap-5 mt-4 lg:mt-0">
<Link
href={pathname.includes("contact-us") ? "/" : "/contact-us"}
className="text-(--primary)">
+9 -9
View File
@@ -38,22 +38,22 @@ const ContactUsForm = ({
};
const gridColsClass = {
1: "md:grid-cols-1",
2: "md:grid-cols-2",
3: "md:grid-cols-3",
4: "md:grid-cols-4",
1: "lg:grid-cols-1",
2: "lg:grid-cols-2",
3: "lg:grid-cols-3",
4: "lg:grid-cols-4",
}[columnsPerRow];
const colSpanClass = {
1: "md:col-span-1",
2: "md:col-span-2",
3: "md:col-span-3",
4: "md:col-span-4",
1: "lg:col-span-1",
2: "lg:col-span-2",
3: "lg:col-span-3",
4: "lg:col-span-4",
}[columnsPerRow];
return (
<form
className={`w-full px-4 md:px-16 py-10 grid ${gridColsClass} gap-4`}
className={`w-full px-4 lg:px-16 py-10 grid ${gridColsClass} gap-4`}
onSubmit={handleSubmit(onSubmit)}>
<InputGroup
id="full_name"
+2 -2
View File
@@ -3,14 +3,14 @@ import ContactUsForm from "./form";
const ContactUs = () => {
return (
<div className="flex flex-col items-center mt-16 px-8 ">
<div className="md:w-2/3 m-auto flex flex-col gap-4 mb-12">
<div className="lg:w-2/3 m-auto flex flex-col gap-4 mb-12">
<h2 className="font-bold text-4xl">Unlock Your Growth Potential</h2>
<p className="font-normal text-[16px] text-gray-600">
Register for early access and a free consultation. Let's start winning
together.
</p>
</div>
<section className="border border-gray-300 rounded-4xl w-full md:max-w-2/3 flex flex-col items-center bg-white">
<section className="border border-gray-300 rounded-4xl w-full lg:max-w-2/3 flex flex-col items-center bg-white">
<ContactUsForm />
</section>
</div>
+18 -18
View File
@@ -47,20 +47,20 @@ export default function Home() {
];
return (
<>
<section className="block md:flex justify-around items-center">
<div className="flex gap-4 w-full md:w-1/2 font-bold text-4xl text-center flex-col bg-gray-400/10 p-10 rounded-[40px] h-fit mb-16 backdrop-blur-2xl">
<section className="block lg:flex justify-around items-center">
<div className="flex gap-4 w-full lg:w-1/2 font-bold text-4xl text-center flex-col bg-gray-400/10 p-10 rounded-[40px] h-fit mb-16 backdrop-blur-2xl">
<div className="flex flex-col gap-8">
<h2>
<span>$</span>
<span>12,345,678</span>
</h2>
<h2 className="capitalize text-2xl font-bold md:text-3xl">
<h2 className="capitalize text-2xl font-bold lg:text-3xl">
total tender amount you missed today
</h2>
</div>
<ApexChart />
</div>
<div className="m-auto w-xs md:m-0 md:w-auto -z-20 relative flex justify-center h-[650px] md:h-[750px]">
<div className="m-auto w-xs lg:m-0 lg:w-auto -z-20 relative flex justify-center h-[650px] lg:h-[750px]">
<Image
src={"/dynamic-island.svg"}
alt="dynamic island"
@@ -78,7 +78,7 @@ export default function Home() {
/>
</div>
</section>
<section className="text-left flex flex-col gap-6 bg-gradient-to-b from-[#011132] to-[#012B80] text-white rounded-[56px] relative p-6 md:p-14 -mt-16 z-20 md:ml-28">
<section className="text-left flex flex-col gap-6 bg-gradient-to-b from-[#011132] to-[#012B80] text-white rounded-[56px] relative p-6 lg:p-14 -mt-16 z-20 lg:ml-28">
<hgroup>
<h1 className="capitalize font-extrabold text-5xl mb-6">
democratizing the world of tenders
@@ -91,14 +91,14 @@ export default function Home() {
</p>
</hgroup>
<div className="flex justify-end">
<button className="w-full md:w-fit capitalize bg-(--primary) rounded-4xl py-4 px-6">
<button className="w-full lg:w-fit capitalize bg-(--primary) rounded-4xl py-4 px-6">
Get early access
</button>
</div>
</section>
<article className="mt-40">
<hgroup>
<h4 className="capitalize font-bold text-2xl md:text-4xl">
<h4 className="capitalize font-bold text-2xl lg:text-4xl">
your in-house tender department, powered by
<span className="uppercase">ai</span>
</h4>
@@ -108,7 +108,7 @@ export default function Home() {
</small>
</hgroup>
</article>
<section className="flex flex-col gap-4 md:flex-row">
<section className="flex flex-col gap-4 lg:flex-row">
{centerFrames.map((frame, index) => (
<article
key={frame.description}
@@ -124,7 +124,7 @@ export default function Home() {
</article>
))}
</section>
<section className="mt-36 bg-[#F7FAFF] px-4 py-6 rounded-4xl flex flex-col gap-9 md:p-16">
<section className="mt-36 bg-[#F7FAFF] px-4 py-6 rounded-4xl flex flex-col gap-9 lg:p-16">
<div className="flex flex-col gap-4">
<h2 className=" font-bold text-4xl">
Tired of Complex Tenders & Lost Opportunities?
@@ -134,8 +134,8 @@ export default function Home() {
an uphill battle.
</p>
</div>
<ul className="flex flex-col gap-4 md:flex-row md:justify-between">
<li className="flex flex-col gap-4 md:w-80">
<ul className="flex flex-col gap-4 lg:flex-row lg:justify-between">
<li className="flex flex-col gap-4 lg:w-80">
<div className="p-4">
<Image
src={"/clock.svg"}
@@ -150,7 +150,7 @@ export default function Home() {
monitor the market and prepare high-quality bids.
</p>
</li>
<li className="flex flex-col gap-4 md:w-80">
<li className="flex flex-col gap-4 lg:w-80">
<div className="p-4">
<Image
src={"/clipboard.svg"}
@@ -165,7 +165,7 @@ export default function Home() {
corporations with dedicated tender departments.
</p>
</li>
<li className="flex flex-col gap-4 md:w-80">
<li className="flex flex-col gap-4 lg:w-80">
<div className="p-4">
<Image
src={"/arrow-up.svg"}
@@ -182,14 +182,14 @@ export default function Home() {
</li>
</ul>
</section>
<section className="flex flex-col mt-36 gap-10 px-2 md:w-3/4 m-auto">
<section className="flex flex-col mt-36 gap-10 px-2 lg:w-3/4 m-auto">
<div>
<h2 className="font-bold text-2xl md:text-4xl">
<h2 className="font-bold text-2xl lg:text-4xl">
The Opplens Advantage
</h2>
</div>
<section className="flex flex-col gap-10 md:flex-row">
<div className="flex flex-col gap-7 bg-[#FFF7EB] p-10 rounded-3xl md:pb-20">
<section className="flex flex-col gap-10 lg:flex-row">
<div className="flex flex-col gap-7 bg-[#FFF7EB] p-10 rounded-3xl lg:pb-20">
<Image
src={"/people.svg"}
width={48}
@@ -205,7 +205,7 @@ export default function Home() {
</p>
</div>
</div>
<div className="flex flex-col gap-7 bg-[#E5EFFF] p-10 rounded-3xl md:pb-20">
<div className="flex flex-col gap-7 bg-[#E5EFFF] p-10 rounded-3xl lg:pb-20">
<Image
src={"/shield-tick.svg"}
width={48}
+3 -3
View File
@@ -100,7 +100,7 @@ export default async function RootLayout({
<html lang="en">
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased flex flex-col min-h-screen bg-[url('/header-bg.svg')] bg-top-right bg-no-repeat bg-contain`}>
<header className="flex justify-center pt-8 md:justify-between items-center pb-4 container px-4 py-4 m-auto">
<header className="flex justify-center pt-8 lg:justify-between items-center pb-4 container px-4 py-4 m-auto">
<Link
href="/"
aria-label="Opp lens home">
@@ -130,14 +130,14 @@ export default async function RootLayout({
<main className="container px-4 py-4 m-auto flex-grow">{children}</main>
<footer className="relative h-full bg-[url('/footer-bg.svg')] bg-cover bg-no-repeat mt-96">
<div
className="absolute w-full -top-[355px] md:-top-72 h-[600px] z-[-10] bg-[url('/bottom-bg.svg')] bg-contain bg-no-repeat bg-right"
className="absolute w-full -top-[355px] lg:-top-72 h-[600px] z-[-10] bg-[url('/bottom-bg.svg')] bg-contain bg-no-repeat bg-right"
aria-hidden="true"
/>
<FooterForm />
<div className="relative z-10 container px-4 py-4 m-auto flex flex-col justify-center items-center mt-96 ">
<div className="flex justify-between flex-col md:flex-row gap-14 w-full md:w-1/2">
<div className="flex justify-between flex-col lg:flex-row gap-14 w-full lg:w-1/2">
<div className="flex flex-col gap-10">
<Image
src={"/footer-logo.svg"}
+16 -16
View File
@@ -45,8 +45,8 @@ export default function Home() {
];
return (
<>
<section className="flex flex-col justify-center md:justify-between md:flex-row items-center">
<section className="text-left md:w-1/2 flex flex-col gap-6 bg-gradient-to-b rounded-[56px] relative p-6 md:p-14 z-20 md:ml-28">
<section className="flex flex-col justify-center lg:justify-between lg:flex-row items-center">
<section className="text-left lg:w-1/2 flex flex-col gap-6 bg-gradient-to-b rounded-[56px] relative p-6 lg:p-14 z-20 lg:ml-28">
<hgroup>
<h1 className="capitalize font-extrabold text-5xl mb-6">
democratizing the world of tenders
@@ -61,12 +61,12 @@ export default function Home() {
<div className="flex justify-start text-white">
<button
type="button"
className="w-2/3 md:w-fit capitalize bg-(--primary) rounded-4xl py-4 px-6">
className="w-2/3 lg:w-fit capitalize bg-(--primary) rounded-4xl py-4 px-6">
Get early access
</button>
</div>
</section>
<div className="m-auto w-xs md:m-0 md:w-auto -z-20 relative flex justify-center h-[650px] md:h-[750px] md:mr-28">
<div className="m-auto w-xs lg:m-0 lg:w-auto -z-20 relative flex justify-center h-[650px] lg:h-[750px] lg:mr-28">
<Image
src={"/dynamic-island.svg"}
alt="dynamic island"
@@ -87,7 +87,7 @@ export default function Home() {
<section className="mt-10 text-center">
<hgroup>
<h2 className="capitalize font-bold text-2xl md:text-4xl">
<h2 className="capitalize font-bold text-2xl lg:text-4xl">
your in-house tender department, powered by
<span className="uppercase">ai</span>
</h2>
@@ -97,7 +97,7 @@ export default function Home() {
</p>
</hgroup>
</section>
<section className="flex flex-col gap-4 md:flex-row">
<section className="flex flex-col gap-4 lg:flex-row">
{centerFrames.map((frame, index) => (
<article
key={frame.description}
@@ -113,7 +113,7 @@ export default function Home() {
</article>
))}
</section>
<section className="mt-36 bg-[#F7FAFF] px-4 py-6 rounded-4xl flex flex-col gap-9 md:p-16">
<section className="mt-36 bg-[#F7FAFF] px-4 py-6 rounded-4xl flex flex-col gap-9 lg:p-16">
<div className="flex flex-col gap-4">
<h2 className=" font-bold text-4xl">
Tired of Complex Tenders & Lost Opportunities?
@@ -123,8 +123,8 @@ export default function Home() {
an uphill battle.
</p>
</div>
<ul className="flex flex-col gap-4 md:flex-row md:justify-between">
<li className="flex flex-col gap-4 md:w-80">
<ul className="flex flex-col gap-4 lg:flex-row lg:justify-between">
<li className="flex flex-col gap-4 lg:w-80">
<div className="p-4">
<Image
src={"/clock.svg"}
@@ -139,7 +139,7 @@ export default function Home() {
monitor the market and prepare high-quality bids.
</p>
</li>
<li className="flex flex-col gap-4 md:w-80">
<li className="flex flex-col gap-4 lg:w-80">
<div className="p-4">
<Image
src={"/clipboard.svg"}
@@ -154,7 +154,7 @@ export default function Home() {
corporations with dedicated tender departments.
</p>
</li>
<li className="flex flex-col gap-4 md:w-80">
<li className="flex flex-col gap-4 lg:w-80">
<div className="p-4">
<Image
src={"/arrow-up.svg"}
@@ -171,12 +171,12 @@ export default function Home() {
</li>
</ul>
</section>
<section className="flex flex-col mt-36 gap-10 px-2 md:w-3/4 m-auto text-center">
<h2 className="font-bold text-2xl md:text-4xl">
<section className="flex flex-col mt-36 gap-10 px-2 lg:w-3/4 m-auto text-center">
<h2 className="font-bold text-2xl lg:text-4xl">
The Opplens Advantage
</h2>
<div className="flex flex-col gap-10 md:flex-row">
<article className="flex flex-col gap-7 bg-[#FFF7EB] p-10 rounded-3xl md:pb-20">
<div className="flex flex-col gap-10 lg:flex-row">
<article className="flex flex-col gap-7 bg-[#FFF7EB] p-10 rounded-3xl lg:pb-20">
<Image
src={"people.svg"}
width={48}
@@ -192,7 +192,7 @@ export default function Home() {
</p>
</div>
</article>
<article className="flex flex-col gap-7 bg-[#E5EFFF] p-10 rounded-3xl md:pb-20">
<article className="flex flex-col gap-7 bg-[#E5EFFF] p-10 rounded-3xl lg:pb-20">
<Image
src={"shield-tick.svg"}
width={48}