expanded — dnešní modál beze změny (scrim, aria-modal, Esc zavírá). Ovládání velikosti přibylo vlevo od ✕ a nabízí jen CÍLOVÉ stavy: minimalizovat a zmenšit — maximalizovaný stav se jako akce nenabízí.
Psaní e-mailu
compact — 380×460 kotvený vlevo dole, MODELESS: bez scrimu, bez aria-modal, Esc nezavírá. Stránka pod oknem zůstává klikatelná (proto to celé je). Hlavičková pole ustoupila obsahu — schovala se a nic je nezastupuje; o dokumentu vypovídá jen titulek.
Nabídka pilotu · Martina Kováčová
min — lišta v doku vlevo dole (ikona · titulek · ✕), nejnovější nahoře. Obsah okna se jen SKRYJE, nikdy neodmountuje: rozepsaný text, pozice scrollu i otevřený kebab přežijí. Klik na titulek vrací okno do stavu, ze kterého se minimalizovalo.
kompakt + dok současně — obojí kotví do stejného rohu, takže se kompakt musí uhnout. Počet lišt drží --acrm-dialog-dock-n na :root a kompakt se o n × (--row-h + --sp-3) zvedne. Bez toho by okno leželo na liště.
Re: Termín nasazení · Petr Novák
anatomie ovládání — nabízí se jen CÍLOVÉ stavy, od nejmenší po největší; tlačítko aktuálního stavu se nerenderuje (kde jsem, říká okno samo). ✕ hned za skupinou, bez oddělovače. Ukázka: expanded okno → minimalizovat · zmenšit · ✕.
… titulek …
minimalizovat — do doku (ikona minus); nenabízí se v min
kompakt — do rohu (app-window-bottom-left); nenabízí se v compact
maximalizovat — zpět na modál (window-maximize); nenabízí se v expanded
zavřít — jiná třída akce (.acrm-dialog-x), hned za skupinou bez oddělovače
interakční kontrakt — kanonický text karty
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.
LEGACYafb5f42