const { useState, useEffect } = React; const { Scan, History, Settings, Mail, FileSpreadsheet, Sparkles, Database, Check, ShieldCheck } = window.lucide; const OCRScanner = window.OCRScanner; const ScanHistory = window.ScanHistory; const EmailLogsPanel = window.EmailLogsPanel; const SettingsPanel = window.SettingsPanel; function App() { const [activeTab, setActiveTab] = useState('scan'); const [records, setRecords] = useState([]); const [settings, setSettings] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { fetchHistory(); fetchSettings(); }, []); const fetchHistory = async () => { try { const res = await fetch('api.php?action=history'); if (res.ok) { const text = await res.text(); try { const data = JSON.parse(text); setRecords(data); } catch (jsonErr) { console.error('Expected JSON from /api/history but got HTML/text:', text.substring(0, 100)); } } } catch (e) { console.error('Failed to fetch history:', e); } finally { setLoading(false); } }; const fetchSettings = async () => { try { const res = await fetch('api/settings'); if (res.ok) { const text = await res.text(); try { const data = JSON.parse(text); setSettings(data); } catch (jsonErr) { console.error('Expected JSON from /api/settings but got HTML/text:', text.substring(0, 100)); } } } catch (e) { console.error('Failed to fetch settings:', e); } }; const handleScanComplete = (newRecords) => { const recordsArray = Array.isArray(newRecords) ? newRecords : [newRecords]; setRecords(prev => [...recordsArray, ...prev]); fetchHistory(); // Sync fully }; const handleRecordDeleted = () => { fetchHistory(); }; const handleRecordSyncUpdated = () => { fetchHistory(); }; return (
{/* Sidebar navigation on the left */} {/* Main content frame on the right */}
{/* Upper sticky header */}

{activeTab === 'scan' && 'ระบบ OCR อัจฉริยะ (AI-Powered Scanner)'} {activeTab === 'history' && 'คลังข้อมูลประวัติออเดอร์ (Audit logs)'} {activeTab === 'emails' && 'จดหมายแจ้งเตือน (Notifications Outbox)'} {activeTab === 'settings' && 'การตั้งค่าเซิร์ฟเวอร์ (Configurations)'}

Premium v2.4

แจ้งเตือนอีเมล

{settings?.emailEnabled ? settings.targetEmail : 'ปิดใช้งาน'}

TH
{/* Scrollable Main Area */}
{/* Welcome Banner Banner */} {activeTab === 'scan' && (

ยินดีต้อนรับสู่ระบบสแกนใบปะหน้าอัจฉริยะ

อัปโหลดไฟล์เอกสาร PDF หรือรูปภาพของคุณเข้าสู่ระบบเพื่อสกัดแยกรายละเอียดสินค้า ราคา และค่ายขนส่ง Lazada, Shopee และ TikTok Shop ออกมารายแถวอย่างอัจฉริยะด้วย AI อัจฉริยะของ Gemini พร้อมส่งตรงเข้า Google Sheet ทันที!

AI SYSTEM ONLINE
)} {/* Sub Panels router with animation */}
); } const root = ReactDOM.createRoot(document.getElementById('root')); root.render();