Files
nexarch/web/mail-postfach/app/responsive.css
rootandClaude Sonnet 5 1a529cb579 UX-04: responsive-layout-mobile-navigation
Responsives Drei-Spalten-Layout (Ordner/Nachrichten/Detail) fuer
web/mail-postfach: CSS-Breakpoint bei 768px (SHL-Token), mobil wird die
Ordnerliste zu einem Dialog-Drawer und Nachrichtenliste/Detail teilen
sich eine Ansicht per data-mobile-active-Zustand statt fester inline
Breiten, die auf schmalen Viewports horizontal abgeschnitten haetten.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-16 07:17:45 +00:00

148 lines
3.1 KiB
CSS

/* UX-04: responsives Layout & mobile Navigation. Breakpoint 768px nach
@nexarch/shl tokens.breakpoints.tablet (web/shl/tokens/tokens.ts),
gleiches Muster wie web/shl/components/Shell.tsx (Hamburger-Umschaltung,
44x44px Touch-Ziele, overflow-x: hidden gegen horizontales Scrollen). */
.mail-shell {
max-width: 100%;
overflow-x: hidden;
box-sizing: border-box;
}
.mail-shell *,
.mail-shell *::before,
.mail-shell *::after {
box-sizing: inherit;
}
.mail-mobile-bar {
display: none;
}
.mail-folder-toggle,
.mail-detail-back {
min-height: 44px;
min-width: 44px;
display: none;
align-items: center;
gap: 6px;
padding: 0 12px;
background: none;
border: 1px solid var(--shl-color-border, #d7dbe0);
border-radius: 4px;
font-size: 1rem;
cursor: pointer;
}
.mail-main {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
gap: 24px;
padding: 16px;
max-width: 100%;
}
.mail-pane {
min-width: 0;
max-width: 100%;
}
.mail-folder-pane {
width: 240px;
max-width: 100%;
flex-shrink: 0;
}
.mail-message-pane {
flex: 2 1 320px;
}
.mail-detail-pane {
flex: 1 1 280px;
border-left: 1px solid var(--shl-color-border, #d7dbe0);
padding-left: 16px;
}
.mail-search-form {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
margin-bottom: 12px;
max-width: 100%;
}
.mail-search-form input {
flex: 1 1 200px;
min-width: 0;
}
/* Mobil: eine Ansicht gleichzeitig (Ordner als Drawer, Nachrichtenliste
<-> Detail per Umschaltzustand) statt der schmalen Drei-Spalten-Ansicht. */
@media (max-width: 767.98px) {
.mail-mobile-bar {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 16px;
position: sticky;
top: 0;
background: var(--shl-color-background, #ffffff);
z-index: 5;
}
.mail-mobile-bar-title {
font-weight: 600;
overflow-wrap: anywhere;
}
.mail-main {
flex-direction: column;
gap: 0;
padding: 8px 16px;
}
.mail-folder-pane {
display: none;
}
.mail-message-pane,
.mail-detail-pane {
display: none;
width: 100%;
flex: 1 1 auto;
border-left: none;
padding-left: 0;
}
.mail-message-pane[data-mobile-active="true"],
.mail-detail-pane[data-mobile-active="true"] {
display: block;
}
.mail-folder-toggle,
.mail-detail-back {
display: inline-flex;
}
}
/* Erster Verbraucher von @nexarch/shl Dialog (bisher ungestylt) — dient
hier als mobiler Ordner-Drawer, daher die Positionierung lokal statt im
SHL-Paket selbst (noch kein anderer Konsument, der sie bräuchte). */
.shl-dialog-backdrop {
position: fixed;
inset: 0;
background: rgba(20, 24, 31, 0.4);
z-index: 30;
display: flex;
}
.shl-dialog {
background: var(--shl-color-background, #ffffff);
color: var(--shl-color-text-primary, #14181f);
width: 100%;
max-width: 320px;
height: 100%;
overflow-y: auto;
box-sizing: border-box;
padding: 16px;
}
.shl-dialog-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
margin-bottom: 8px;
}
.shl-dialog-header button {
min-height: 44px;
min-width: 44px;
}