feat: dashboard UI improvements - 8 changes

1. Web CAD title larger (24px, font-weight 800)
2. Gear icon opens SettingsModal
3. Folder drag-and-drop with nested folders (backend parent_id support)
4. Icon-only card buttons with CSS tooltips
5. Canvas preview (deterministic SVG per project)
6. Info panel: smaller title, double-height description
7. User/group permission selector
8. oe → ö correction
This commit is contained in:
Leopoldadmin
2026-07-04 18:11:11 +02:00
parent 6c4d62641a
commit 3af9640ace
5 changed files with 402 additions and 124 deletions
+164
View File
@@ -2492,6 +2492,170 @@ body.drawer-open { overflow: hidden; }
color: #dc3545;
}
/* ─── Dashboard UI Enhancements (8 changes) ─────────────── */
/* 1. Larger Dashboard title */
.dashboard-title-large {
font-size: 24px;
font-weight: 800;
letter-spacing: -0.5px;
margin: 0;
color: var(--color-text);
}
/* 2. Dashboard settings gear button */
.dashboard-settings-btn {
display: grid;
place-items: center;
width: 36px;
height: 36px;
border-radius: var(--radius-sm);
color: var(--color-text-muted);
transition: all var(--t-fast);
background: transparent;
border: 1px solid transparent;
cursor: pointer;
}
.dashboard-settings-btn:hover {
background: var(--color-surface-2);
color: var(--color-text);
border-color: var(--color-border);
}
/* 4. Icon-only project card buttons with tooltip */
.dashboard-icon-btn {
display: grid;
place-items: center;
width: 32px;
height: 32px;
border-radius: var(--radius-sm);
color: var(--color-text-muted);
transition: all var(--t-fast);
background: transparent;
border: 1px solid transparent;
cursor: pointer;
position: relative;
}
.dashboard-icon-btn:hover {
background: var(--color-surface-2);
color: var(--color-text);
border-color: var(--color-border);
}
.dashboard-icon-btn-danger:hover {
color: var(--color-error);
border-color: var(--color-error);
}
/* CSS tooltip via title attribute fallback */
.dashboard-icon-btn[title]::after {
content: attr(title);
position: absolute;
bottom: calc(100% + 6px);
left: 50%;
transform: translateX(-50%);
background: var(--color-surface-3);
color: var(--color-text);
padding: 4px 8px;
border-radius: var(--radius-xs);
font-size: 11px;
white-space: nowrap;
opacity: 0;
pointer-events: none;
transition: opacity 0.15s;
z-index: 100;
box-shadow: var(--shadow-sm);
}
.dashboard-icon-btn[title]:hover::after {
opacity: 1;
}
/* 5. Canvas preview in project card */
.dashboard-card-preview {
width: 100%;
height: 80px;
border-radius: var(--radius-sm);
overflow: hidden;
margin-bottom: var(--spacing-sm);
border: 1px solid var(--color-border);
background: var(--color-canvas-bg-2, #1e293b);
}
.dashboard-preview-svg {
width: 100%;
height: 100%;
display: block;
}
.dashboard-card-title {
margin: 0 0 4px 0;
font-size: var(--fs-lg);
font-weight: 600;
color: var(--color-text);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.dashboard-card-desc {
margin: 0 0 var(--spacing-sm) 0;
font-size: var(--fs-sm);
color: var(--color-text-muted);
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
/* 6. Info panel: smaller title + taller textarea */
.info-panel-title-small {
font-size: var(--fs-md) !important;
font-weight: 500;
}
.info-panel-desc-tall {
min-height: 120px !important;
resize: vertical;
}
/* 7. Info panel: permission selector */
.info-panel-perm-hint {
font-size: var(--fs-xs);
color: var(--color-text-muted);
margin: 4px 0 8px;
}
.info-panel-perm-selector {
display: flex;
gap: 6px;
align-items: center;
}
.info-panel-perm-select {
flex: 1;
padding: 6px 8px;
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
background: var(--color-surface);
color: var(--color-text);
font-size: var(--fs-sm);
}
.info-panel-perm-type {
padding: 6px 8px;
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
background: var(--color-surface);
color: var(--color-text);
font-size: var(--fs-sm);
}
.info-panel-perm-add-btn {
padding: 6px 12px;
border: none;
border-radius: var(--radius-sm);
background: var(--color-primary);
color: white;
font-size: var(--fs-sm);
font-weight: 500;
cursor: pointer;
white-space: nowrap;
}
.info-panel-perm-add-btn:hover {
background: var(--color-primary-hover);
}
/* ─── Group Section in LeftSidebar ─────────────────────── */
.tool-section .tool-btn[title*="Gruppieren"] {
position: relative;