(function() { // 1. IMPORT DEPENDENCIES (Dari window global yang sudah dimuat sequential loader) const { AppProvider, useApp } = window; // Dari Context const { LayoutPublic, LayoutConsole } = window; // Dari Layouts const { ViewAuth, ViewHome, ViewCollab, ViewMarket, ViewConsoleDash, ViewConsoleFilms } = window; // Dari Views // 2. MAIN APP COMPONENT const CFFApp = () => { const { activeTab, user } = useApp(); // State lokal untuk navigasi internal Console (Dashboard vs Films vs Settings) // Default ke 'dash' saat pertama buka console const [consolePage, setConsolePage] = React.useState('dash'); // --- ROUTING LOGIC (The Switch) --- // A. AUTH VIEW (Login Page) - Standalone, No Layout if (activeTab === 'auth') { return ; } // B. CONSOLE VIEW (Admin/Sineas Area) - Menggunakan LayoutConsole if (activeTab === 'console') { // Role Guard Tambahan (Defense in Depth) if (!user.canAccessConsole) { return (

Akses Ditolak

Akun Anda tidak memiliki izin untuk mengakses Console.

); } return ( {consolePage === 'dash' && } {consolePage === 'films' && } {consolePage === 'settings' &&
Modul Pengaturan (Coming Soon)
}
); } // C. PUBLIC VIEW (Visitor Area) - Menggunakan LayoutPublic // Default view untuk 'home', 'collab', 'market' return ( {activeTab === 'home' && } {activeTab === 'collab' && } {activeTab === 'market' && } ); }; // 3. ROOT MOUNTING const rootElement = document.getElementById('root'); if (rootElement) { const root = ReactDOM.createRoot(rootElement); // Bungkus App dengan Provider Context agar state global tersedia root.render( ); // Trigger Lucide Icons (Fallback jika ada ikon statis di HTML) if (window.lucide) { setTimeout(() => window.lucide.createIcons(), 100); } console.log("🚀 CFF Hub React App Mounted Successfully."); } else { console.error("❌ Root element #root not found. React failed to mount."); } })();