import React, { useState, useEffect } from 'react'; // --- DESIGN TOKENS & GLOBALS --- const COLORS = { primary: '#351C42', // Deep Velvet Purple secondary: '#581D32', // Royal Burgundy accent: '#123F35', // Emerald Velvet gold: '#C5A46D', // Luxury Gold ivory: '#F5F0E8', // Warm Ivory plum: '#1B1420' // Midnight Plum }; const PHONE_NUMBER = "60193226196"; // --- DATA LISTS --- const HEAD_SPA_PACKAGES = [ { id: 'hs1', name: 'Basic Head Spa', price: 'RM69', desc: 'A refreshing introductory head spa treatment for scalp health.' }, { id: 'hs2', name: 'Sakura Head Spa', price: 'RM169', originalPrice: 'RM199', desc: 'Premium treatment with deep cleansing and relaxing massage.' }, { id: 'hs3', name: 'Fuji Head Spa', price: 'RM249', desc: 'Luxurious extended treatment focusing on scalp rejuvenation and stress relief.' }, { id: 'hs4', name: 'Imperial Head Spa', price: 'RM329', desc: 'The ultimate royal velvet experience. Complete scalp, neck, and shoulder therapy.' } ]; const MASSAGES = [ { name: 'Urutan Full Body', price: 'RM100' }, { name: 'Hot Stone Massage', price: 'RM160' }, { name: 'Urutan Postnatal', price: 'RM130' }, { name: 'Urutan Moden GenQi', price: 'RM150 / RM190' }, { name: 'Sport Massage', price: 'RM160' }, { name: 'Urutan Regangan', price: 'RM160' }, { name: 'Urutan Remedi', price: 'RM160' }, { name: 'Half Body Massage', price: 'RM65' } ]; const FACIALS = [ { name: 'Facial Basic', price: 'RM50' }, { name: 'Facial Deep Cleansing / Acne', price: 'RM100' }, { name: 'Facial Dermabrasion', price: 'RM100' }, { name: 'Facial Picolaser', price: 'RM150' }, { name: 'Facial Dermapen', price: 'RM150' } ]; const AESTHETICS = [ { name: 'Skin Booster', price: 'RM200' }, { name: 'PRP', price: 'RM150' }, { name: 'Mati Akar Jeragat', price: 'RM200' }, { name: 'PRP + Mati Akar Jeragat', price: 'RM330' } ]; const SPA_POSTERS = [ "https://platform-bcl.bsb-cdn.com/media/2026/10/ls8CdrWlZ2nPLyiBX0Bsd2upiD8OfSIOOt6flhpx.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/IkNjQjRNLguN7Qwk2Ovn1x0ikFuiByc7vxdzKjUn.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/SQMcL4Ju4uyfoqQjrVKxBlTFBS7bhYHYkOnsjzut.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/p4dfA3tZErZDXxprGpGYExJCYQjJgt2lhcMtGV5B.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/C1Nn6LNrD0wXqurL629TPYctysLTClYpFGYmvQqQ.jpg" ]; const UNIFORM_CATEGORIES = [ "DSA Wanita — Pembantu Pembedahan Pergigian", "Sister (SR/KUP)", "Juruteknik Pergigian / Nurse / Sister / Matron", "PPEM Wanita — Pembantu Penyediaan Makanan", "Pembantu Pegawai Perubatan (PPP/MA)", "Jururawat (SN/JM)", "Inspektor Kesihatan Wanita (IK)", "Pregnant / Maternity Uniform", "Pembantu Perawatan Kesihatan (PPK)" ]; const UNIFORM_IMAGES = [ "https://platform-bcl.bsb-cdn.com/media/2026/10/gPHpD0ajEzqB7d1ejyL1eRA1CtXEy6VbBxVQRFnk.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/keGXJc60S5S8FoCbuXCWAIq3OWEZRHHVNwWU1Gua.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/uL0f5zXsU1koBT9weXDEiUKL3l8WCsdmHIpTbKJG.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/EOqNghyN6e1Cqjts5zUkrKwTXXanHjhaxwGNhVMi.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/7uSo1MQtdLbf8PyfBhW1srfNs7S9Gv6F6d5iLxje.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/MfLmlLpBDTBViICxq0tO2QMo3lXZYB3w7C3aYiKa.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/9sWQi5c7d9UHz14mwOYENEleQqZmTkn1WQdC2DVQ.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/S8bUNxuD4cc8BpUEFI4uVsxogPf3awYI6Yb9Wj7w.jpg", "https://platform-bcl.bsb-cdn.com/media/2026/10/5mJ58bKLLD1WkiJ9h7zzVIjNqSPfOERIcCnlAgxk.jpg" ]; const MOCK_UNIFORMS = UNIFORM_CATEGORIES.map((cat, index) => ({ id: `u${index + 1}`, name: `Uniform ${cat.split('—')[0].trim()}`, category: cat, price: 'TANYA HARGA', colors: ['Putih', 'Biru', 'Hitam'], sizes: ['XS', 'S', 'M', 'L', 'XL', 'XXL'], image: UNIFORM_IMAGES[index] })); // --- COMPONENTS --- // 1. Icons (Inline SVG to guarantee availability) const IconChevronDown = () => ; const IconMenu = () => ; const IconX = () => ; const IconWhatsApp = () => ; // 2. Shared UI Components const Button = ({ children, variant = 'primary', onClick, className = '' }) => { const base = "px-6 py-3 rounded-md transition-all duration-300 font-medium tracking-wide"; const variants = { primary: "bg-[#C5A46D] text-[#1B1420] hover:bg-yellow-600 shadow-lg", secondary: "bg-transparent border-2 border-[#C5A46D] text-[#C5A46D] hover:bg-[#C5A46D] hover:text-[#1B1420]", dark: "bg-[#351C42] text-[#F5F0E8] hover:bg-[#1B1420] shadow-md" }; return ( ); }; const SectionHeading = ({ title, subtitle, dark = false }) => (

{title}

{subtitle &&

{subtitle}

}
); // 3. Modals & Widgets const FloatingWhatsApp = () => { const [isOpen, setIsOpen] = useState(false); const openWA = (type) => { let msg = type === 'spa' ? "Hi Addinmedics Beauty Lounge, saya nak tanya tentang servis spa." : "Hi Addinmedics Boutique, saya nak tanya tentang uniform."; window.open(`https://wa.me/${PHONE_NUMBER}?text=${encodeURIComponent(msg)}`, '_blank'); setIsOpen(false); }; return (
{isOpen && (
How can we help you?
)}
); }; // 4. Main Views export default function App() { const [currentRoute, setCurrentRoute] = useState('home'); // home, beauty, uniform, admin const [subRoute, setSubRoute] = useState('home'); // for specific pages within sections const [selectedProduct, setSelectedProduct] = useState(null); // Global styles injection for fonts useEffect(() => { const style = document.createElement('style'); style.innerHTML = ` @import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;600;700&family=Inter:wght@300;400;500;600&display=swap'); body { font-family: 'Inter', sans-serif; background-color: ${COLORS.ivory}; color: #333; } h1, h2, h3, h4, h5, h6, .font-serif { font-family: 'Cormorant Garamond', serif; } .bg-velvet { background: linear-gradient(135deg, ${COLORS.primary} 0%, ${COLORS.plum} 100%); } .text-gold { color: ${COLORS.gold}; } .animate-fade-in { animation: fadeIn 0.8s ease-out forwards; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .hide-scrollbar::-webkit-scrollbar { display: none; } `; document.head.appendChild(style); return () => document.head.removeChild(style); }, []); const navigate = (main, sub = 'home', product = null) => { window.scrollTo(0, 0); setCurrentRoute(main); setSubRoute(sub); setSelectedProduct(product); }; return (
{currentRoute !== 'home' && ( )}
{currentRoute === 'home' && } {currentRoute === 'beauty' && ( )} {currentRoute === 'uniform' && ( )} {currentRoute === 'admin' && }
{currentRoute !== 'home' &&
); } // --- NAVIGATION & FOOTER --- const Navbar = ({ currentRoute, navigate }) => { const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const isBeauty = currentRoute === 'beauty'; const navLinks = isBeauty ? [ { label: 'Home', route: 'home' }, { label: 'Head Spa', route: 'head-spa' }, { label: 'Massage', route: 'massage' }, { label: 'Facials', route: 'facial' }, { label: 'Packages', route: 'packages' }, { label: 'All Treatments', route: 'all' }, ] : [ { label: 'Home', route: 'home' }, { label: 'Catalogue', route: 'catalog' } ]; return ( ); }; const Footer = () => ( ); // --- 1. MAIN HOMEPAGE --- const MainHome = ({ navigate }) => { return (
{/* Background aesthetic overlay */}

WELCOME TO ADDINMEDICS

Two Distinct Experiences. One Trusted Brand.

Discover premium beauty and wellness experiences alongside professional healthcare uniforms, thoughtfully brought together under ADDINMEDICS.

{/* Card 1: Beauty */}
Addinmedics Beauty Lounge Logo

BEAUTY LOUNGE

Beauty • Confidence • Care

Experience luxurious head spa treatments, therapeutic massages, professional facial care and complete wellness services.

{/* Card 2: Uniform */}
Addinmedics Boutique Logo

BOUTIQUE

Your Nursing Medical Outfit

Discover professional healthcare uniforms designed for comfort, confidence and everyday performance.

{/* Hidden Admin Entry */}
); }; // --- 2. BEAUTY LOUNGE SECTION --- const BeautyLounge = ({ subRoute, navigate }) => { useEffect(() => { window.scrollTo(0, 0); }, [subRoute]); const renderContent = () => { switch (subRoute) { case 'home': return ; case 'head-spa': return ; case 'massage': return ; case 'facial': return ; case 'packages': return ; case 'all': return ; default: return ; } }; return (
{renderContent()}
); }; const BeautyHome = ({ navigate }) => (
{/* Hero Section */}
Addinmedics Beauty Lounge Logo

ESCAPE INTO LUXURY.
REDISCOVER YOURSELF.

Premium Head Spa, Therapeutic Massage & Facial Experiences in Kuala Terengganu.

Nikmati pengalaman spa eksklusif yang direka untuk membantu anda berehat, menyegarkan diri dan memanjakan tubuh serta wajah.

{/* Featured Services Quick Links */}
{[ { title: 'Japanese Head Spa', route: 'head-spa', img: 'https://images.unsplash.com/photo-1519823551278-64ac92734fb1?q=80&w=600&auto=format&fit=crop' }, { title: 'Therapeutic Massage', route: 'massage', img: 'https://images.unsplash.com/photo-1544161515-4ab6ce6db874?q=80&w=600&auto=format&fit=crop' }, { title: 'Facial & Aesthetics', route: 'facial', img: 'https://images.unsplash.com/photo-1570172619644-dfd03ed5d881?q=80&w=600&auto=format&fit=crop' } ].map((s, i) => (
navigate('beauty', s.route)} className="group cursor-pointer bg-white rounded-xl overflow-hidden shadow-lg hover:shadow-2xl transition-all">
{s.title}

{s.title}

Discover More

))}
); const BeautyHeadSpa = () => (
{/* Featured Promo (Editable via mock admin) */}

SPECIAL PROMOTION

Sakura Head Spa — Limited Time Offer

RM99 RM169

{HEAD_SPA_PACKAGES.map((pkg, idx) => (

{pkg.name}

{pkg.price}
{pkg.originalPrice &&
{pkg.originalPrice}
}

{pkg.desc}

))}
); const BeautyMassage = () => (
Massage
{MASSAGES.map((m, i) => (

{m.name}

{m.price}
))}
); const BeautyFacial = () => (

✨ SPECIAL: FREE LED TREATMENT WITH FACIAL SERVICES ✨

{/* Facials */}

Facial Services

{FACIALS.map((f, i) => (
{f.name}
{f.price}
))}
{/* Aesthetics */}

Aesthetic Services

* Consultations available to ensure the best care for your skin.

{AESTHETICS.map((a, i) => (
{a.name}
{a.price}
))}
); const BeautyPackages = () => (
{SPA_POSTERS.map((poster, idx) => (
{`Spa
))}
); const BeautyAllTreatments = () => { const CATEGORIES = [ { title: "Hair Spa & Saloon", items: [ { name: "Cuci Rambut Biasa (Add-On)", price: "RM15" }, { name: "Mandian Kulit Kepala", price: "RM35" }, { name: "Normal Treatment", price: "RM50" }, { name: "Treatment Kelemumur", price: "RM70" }, { name: "Treatment Keratin", price: "From RM80" }, { name: "Treatment Keratin Brazilian", price: "From RM150" }, { name: "Rebonding / Relaxing", price: "From RM50" }, { name: "Warna / Highlight", price: "From RM50" }, { name: "Warna + Bleaching", price: "From RM100" } ] }, { title: "Beauty & Wellness", items: [ { name: "Sauna", price: "RM50" }, { name: "Back Body Acne Treatment", price: "RM100" }, { name: "Medi (Tangan)", price: "RM35" }, { name: "Pedic (Kaki)", price: "RM50" }, { name: "Combo Medi + Pedic", price: "RM79" }, { name: "Foot Spa & Relaxing", price: "RM100" }, { name: "Totok Wajah", price: "RM80" }, { name: "Body Scrub / Body Bleach", price: "RM100" } ] }, { title: "Lash & Brow Studio", items: [ { name: "Korean Eyelash Perm", price: "RM55" }, { name: "Brow Laminating", price: "RM59" }, { name: "Hybrid Dye / Henna + Mapping", price: "RM55" }, { name: "Brow Bleach + Mapping", price: "RM55" }, { name: "Brow Sculpture", price: "RM89" } ] } ]; return (
{CATEGORIES.map((cat, idx) => (

{cat.title}

    {cat.items.map((item, i) => (
  • {item.name} {item.price}
  • ))}
))}

* All prices are subject to change. Please contact us for the latest information and bookings.

); }; // --- 3. UNIFORM BOUTIQUE SECTION --- const UniformBoutique = ({ subRoute, navigate, product }) => { useEffect(() => { window.scrollTo(0, 0); }, [subRoute, product]); const renderContent = () => { switch (subRoute) { case 'home': return ; case 'catalog': return ; case 'product': return ; default: return ; } }; return (
{renderContent()}
); }; const UniformHome = ({ navigate }) => (
Addinmedics Boutique Logo

PROFESSIONAL UNIFORMS.
EXCEPTIONAL CONFIDENCE.

Premium Nursing & Medical Uniforms for Healthcare Professionals. Designed for everyday comfort and practicality.

Premium Fabric

Breathable, durable materials that withstand frequent washing.

Perfect Fit

Tailored designs offering professional appearance without restricting movement.

Ministry Standard

Compliant with healthcare standards across various departments.

); const UniformCatalog = ({ navigate }) => (
{MOCK_UNIFORMS.map((u) => (
navigate('uniform', 'product', u)}> {u.name}
{u.price}

{u.category.split('—')[0]}

{u.category}

))}
); const UniformProductDetail = ({ product, navigate }) => { const [selectedColor, setSelectedColor] = useState(product?.colors[0]); const [selectedSize, setSelectedSize] = useState(product?.sizes[2]); // Default M const [quantity, setQuantity] = useState(1); if (!product) return
Product not found.
; const handleOrder = () => { const msg = `Hi Addinmedics Boutique, saya berminat untuk order:\n\nProduk: ${product.category}\nWarna: ${selectedColor}\nSaiz: ${selectedSize}\nKuantiti: ${quantity} set\n\nBoleh saya dapatkan harga dan maklumat stok?`; window.open(`https://wa.me/${PHONE_NUMBER}?text=${encodeURIComponent(msg)}`, '_blank'); }; return (
{/* Images */}
{product.name}
{/* Details */}

ADDINMEDICS BOUTIQUE

{product.category}

{product.price}

Color: {selectedColor}

{product.colors.map(c => ( ))}

Size: {selectedSize}

{product.sizes.map(s => ( ))}

Quantity

* Final price and stock availability will be confirmed via WhatsApp by our team.

); }; // --- 4. ADMIN MOCKUP SECTION --- const AdminMockup = ({ navigate }) => { const [activeTab, setActiveTab] = useState('beauty'); return (

Addinmedics Admin Dashboard

{activeTab === 'beauty' && (

Manage Beauty Treatments

Edit prices, update descriptions, and add new services.

{HEAD_SPA_PACKAGES.map((p, i) => ( ))} {MASSAGES.slice(0,3).map((p, i) => ( ))}
Service Name Category Price Actions
{p.name} Head Spa
{p.name} Massage
)} {activeTab === 'uniform' && (

Manage Uniform Inventory

{MOCK_UNIFORMS.map((u, i) => ( ))}
Category Price Colors Actions
{u.category} {u.colors.join(', ')}
)} {activeTab === 'promos' && (

Active Promotions

Sakura Head Spa RM99

Active until Dec 31, 2026. Displaying on Head Spa page.

FREE LED Treatment with Facial

Currently active on Facial page.

)}
); };