Lišta — chip „Filtr" v Section top baru lištu přepíná OBĚMA směry: otevře i zavře, i když je filtr aktivní (accent tečka = aktivní filtry, zešednutí = otevřená lišta; zavření filtry nevypíná); lišta nese chipy AKTIVNÍCH filtrů (chip bez hodnoty neexistuje), „+ Filtr" a vpravo akce. Chipy DRŽÍ obsahovou linku stránky (gutter 20px = linka identity top baru i obsahu pod lištou).
Lidé
Filtr
1Filtr chip — rounded-rect chip (metriky .tchip): ikona pole · název · hodnota · chevron, bez tečky (aktivnost říká sama existence chipu — accent tečku nese jen chip „Filtr" v top baru). Chip bez hodnoty neexistuje (Notion): vzniká výběrem hodnoty přes „+ Filtr" a vymazáním hodnoty mizí celý. Pořadí = pořadí přidání: poslední přidaný je vždy na konci, editace hodnoty pořadím nehýbe.
2+ Filtr — ghost adder; otevírá nabídku zbývajících polí s hledáním. Když už jsou všechna pole v liště, skryje se.
3Vymazat filtry — ghost akce; zruší hodnoty všech polí lišty. Zobrazuje se jen při aktivním filtru.
4Uložit pro všechny — jediná zvýrazněná akce (accent tint): uloží aktuální filtr jako segment (save-segment dialog, viditelnost „Celá firma"). Zobrazuje se jen při aktivním filtru.
5Obsahová linka — horizontální padding lišty = --fb-gutter (default 20px): chipy lícují s identitou top baru i obsahem stránky pod lištou. Hostitel s jinou linkou si token přepíše.
6Sticky — v 2D-scroll výpisu (.sgb) lišta drží sticky left, s tabulkou nikdy neodjíždí do strany.

Chip menu — kanonický popover (portál, .acrm-popover) o JEDNÉ vrstvě: hodnota/hledání + volby + „Vymazat filtr". Bez nadpisu (pole říká chip), bez ⋯ podmenu, bez vrstvení.

Pravidla použití

ANO

  • Jeden vzor pro všechny filtrované tabulky — Lidé, Firmy, další výpisy postupně. Pole deklarativně (klíč v SegmentFilter + label + ikona + druh).
  • Chip = rounded-rect s chevronem (metriky .tchip), hodnota v chipu (ellipsis 148 px), bez tečky. Chip existuje jen s hodnotou — pole se přidává adderem, chip vzniká výběrem hodnoty a vymazáním mizí (Notion); výjimkou je jen chip s právě otevřeným menu. Chipy drží pořadí přidání — poslední přidaný na konci.
  • Lišta drží obsahovou linku hostitele (--fb-gutter, default 20px) — chipy začínají tam, kde obsah stránky.
  • Menu = jedna vrstva kanonického popoveru: input/volby + „Vymazat filtr" za linkou, přilepený ke spodní hraně (sticky) — u dlouhého seznamu je vždy po ruce. Anatomie 1:1 s ostatními dropdowny (žádná nová komponenta).
  • Text potvrzuje Enter; návrhy existujících hodnot (našeptávání) jedou jako volby přímo pod inputem. Esc zavírá bez uložení.
  • Fulltext je běžné pole filtru („Hledat", klíč q — Notion „Task name"): žádné zvláštní hledací pole v top baru, hledání se ukládá do segmentu jako každý jiný filtr.
  • Hledání ve volbách až od ~8 voleb; u textového pole je input hodnotou vždy.
  • Rozsah dat (od–do) se vybírá uvnitř menu chipu: presety nad mřížkou („Po termínu · Dnes · Příštích 7 dní · Příštích 30 dní · Tento měsíc") a pod nimi jednoměsíční kalendář v šířce menu (264 px). Presety nesou většinu použití, mřížka je záloha. Otevřený konec (jen horní nebo jen dolní mez) se kreslí jako výplň rozsahu, která na otevřené straně nekončí — zarážka je jen na uzavřené straně a právě její absence říká „tady to nekončí"; výplň drží i po přepnutí měsíce.
  • Multiselect tam, kde dává smysl: vlastník (Moje / Bez vlastníka / kolegové — jdou kombinovat) a fáze obchodu jsou vícenásobné (OR, checkboxy); fulltext je z podstaty jednohodnotový a exkluzivní číselníky (Rezervace) taky.
  • „Uložit pro všechny" = vznik segmentu — týž tvar dat (definition = SegmentFilter), save-segment dialog s viditelností „Celá firma".
  • Stav se pamatuje per stránka a uživatel (localStorage): hodnoty filtru i otevřenost lišty přežívají navigaci a reload — filtr může zůstat zapnutý se zavřenou lištou, hlásí ho tečka na chipu „Filtr". Seed z URL (např. ?typ=) uložený stav přebíjí.
  • Popisky sentence case; lišta se při přetečení zalamuje.

NE

  • Žádné pilulky jako filtry — filtr je vždy chip (pravidlo karty Section top bar).
  • Žádný počet na chipu „Filtr" v top baru — jen accent tečka. Tečka je JEN tam: jednotlivé filtr chipy ji nenosí.
  • Žádné nadpisy ani hlavičkové řádky v menu — pole je jasné z chipu, který menu otevřel. Operátor je implicitní (text: obsahuje · číselník: je); víc operátorů = budoucí přepínač v menu, NE hlavička.
  • Žádné vrstvení: menu nemá ⋯ podmenu ani vnořené popovery — každá akce sedí přímo v menu (max 1 otevřený popover).
  • Chip neotevírá vlastní panel — ani u data. Plnou .dp-pop.range (540 px, dva měsíce, vlastní .dp-panel a scrim) do filtru netahej: byly by to dva scrimy nad sebou a nejednoznačný Esc (zavírá kalendář, nebo menu chipu?). Ta plocha patří výběru data ve formuláři, kde je datum cíl práce.
  • Žádné bespoke filtr UI vedle lišty: .filt-menu i .acrm-fchip resbar tato karta nahrazuje; nové výpisy je nezavádí.
  • Filtrační pole nepatří do top baru jako samostatné chip-dropdowny — top bar má jediný chip „Filtr".
  • Žádné trvalé prázdné chipy — pole bez hodnoty v liště nevisí; chip přidaný adderem zmizí, zavře-li se jeho menu bez hodnoty. Lišta nescrolluje s tabulkou horizontálně (sticky left) a zavřená nezabírá výšku — zavřít jde i s aktivním filtrem (filtry dál platí, hlásí je tečka na chipu „Filtr").

Filter bar je kanonické filtrování tabulkových dat: lišta filtr chipů pod Section top barem (na obsahové lince stránky) + chip menu v kanonickém popoveru jedné vrstvy + „+ Filtr" adder. Vpravo „Vymazat filtry" (ghost) a „Uložit pro všechny" (accent tint) — uložení filtru pro ostatní vytvoří segment (definition = SegmentFilter, viditelnost „Celá firma"). Vzor chování = Notion filter row, anatomie menu = kanonický dropdown. Port: apps/web/src/ds/filter-bar.css (prefix .fb), React FilterBar app-side.

LEGACYafb5f42