Add collapsible multi-column panels

This commit is contained in:
2026-08-05 16:07:27 +02:00
parent bf2d86329b
commit 1076c3c040
7 changed files with 92 additions and 4 deletions
+21 -2
View File
@@ -41,7 +41,10 @@
}
@layer components {
.catalog-screen { @apply relative grid min-h-screen grid-cols-[minmax(240px,292px)_minmax(0,1fr)] bg-catalog-surface pl-72; }
.catalog-screen { @apply relative grid min-h-screen bg-catalog-surface pl-72; --secondary-track: minmax(240px,292px); --workspace-track: minmax(0,1fr); grid-template-columns: var(--secondary-track) var(--workspace-track); }
.catalog-screen.sidebar-collapsed { @apply pl-0; }
.catalog-screen.secondary-collapsed { --secondary-track: 44px; }
.catalog-screen.workspace-collapsed { --workspace-track: 44px; }
.sidebar-drawer { @apply fixed inset-y-0 left-0 z-40 flex w-72 min-h-screen flex-col gap-1.5 overflow-y-auto bg-slate-900 p-1.5 text-[11px] text-slate-200 shadow-xl transition-transform duration-200 ease-out; }
.sidebar-drawer-header { @apply flex items-center justify-between border-b border-slate-700 pb-1; }
.sidebar-drawer-title { @apply px-1 text-[10px] font-semibold uppercase tracking-wide text-slate-400; }
@@ -110,7 +113,15 @@
.mapping-source-status.is-ok { @apply bg-emerald-100 text-emerald-700; }
.mapping-source-status.is-bad { @apply bg-red-100 text-red-700; }
.mapping-source-status.is-muted { @apply bg-slate-200 text-slate-600; }
.secondary-panel { @apply min-w-0 border-r border-slate-400 bg-slate-300 pt-[22px]; }
.secondary-panel { @apply min-w-0 border-r border-slate-400 bg-slate-300; }
.column-header { @apply flex h-7 items-center justify-between gap-1 border-b border-slate-400 px-1 text-[10px] font-semibold uppercase tracking-wide text-slate-600; }
.column-toggle { @apply inline-flex h-5 w-5 items-center justify-center rounded border border-slate-400 bg-white text-sm leading-none text-slate-700 hover:bg-slate-200; }
.secondary-panel .field-grid { @apply overflow-hidden; }
.secondary-collapsed .secondary-panel .column-header { @apply h-full flex-col justify-start py-1; writing-mode: vertical-rl; }
.secondary-collapsed .secondary-panel .field-grid { display: none; }
.workspace-collapsed .main-workspace .workspace-header { @apply h-full flex-col justify-start py-1; writing-mode: vertical-rl; }
.workspace-collapsed .main-workspace .workspace-header span,
.workspace-collapsed .main-workspace .table-wrap { display: none; }
.field-grid { @apply grid grid-cols-[132px_minmax(0,168px)] content-start; }
.field-label, .field-value { @apply min-h-[22px] border-b border-slate-300 px-1 py-0.5 text-[11px] leading-tight; }
.field-label { @apply bg-slate-200 text-slate-800; }
@@ -183,6 +194,12 @@
.secondary-panel { @apply order-1; }
.main-workspace { @apply order-2; }
.table-wrap { @apply max-h-[70vh]; }
.column-header { @apply h-7; writing-mode: horizontal-tb; }
.secondary-collapsed .secondary-panel .column-header,
.workspace-collapsed .main-workspace .workspace-header { @apply h-7 flex-row py-0; writing-mode: horizontal-tb; }
.secondary-collapsed .secondary-panel .column-header span,
.workspace-collapsed .main-workspace .workspace-header span { display: inline; }
.workspace-collapsed .main-workspace .table-wrap { display: none; }
.variant-grid { @apply min-w-0; }
.variant-header { @apply hidden; }
.variant-row { @apply grid grid-cols-2 gap-x-2 border-b border-slate-300 p-2; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@@ -222,6 +239,7 @@
html:not(.dark) .app-status { @apply border-slate-300 bg-white text-slate-700; }
html:not(.dark) .manufacturer-trigger { @apply border-slate-300 bg-white text-slate-700; }
html:not(.dark) .manufacturer-trigger:hover { @apply border-slate-400 bg-slate-200; }
html:not(.dark) .column-header { @apply border-slate-300 text-slate-600; }
html.contrast-light-high:not(.dark) .control-panel { @apply bg-slate-200 text-slate-900; }
html.contrast-light-high:not(.dark) .action-button,
html.contrast-light-high:not(.dark) .arrow-button,
@@ -250,6 +268,7 @@
html.dark .manufacturer-search { @apply border-slate-600 bg-slate-800 text-slate-100; }
html.dark .manufacturer-option { @apply text-slate-200 hover:bg-slate-800; }
html.dark .manufacturer-option[aria-selected="true"] { @apply bg-slate-700 text-white; }
html.dark .column-header { @apply border-slate-700 text-slate-300; }
html.contrast-dark-high.dark .control-panel { @apply bg-slate-950 text-white; }
html.contrast-dark-high.dark .action-button,
html.contrast-dark-high.dark .arrow-button,