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>
148 lines
3.1 KiB
CSS
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;
|
|
}
|