diff --git a/src/App.js b/src/App.js index 6de1efe..2f171f6 100644 --- a/src/App.js +++ b/src/App.js @@ -42,7 +42,7 @@ function HomePage({ return ( <> - + @@ -159,7 +159,7 @@ function App() { if (unauthorizedUri) localStorage.setItem('unauthorized_uri', unauthorizedUri); // Jika belum login, tampilkan modal login - if (!token) { + if (!token && authorizedUri) { setShowedModal('login'); } // Jika sudah login, tidak langsung fetch di sini — akan diproses saat subscriptions tersedia @@ -179,7 +179,7 @@ function App() { const token = document.cookie.match(/(^| )token=([^;]+)/)?.[2]; if (modalType === 'product' && productId) { - if (!token) { + if (!token && authorizedUri) { setShowedModal('login'); // belum login → tampilkan login modal } else { // sudah login → lanjutkan proses otorisasi saat subscriptions tersedia diff --git a/src/components/HeroSection.js b/src/components/HeroSection.js index f66f2d6..72c9387 100644 --- a/src/components/HeroSection.js +++ b/src/components/HeroSection.js @@ -1,15 +1,7 @@ -// HeroSection.jsx — 2025 refresh using React-Bootstrap + CSS Module -import React from 'react'; import { Container, Row, Col, Button } from 'react-bootstrap'; -import { useNavigate } from 'react-router-dom'; import styles from './HeroSection.module.css'; -const HeroSection = () => { - const navigate = useNavigate(); - - const goProducts = () => navigate('/products'); - const goAcademy = () => navigate('/#services'); - +const HeroSection = ({scrollToProduct, scrollToCourse}) => { return (
@@ -25,10 +17,10 @@ const HeroSection = () => { Kami adalah ekosistem tempat mimpi digital tumbuh dan masa depan dibentuk. Di sinilah semangat belajar bertemu dengan inovasi, dan ide-ide muda diberi ruang untuk berkembang. Lebih dari sekadar tempat, kami adalah rumah bagi talenta, teknologi, dan transformasi. Mari jelajahi dunia digital, bangun karir, dan ciptakan solusi — semua dimulai dari sini.

- -
diff --git a/src/components/ProductCard.js b/src/components/ProductCard.js index 6e86f8d..c47cbb1 100644 --- a/src/components/ProductCard.js +++ b/src/components/ProductCard.js @@ -37,12 +37,12 @@ const ProductCard = ({ product, onCardClick, isCenter, canHover, onCollapse }) = > Detail - + */} diff --git a/src/components/ProductCard.module.css b/src/components/ProductCard.module.css index d4150a5..0d71d61 100644 --- a/src/components/ProductCard.module.css +++ b/src/components/ProductCard.module.css @@ -18,6 +18,8 @@ height: 100%; object-fit: cover; transition: transform 0.45s ease, filter 0.45s ease; + background-color: #f1f1f1; + object-fit: contain; } .canHover:hover .cover { diff --git a/src/components/ProductSection.js b/src/components/ProductSection.js index 9a55a82..3ae6b08 100644 --- a/src/components/ProductSection.js +++ b/src/components/ProductSection.js @@ -42,9 +42,9 @@ const ProductSection = ({ setSelectedProduct, setShowedModal, productSectionRef, // Handle product selection for detail view const handleViewDetail = (product, detailed) => { + console.log(product, detailed) if(detailed) { - setSelectedProduct(product); - setShowedModal('product'); + window.location.href = product.site_landing_url; return; } setSelectedProduct(product); diff --git a/src/components/pages/Kedaimaster.js b/src/components/pages/Kedaimaster.js deleted file mode 100644 index 4ce49d0..0000000 --- a/src/components/pages/Kedaimaster.js +++ /dev/null @@ -1,499 +0,0 @@ -import React from 'react'; - -const KedaiMasterLanding = () => { - const styles = { - container: { - fontFamily: 'Arial, sans-serif', - margin: 0, - padding: 0, - background: 'linear-gradient(135deg, #e8f5e8 0%, #f0f8ff 100%)', - minHeight: '100vh' - }, - header: { - display: 'flex', - justifyContent: 'space-between', - alignItems: 'center', - padding: '1rem 2rem', - backgroundColor: 'rgba(255, 255, 255, 0.1)', - backdropFilter: 'blur(10px)' - }, - logo: { - display: 'flex', - alignItems: 'center', - gap: '0.5rem', - fontSize: '1.2rem', - fontWeight: 'bold', - color: '#2c3e50' - }, - nav: { - display: 'flex', - gap: '2rem', - listStyle: 'none', - margin: 0, - padding: 0 - }, - navLink: { - textDecoration: 'none', - color: '#2c3e50', - fontSize: '0.9rem', - transition: 'color 0.3s' - }, - ctaButton: { - backgroundColor: '#4a90e2', - color: 'white', - padding: '0.5rem 1.5rem', - border: 'none', - borderRadius: '25px', - fontSize: '0.9rem', - cursor: 'pointer', - transition: 'transform 0.3s' - }, - hero: { - display: 'flex', - alignItems: 'center', - padding: '4rem 2rem', - maxWidth: '1200px', - margin: '0 auto' - }, - heroContent: { - flex: 1, - paddingRight: '2rem' - }, - heroTitle: { - fontSize: '3rem', - fontWeight: 'bold', - color: '#2c3e50', - marginBottom: '1rem', - lineHeight: '1.2' - }, - heroText: { - fontSize: '1.1rem', - color: '#666', - lineHeight: '1.6', - marginBottom: '2rem' - }, - heroImage: { - flex: 1, - textAlign: 'center' - }, - coffeeIcon: { - fontSize: '8rem', - background: 'linear-gradient(45deg, #ffa726, #ff9800)', - WebkitBackgroundClip: 'text', - WebkitTextFillColor: 'transparent', - padding: '2rem', - borderRadius: '20px', - backgroundColor: 'rgba(255, 167, 38, 0.1)' - }, - features: { - padding: '4rem 2rem', - maxWidth: '1200px', - margin: '0 auto' - }, - featuresTitle: { - textAlign: 'center', - fontSize: '2.5rem', - color: '#2c3e50', - marginBottom: '3rem' - }, - featuresGrid: { - display: 'grid', - gridTemplateColumns: 'repeat(auto-fit, minmax(250px, 1fr))', - gap: '2rem', - marginBottom: '4rem' - }, - featureCard: { - backgroundColor: 'rgba(255, 255, 255, 0.3)', - padding: '2rem', - borderRadius: '15px', - textAlign: 'center', - backdropFilter: 'blur(10px)', - border: '1px solid rgba(255, 255, 255, 0.2)', - transition: 'transform 0.3s' - }, - featureTitle: { - fontSize: '1.3rem', - fontWeight: 'bold', - color: '#2c3e50', - marginBottom: '1rem' - }, - featureText: { - color: '#666', - lineHeight: '1.5' - }, - appShowcase: { - display: 'flex', - alignItems: 'center', - gap: '3rem', - marginTop: '4rem' - }, - appContent: { - flex: 1 - }, - appTitle: { - fontSize: '1.5rem', - fontWeight: 'bold', - color: '#2c3e50', - marginBottom: '1rem' - }, - appText: { - color: '#666', - lineHeight: '1.6' - }, - appImages: { - flex: 1, - position: 'relative', - height: '300px' - }, - phoneScreen: { - width: '200px', - height: '350px', - backgroundColor: 'white', - borderRadius: '25px', - padding: '1rem', - boxShadow: '0 10px 30px rgba(0,0,0,0.2)', - position: 'absolute', - display: 'flex', - flexDirection: 'column', - gap: '0.5rem' - }, - phoneScreen1: { - left: '0', - top: '0', - zIndex: 2 - }, - phoneScreen2: { - right: '0', - top: '50px', - zIndex: 1 - }, - screenHeader: { - height: '40px', - backgroundColor: '#f0f0f0', - borderRadius: '10px', - marginBottom: '0.5rem' - }, - screenContent: { - flex: 1, - backgroundColor: '#f8f8f8', - borderRadius: '10px', - padding: '0.5rem' - }, - cta: { - textAlign: 'center', - padding: '4rem 2rem', - backgroundColor: 'rgba(255, 255, 255, 0.2)', - backdropFilter: 'blur(10px)' - }, - ctaTitle: { - fontSize: '2rem', - color: '#2c3e50', - marginBottom: '2rem' - }, - ctaButtonLarge: { - backgroundColor: '#8b4513', - color: 'white', - padding: '1rem 2rem', - border: 'none', - borderRadius: '30px', - fontSize: '1.1rem', - cursor: 'pointer', - transition: 'transform 0.3s' - }, - pricing: { - padding: '4rem 2rem', - background: 'linear-gradient(135deg, #ffa726 0%, #ff9800 100%)', - textAlign: 'center' - }, - pricingTitle: { - fontSize: '2.5rem', - color: 'white', - marginBottom: '3rem' - }, - pricingCards: { - display: 'grid', - gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))', - gap: '2rem', - maxWidth: '1000px', - margin: '0 auto' - }, - pricingCard: { - backgroundColor: 'rgba(255, 255, 255, 0.95)', - padding: '2rem', - borderRadius: '15px', - position: 'relative' - }, - pricingBadge: { - position: 'absolute', - top: '-10px', - left: '50%', - transform: 'translateX(-50%)', - backgroundColor: '#4caf50', - color: 'white', - padding: '0.5rem 1rem', - borderRadius: '20px', - fontSize: '0.8rem' - }, - pricingPlan: { - fontSize: '1.3rem', - fontWeight: 'bold', - color: '#2c3e50', - marginBottom: '1rem' - }, - pricingPrice: { - fontSize: '2rem', - fontWeight: 'bold', - color: '#4caf50', - marginBottom: '1.5rem' - }, - pricingFeatures: { - listStyle: 'none', - padding: 0, - marginBottom: '2rem' - }, - pricingFeature: { - padding: '0.5rem 0', - color: '#666', - borderBottom: '1px solid #eee' - }, - pricingButton: { - backgroundColor: '#4caf50', - color: 'white', - padding: '0.8rem 2rem', - border: 'none', - borderRadius: '25px', - cursor: 'pointer', - width: '100%', - fontSize: '1rem' - }, - footer: { - background: 'linear-gradient(135deg, #2196f3 0%, #21cbf3 100%)', - color: 'white', - padding: '4rem 2rem 2rem', - position: 'relative', - overflow: 'hidden' - }, - footerWave: { - position: 'absolute', - top: '-50px', - left: 0, - width: '100%', - height: '100px', - background: 'rgba(255, 255, 255, 0.1)', - borderRadius: '50% 50% 0 0' - }, - footerContent: { - display: 'grid', - gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))', - gap: '3rem', - maxWidth: '1200px', - margin: '0 auto', - position: 'relative', - zIndex: 1 - }, - footerSection: { - textAlign: 'left' - }, - footerTitle: { - fontSize: '1.5rem', - marginBottom: '1rem' - }, - footerText: { - lineHeight: '1.6', - opacity: 0.9 - }, - copyright: { - textAlign: 'center', - marginTop: '2rem', - paddingTop: '2rem', - borderTop: '1px solid rgba(255, 255, 255, 0.2)', - opacity: 0.7 - } - }; - - return ( -
- {/* Header */} -
-
- 🏪 - TECHNORAMA -
- - -
- - {/* Hero Section */} -
-
-

Kedai Master

-

- Platform Point of Sale terdepan yang dirancang khusus untuk meningkatkan - kepuasan operational kafe dan restoran milik KM. Dengan sistem yang fleksibel, - terpercaya, dan efisien. -

-
-
-
-
-
- - {/* Features Section */} -
-

Fitur Unggulan

-
-
-

Manajemen Tenant & Kasir

-

- Sistem untuk mengatur dan mengoptimalkan kinerja seluruh tenant. -

-
-
-

QR Pemesanan di Meja

-

- Tamu restoran langsung dan mengoptimalkan waktu pemesanan dan pelayanan. -

-
-
-

Otomatisasi Pesanan & Keuangan

-

- Mengatur operasional anda dengan otomatisasi pesanan dan keuangan. -

-
-
-

Request & Voting Lagu

-

- Tamu dapat meminta lagu untuk diputar di restoran dan memberikan suasana. -

-
-
- - {/* App Showcase */} -
-
-

- Gak perlu repot anti jam kerja yang baik bozen lagi. - Tinggal scan QR yang ada di meja, langsung bisa udah langsung workflow -

-

- © 2025 KEDAIMASTERPBM.COM -

-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-

Desain Menu Modern

-

- Tampilan menu yang familiar, menarik dan mudah dipahami sehingga customer bisa dengan mudah memahami visual yang menarik untuk pengalaman ordering yang maksimal untuk kafe dan restoran masa kini. -

-
-
-
-
-
-
-
-
-
- - {/* CTA Section */} -
-

Siap Tingkatkan Bisnis Anda?

- -
- - {/* Pricing Section */} -
-

OUR PACK KEDAI MASTER

-
-
-
PAKET BASIC
-

Starter Pack

-
Rp 245.000
-
    -
  • 1 user untuk admin
  • -
  • Support via email
  • -
- -
- -
-
PAKET SILVER
-

Business Pack

-
Rp 499.000
-
    -
  • Integrasi Meja & Jemput
  • -
  • All permission & control
  • -
  • Unlimited locations for pemasangan
  • -
- -
- -
-
PAKET GOLD
-

Enterprise Pack

-
Rp 849.000
-
    -
  • All benefits unlimited fitures &
  • -
  • Multi outlet & multi users
  • -
  • Integrasi fitur locations
  • -
- -
-
-
- - {/* Footer */} - -
- ); -}; - -export default KedaiMasterLanding; \ No newline at end of file