// assets/js/pages/manager/ManagerApp.js const { useState, useEffect } = React; const ManagerApp = () => { const state = useManagerState(); const handlers = useManagerHandlers(state); const { user, setUser, activeTab, setActiveTab, stats, showDetailModal, setShowDetailModal, selectedItem, showVerifyModal, setShowVerifyModal, selectedClaim, toast, setToast, showCloseCaseModal, setShowCloseCaseModal, closeCaseData, setCloseCaseData, loading, showReportFoundModal, setShowReportFoundModal, photoPreview, setPhotoPreview, showManualClaimModal, setShowManualClaimModal, selectedItemForClaim, setSelectedItemForClaim, showApproveModal, setShowApproveModal, } = state; const { loadData, handleApproveClaim, handleRejectClaim, handleCloseCase, submitCloseCase, submitReportFound, handlePhotoChange, handleLogout, submitApproveClaim, } = handlers; useEffect(() => { if (!AuthUtils.checkAuthAndRedirect("manager")) return; const currentUser = AuthUtils.getCurrentUser(); setUser(currentUser); loadData(); }, []); useEffect(() => { if (activeTab === "claims") { handlers.loadClaims(); } }, [activeTab]); return (

Dashboard Manager

Kelola barang temuan dan verifikasi klaim

{/* Stats */}
{/* Tabs */}
{/* Tab Content */} {activeTab === "items" && ( )} {activeTab === "lost-items" && ( )} {activeTab === "claims" && ( )} {/* Modals */} setShowDetailModal(false)} item={selectedItem} /> setShowVerifyModal(false)} claim={selectedClaim} onApprove={handleApproveClaim} onReject={handleRejectClaim} onCloseCase={handleCloseCase} /> setShowCloseCaseModal(false)} claim={selectedClaim} closeCaseData={closeCaseData} setCloseCaseData={setCloseCaseData} onSubmit={submitCloseCase} loading={loading} /> { setShowReportFoundModal(false); setPhotoPreview(null); }} categories={state.categories} onSubmit={submitReportFound} loading={loading} photoPreview={photoPreview} onPhotoChange={(e) => handlePhotoChange(e)} /> { state.setShowMatchLostItemModal(false); state.setSelectedLostItem(null); }} lostItem={state.selectedLostItem} items={state.items} onSubmit={handlers.submitMatchLostItem} loading={loading} /> setShowApproveModal(false)} onSubmit={submitApproveClaim} loading={loading} /> { setShowManualClaimModal(false); setSelectedItemForClaim(null); }} item={selectedItemForClaim} onSubmit={handlers.submitManualClaim} loading={loading} /> {/* Toast */} {toast && ( setToast(null)} /> )}
); }; ReactDOM.render(, document.getElementById("root"));