add not found
This commit is contained in:
parent
15478bd369
commit
e8e44e4d5d
24
src/App.jsx
24
src/App.jsx
@ -5,17 +5,27 @@ import FormSection from "./components/contact/FormSection"
|
|||||||
import SolusiPersonal from "./pages/SolusiPersonal"
|
import SolusiPersonal from "./pages/SolusiPersonal"
|
||||||
import SolusiStartup from "./pages/SolusiStartup"
|
import SolusiStartup from "./pages/SolusiStartup"
|
||||||
import SolusiCorporate from "./pages/SolusiCorporate"
|
import SolusiCorporate from "./pages/SolusiCorporate"
|
||||||
|
import NotFound from "./components/NotFound/NotFound"
|
||||||
|
import Header from './components/beranda/Header';
|
||||||
|
import WhatsAppButton from './components/beranda/WhatsAppButon';
|
||||||
function App() {
|
function App() {
|
||||||
return (
|
return (
|
||||||
<Router>
|
<Router>
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path='/' element={<Home/>}/>
|
<Route path='/' element={<Home />} />
|
||||||
<Route path='/Contact' element={<Contact/>}/>
|
<Route path='/Contact' element={<Contact />} />
|
||||||
<Route path='/FormSection' element={<FormSection/>}/>
|
<Route path='/FormSection' element={<FormSection />} />
|
||||||
<Route path='/SolusiPersonal' element={<SolusiPersonal/>}/>
|
<Route path='/SolusiPersonal' element={<SolusiPersonal />} />
|
||||||
<Route path='/SolusiStartup' element={<SolusiStartup/>}/>
|
<Route path='/SolusiStartup' element={<SolusiStartup />} />
|
||||||
<Route path='/SolusiCorporate' element={<SolusiCorporate/>}/>
|
<Route path='/SolusiCorporate' element={<SolusiCorporate />} />
|
||||||
|
<Route path='/004' element={
|
||||||
|
<>
|
||||||
|
<Header />
|
||||||
|
<NotFound />
|
||||||
|
<WhatsAppButton/>
|
||||||
|
</>
|
||||||
|
|
||||||
|
} />
|
||||||
</Routes>
|
</Routes>
|
||||||
</Router>
|
</Router>
|
||||||
|
|
||||||
|
14
src/components/NotFound/NotFound.jsx
Normal file
14
src/components/NotFound/NotFound.jsx
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import { logonf } from "./asset";
|
||||||
|
|
||||||
|
|
||||||
|
const NotFound = () => {
|
||||||
|
return (
|
||||||
|
<div className="justify-center text-center items-center flex flex-col mt-32 gap-4">
|
||||||
|
<img src={logonf} alt="404" />
|
||||||
|
<h1 className="font-bold text-[1.5rem]">Halaman Dalam Proses Pengembangan</h1>
|
||||||
|
<p className="text-[1rem] font-medium w-[50rem]">Terima kasih atas kunjungan Anda! Halaman ini sedang dalam tahap pengembangan untuk memberikan pengalaman terbaik. Nantikan segera pembaruan dari kami! </p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default NotFound;
|
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
4
src/components/NotFound/asset/index.js
Normal file
4
src/components/NotFound/asset/index.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import logonf from './Black Blue and Pink Modern Twibbon Instagram Post 1.png';
|
||||||
|
|
||||||
|
|
||||||
|
export { logonf, }
|
@ -95,13 +95,13 @@ const Header = () => {
|
|||||||
</button>
|
</button>
|
||||||
|
|
||||||
{isProdukOpen && (
|
{isProdukOpen && (
|
||||||
<div className="absolute left-[448px] -translate-x-1/2 top-full md:top-11 mt-2 w-[1450px]">
|
<div className="absolute md:left-[350px] 2xl:left-[448px] -translate-x-1/2 top-full md:top-11 mt-2 w-[1450px]">
|
||||||
<div className="bg-customRed bg-opacity-80 rounded-xl p-8">
|
<div className="bg-customRed bg-opacity-80 rounded-xl p-8">
|
||||||
<div className="flex justify-center gap-8">
|
<div className="flex justify-center gap-8">
|
||||||
{/* HR */}
|
{/* HR */}
|
||||||
<button
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
navigate("/SolusiPersonal");
|
navigate("/004");
|
||||||
window.scrollTo({ top: 0, behavior: "smooth" });
|
window.scrollTo({ top: 0, behavior: "smooth" });
|
||||||
}}
|
}}
|
||||||
className="bg-white rounded-xl w-[282px] p-4 flex items-start gap-4 hover:bg-gray-100"
|
className="bg-white rounded-xl w-[282px] p-4 flex items-start gap-4 hover:bg-gray-100"
|
||||||
@ -118,7 +118,7 @@ const Header = () => {
|
|||||||
{/* DOKU */}
|
{/* DOKU */}
|
||||||
<button
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
navigate("/SolusiStartup");
|
navigate("/004");
|
||||||
window.scrollTo({ top: 0, behavior: "smooth" });
|
window.scrollTo({ top: 0, behavior: "smooth" });
|
||||||
}}
|
}}
|
||||||
className="bg-white rounded-xl w-[282px] p-4 flex items-start gap-4 hover:bg-gray-100"
|
className="bg-white rounded-xl w-[282px] p-4 flex items-start gap-4 hover:bg-gray-100"
|
||||||
@ -135,7 +135,7 @@ const Header = () => {
|
|||||||
{/* LLM */}
|
{/* LLM */}
|
||||||
<button
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
navigate("/SolusiCorporate");
|
navigate("/004");
|
||||||
window.scrollTo({ top: 0, behavior: "smooth" });
|
window.scrollTo({ top: 0, behavior: "smooth" });
|
||||||
}}
|
}}
|
||||||
className="bg-white rounded-xl w-[282px] p-4 flex items-start gap-4 hover:bg-gray-100"
|
className="bg-white rounded-xl w-[282px] p-4 flex items-start gap-4 hover:bg-gray-100"
|
||||||
@ -149,7 +149,7 @@ const Header = () => {
|
|||||||
{/* VERI */}
|
{/* VERI */}
|
||||||
<button
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
navigate("/SolusiCorporate");
|
navigate("/004");
|
||||||
window.scrollTo({ top: 0, behavior: "smooth" });
|
window.scrollTo({ top: 0, behavior: "smooth" });
|
||||||
}}
|
}}
|
||||||
className="bg-white rounded-xl w-[282px] p-4 flex items-start gap-4 hover:bg-gray-100"
|
className="bg-white rounded-xl w-[282px] p-4 flex items-start gap-4 hover:bg-gray-100"
|
||||||
@ -188,8 +188,8 @@ const Header = () => {
|
|||||||
</button>
|
</button>
|
||||||
|
|
||||||
{isSolusiOpen && (
|
{isSolusiOpen && (
|
||||||
<div className="absolute left-[340px] -translate-x-1/2 top-full md:top-11 mt-2 w-[1450px]">
|
<div className="absolute md:left-[235px] 2xl:left-[340px] -translate-x-1/2 top-full md:top-11 mt-2 w-[1450px] ">
|
||||||
<div className="bg-customRed bg-opacity-80 rounded-xl p-8">
|
<div className="bg-customRed bg-opacity-80 rounded-xl p-8 md:h-[168px]">
|
||||||
<div className="flex justify-center gap-8">
|
<div className="flex justify-center gap-8">
|
||||||
{/* Personal */}
|
{/* Personal */}
|
||||||
<button
|
<button
|
||||||
|
@ -42,8 +42,8 @@ function Hero() {
|
|||||||
initial={{ opacity: 0, x: -50 }}
|
initial={{ opacity: 0, x: -50 }}
|
||||||
animate={{ opacity: inView ? 1 : 0, x: inView ? 0 : -50 }}
|
animate={{ opacity: inView ? 1 : 0, x: inView ? 0 : -50 }}
|
||||||
transition={{ duration: 0.8 }}
|
transition={{ duration: 0.8 }}
|
||||||
className="space-y-6 md:-mt-32 mt-10 text-center lg:text-left order-1 lg:order-none"
|
className="space-y-6 md:-mt-40 -mt-28 text-center lg:text-left order-1 md:-ml-4 2xl:-ml-4 lg:order-none"
|
||||||
>
|
>
|
||||||
<img src={homeLogo} alt="Rekan AI Logo" className="h-12 w-auto lg:mx-0" />
|
<img src={homeLogo} alt="Rekan AI Logo" className="h-12 w-auto lg:mx-0" />
|
||||||
<h1 className="text-[24px] lg:text-[30px] font-semibold text-customBlack leading-tight">
|
<h1 className="text-[24px] lg:text-[30px] font-semibold text-customBlack leading-tight">
|
||||||
Ciptakan Pengalaman Pelanggan yang Tak Terlupakan dengan Solusi AI dari Rekan AI.
|
Ciptakan Pengalaman Pelanggan yang Tak Terlupakan dengan Solusi AI dari Rekan AI.
|
||||||
|
@ -12,24 +12,24 @@ function Kenapa() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div ref={sectionRef} className="container mx-auto flex justify-center items-center bg-customWhite mt-5 min-h-screen">
|
<div ref={sectionRef} className="container mx-auto flex justify-center items-center bg-customWhite mt-5 min-h-screen">
|
||||||
<motion.div
|
<motion.div
|
||||||
initial={{ opacity: 0, y: 50 }}
|
initial={{ opacity: 0, y: 50 }}
|
||||||
animate={sectionInView ? { opacity: 1, y: 0 } : {}}
|
animate={sectionInView ? { opacity: 1, y: 0 } : {}}
|
||||||
transition={{ duration: 0.8 }}
|
transition={{ duration: 0.8 }}
|
||||||
className="flex flex-col md:flex-row bg-customWhite rounded-lg overflow-hidden relative pt-16 md:pt-52"
|
className="flex flex-col md:flex-row bg-customWhite rounded-lg overflow-hidden relative pt-16 md:pt-52"
|
||||||
>
|
>
|
||||||
{/* Decorative Circles */}
|
{/* Decorative Circles */}
|
||||||
<div className="absolute hidden md:flex top-1 right-24 flex-col items-end space-y-4">
|
<div className="absolute hidden md:flex top-1 right-24 flex-col items-end space-y-4">
|
||||||
<motion.img
|
<motion.img
|
||||||
src={circle1} alt="Circle 1"
|
src={circle1} alt="Circle 1"
|
||||||
className="w-auto h-auto"
|
className="w-auto h-auto"
|
||||||
initial={{ opacity: 0, scale: 0.5 }}
|
initial={{ opacity: 0, scale: 0.5 }}
|
||||||
animate={sectionInView ? { opacity: 1, scale: 1 } : {}}
|
animate={sectionInView ? { opacity: 1, scale: 1 } : {}}
|
||||||
transition={{ duration: 0.6, delay: 0.3 }}
|
transition={{ duration: 0.6, delay: 0.3 }}
|
||||||
/>
|
/>
|
||||||
<motion.img
|
<motion.img
|
||||||
src={circle2} alt="Circle 2"
|
src={circle2} alt="Circle 2"
|
||||||
className="w-auto h-auto"
|
className="w-auto h-auto"
|
||||||
initial={{ opacity: 0, scale: 0.5 }}
|
initial={{ opacity: 0, scale: 0.5 }}
|
||||||
animate={sectionInView ? { opacity: 1, scale: 1 } : {}}
|
animate={sectionInView ? { opacity: 1, scale: 1 } : {}}
|
||||||
transition={{ duration: 0.6, delay: 0.5 }}
|
transition={{ duration: 0.6, delay: 0.5 }}
|
||||||
@ -37,7 +37,7 @@ function Kenapa() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Image Section */}
|
{/* Image Section */}
|
||||||
<motion.div
|
<motion.div
|
||||||
ref={textRef}
|
ref={textRef}
|
||||||
className="relative w-full md:w-1/2 p-5 flex justify-center md:ml-14 md:justify-start"
|
className="relative w-full md:w-1/2 p-5 flex justify-center md:ml-14 md:justify-start"
|
||||||
initial={{ opacity: 0, x: -50 }}
|
initial={{ opacity: 0, x: -50 }}
|
||||||
@ -49,10 +49,10 @@ function Kenapa() {
|
|||||||
alt="Woman with Tablet"
|
alt="Woman with Tablet"
|
||||||
className="w-[300px] h-auto md:w-[654.5px] md:h-[609.67px]"
|
className="w-[300px] h-auto md:w-[654.5px] md:h-[609.67px]"
|
||||||
/>
|
/>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
|
|
||||||
{/* Text Section */}
|
{/* Text Section */}
|
||||||
<motion.div
|
<motion.div
|
||||||
ref={listRef}
|
ref={listRef}
|
||||||
className="w-full md:w-[40%] p-6 md:p-10 flex flex-col items-center md:items-start md:mr-28 text-center md:text-left"
|
className="w-full md:w-[40%] p-6 md:p-10 flex flex-col items-center md:items-start md:mr-28 text-center md:text-left"
|
||||||
initial={{ opacity: 0, x: 50 }}
|
initial={{ opacity: 0, x: 50 }}
|
||||||
@ -73,8 +73,8 @@ function Kenapa() {
|
|||||||
"Menciptakan interaksi pelanggan yang lebih relevan dan berkesan.",
|
"Menciptakan interaksi pelanggan yang lebih relevan dan berkesan.",
|
||||||
"Verifikasi dan autentikasi berbasis AI yang memperkuat keamanan data."
|
"Verifikasi dan autentikasi berbasis AI yang memperkuat keamanan data."
|
||||||
].map((text, index) => (
|
].map((text, index) => (
|
||||||
<motion.li
|
<motion.li
|
||||||
key={index}
|
key={index}
|
||||||
className="flex items-center"
|
className="flex items-center"
|
||||||
initial={{ opacity: 0, x: -20 }}
|
initial={{ opacity: 0, x: -20 }}
|
||||||
animate={listInView ? { opacity: 1, x: 0 } : {}}
|
animate={listInView ? { opacity: 1, x: 0 } : {}}
|
||||||
@ -87,8 +87,8 @@ function Kenapa() {
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div ref={buttonRef} className="flex flex-col md:flex-row mt-8 md:mt-20 space-y-4 md:space-y-0 md:space-x-10 w-full">
|
<div ref={buttonRef} className="flex flex-col md:flex-row mt-8 md:mt-20 space-y-4 md:space-y-0 md:space-x-10 w-full">
|
||||||
<motion.button
|
<motion.button
|
||||||
className="flex items-center justify-center w-full md:w-[270px] h-[50px] md:h-[70px] border-2 border-customRed text-customRed md:text-xl font-medium rounded-[14px] hover:bg-white hover:bg-opacity-10 transition"
|
className="flex items-center justify-center w-full md:w-[350px] 2xl:w-[270px] h-[50px] md:h-[70px] border-2 border-customRed text-customRed md:text-xl font-medium rounded-[14px] hover:bg-white hover:bg-opacity-10 transition"
|
||||||
initial={{ opacity: 0, scale: 0.8 }}
|
initial={{ opacity: 0, scale: 0.8 }}
|
||||||
animate={buttonInView ? { opacity: 1, scale: 1 } : {}}
|
animate={buttonInView ? { opacity: 1, scale: 1 } : {}}
|
||||||
transition={{ duration: 0.5, delay: 0.8 }}
|
transition={{ duration: 0.5, delay: 0.8 }}
|
||||||
@ -96,9 +96,10 @@ function Kenapa() {
|
|||||||
<img src={waIcon} alt="WhatsApp Icon" className="mr-2 w-4 h-4 md:w-[30px] md:h-[30px]" />
|
<img src={waIcon} alt="WhatsApp Icon" className="mr-2 w-4 h-4 md:w-[30px] md:h-[30px]" />
|
||||||
Konsultasi Gratis
|
Konsultasi Gratis
|
||||||
</motion.button>
|
</motion.button>
|
||||||
<Link to={"/Contact#form"}>
|
|
||||||
|
<Link to={"/Contact#form"} className="w-full md:w-[270px]">
|
||||||
<motion.button
|
<motion.button
|
||||||
className="w-full md:w-[276px] h-[50px] md:h-[70px] bg-gradient-to-r from-pink-700 to-indigo-600 text-white md:text-xl font-medium rounded-[14px] hover:opacity-90 transition"
|
className="flex items-center justify-center w-full h-[50px] md:h-[70px] bg-gradient-to-r from-pink-700 to-indigo-600 text-white md:text-xl font-medium rounded-[14px] hover:opacity-90 transition"
|
||||||
initial={{ opacity: 0, scale: 0.8 }}
|
initial={{ opacity: 0, scale: 0.8 }}
|
||||||
animate={buttonInView ? { opacity: 1, scale: 1 } : {}}
|
animate={buttonInView ? { opacity: 1, scale: 1 } : {}}
|
||||||
transition={{ duration: 0.5, delay: 1 }}
|
transition={{ duration: 0.5, delay: 1 }}
|
||||||
@ -107,6 +108,7 @@ function Kenapa() {
|
|||||||
</motion.button>
|
</motion.button>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -22,7 +22,7 @@ const CustomerService = () => {
|
|||||||
{/* LEFT SECTION - Informasi */}
|
{/* LEFT SECTION - Informasi */}
|
||||||
<motion.div
|
<motion.div
|
||||||
ref={leftRef}
|
ref={leftRef}
|
||||||
className="w-full md:w-[650px] 2xl:w-[750px] h-auto gap-[29px] text-left md:mt-0 lg: 2xl:ml-[-90px]"
|
className="w-full md:w-[650px] 2xl:w-[750px] h-auto gap-[29px] text-left md:mt-0 lg: 2xl:ml-[-165px]"
|
||||||
initial="hidden"
|
initial="hidden"
|
||||||
animate={leftInView ? "visible" : "hidden"}
|
animate={leftInView ? "visible" : "hidden"}
|
||||||
variants={fadeInLeft}
|
variants={fadeInLeft}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user