improved UX in dashboard

This commit is contained in:
2026-05-28 11:29:14 +02:00
parent b049a9ab9f
commit 9cf67e765f
8 changed files with 876 additions and 247 deletions

View File

@ -342,12 +342,100 @@ code {
gap: 8px;
}
/* Questionnaire card grid */
/* Questionnaire dashboard root (not .q-grid — avoids grid layout on nested cards) */
.q-dashboard-root {
display: block;
width: 100%;
}
/* Questionnaire dashboard — category sections with horizontal card rows */
.q-dashboard-groups {
display: flex;
flex-direction: column;
gap: 28px;
width: 100%;
}
.q-category-group {
display: flex;
flex-direction: column;
gap: 12px;
width: 100%;
min-width: 0;
}
.q-category-title {
margin: 0;
font-size: 1.05rem;
font-weight: 600;
color: var(--text-secondary);
letter-spacing: .02em;
padding-bottom: 4px;
border-bottom: 1px solid var(--border);
}
.q-category-title .category-title-input {
font: inherit;
color: inherit;
letter-spacing: inherit;
width: 100%;
max-width: 480px;
}
.category-german-input {
width: 100%;
min-width: 140px;
max-width: 320px;
padding: 6px 10px;
font-size: .9rem;
border: 1px solid var(--border);
border-radius: 6px;
background: var(--surface);
color: inherit;
}
.category-german-input:focus {
outline: none;
border-color: var(--primary);
box-shadow: 0 0 0 2px var(--primary-subtle);
}
.category-german-input:disabled {
opacity: .6;
}
/* Category rows: horizontal flow, wrap when the line is full */
.q-category-grid {
display: flex;
flex-flow: row wrap;
align-items: stretch;
align-content: flex-start;
gap: 16px;
width: 100%;
min-width: 0;
margin: 0;
}
.q-category-grid > .q-card {
flex: 0 0 300px;
width: 300px;
max-width: 100%;
min-width: 0;
box-sizing: border-box;
}
/* Questionnaire card grid (legacy / other pages) */
.q-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 16px;
}
.q-card .drag-handle {
margin-right: 6px;
cursor: grab;
color: var(--text-secondary);
}
.q-card {
background: var(--surface);
border: 1px solid var(--border);
@ -751,12 +839,27 @@ th.sort-desc::after { content: ' \2193'; opacity: 1; }
.q-grid { grid-template-columns: 1fr; }
}
@media (max-width: 520px) {
.q-category-grid > .q-card {
flex: 1 1 100%;
width: 100%;
}
}
/* Role badges */
.badge-admin { background: var(--badge-admin-bg); color: var(--badge-admin-fg); }
.badge-supervisor { background: var(--badge-supervisor-bg); color: var(--badge-supervisor-fg); }
.badge-coach { background: var(--badge-coach-bg); color: var(--badge-coach-fg); }
.badge-you { background: var(--badge-you-bg); color: var(--badge-you-fg); font-size: .7rem; }
/* Dashboard — category keys panel */
.category-keys-table code {
font-size: .8rem;
}
table.data-table tbody tr.row-orphan-category td {
background: color-mix(in srgb, var(--surface-hover) 60%, transparent);
}
/* Assignment page — client table sized to rows (max 50); coach panel matches */
.assign-page {
display: flex;