=== FILE: ConfigView.jsx === === FILE: FacturacionView.jsx === === FILE: InicioView.jsx === Line 34: const menuItems = data.menu || data.menuItems || []; const tables = data.tables || []; === FILE: LoginView.jsx === === FILE: MenuView.jsx === Line 661: menuItems = [], onAddCategory, onRenameCategory, onDeleteCategory, showToast }) => { const [newCatName, setNewCatName] = useState(""); Line 1455: menuItems = [], onSaveProduct, onDeleteProduct, onToggleActive, onQuickAdjustStock, onOpenSqliteRecords, onRenameCategory, onDeleteCategory, showToast }) => { const [selectedCategoryTab, setSelectedCategoryTab] = useState("Todos"); Line 1516: const allCategoryTabs = useMemo(() => { return ["Todos", ...allAvailableCategories, ...(hasUncategorized ? ["Sin Categoría"] : [])]; Line 1853: menuItems={menuItems} onAddCategory={handleAddCategory} onRenameCategory={handleRenameCategory} onDeleteCategory={handleDeleteCategory} showToast={showToast} /> ); }; // ────────────────────────────────────────────────────────────────────────── // VISTA: CONFIGURACIÓN INTEGRAL & FACTURACIÓN ELECTRÓNICA SUNAT // ────────────────────────────────────────────────────────────────────────── === FILE: MesasView.jsx === === FILE: PersonalView.jsx === Line 550: className={`px-4 py-2 text-xs sm:text-sm font-bold rounded-xl transition-colors ${activeTab === "perfil" ? "bg-orange-500 text-white shadow-md shadow-orange-500/20" : "text-slate-400 hover:text-white" }`} > Datos Personales {/* Content Body */}
{activeTab === "perfil" && (
Line 557: className={`px-4 py-2 text-xs sm:text-sm font-bold rounded-xl transition-colors ${activeTab === "pagos" ? "bg-orange-500 text-white shadow-md shadow-orange-500/20" : "text-slate-400 hover:text-white" }`} > Historial de Pagos ({history.length})
{/* Content Body */}
{activeTab === "perfil" && (

Información de Contacto

Teléfono Móvil:

{employee.phone || "No registrado"}

Line 564: className={`px-4 py-2 text-xs sm:text-sm font-bold rounded-xl transition-colors ${activeTab === "horario" ? "bg-orange-500 text-white shadow-md shadow-orange-500/20" : "text-slate-400 hover:text-white" }`} > Jornada & Horario
{/* Content Body */}
{activeTab === "perfil" && (

Información de Contacto

Teléfono Móvil:

{employee.phone || "No registrado"}

Correo Electrónico:

{employee.email || "No registrado"}

Dirección Residencial:

{employee.address || "Av. Las Flores 341, Lima"}

Line 574: {activeTab === "perfil" && (

Información de Contacto

Teléfono Móvil:

{employee.phone || "No registrado"}

Correo Electrónico:

{employee.email || "No registrado"}

Dirección Residencial:

{employee.address || "Av. Las Flores 341, Lima"}

Condiciones Laborales

Sueldo Base Mensual:

{formatCurrency(employee.baseSalary)}

Line 610: {activeTab === "pagos" && (
{/* Barra de progreso de sueldo */}
Sueldo Pagado este Periodo {percentPaid}% ({formatCurrency(totalPaid)} / {formatCurrency(baseSalary)})
Pendiente: {formatCurrency(pendingAmount)}
{/* Historial de pagos */} Line 662: {activeTab === "horario" && (

Jornada Semanal Asignada

{employee.schedule ? (
{Object.entries(employee.schedule).map(([day, val]) => (