Stavy jsou OPT-IN. Zapíná je prop windowState (+
onWindowState) na React <Dialog>. Kdo je nepředá, má
dnešní modál a v hlavičce žádná tlačítka velikosti navíc.
size="s" je nedostane nikdy. Confirm se volá jako await confirm(…);
minimalizovaný confirm by zavěsil promise na neurčito a volající by čekal na odpověď,
kterou nikdo nevidí.
Modalita se ODVODÍ ze stavu. Žádný samostatný mode: expanded =
modální (scrim, aria-modal, Esc zavírá), compact i min = modeless. Nesmyslná kombinace
„modální kompakt" tak nemůže vzniknout.
Esc obslouží jen nejvyšší modál. Modeless okna Esc ignorují; kompaktní composer
pod modálním confirmem se tedy jedním stiskem nezavře „taky".
Minimalizace je skrytí. Obsah zůstává namountovaný — rozepsaný text, pozice
scrollu i otevřený kebab přežijí. Zavření lišty ✕ ale okno opravdu zavírá.
Stav drží volající. Dok musí vědět, co je minimalizované, takže pravdu o
windowState má host oken, ne komponenta.
Dok je místo, ne seznam. Jeden pevný kontejner vlevo dole; lišty si do něj
portálují sama okna, nejnovější nahoře. Host má pointer-events: none,
klikatelné jsou až lišty.
Kompakt se zvedá nad dok. Počet lišt je na :root jako
--acrm-dialog-dock-n; kompakt se o
n × (--row-h + --sp-3) posune výš, aby si obě plovoucí věci nesedly do
jednoho rohu.
z-index 78. Nad off-canvas navigací (73), pod modálním scrimem (80) — confirm
musí kompakt překrýt —, pod vlastním popoverem (101) i toastem (90).
Mobil ≤ 720 px. compact = tentýž bottom sheet jako flexi (380px okno v rohu je na
390px displeji celá obrazovka bez výhody), včetně úchytu a gesta. min zůstává: lišta
přes šířku displeje nad env(safe-area-inset-bottom). Sheet se nad dok
zvednout nemůže (ze spodní hrany by přestal být sheet), takže se o dráhy doku odsazuje
jeho patka — jinak leží primární akce pod lištou, která se kreslí nad sheetem.
Kdo stavy dostane. Dokumentová okna na size="l" (flexi), kde má
uživatel rozepsaný obsah: psaní a čtení e-mailu, poznámka, náhled souboru.
size="s" nikdy. size="m" (úkol) zatím ne — dokud okna
neminimalizuje víc lidí než pošta, přidával by dok další místo, kde se dá něco
„ztratit". Rozšíření je rozhodnutí AD, ne volba hosta.
Kompakt je psací plocha, ne zmenšené rozhraní. 380 px je míra pro obsah
bez postranního panelu. Co má vedle textu ještě sloupec (AI panel composeru,
340 px), ho v kompaktu schová — rozšiřovat okno kvůli panelu by popřelo smysl
malého okna v rohu. Řeší to vrstva hosta, ne plášť.
Zavření je zavření. ✕ na kompaktu i na liště v doku okno opravdu zavírá,
neschovává. Že se rozepsaný text neztratí, drží koncept na serveru, ne okno.
Jen cílové stavy. (AD 5. 8. 2026, přehodnocuje ruling z 26. 7.) Ovládání
velikosti nabízí pouze stavy, do kterých se okno může transformovat — tlačítko
aktuálního stavu se nerenderuje. Kde okno je, říká okno samo (velikost, scrim,
dok); žádný aria-pressed, žádné zvýrazněné .on a žádný
oddělovač před ✕. Platí pro všechny stavy okna.
Ovládání velikosti není ✕. .acrm-dialog-wbtn vypadá jako
.acrm-dialog-x, ale nese jinou roli: okno transformuje
(skupina role="group"), zatímco ✕ ho ukončuje. Proto se ty dvě
třídy neslučují.
Obsah hlavičky končí před ovládáním okna. (F18, AD 5. 8. 2026.) Stav dokumentu
— autosave „Koncept uložen" / „Uloženo" (headerActions) — stojí VLEVO od
ovládání velikosti: pořadí je titulek · stav · ovládání velikosti · ✕. Okno se ovládá
u kraje, obsahové prvky se mu nepletou mezi tlačítka.
Anatomie kompaktu: psací plocha, záhlaví ustoupí obsahu. (AD ruling Štěpán,
27. 7. 2026 — kanon dokumentové třídy, ne výjimka jednoho hosta.) Adresní
a kontextová metadata nad tělem se v kompaktu schovají — pošta blok polí
.dlg-fields, poznámka řádek .nd-meta. V kompaktu zbývá
titulek a obsah, nic mezi tím. Sbalený řádek, který metadata krátce zastupoval,
je od 28. 7. zrušený i v poště: směr sdělení nese REŽIM OKNA — čtečka needituje,
composer je psací plocha — a uživatel to pozná dřív, než si popisek přečte.
Titulek nese identitu dokumentu. Ne název typu okna: „Nabídka pilotu ·
Martina Kováčová", ne „Zobrazit e-mail". Propisuje se do lišty v doku, takže je v ní
poznat, která zpráva tam leží — jinak jsou tři minimalizovaná okna k nerozeznání.
Dokud identita nevznikne (nový prázdný e-mail), drží se název typu jako dočasný
fallback.
V kompaktu jde první to, co dokument odliší — u pošty PŘEDMĚT. Titulek je
v kompaktu jediné, co o dokumentu vypovídá, a ořezává se zprava. Změřeno: v hlavičce
kompaktu na něj zbývá 164 px (zbytek si vezme ovládání velikosti a ✕), což je
zhruba 24–26 znaků. Z „Martina Kováčová · Nabídka pilotu" tedy zbude „… Nabíd" —
odliší se jméno a zmizí to, čím uživatel zprávu pozná. Obráceně se předmět vejde celý
a ukousne se až jméno. Pořadí je proto předmět · protistrana; když předmět
ještě není (nový e-mail), začíná se protistranou.