| class CustomSidebar extends HTMLElement { | |
| connectedCallback() { | |
| this.attachShadow({ mode: 'open' }); | |
| this.shadowRoot.innerHTML = ` | |
| <style> | |
| .sidebar { | |
| width: 250px; | |
| height: 100%; | |
| background-color: var(--sidebar-bg, #1E293B); | |
| color: var(--sidebar-text, #F8FAFC); | |
| border-right: 1px solid var(--sidebar-border, #334155); | |
| overflow-y: auto; | |
| } | |
| .sidebar-header { | |
| padding: 12px 16px; | |
| font-weight: 600; | |
| border-bottom: 1px solid var(--sidebar-border, #334155); | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| } | |
| .sidebar-item { | |
| padding: 8px 16px 8px 32px; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| user-select: none; | |
| } | |
| .sidebar-item:hover { | |
| background-color: var(--sidebar-hover, #334155); | |
| } | |
| .sidebar-item.active { | |
| background-color: var(--sidebar-active, #3B82F6); | |
| } | |
| .sidebar-group { | |
| margin: 8px 0; | |
| } | |
| .sidebar-group-title { | |
| padding: 8px 16px; | |
| font-size: 0.75rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| color: var(--sidebar-group-text, #94A3B8); | |
| } | |
| .folder-icon { | |
| color: #F59E0B; | |
| } | |
| .file-icon { | |
| color: #60A5FA; | |
| } | |
| </style> | |
| <div class="sidebar"> | |
| <div class="sidebar-header"> | |
| <span>Project</span> | |
| <i data-feather="chevron-down" class="w-4 h-4"></i> | |
| </div> | |
| <div class="sidebar-group"> | |
| <div class="sidebar-group-title">MyApplication</div> | |
| <div class="sidebar-item active"> | |
| <i data-feather="file" class="file-icon"></i> | |
| <span>MainActivity.kt</span> | |
| </div> | |
| <div class="sidebar-item"> | |
| <i data-feather="file" class="file-icon"></i> | |
| <span>AndroidManifest.xml</span> | |
| </div> | |
| </div> | |
| <div class="sidebar-group"> | |
| <div class="sidebar-group-title">res</div> | |
| <div class="sidebar-item"> | |
| <i data-feather="folder" class="folder-icon"></i> | |
| <span>layout</span> | |
| </div> | |
| <div class="sidebar-item"> | |
| <i data-feather="folder" class="folder-icon"></i> | |
| <span>values</span> | |
| </div> | |
| <div class="sidebar-item"> | |
| <i data-feather="folder" class="folder-icon"></i> | |
| <span>drawable</span> | |
| </div> | |
| </div> | |
| <div class="sidebar-group"> | |
| <div class="sidebar-group-title">Gradle Scripts</div> | |
| <div class="sidebar-item"> | |
| <i data-feather="file" class="file-icon"></i> | |
| <span>build.gradle (Module)</span> | |
| </div> | |
| <div class="sidebar-item"> | |
| <i data-feather="file" class="file-icon"></i> | |
| <span>build.gradle (Project)</span> | |
| </div> | |
| </div> | |
| </div> | |
| `; | |
| } | |
| } | |
| customElements.define('custom-sidebar', CustomSidebar); |