34794db209
This PR addresses several UI/UX and architectural refinements for the Knowledge Graph and Intelligence Sidebar. ### Key Changes: - **Knowledge Graph (#21, #22)**: - Implemented \"pill-shaped\" nodes with dynamic label truncation and SVG tooltips. - Added bound-constrained simulation to keep nodes within the viewport. - Integrated `ResizeObserver` for dynamic layout handling. - Implemented Zoom-to-Fit functionality. - Enforced unique concept IDs in AI prompts and hardened JS logic to prevent multi-selection bugs. - **Intelligence Sidebar (#23)**: - Improved visual depth with a radial gradient background for the graph. - Increased sidebar divider contrast for better layering. - Transformed graph controls into a floating glassmorphism panel. - Relocated the \"Logout\" action to the toolbar bottom and rebranded it as \"Exit\". Fixes #21 Fixes #22 Fixes #23 Reviewed-on: #25 Co-authored-by: Marek Jasiński <jasins.marek@gmail.com> Co-committed-by: Marek Jasiński <jasins.marek@gmail.com>
97 lines
2.0 KiB
CSS
97 lines
2.0 KiB
CSS
.intelligence-toolbar {
|
|
width: 50px;
|
|
height: 100%;
|
|
background: #0D0D0D;
|
|
border-right: 1px solid rgba(255, 255, 255, 0.08);
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
padding: 1.5rem 0;
|
|
align-items: center;
|
|
z-index: 20;
|
|
box-shadow: inset -2px 0 10px rgba(0,0,0,0.5);
|
|
backdrop-filter: blur(10px);
|
|
}
|
|
|
|
|
|
.toolbar-top, .toolbar-middle, .toolbar-bottom {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
.toolbar-item {
|
|
background: none;
|
|
border: none;
|
|
color: #555;
|
|
cursor: pointer;
|
|
width: 34px;
|
|
height: 34px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
border-radius: 8px;
|
|
position: relative;
|
|
}
|
|
|
|
.toolbar-item:hover {
|
|
color: var(--nexus-neon);
|
|
background: rgba(0, 255, 153, 0.05);
|
|
box-shadow: 0 0 15px rgba(0, 255, 153, 0.15);
|
|
filter: drop-shadow(0 0 5px var(--nexus-neon));
|
|
}
|
|
|
|
.toolbar-item.active {
|
|
color: var(--nexus-neon);
|
|
background: rgba(0, 255, 153, 0.08);
|
|
box-shadow: 0 0 20px rgba(0, 255, 153, 0.25);
|
|
filter: drop-shadow(0 0 8px var(--nexus-neon));
|
|
}
|
|
|
|
.toolbar-item.active::after {
|
|
content: '';
|
|
position: absolute;
|
|
right: -2px;
|
|
top: 25%;
|
|
height: 50%;
|
|
width: 3px;
|
|
background: var(--nexus-neon);
|
|
box-shadow: 0 0 8px var(--nexus-neon);
|
|
border-radius: 2px;
|
|
}
|
|
|
|
.toolbar-item.focus-active {
|
|
color: var(--nexus-neon);
|
|
filter: drop-shadow(0 0 8px var(--nexus-neon));
|
|
}
|
|
|
|
|
|
.rotate-180 {
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
.toolbar-item.danger:hover {
|
|
color: #ff4d4d;
|
|
background: rgba(255, 77, 77, 0.1);
|
|
}
|
|
|
|
.toolbar-item.logout-item {
|
|
margin-top: 1rem;
|
|
border-top: 1px solid rgba(255, 255, 255, 0.08);
|
|
padding-top: 1.5rem;
|
|
height: auto;
|
|
width: 100%;
|
|
display: flex;
|
|
justify-content: center;
|
|
border-radius: 0;
|
|
color: #444;
|
|
}
|
|
|
|
.toolbar-item.logout-item:hover {
|
|
color: #ff4d4d;
|
|
background: none;
|
|
filter: drop-shadow(0 0 8px rgba(255, 77, 77, 0.4));
|
|
}
|
|
|