diff --git a/assets/css/styles.css b/assets/css/styles.css
index 4cff53b..46be704 100644
--- a/assets/css/styles.css
+++ b/assets/css/styles.css
@@ -89,8 +89,6 @@ body {
/* ── Cabecera ─────────────────────────────────────────── */
.sidebar-header {
- padding: 20px 20px 16px;
- text-align: center;
border-bottom: 1px solid rgba(255, 255, 255, 0.12);
background: rgba(0, 0, 0, 0.15);
backdrop-filter: blur(4px);
@@ -99,17 +97,6 @@ body {
flex-shrink: 0;
}
-.sidebar-header h4 {
- font-size: 1rem;
- font-weight: 700;
- letter-spacing: 0.02em;
- margin: 0;
- color: #fff;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
/* ── Lista de menú ────────────────────────────────────── */
.sidebar-menu {
list-style: none;
diff --git a/shared/components/sidebar.php b/shared/components/sidebar.php
index 10e3f26..0f629e4 100644
--- a/shared/components/sidebar.php
+++ b/shared/components/sidebar.php
@@ -26,23 +26,33 @@ if (!class_exists('ModuleRegistry', false)) {
}
}
-// ── Brand color desde DB (si no fue inyectado ya por Layout.php) ─────────────
+// ── Brand color + logo desde DB ──────────────────────────────────────────────
if (!defined('_SIDEBAR_BRAND_INJECTED')) {
define('_SIDEBAR_BRAND_INJECTED', true);
$_sb_brand = '#1565c0';
$_sb_brand_dark = '#0d47a1';
+ $_sb_logo = '';
+ $_sb_lab_nombre = '';
try {
if (class_exists('Database', false)) {
- $_sb_row = Database::getInstance()->fetch("SELECT valor FROM lab_config WHERE clave = 'doc_color'");
- if ($_sb_row && preg_match('/^#[0-9a-fA-F]{3,8}$/', $_sb_row['valor'])) {
- $_sb_brand = $_sb_row['valor'];
- $_sb_hex = ltrim($_sb_brand, '#');
- $_sb_brand_dark = sprintf('#%02x%02x%02x',
- max(0, hexdec(substr($_sb_hex, 0, 2)) - 40),
- max(0, hexdec(substr($_sb_hex, 2, 2)) - 40),
- max(0, hexdec(substr($_sb_hex, 4, 2)) - 40)
- );
+ $__cfgs = Database::getInstance()->fetchAll(
+ "SELECT clave, valor FROM lab_config WHERE clave IN ('doc_color','doc_logo_base64','empresa_nombre')"
+ );
+ foreach ($__cfgs as $__r) {
+ if ($__r['clave'] === 'doc_color' && preg_match('/^#[0-9a-fA-F]{3,8}$/', $__r['valor'])) {
+ $_sb_brand = $__r['valor'];
+ } elseif ($__r['clave'] === 'doc_logo_base64' && !empty($__r['valor'])) {
+ $_sb_logo = $__r['valor'];
+ } elseif ($__r['clave'] === 'empresa_nombre') {
+ $_sb_lab_nombre = $__r['valor'];
+ }
}
+ $_sb_hex = ltrim($_sb_brand, '#');
+ $_sb_brand_dark = sprintf('#%02x%02x%02x',
+ max(0, hexdec(substr($_sb_hex, 0, 2)) - 40),
+ max(0, hexdec(substr($_sb_hex, 2, 2)) - 40),
+ max(0, hexdec(substr($_sb_hex, 4, 2)) - 40)
+ );
}
} catch (\Throwable $_) {}
echo "\n";
@@ -75,9 +85,7 @@ $_isActive = function (string $route) use ($_current_script): string {
return $routeBase === $_current_script ? ' active' : '';
};
-// Título del sidebar: prioridad al nombre definido por el módulo, luego el genérico
-$_sidebar_title = $SIDEBAR_TITLE ?? $GLOBALS['_LAYOUT_TITLE'] ?? 'Panel ERP';
-$_sidebar_icon = $SIDEBAR_ICON ?? $GLOBALS['_LAYOUT_ICON'] ?? 'fas fa-th-large';
+$_sb_display_name = $_sb_lab_nombre ?: 'Panel ERP';
// Nombre del usuario para el pie del sidebar
$_user_name = $_SESSION['admin_user']['full_name']
@@ -103,10 +111,15 @@ $_base = defined('APP_URL') ? rtrim(APP_URL, '/') : '';