| class CustomSidebar extends HTMLElement { | |
| connectedCallback() { | |
| this.attachShadow({ mode: 'open' }); | |
| this.shadowRoot.innerHTML = ` | |
| <style> | |
| aside { | |
| width: 240px; | |
| background: #ffffff; | |
| padding: 1.5rem 0; | |
| height: 100vh; | |
| position: fixed; | |
| left: 0; | |
| top: 0; | |
| border-right: 1px solid #e5e7eb; | |
| box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); | |
| } | |
| .logo { | |
| padding: 0 1.5rem 1.5rem; | |
| border-bottom: 1px solid #f3f4f6; | |
| } | |
| .logo img { | |
| height: 32px; | |
| } | |
| .nav-menu { | |
| padding: 0.5rem 0; | |
| } | |
| .nav-item { | |
| padding: 0.5rem 1.5rem; | |
| margin: 0.25rem 0; | |
| display: flex; | |
| align-items: center; | |
| color: #4b5563; | |
| cursor: pointer; | |
| transition: all 0.2s; | |
| } | |
| .nav-item:hover { | |
| background: #f3f4f6; | |
| color: #3b82f6; | |
| } | |
| .nav-item.active { | |
| background: #eff6ff; | |
| color: #3b82f6; | |
| } | |
| .nav-icon { | |
| margin-right: 0.75rem; | |
| width: 20px; | |
| height: 20px; | |
| } | |
| .nav-text { | |
| font-size: 0.95rem; | |
| } | |
| </style> | |
| <aside> | |
| <div class="logo"> | |
| <img src="http://static.photos/technology/320x240/10" alt="云端车联管家"> | |
| </div> | |
| <div class="nav-menu"> | |
| <div class="nav-item active"> | |
| <i data-feather="home" class="nav-icon"></i> | |
| <span class="nav-text">总览</span> | |
| </div> | |
| <div class="nav-item"> | |
| <i data-feather="truck" class="nav-icon"></i> | |
| <span class="nav-text">车辆管理</span> | |
| </div> | |
| <div class="nav-item"> | |
| <i data-feather="cpu" class="nav-icon"></i> | |
| <span class="nav-text">TCU设备</span> | |
| </div> | |
| <div class="nav-item"> | |
| <i data-feather="monitor" class="nav-icon"></i> | |
| <span class="nav-text">实时监控</span> | |
| </div> | |
| <div class="nav-item"> | |
| <i data-feather="upload" class="nav-icon"></i> | |
| <span class="nav-text">OTA升级</span> | |
| </div> | |
| <div class="nav-item"> | |
| <i data-feather="settings" class="nav-icon"></i> | |
| <span class="nav-text">配置中心</span> | |
| </div> | |
| <div class="nav-item"> | |
| <i data-feather="file-text" class="nav-icon"></i> | |
| <span class="nav-text">日志管理</span> | |
| </div> | |
| </div> | |
| </aside> | |
| `; | |
| } | |
| } | |
| customElements.define('custom-sidebar', CustomSidebar); |