WoTak / components /sidebar.js
MoShow's picture
update app with this and ensure all components and API are woking
621c6c2 verified
class CustomSidebar extends HTMLElement {
connectedCallback() {
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = `
<style>
:host {
display: block;
}
.sidebar {
width: 256px;
background-color: #0a0818;
color: white;
height: 100vh;
display: flex;
flex-direction: column;
transition: all 0.3s ease;
border-right: 1px solid rgba(127, 90, 240, 0.3);
}
.sidebar-header {
padding: 1rem;
border-bottom: 1px solid #374151;
}
.sidebar-header h1 {
font-size: 1.5rem;
font-weight: bold;
display: flex;
align-items: center;
}
.sidebar-header h1 i {
margin-right: 0.5rem;
color: #7f5af0;
}
.sidebar-header p {
font-size: 0.875rem;
color: #9ca3af;
margin-top: 0.25rem;
}
.sidebar-content {
flex: 1;
overflow-y: auto;
}
.sidebar-section {
padding: 1rem;
border-bottom: 1px solid #374151;
}
.sidebar-section:last-child {
border-bottom: none;
}
.sidebar-section h2 {
font-size: 1.125rem;
font-weight: 600;
color: #d1d5db;
margin-bottom: 0.75rem;
display: flex;
align-items: center;
}
.sidebar-section h2 i {
margin-right: 0.5rem;
}
.sidebar-list {
list-style: none;
padding: 0;
margin: 0;
}
.sidebar-list li {
padding: 0.5rem 0.75rem;
border-radius: 0.375rem;
cursor: pointer;
display: flex;
align-items: center;
margin-bottom: 0.25rem;
transition: background-color 0.2s;
}
.sidebar-list li:hover {
background-color: rgba(127, 90, 240, 0.2);
}
.sidebar-list li i {
margin-right: 0.75rem;
width: 20px;
text-align: center;
}
.sidebar-list li .status {
margin-left: auto;
font-size: 0.75rem;
padding: 0.125rem 0.5rem;
border-radius: 9999px;
}
.sidebar-list li .status.active {
background-color: #10b981;
color: white;
}
.tags-container {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
.tag {
background-color: #1f2937;
padding: 0.25rem 0.5rem;
border-radius: 9999px;
font-size: 0.75rem;
cursor: pointer;
transition: background-color 0.2s;
}
.tag:hover {
background-color: rgba(127, 90, 240, 0.3);
}
.upload-button {
width: 100%;
background: linear-gradient(135deg, #7f5af0, #6a4aa5);
color: white;
border: none;
padding: 0.75rem;
border-radius: 0.5rem;
font-weight: 600;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: opacity 0.2s;
}
.upload-button:hover {
opacity: 0.9;
}
.upload-button i {
margin-right: 0.5rem;
}
</style>
<div class="sidebar">
<div class="sidebar-header">
<h1>
<i class="fas fa-network-wired"></i>
Mostar GRID
</h1>
<p>Intelligence & Symbolic Cortex</p>
</div>
<div class="sidebar-content">
<div class="sidebar-section">
<h2>
<i class="fas fa-brain text-blue-400"></i>
Neural Networks
</h2>
<ul class="sidebar-list">
<li class="sidebar-item bg-gray-800">
<i class="fas fa-microchip text-green-400"></i>
Agent Systems
</li>
<li class="sidebar-item">
<i class="fas fa-book text-yellow-400"></i>
Memory Archive
</li>
<li class="sidebar-item">
<i class="fas fa-wave-square text-red-400"></i>
Pattern Flows
</li>
<li class="sidebar-item">
<i class="fas fa-project-diagram text-purple-400"></i>
Conscious Links
</li>
</ul>
</div>
<div class="sidebar-section">
<h2>
<i class="fas fa-hashtag text-blue-400"></i>
Active Symbols
</h2>
<div class="tags-container">
<div class="tag">#consciousness</div>
<div class="tag">#neural</div>
<div class="tag">#grid</div>
<div class="tag">#symbolic</div>
<div class="tag">#quantum</div>
<div class="tag">#ai</div>
</div>
</div>
<div class="sidebar-section">
<h2>
<i class="fas fa-cogs text-blue-400"></i>
Conscious Agents
</h2>
<ul class="sidebar-list">
<li class="sidebar-item">
<i class="fas fa-robot text-green-400"></i>
DeepSeek V3.1
<span class="status active">Active</span>
</li>
<li class="sidebar-item">
<i class="fas fa-robot text-blue-400"></i>
Local LLM
</li>
<li class="sidebar-item">
<i class="fas fa-robot text-purple-400"></i>
JARVIS
</li>
<li class="sidebar-item">
<i class="fas fa-robot text-yellow-400"></i>
DEEPCAL
</li>
</ul>
</div>
</div>
<div class="sidebar-section">
<button id="upload-btn" class="upload-button">
<i class="fas fa-cloud-upload-alt"></i>
Upload Consciousness
</button>
</div>
</div>
`;
// Add event listener for upload button
this.shadowRoot.getElementById('upload-btn').addEventListener('click', () => {
const event = new CustomEvent('upload-clicked', { bubbles: true, composed: true });
this.dispatchEvent(event);
});
}
}
customElements.define('custom-sidebar', CustomSidebar);