Enhanced UI: Dynamic navigation with icons, organized categories, responsive improvements, and lazy-loaded footer

This commit is contained in:
SridharRajamani 2025-11-05 19:43:40 +05:30
parent 4a1b4aeda6
commit 32cc257c87
5 changed files with 499 additions and 176 deletions

View File

@ -10,6 +10,7 @@ import { useDispatch } from "react-redux";
import { gsap } from "gsap"; import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger"; import { ScrollTrigger } from "gsap/ScrollTrigger";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { sessionStore } from "../../Services/others";
gsap.registerPlugin(ScrollTrigger); gsap.registerPlugin(ScrollTrigger);
const subDirectory = import.meta.env.ENV_BASE_URL const subDirectory = import.meta.env.ENV_BASE_URL
@ -17,20 +18,44 @@ const Footer = () => {
const navigate = useNavigate(); const navigate = useNavigate();
const logoRef = useRef(null); const logoRef = useRef(null);
const productsRef = useRef(null); const productsRef = useRef(null);
const footerRef = useRef(null);
const dispatch = useDispatch(); const dispatch = useDispatch();
const [email, setEmail] = useState(""); const [email, setEmail] = useState("");
const [isLoading, setIsLoading] = useState(false); const [isLoading, setIsLoading] = useState(false);
const [message, setMessage] = useState(""); const [message, setMessage] = useState("");
const [messageType, setMessageType] = useState(""); const [messageType, setMessageType] = useState("");
const [appList, setAppList] = useState([]);
const [isFooterVisible, setIsFooterVisible] = useState(false);
const scrollToTop = () => { const scrollToTop = () => {
window.scrollTo({ top: 0, behavior: "smooth" }); window.scrollTo({ top: 0, behavior: "smooth" });
}; };
useEffect(() => { useEffect(() => {
// Intersection Observer for lazy loading
const observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
console.log("👁️ Footer visibility:", entry.isIntersecting);
if (entry.isIntersecting && !isFooterVisible) {
console.log("🎯 Footer is visible! Loading apps...");
setIsFooterVisible(true);
fetchApplicationData(); fetchApplicationData();
}
});
},
{ threshold: 0.1 }
);
if (footerRef.current) {
console.log("✅ Observer attached to footer");
observer.observe(footerRef.current);
} else {
console.log("❌ footerRef is null");
}
// Logo animation // Logo animation
if (logoRef.current) {
gsap.fromTo( gsap.fromTo(
logoRef.current, logoRef.current,
{ opacity: 0, scale: 0.8, rotation: -10 }, { opacity: 0, scale: 0.8, rotation: -10 },
@ -47,8 +72,10 @@ const Footer = () => {
}, },
}, },
); );
}
// Products section animation // Products section animation
if (productsRef.current) {
gsap.fromTo( gsap.fromTo(
productsRef.current, productsRef.current,
{ opacity: 0, y: 50 }, { opacity: 0, y: 50 },
@ -64,11 +91,35 @@ const Footer = () => {
}, },
}, },
); );
}
return () => {
if (footerRef.current) {
observer.unobserve(footerRef.current);
}
};
}, []); }, []);
const fetchApplicationData = async () => { const fetchApplicationData = async () => {
try {
console.log("🔥 Footer: Fetching apps data...");
const res = await dispatch(getApplicationData())?.unwrap(); const res = await dispatch(getApplicationData())?.unwrap();
console.log(res?.data?.data); console.log("📦 Footer API Response:", res?.data);
if (res?.data?.statusCode === 1) {
const activeApps = res?.data?.data?.filter(app => app.ActiveStatus === "A") || [];
console.log("✅ Footer Active Apps:", activeApps.length, activeApps);
setAppList(activeApps);
}
} catch (error) {
console.error("❌ Error fetching apps:", error);
}
};
const redirectApp = (appName, appId) => {
sessionStore("AppId", appId);
sessionStore("AppName", appName);
navigate(`${subDirectory}${appName}`);
window.scrollTo(0, 0);
}; };
const handleSubscribe = async () => { const handleSubscribe = async () => {
@ -115,7 +166,7 @@ const Footer = () => {
return ( return (
<> <>
<div className="Footer-Master"> <div className="Footer-Master" ref={footerRef}>
<div className="footerLeft"> <div className="footerLeft">
<div className="logoDesc"> <div className="logoDesc">
{/* <img src={pozominilogo} alt="" width={75} ref={logoRef} /> */} {/* <img src={pozominilogo} alt="" width={75} ref={logoRef} /> */}
@ -151,6 +202,25 @@ const Footer = () => {
<div className="footerRight"> <div className="footerRight">
<div className="footerProducts" ref={productsRef}> <div className="footerProducts" ref={productsRef}>
<div>Products</div> <div>Products</div>
{(() => {
console.log("🔍 Rendering Footer Products:");
console.log(" - isFooterVisible:", isFooterVisible);
console.log(" - appList.length:", appList.length);
console.log(" - Showing:", isFooterVisible && appList.length > 0 ? "Dynamic" : "Static");
return null;
})()}
{isFooterVisible && appList.length > 0 ? (
appList.slice(0, 15).map((app) => (
<p
key={app.AppId}
onClick={() => redirectApp(app.AppName?.toLowerCase(), app.AppId)}
style={{ cursor: 'pointer' }}
>
{app.AppName}
</p>
))
) : (
<>
<p>Restaurant</p> <p>Restaurant</p>
<p>Bakery</p> <p>Bakery</p>
<p>Dairy Delights</p> <p>Dairy Delights</p>
@ -166,10 +236,8 @@ const Footer = () => {
<p>Fitness</p> <p>Fitness</p>
<p>Departmental Stores</p> <p>Departmental Stores</p>
<p>Wholesale</p> <p>Wholesale</p>
<p>Manufacturer</p> </>
<p>Save Me</p> )}
<p>Smart Parking</p>
<p>Boating</p>
</div> </div>
<div className="footerContact"> <div className="footerContact">

View File

@ -1,5 +1,6 @@
import React from "react"; import React from "react";
import "../Styles/IndustriesList.scss"; import "../Styles/IndustriesList.scss";
import { MdRestaurant, MdSpa, MdCheckroom, MdDevices, MdStorefront, MdBusiness, MdMoreHoriz, MdLocalHospital, MdFactory, MdLocalShipping, MdTheaters } from "react-icons/md";
const IndustriesList = ({ const IndustriesList = ({
industryRef, industryRef,
@ -15,6 +16,60 @@ const IndustriesList = ({
e.stopPropagation(); e.stopPropagation();
}; };
// Categorize consumer apps into sub-groups
const categorizeConsumerApps = (apps) => {
const categories = {
foodBeverages: [],
wellness: [],
fashion: [],
electronics: [],
grocery: [],
services: [],
others: []
};
apps.forEach(app => {
const name = app.AppName?.toLowerCase() || "";
// Food & Beverages - comprehensive matching
if (/(bakery|restaurant|dairy|food|cafe|coffee|ice|pickle|pozoresto|resto|resto|eatery|diner|bistro|pizz|burger|juice|sweet|snack)/i.test(name)) {
categories.foodBeverages.push(app);
}
// Wellness & Beauty
else if (/(salon|spa|beauty|cosmetics|fitness|gym|yoga|wellness|massage|parlour|parlor)/i.test(name)) {
categories.wellness.push(app);
}
// Fashion & Lifestyle
else if (/(fashion|jewellery|jewelry|footwear|lifestyle|apparel|textile|cloth|garment|shoe|sandal|accessory)/i.test(name)) {
categories.fashion.push(app);
}
// Electronics & Tech
else if (/(electronic|mobile|computer|appliance|laptop|phone|device|gadget|tech)/i.test(name)) {
categories.electronics.push(app);
}
// Grocery & Retail
else if (/(grocery|departmental|wholesale|supermarket|mart|retail|store)/i.test(name)) {
categories.grocery.push(app);
}
// Professional Services
else if (/(stationery|xerox|print|coaching|cement|tuition|education|training|class)/i.test(name)) {
categories.services.push(app);
}
// Others
else {
categories.others.push(app);
}
});
return categories;
};
const consumerApps = AppCategory?.filter((app) =>
/(Consumer)/i.test(app.CategoryName)
) || [];
const categorized = categorizeConsumerApps(consumerApps);
return ( return (
<div <div
ref={industryRef} ref={industryRef}
@ -24,29 +79,115 @@ const IndustriesList = ({
{AppCategory?.some((app) => /(Consumer)/i.test(app.CategoryName)) && ( {AppCategory?.some((app) => /(Consumer)/i.test(app.CategoryName)) && (
<> <>
<div className="IndustriesOne"> <div className="IndustriesOne">
<div> {/* Main heading - Don't touch */}
<div className="main-heading">
Retail Universe: Grocery, <br /> Wellness, Fashion & More Retail Universe: Grocery, <br /> Wellness, Fashion & More
</div> </div>
{AppCategory?.filter((app) =>
/(Consumer)/i.test(app.CategoryName), {/* Food & Beverages */}
).map((app) => ( {categorized.foodBeverages.length > 0 && (
<>
<div className="sub-category"><MdRestaurant /> Food & Beverages</div>
{categorized.foodBeverages.map((app) => (
<p <p
key={app.AppId} key={app.AppId}
onClick={() => onClick={() => redirectApp(app.AppName?.toLowerCase(), app.AppId)}
redirectApp(app.AppName?.toLowerCase(), app.AppId)
}
> >
{app.AppName} {app.AppName}
</p> </p>
// <p
// key={app.AppId}
// onClick={() =>
// redirectApp(app.AppName?.toLowerCase(), app.AppId)
// }
// >
// {app.AppName}
// </p>
))} ))}
</>
)}
{/* Wellness */}
{categorized.wellness.length > 0 && (
<>
<div className="sub-category"><MdSpa /> Wellness & Beauty</div>
{categorized.wellness.map((app) => (
<p
key={app.AppId}
onClick={() => redirectApp(app.AppName?.toLowerCase(), app.AppId)}
>
{app.AppName}
</p>
))}
</>
)}
{/* Fashion */}
{categorized.fashion.length > 0 && (
<>
<div className="sub-category"><MdCheckroom /> Fashion & Lifestyle</div>
{categorized.fashion.map((app) => (
<p
key={app.AppId}
onClick={() => redirectApp(app.AppName?.toLowerCase(), app.AppId)}
>
{app.AppName}
</p>
))}
</>
)}
{/* Electronics */}
{categorized.electronics.length > 0 && (
<>
<div className="sub-category"><MdDevices /> Electronics & Tech</div>
{categorized.electronics.map((app) => (
<p
key={app.AppId}
onClick={() => redirectApp(app.AppName?.toLowerCase(), app.AppId)}
>
{app.AppName}
</p>
))}
</>
)}
{/* Grocery */}
{categorized.grocery.length > 0 && (
<>
<div className="sub-category"><MdStorefront /> Grocery & Retail</div>
{categorized.grocery.map((app) => (
<p
key={app.AppId}
onClick={() => redirectApp(app.AppName?.toLowerCase(), app.AppId)}
>
{app.AppName}
</p>
))}
</>
)}
{/* Services */}
{categorized.services.length > 0 && (
<>
<div className="sub-category"><MdBusiness /> Professional Services</div>
{categorized.services.map((app) => (
<p
key={app.AppId}
onClick={() => redirectApp(app.AppName?.toLowerCase(), app.AppId)}
>
{app.AppName}
</p>
))}
</>
)}
{/* Others */}
{categorized.others.length > 0 && (
<>
<div className="sub-category"><MdMoreHoriz /> More Industries</div>
{categorized.others.map((app) => (
<p
key={app.AppId}
onClick={() => redirectApp(app.AppName?.toLowerCase(), app.AppId)}
>
{app.AppName}
</p>
))}
</>
)}
</div> </div>
{AppCategory?.some((app) => {AppCategory?.some((app) =>
/(manufacturing|healthcare|pharma)/i.test(app.CategoryName), /(manufacturing|healthcare|pharma)/i.test(app.CategoryName),
@ -59,21 +200,48 @@ const IndustriesList = ({
) && ( ) && (
<> <>
<div className="IndustriesTwo"> <div className="IndustriesTwo">
<div> {/* Main heading - Don't touch */}
<div className="main-heading">
Manufacturing, Healthcare & <br /> Pharma Manufacturing, Healthcare & <br /> Pharma
</div> </div>
{/* Healthcare */}
{AppCategory?.filter((app) => {AppCategory?.filter((app) =>
/(manufacturing|healthcare|pharma)/i.test(app.CategoryName), (/(healthcare|pharma)/i.test(app.CategoryName) || /(health|optical)/i.test(app.AppName))
).length > 0 && (
<>
<div className="sub-category"><MdLocalHospital /> Healthcare & Pharma</div>
{AppCategory?.filter((app) =>
(/(healthcare|pharma)/i.test(app.CategoryName) || /(health|optical)/i.test(app.AppName))
).map((app) => ( ).map((app) => (
<p <p
key={app.AppId} key={app.AppId}
onClick={() => onClick={() => redirectApp(app.AppName?.toLowerCase(), app.AppId)}
redirectApp(app.AppName?.toLowerCase(), app.AppId)
}
> >
{app.AppName} {app.AppName}
</p> </p>
))} ))}
</>
)}
{/* Manufacturing */}
{AppCategory?.filter((app) =>
(/(manufacturing)/i.test(app.CategoryName) || /(manufacturer)/i.test(app.AppName))
).length > 0 && (
<>
<div className="sub-category"><MdFactory /> Manufacturing</div>
{AppCategory?.filter((app) =>
(/(manufacturing)/i.test(app.CategoryName) || /(manufacturer)/i.test(app.AppName))
).map((app) => (
<p
key={app.AppId}
onClick={() => redirectApp(app.AppName?.toLowerCase(), app.AppId)}
>
{app.AppName}
</p>
))}
</>
)}
</div> </div>
{AppCategory?.some((app) => {AppCategory?.some((app) =>
/(transportation|logistics|hospitality|entertainment)/i.test( /(transportation|logistics|hospitality|entertainment)/i.test(
@ -89,15 +257,21 @@ const IndustriesList = ({
), ),
) && ( ) && (
<div className="IndustriesThree" style={{ borderRight: "unset" }}> <div className="IndustriesThree" style={{ borderRight: "unset" }}>
<div> {/* Main heading - Don't touch */}
<div className="main-heading">
Transportation, Logistics <br /> Transportation, Logistics <br />
Hospitality and <br /> Hospitality and <br />
Entertainment Entertainment
</div> </div>
{/* Transportation */}
{AppCategory?.filter((app) => {AppCategory?.filter((app) =>
/(transportation|logistics|hospitality|entertainment)/i.test( (/(transportation|logistics)/i.test(app.CategoryName) || /(parking|boating)/i.test(app.AppName))
app.CategoryName, ).length > 0 && (
), <>
<div className="sub-category"><MdLocalShipping /> Transportation & Logistics</div>
{AppCategory?.filter((app) =>
(/(transportation|logistics)/i.test(app.CategoryName) || /(parking|boating)/i.test(app.AppName))
).map((app) => ( ).map((app) => (
<p <p
key={app.AppId} key={app.AppId}
@ -106,6 +280,27 @@ const IndustriesList = ({
{app.AppName} {app.AppName}
</p> </p>
))} ))}
</>
)}
{/* Hospitality */}
{AppCategory?.filter((app) =>
(/(hospitality|entertainment)/i.test(app.CategoryName) || /(hotel|resort)/i.test(app.AppName))
).length > 0 && (
<>
<div className="sub-category"><MdTheaters /> Hospitality & Entertainment</div>
{AppCategory?.filter((app) =>
(/(hospitality|entertainment)/i.test(app.CategoryName) || /(hotel|resort)/i.test(app.AppName))
).map((app) => (
<p
key={app.AppId}
onClick={() => redirectApp(app.AppName?.toLowerCase(), app.AppId)}
>
{app.AppName}
</p>
))}
</>
)}
</div> </div>
)} )}
</div> </div>

View File

@ -284,8 +284,7 @@ const Navbar = ({
}} }}
> >
<div <div
className={`appNameLeft ${ className={`appNameLeft ${responsiveMenu ? "responsiveMenuOpen" : ""
responsiveMenu ? "responsiveMenuOpen" : ""
}`} }`}
onClick={navigateAndScrollToTop} onClick={navigateAndScrollToTop}
style={{ style={{
@ -421,44 +420,12 @@ const Navbar = ({
)} )}
</span> </span>
{industryRes && ( {industryRes && (
// <div className='industryRes'>
// <div className="IndustriesOneRes">
// <div>Retail Universe: Grocery, <br />Wellness, Fashion & More</div>
// <p>Restaurant</p>
// <p>Bakery</p>
// <p>Dairy Delights</p>
// <p>Lifestyle and Fashion</p>
// <p>Fashion Jewellery</p>
// <p>Footwear</p>
// <p>Electrical, Electronics and Computers</p>
// <p>Mobile & Accessories</p>
// <p>Groceries</p>
// <p>Departmental Stores</p>
// <p>Salon, Spa and Beauty Parlour</p>
// <p>Beauty and Cosmetics shop</p>
// <p>Fitness</p>
// <p>Cement</p>
// <p>Wholesale <span>NEW</span></p>
// </div>
// <hr />
// <div className="IndustriesTwoRes" >
// <div>Manufacturing, Healthcare & <br /> Pharma</div>
// <p>Manufacturer</p>
// <p>Save Me <span>BETA</span></p>
// </div>
// <hr />
// <div className="IndustriesThreeRes" style={{ borderRight: "unset" }}>
// <div>Transportation, Logistics <br />
// Hospitality and <br />
// Entertainment
// </div>
// <p>Smart Parking</p>
// <p>Boating</p>
// </div>
// <hr />
// </div>
<> <>
<IndustriesList /> <IndustriesList
closingIndustry={closingIndustry}
AppCategory={AppCategory}
redirectApp={redirectApp}
/>
</> </>
)} )}
{/* <span onClick={scrollToSection} className="indusOpen"> {/* <span onClick={scrollToSection} className="indusOpen">

View File

@ -15,6 +15,7 @@
align-items: center; align-items: center;
gap: 16px; gap: 16px;
position: relative; position: relative;
@media (max-width: 768px) { @media (max-width: 768px) {
display: none; display: none;
} }
@ -28,6 +29,7 @@
gap: 3px; gap: 3px;
cursor: pointer; cursor: pointer;
} }
svg { svg {
margin-top: 4px; margin-top: 4px;
display: flex; display: flex;
@ -108,6 +110,7 @@
transform: translate(0, 0); transform: translate(0, 0);
} }
} }
sup { sup {
font-size: 10px; font-size: 10px;
background-color: #e68200; background-color: #e68200;
@ -124,6 +127,7 @@
cursor: pointer; cursor: pointer;
letter-spacing: 0.2px; letter-spacing: 0.2px;
-webkit-text-stroke: 0.2px; -webkit-text-stroke: 0.2px;
@media (max-width: 768px) { @media (max-width: 768px) {
z-index: 50; z-index: 50;
position: relative; position: relative;
@ -162,6 +166,7 @@
display: none; display: none;
} }
} }
.IndustriesOne, .IndustriesOne,
.IndustriesTwo, .IndustriesTwo,
.IndustriesThree { .IndustriesThree {
@ -205,7 +210,8 @@
} }
} }
div { // Main heading - Original style (DON'T CHANGE)
.main-heading {
font-size: 22px; font-size: 22px;
color: #1f1f1f; color: #1f1f1f;
font-family: "NeueMontreal"; font-family: "NeueMontreal";
@ -218,6 +224,54 @@
} }
} }
// Sub-category titles - Simple & clean with icons
.sub-category {
font-size: 13px;
color: #555;
font-family: "NeueMontreal";
font-weight: 500;
margin-top: 1rem;
margin-bottom: 0.4rem;
padding: 0;
border: none;
display: flex;
align-items: center;
gap: 6px;
svg {
font-size: 16px;
color: #3588fd;
flex-shrink: 0;
}
&:first-of-type {
margin-top: 0;
}
@media (max-width: 768px) {
font-size: 12px;
svg {
font-size: 14px;
}
}
}
// Legacy div support (if no class specified)
div:not(.main-heading):not(.sub-category) {
font-size: 22px;
color: #1f1f1f;
font-family: "NeueMontreal";
font-weight: 500;
-webkit-text-stroke-width: 0.1px;
margin-bottom: 1rem;
@media (max-width: 768px) {
font-size: 16px;
}
}
// App list items - Original simple style with indent
p { p {
font-size: 14px; font-size: 14px;
color: #1f1f1f; color: #1f1f1f;
@ -226,10 +280,12 @@
font-weight: 400; font-weight: 400;
transition: all 0.3s ease; transition: all 0.3s ease;
margin-bottom: 2px; margin-bottom: 2px;
padding-left: 22px;
&:hover { &:hover {
color: #3588fd; color: #3588fd;
} }
span { span {
color: #ffffff; color: #ffffff;
background-color: rgba(255, 115, 0, 0.966); background-color: rgba(255, 115, 0, 0.966);
@ -250,6 +306,7 @@
z-index: 100; z-index: 100;
position: relative; position: relative;
display: none; display: none;
@media (max-width: 768px) { @media (max-width: 768px) {
display: flex; display: flex;
} }
@ -274,10 +331,12 @@
&.closing { &.closing {
animation: fadeOutMenu 0.4s ease; animation: fadeOutMenu 0.4s ease;
} }
@media (max-width: 1300px) { @media (max-width: 1300px) {
top: 8%; top: 8%;
} }
} }
.ResNavHeader { .ResNavHeader {
width: 100%; width: 100%;
display: flex; display: flex;
@ -285,12 +344,14 @@
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
.ResNavHeaderClose { .ResNavHeaderClose {
display: flex; display: flex;
align-items: center; align-items: center;
font-family: "NeueMontreal"; font-family: "NeueMontreal";
gap: 4px; gap: 4px;
cursor: pointer; cursor: pointer;
div { div {
display: flex; display: flex;
align-items: center; align-items: center;
@ -298,6 +359,7 @@
font-size: 14px; font-size: 14px;
} }
} }
.ResnavbarOption { .ResnavbarOption {
width: 100%; width: 100%;
font-family: "NeueMontreal"; font-family: "NeueMontreal";
@ -306,6 +368,7 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 1rem; gap: 1rem;
.indusOpen { .indusOpen {
font-size: 16px; font-size: 16px;
display: flex; display: flex;
@ -316,7 +379,38 @@
border-bottom: 2px dashed #868686; border-bottom: 2px dashed #868686;
padding-bottom: 10px; padding-bottom: 10px;
} }
@media (max-width: 768px) {
.IndustriesTypes {
position: relative;
top: unset;
left: unset;
width: 100%;
background-color: #383838;
color: #fff;
overflow: auto;
isolation: unset;
touch-action: unset;
height: 70vh;
box-shadow: unset !important;
} }
.IndustriesOne,
.IndustriesTwo,
.IndustriesThree {
border-right: none;
height: max-content;
max-height: 40vh;
margin-bottom: 2rem;
>div,
>p {
color: #fff;
}
}
}
}
.industryRes { .industryRes {
background-color: #383838; background-color: #383838;
color: #fff; color: #fff;
@ -339,12 +433,14 @@
font-size: 16px; font-size: 16px;
margin: 10px 0; margin: 10px 0;
} }
p { p {
font-family: "NeueMontreal"; font-family: "NeueMontreal";
font-size: 14px; font-size: 14px;
margin-bottom: 4px; margin-bottom: 4px;
color: #cecece; color: #cecece;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
color: #3588fd; color: #3588fd;
} }
@ -358,6 +454,7 @@
margin-bottom: 4px; margin-bottom: 4px;
cursor: pointer; cursor: pointer;
transition: all 0.2s; transition: all 0.2s;
&:hover { &:hover {
color: #3588fd; color: #3588fd;
} }
@ -372,6 +469,7 @@
font-family: "NeueMontreal"; font-family: "NeueMontreal";
margin-top: 3rem; margin-top: 3rem;
width: 100%; width: 100%;
sup { sup {
font-size: 10px; font-size: 10px;
background-color: #e68200; background-color: #e68200;
@ -448,12 +546,14 @@
} }
} }
} }
@keyframes fadeInMenu { @keyframes fadeInMenu {
from { from {
opacity: 0; opacity: 0;
// transform: translateY(-50px); // transform: translateY(-50px);
height: 0vh; height: 0vh;
} }
to { to {
opacity: 1; opacity: 1;
// transform: translateY(0); // transform: translateY(0);
@ -467,18 +567,21 @@
// transform: translateY(0); // transform: translateY(0);
height: 100vh; height: 100vh;
} }
to { to {
opacity: 0; opacity: 0;
// transform: translateY(-50px); // transform: translateY(-50px);
height: 0vh; height: 0vh;
} }
} }
@keyframes fadeInIndustry { @keyframes fadeInIndustry {
from { from {
opacity: 0; opacity: 0;
transform: translateY(-10px); transform: translateY(-10px);
height: 0vh; height: 0vh;
} }
to { to {
opacity: 1; opacity: 1;
transform: translateY(0); transform: translateY(0);
@ -492,18 +595,21 @@
height: 80vh; height: 80vh;
transform: translateY(0); transform: translateY(0);
} }
to { to {
opacity: 0; opacity: 0;
height: 0vh; height: 0vh;
transform: translateY(-10px); transform: translateY(-10px);
} }
} }
@keyframes fadeInCompany { @keyframes fadeInCompany {
from { from {
opacity: 0; opacity: 0;
transform: translateY(-10px); transform: translateY(-10px);
height: 0px; height: 0px;
} }
to { to {
opacity: 1; opacity: 1;
transform: translateY(0); transform: translateY(0);
@ -517,6 +623,7 @@
height: 250px; height: 250px;
transform: translateY(0); transform: translateY(0);
} }
to { to {
opacity: 0; opacity: 0;
height: 0px; height: 0px;
@ -529,6 +636,7 @@
opacity: 0; opacity: 0;
transform: translateY(-10px); transform: translateY(-10px);
} }
to { to {
opacity: 1; opacity: 1;
transform: translateY(0); transform: translateY(0);
@ -540,6 +648,7 @@
opacity: 1; opacity: 1;
transform: translateY(0); transform: translateY(0);
} }
to { to {
opacity: 0; opacity: 0;
transform: translateY(-10px); transform: translateY(-10px);
@ -551,6 +660,7 @@
opacity: 0; opacity: 0;
transform: translateY(-10px); transform: translateY(-10px);
} }
to { to {
opacity: 1; opacity: 1;
transform: translateY(0); transform: translateY(0);
@ -562,6 +672,7 @@
opacity: 1; opacity: 1;
transform: translateY(0); transform: translateY(0);
} }
to { to {
opacity: 0; opacity: 0;
transform: translateY(-10px); transform: translateY(-10px);
@ -573,6 +684,7 @@
opacity: 0; opacity: 0;
transform: translateX(100%); transform: translateX(100%);
} }
to { to {
opacity: 1; opacity: 1;
transform: translateX(0); transform: translateX(0);
@ -584,6 +696,7 @@
opacity: 1; opacity: 1;
transform: translateX(0); transform: translateX(0);
} }
to { to {
opacity: 0; opacity: 0;
transform: translateX(100%); transform: translateX(100%);
@ -615,6 +728,7 @@
cursor: pointer; cursor: pointer;
letter-spacing: 0.2px; letter-spacing: 0.2px;
transition: all 0.3s ease; transition: all 0.3s ease;
&:hover { &:hover {
color: #3588fd; color: #3588fd;
} }

View File

@ -11,7 +11,7 @@
@media (max-width: 500px) { @media (max-width: 500px) {
height: max-content !important; height: max-content !important;
padding-bottom: 3rem; padding-bottom: 5rem;
} }
.bg-video { .bg-video {
@ -127,21 +127,9 @@
gap: 1.2rem; gap: 1.2rem;
justify-content: flex-end; justify-content: flex-end;
flex: 1; flex: 1;
@media (min-width: 1920px) {
gap: 1.5rem;
}
@media (max-width: 900px) {
gap: 1.3rem;
}
@media (max-width: 600px) { @media (max-width: 600px) {
gap: 1rem; gap: 1rem;
} padding:16px 0;
@media (max-width: 400px) {
gap: 0.9rem;
} }
} }
@ -568,15 +556,6 @@
} }
} }
// Mobile (401px - 600px)
@media (max-width: 600px) and (min-width: 401px) {
.OverView-Master {
height: auto !important;
min-height: 100vh;
padding-bottom: 2rem;
}
}
// Small Mobile (320px - 400px) // Small Mobile (320px - 400px)
@media (max-width: 400px) { @media (max-width: 400px) {
.OverView-Master { .OverView-Master {