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, '/') : '';