feat: update for changing color palette
This commit is contained in:
parent
1a31d8dd76
commit
d45732c935
Binary file not shown.
Binary file not shown.
|
|
@ -6,7 +6,7 @@ export default function Footer({ footerRef }) {
|
||||||
<footer
|
<footer
|
||||||
id="footer"
|
id="footer"
|
||||||
ref={footerRef}
|
ref={footerRef}
|
||||||
className="bg-[#5C739B] text-white py-10 px-6">
|
className="bg-[#2c415e] text-white py-10 px-6">
|
||||||
|
|
||||||
<div className="max-w-7xl mx-auto grid grid-cols-1 md:grid-cols-12 gap-8">
|
<div className="max-w-7xl mx-auto grid grid-cols-1 md:grid-cols-12 gap-8">
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ export default function Hero() {
|
||||||
playsInline
|
playsInline
|
||||||
className="absolute inset-0 w-full h-full object-cover"
|
className="absolute inset-0 w-full h-full object-cover"
|
||||||
>
|
>
|
||||||
<source src="/bg-video.mp4" type="video/mp4" />
|
<source src="/bg-video2.mp4" type="video/mp4" />
|
||||||
</video>
|
</video>
|
||||||
<div className="absolute inset-0 bg-black/50"></div>
|
<div className="absolute inset-0 bg-black/50"></div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import { NavLink, useLocation, useNavigate } from "react-router-dom";
|
||||||
import { HashLink } from "react-router-hash-link";
|
import { HashLink } from "react-router-hash-link";
|
||||||
|
|
||||||
export default function Navbar() {
|
export default function Navbar() {
|
||||||
const [mobileMenu, setMobileMenu] = useState(false); // toggle mobile
|
const [mobileMenu, setMobileMenu] = useState(false);
|
||||||
const [scrolled, setScrolled] = useState(false);
|
const [scrolled, setScrolled] = useState(false);
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
@ -31,7 +31,9 @@ export default function Navbar() {
|
||||||
}
|
}
|
||||||
}, [location]);
|
}, [location]);
|
||||||
|
|
||||||
const linkClass = `block px-4 py-2 hover:text-yellow-400 transition-colors`;
|
// Dasar class link
|
||||||
|
const baseLink =
|
||||||
|
"block px-4 py-2 transition-colors hover:text-[#00CAFF]";
|
||||||
|
|
||||||
// Klik About Us → scroll atau pindah halaman
|
// Klik About Us → scroll atau pindah halaman
|
||||||
const handleAboutClick = (e) => {
|
const handleAboutClick = (e) => {
|
||||||
|
|
@ -52,7 +54,11 @@ export default function Navbar() {
|
||||||
<nav className="max-w-7xl mx-auto flex items-center justify-between px-6 lg:px-12 py-4 relative">
|
<nav className="max-w-7xl mx-auto flex items-center justify-between px-6 lg:px-12 py-4 relative">
|
||||||
{/* Logo */}
|
{/* Logo */}
|
||||||
<div className="flex items-center space-x-2">
|
<div className="flex items-center space-x-2">
|
||||||
<img src="/Finals_Icon.png" alt="logo" className="h-7 w-auto object-contain" />
|
<img
|
||||||
|
src="/Finals_Icon.png"
|
||||||
|
alt="logo"
|
||||||
|
className="h-7 w-auto object-contain"
|
||||||
|
/>
|
||||||
<span
|
<span
|
||||||
className={`text-lg font-bold transition-colors duration-300 ${
|
className={`text-lg font-bold transition-colors duration-300 ${
|
||||||
scrolled ? "text-black" : "text-white"
|
scrolled ? "text-black" : "text-white"
|
||||||
|
|
@ -69,29 +75,47 @@ export default function Navbar() {
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<li>
|
<li>
|
||||||
<HashLink smooth to="/#" className={linkClass}>
|
<HashLink
|
||||||
|
smooth
|
||||||
|
to="/#"
|
||||||
|
className={`${baseLink} ${
|
||||||
|
location.pathname === "/" && !location.hash
|
||||||
|
? "text-[#00CAFF] font-semibold"
|
||||||
|
: ""
|
||||||
|
}`}
|
||||||
|
>
|
||||||
Home
|
Home
|
||||||
</HashLink>
|
</HashLink>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
{/* Portofolio link biasa */}
|
|
||||||
<li>
|
<li>
|
||||||
<NavLink to="/portofolio" className={linkClass}>
|
<NavLink
|
||||||
|
to="/portofolio"
|
||||||
|
className={({ isActive }) =>
|
||||||
|
`${baseLink} ${isActive ? "text-[#00CAFF] font-semibold" : ""}`
|
||||||
|
}
|
||||||
|
>
|
||||||
Portofolio
|
Portofolio
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<NavLink
|
<NavLink
|
||||||
to="/about"
|
to="/about"
|
||||||
className={linkClass}
|
|
||||||
onClick={handleAboutClick}
|
onClick={handleAboutClick}
|
||||||
|
className={({ isActive }) =>
|
||||||
|
`${baseLink} ${isActive ? "text-[#00CAFF] font-semibold" : ""}`
|
||||||
|
}
|
||||||
>
|
>
|
||||||
About Us
|
About Us
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<HashLink smooth to="/#footer" className={linkClass}>
|
<HashLink
|
||||||
|
smooth
|
||||||
|
to="/#footer"
|
||||||
|
className={`${baseLink} ${
|
||||||
|
location.hash === "#footer" ? "text-[#00CAFF] font-semibold" : ""
|
||||||
|
}`}
|
||||||
|
>
|
||||||
Contact Us
|
Contact Us
|
||||||
</HashLink>
|
</HashLink>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -127,28 +151,36 @@ export default function Navbar() {
|
||||||
smooth
|
smooth
|
||||||
to="/#"
|
to="/#"
|
||||||
onClick={() => setMobileMenu(false)}
|
onClick={() => setMobileMenu(false)}
|
||||||
className={linkClass}
|
className={`${baseLink} ${
|
||||||
|
location.pathname === "/" && !location.hash
|
||||||
|
? "text-[#00CAFF] font-semibold"
|
||||||
|
: ""
|
||||||
|
}`}
|
||||||
>
|
>
|
||||||
Home
|
Home
|
||||||
</HashLink>
|
</HashLink>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
{/* Portofolio link biasa mobile */}
|
|
||||||
<li>
|
<li>
|
||||||
<NavLink
|
<NavLink
|
||||||
to="/portofolio"
|
to="/portofolio"
|
||||||
onClick={() => setMobileMenu(false)}
|
onClick={() => setMobileMenu(false)}
|
||||||
className={linkClass}
|
className={({ isActive }) =>
|
||||||
|
`${baseLink} ${isActive ? "text-[#00CAFF] font-semibold" : ""}`
|
||||||
|
}
|
||||||
>
|
>
|
||||||
Portofolio
|
Portofolio
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<NavLink
|
<NavLink
|
||||||
to="/about"
|
to="/about"
|
||||||
onClick={handleAboutClick}
|
onClick={(e) => {
|
||||||
className={linkClass}
|
handleAboutClick(e);
|
||||||
|
setMobileMenu(false);
|
||||||
|
}}
|
||||||
|
className={({ isActive }) =>
|
||||||
|
`${baseLink} ${isActive ? "text-[#00CAFF] font-semibold" : ""}`
|
||||||
|
}
|
||||||
>
|
>
|
||||||
About Us
|
About Us
|
||||||
</NavLink>
|
</NavLink>
|
||||||
|
|
@ -158,7 +190,11 @@ export default function Navbar() {
|
||||||
smooth
|
smooth
|
||||||
to="/#footer"
|
to="/#footer"
|
||||||
onClick={() => setMobileMenu(false)}
|
onClick={() => setMobileMenu(false)}
|
||||||
className={linkClass}
|
className={`${baseLink} ${
|
||||||
|
location.hash === "#footer"
|
||||||
|
? "text-[#00CAFF] font-semibold"
|
||||||
|
: ""
|
||||||
|
}`}
|
||||||
>
|
>
|
||||||
Contact Us
|
Contact Us
|
||||||
</HashLink>
|
</HashLink>
|
||||||
|
|
@ -168,4 +204,4 @@ export default function Navbar() {
|
||||||
)}
|
)}
|
||||||
</header>
|
</header>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,38 +4,41 @@ import { motion } from "framer-motion";
|
||||||
export default function Produk() {
|
export default function Produk() {
|
||||||
const products = [
|
const products = [
|
||||||
{
|
{
|
||||||
icon: <Wifi className="w-8 h-8 text-blue-600" />,
|
icon: <Wifi className="w-8 h-8 text-[#145BB5]" />,
|
||||||
title: "FNET LastMile Connection",
|
title: "FNET LastMile Connection",
|
||||||
desc: "Solusi bagi penyedia layanan internet untuk melayani pelanggan Last Mile tanpa harus membangun jaringan fiber optic sendiri.",
|
desc: "Solusi bagi penyedia layanan internet untuk melayani pelanggan Last Mile tanpa harus membangun jaringan fiber optic sendiri.",
|
||||||
gradient: "from-blue-500/20 to-blue-100/40"
|
gradient: "from-[#00BFFF]/20 to-[#145BB5]/20",
|
||||||
|
whiteBox: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <Network className="w-8 h-8 text-yellow-500" />,
|
icon: <Network className="w-8 h-8 text-[#00BFFF]" />,
|
||||||
title: "FNET Metro Link",
|
title: "FNET Metro Link",
|
||||||
desc: "Layanan jaringan serat optik Point to Point dan Point to Multi Point dengan kapasitas tinggi dan infrastruktur handal.",
|
desc: "Layanan jaringan serat optik Point to Point dan Point to Multi Point dengan kapasitas tinggi dan infrastruktur handal.",
|
||||||
gradient: "from-yellow-400/30 to-yellow-100/40"
|
// tidak pakai gradient → putih polos
|
||||||
|
gradient: "",
|
||||||
|
whiteBox: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <Cog className="w-8 h-8 text-blue-700" />,
|
icon: <Cog className="w-8 h-8 text-[#145BB5]" />,
|
||||||
title: "FNET EPC Solution",
|
title: "FNET EPC Solution",
|
||||||
desc: "Menyediakan layanan Engineering, Procurement, Construction: Survey, Design, Deployment, Operation & Maintenance, FTIX.",
|
desc: "Menyediakan layanan Engineering, Procurement, Construction: Survey, Design, Deployment, Operation & Maintenance, FTIX.",
|
||||||
gradient: "from-blue-300/40 to-blue-100/30"
|
gradient: "from-[#00BFFF]/20 to-[#145BB5]/20",
|
||||||
|
whiteBox: false
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section id="produk" className="relative py-20 overflow-hidden text-center">
|
<section id="produk" className="relative py-20 overflow-hidden text-center">
|
||||||
{/* Animated Background Gradient */}
|
{/* Background animasi biru */}
|
||||||
<motion.div
|
<motion.div
|
||||||
className="absolute inset-0 bg-gradient-to-r from-blue-900 via-blue-700 to-blue-900 bg-[length:400%_400%]"
|
className="absolute inset-0 bg-gradient-to-r from-[#145BB5] via-[#00BFFF] to-[#145BB5] bg-[length:400%_400%]"
|
||||||
animate={{ backgroundPosition: ["0% 50%", "100% 50%", "0% 50%"] }}
|
animate={{ backgroundPosition: ["0% 50%", "100% 50%", "0% 50%"] }}
|
||||||
transition={{ duration: 20, repeat: Infinity, ease: "linear" }}
|
transition={{ duration: 20, repeat: Infinity, ease: "linear" }}
|
||||||
></motion.div>
|
></motion.div>
|
||||||
{/* Overlay biar teks tetap jelas */}
|
|
||||||
<div className="absolute inset-0 bg-white/95"></div>
|
<div className="absolute inset-0 bg-white/95"></div>
|
||||||
|
|
||||||
<div className="relative z-10">
|
<div className="relative z-10">
|
||||||
<h2 className="text-3xl md:text-4xl font-bold mb-4 text-color-rgb(20,91,181)">
|
<h2 className="text-3xl md:text-4xl font-bold mb-4 text-[#145BB5]">
|
||||||
Produk
|
Produk
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-gray-700 max-w-3xl mx-auto mb-12 px-4">
|
<p className="text-gray-700 max-w-3xl mx-auto mb-12 px-4">
|
||||||
|
|
@ -50,13 +53,15 @@ export default function Produk() {
|
||||||
key={i}
|
key={i}
|
||||||
whileHover={{ y: -8, scale: 1.03 }}
|
whileHover={{ y: -8, scale: 1.03 }}
|
||||||
transition={{ duration: 0.4, ease: "easeOut" }}
|
transition={{ duration: 0.4, ease: "easeOut" }}
|
||||||
className={`bg-white text-blue-900 rounded-2xl shadow-lg relative overflow-hidden p-8 border border-gray-100 hover:border-blue-300`}
|
className="bg-white text-blue-900 rounded-2xl shadow-lg relative overflow-hidden p-8 border border-[#145BB5]/10 hover:border-[#00BFFF]/40"
|
||||||
>
|
>
|
||||||
{/* Gradient overlay per-card */}
|
{/* gradient overlay hanya kalau whiteBox = false */}
|
||||||
<div
|
{!item.whiteBox && (
|
||||||
className={`absolute inset-0 bg-gradient-to-br ${item.gradient} opacity-30`}
|
<div
|
||||||
></div>
|
className={`absolute inset-0 bg-gradient-to-br ${item.gradient} opacity-30`}
|
||||||
{/* Icon Circle */}
|
></div>
|
||||||
|
)}
|
||||||
|
|
||||||
<div className="relative z-10 w-16 h-16 mx-auto mb-5 rounded-full flex items-center justify-center bg-white shadow-md">
|
<div className="relative z-10 w-16 h-16 mx-auto mb-5 rounded-full flex items-center justify-center bg-white shadow-md">
|
||||||
{item.icon}
|
{item.icon}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -70,4 +75,4 @@ export default function Produk() {
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ export default function About() {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="font-sans">
|
<div className="font-sans">
|
||||||
{/* Navbar */}
|
|
||||||
<Navbar />
|
<Navbar />
|
||||||
|
|
||||||
{/* Hero Section */}
|
{/* Hero Section */}
|
||||||
|
|
@ -27,42 +26,38 @@ export default function About() {
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* About Section */}
|
{/* About Section */}
|
||||||
<section className="py-20 bg-gray-50 min-h-screen">
|
{/* Ganti warna bg jadi sama seperti halaman Produk */}
|
||||||
|
<section className="py-20 bg-[#eaf2ff] min-h-screen">
|
||||||
<div className="max-w-6xl mx-auto px-6 lg:px-20 space-y-16">
|
<div className="max-w-6xl mx-auto px-6 lg:px-20 space-y-16">
|
||||||
{/* Card Deskripsi Perusahaan dengan Logo */}
|
|
||||||
|
{/* Card Deskripsi Perusahaan */}
|
||||||
<motion.div
|
<motion.div
|
||||||
className="bg-white/80 backdrop-blur-lg rounded-3xl shadow-xl border border-gray-200 p-10 flex flex-col md:flex-row items-center gap-8"
|
className="bg-white rounded-3xl shadow-xl border border-gray-200 p-10 flex flex-col md:flex-row items-center gap-8"
|
||||||
initial={{ opacity: 0, y: 20 }}
|
initial={{ opacity: 0, y: 20 }}
|
||||||
whileInView={{ opacity: 1, y: 0 }}
|
whileInView={{ opacity: 1, y: 0 }}
|
||||||
transition={{ duration: 0.7 }}
|
transition={{ duration: 0.7 }}
|
||||||
viewport={{ once: true }}
|
viewport={{ once: true }}
|
||||||
whileHover={{
|
whileHover={cardHover}
|
||||||
scale: 1.02,
|
|
||||||
y: -3,
|
|
||||||
boxShadow: "0 20px 30px rgba(0,0,0,0.08)",
|
|
||||||
transition: { type: "spring", stiffness: 200, damping: 20 },
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
{/* Logo di kiri */}
|
{/* Logo */}
|
||||||
<div className="flex justify-center md:justify-start flex-shrink-0">
|
<div className="flex justify-center md:justify-start flex-shrink-0">
|
||||||
<img
|
<img src="/Finals_Profile.png" alt="Logo Fortiva" className="w-44 md:w-56" />
|
||||||
src="/Finals_Profile.png"
|
|
||||||
alt="Logo WTELL"
|
|
||||||
className="w-44 md:w-56"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Deskripsi di kanan */}
|
{/* Deskripsi */}
|
||||||
<div className="text-center md:text-left">
|
<div className="text-center md:text-left">
|
||||||
<h2 className="text-3xl font-bold text-color-rgb(20,91,181)">
|
<h2 className="text-3xl font-bold text-blue-700">
|
||||||
PT. Jaringan Citra Mandiri
|
PT. Jaringan Citra Mandiri
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-gray-700 leading-relaxed mb-4">
|
<p className="text-gray-700 leading-relaxed mb-4">
|
||||||
Adalah Perusahaan Swasta yang bergerak di bidang Penyedia Layanan
|
Adalah Perusahaan Swasta yang bergerak di bidang Penyedia
|
||||||
Teknologi Telekomunikasi Berbasis Fiber Optic.
|
Layanan Teknologi Telekomunikasi Berbasis Fiber Optic.
|
||||||
</p>
|
</p>
|
||||||
<p className="text-gray-700 leading-relaxed">
|
<p className="text-gray-700 leading-relaxed">
|
||||||
Berdiri sejak tahun 2018, <span className="font-semibold text-color-rgb(20,91,181)">Fortiva Networking</span>{" "}
|
Berdiri sejak tahun 2018,{" "}
|
||||||
|
<span className="font-semibold text-blue-700">
|
||||||
|
Fortiva Networking
|
||||||
|
</span>{" "}
|
||||||
berkomitmen menjadi Penyedia Layanan Teknologi Telekomunikasi
|
berkomitmen menjadi Penyedia Layanan Teknologi Telekomunikasi
|
||||||
Berbasis Fiber Optic yang Handal dan Profesional.
|
Berbasis Fiber Optic yang Handal dan Profesional.
|
||||||
</p>
|
</p>
|
||||||
|
|
@ -71,7 +66,6 @@ export default function About() {
|
||||||
|
|
||||||
{/* Visi & Misi */}
|
{/* Visi & Misi */}
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-10">
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-10">
|
||||||
{/* Visi */}
|
|
||||||
<motion.section
|
<motion.section
|
||||||
className="bg-white rounded-2xl p-8 cursor-pointer"
|
className="bg-white rounded-2xl p-8 cursor-pointer"
|
||||||
whileHover={cardHover}
|
whileHover={cardHover}
|
||||||
|
|
@ -80,14 +74,15 @@ export default function About() {
|
||||||
transition={{ duration: 0.7 }}
|
transition={{ duration: 0.7 }}
|
||||||
viewport={{ once: true }}
|
viewport={{ once: true }}
|
||||||
>
|
>
|
||||||
<h3 className="text-2xl font-bold text-center mb-6">VISI</h3>
|
<h3 className="text-2xl font-bold text-center mb-6 text-blue-700">
|
||||||
|
VISI
|
||||||
|
</h3>
|
||||||
<p className="text-gray-700 text-center leading-relaxed">
|
<p className="text-gray-700 text-center leading-relaxed">
|
||||||
Menjadi Penyedia Jaringan Kabel Serat Optik Terbaik yang
|
Menjadi Penyedia Jaringan Kabel Serat Optik Terbaik yang
|
||||||
Menghubungkan Seluruh Wilayah di Indonesia.
|
Menghubungkan Seluruh Wilayah di Indonesia.
|
||||||
</p>
|
</p>
|
||||||
</motion.section>
|
</motion.section>
|
||||||
|
|
||||||
{/* Misi */}
|
|
||||||
<motion.section
|
<motion.section
|
||||||
className="bg-white rounded-2xl p-8 cursor-pointer"
|
className="bg-white rounded-2xl p-8 cursor-pointer"
|
||||||
whileHover={cardHover}
|
whileHover={cardHover}
|
||||||
|
|
@ -96,7 +91,9 @@ export default function About() {
|
||||||
transition={{ duration: 0.7 }}
|
transition={{ duration: 0.7 }}
|
||||||
viewport={{ once: true }}
|
viewport={{ once: true }}
|
||||||
>
|
>
|
||||||
<h3 className="text-2xl font-bold text-center mb-6">MISI</h3>
|
<h3 className="text-2xl font-bold text-center mb-6 text-blue-700">
|
||||||
|
MISI
|
||||||
|
</h3>
|
||||||
<ul className="space-y-4 text-gray-700">
|
<ul className="space-y-4 text-gray-700">
|
||||||
<li className="flex items-start gap-2">
|
<li className="flex items-start gap-2">
|
||||||
<CheckCircle className="text-green-500 w-6 h-6 shrink-0 mt-1" />
|
<CheckCircle className="text-green-500 w-6 h-6 shrink-0 mt-1" />
|
||||||
|
|
@ -119,8 +116,7 @@ export default function About() {
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* Footer */}
|
|
||||||
<Footer />
|
<Footer />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@ export default function Portfolio() {
|
||||||
<section className="relative w-full h-[400px] flex items-center justify-center text-center text-white overflow-hidden">
|
<section className="relative w-full h-[400px] flex items-center justify-center text-center text-white overflow-hidden">
|
||||||
<video
|
<video
|
||||||
className="absolute inset-0 w-full h-full object-cover"
|
className="absolute inset-0 w-full h-full object-cover"
|
||||||
src="/port.mp4"
|
src="/port2.mp4"
|
||||||
autoPlay
|
autoPlay
|
||||||
loop
|
loop
|
||||||
muted
|
muted
|
||||||
|
|
@ -231,7 +231,6 @@ export default function Portfolio() {
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Tambahkan Footer */}
|
|
||||||
<Footer />
|
<Footer />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
@ -254,7 +253,8 @@ function PortfolioCard({ image, title, shortDesc, onClick }) {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="p-6 flex flex-col flex-grow">
|
<div className="p-6 flex flex-col flex-grow">
|
||||||
<h3 className="text-lg font-bold bg-gradient-to-r from-indigo-600 to-blue-500 bg-clip-text text-transparent">
|
{/* ==== WARNA JUDUL DIBUAT BIRU NAVBAR ==== */}
|
||||||
|
<h3 className="text-lg font-bold bg-gradient-to-r from-blue-700 to-blue-500 bg-clip-text text-transparent">
|
||||||
{title}
|
{title}
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
|
|
@ -271,4 +271,4 @@ function PortfolioCard({ image, title, shortDesc, onClick }) {
|
||||||
</div>
|
</div>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue