diff --git a/documentation/05-dashboard-a-builder.md b/documentation/05-dashboard-a-builder.md index ac66ab8..9a7fe40 100644 --- a/documentation/05-dashboard-a-builder.md +++ b/documentation/05-dashboard-a-builder.md @@ -20,8 +20,9 @@ V postrannim menu je pod Nastavenim tlacitko **Simulace**. Portal drzi jedno SSE spojeni pro celou aplikaci. Zajistuje ho `EventStreamProvider` v `web/src/components/dashboard/`. -- Stav spojeni ukazuje `LiveIndicator` v horni liste. Uzivatel musi poznat, - ze data nejsou ziva. +- Stav spojeni se v liste neukazuje. Ukazatel "Zive" s teckou byl + odstranen (rozhodnuti zadavatele); vypadek spojeni se pozna podle toho, + ze se prestanou objevovat bubliny udalosti. - Prichozi udalosti ukazuje `EventToasts` jako bubliny vpravo dole. - Data se obnovuji sama. `useApiQuery` ma volitelny `refetchOn` se seznamem typu udalosti, po kterych se ma dotaz zopakovat. Vice udalosti tesne po sobe se diff --git a/documentation/22-znacka-a-design.md b/documentation/22-znacka-a-design.md index 5aa8a45..145740b 100644 --- a/documentation/22-znacka-a-design.md +++ b/documentation/22-znacka-a-design.md @@ -193,22 +193,22 @@ karta si za to drzela vlastni rozmazanou vrstvu ve skladaci. Pri dvaceti kartach na obrazovce to vytizilo GPU natolik, ze vedle portalu sekalo prehravani videa. -Rozmazani patri jen tam, kde pod nim neco opravdu projizdi: +Na dashboardu **nema `backdrop-filter` nic**, ani lepici hlavicka. Rozmazani +zustalo jen na verejnem webu, kde neni zadny stream ani dialog: -| Kde | Trida | -| -------------------------- | ----------------- | -| lepici hlavicka dashboardu | `backdrop-blur-xl` | -| lepici hlavicka webu | `backdrop-blur-xl` | +| Kde | Trida | +| ----------------------------- | ------------------ | +| lepici hlavicka webu | `backdrop-blur-xl` | | prekryv menu na verejnem webu | `backdrop-blur-xl` | -Podklad modalu a prekryv menu v portalu rozmazani **nemaji**: je to vrstva -pres celou obrazovku a pod ni lezi hlavicka, ktera rozmazana je. Kazda -animace pod dialogem (pulz tecky "Zive", spinner, obnova seznamu) pak -nutila prohlizec prepocitat rozmazani cele plochy, jeste pres to druhe - -a vedle portalu sekalo video pri kazdem otevrenem dialogu. Tmavy prekryv -s vyssim krytim (`bg-ink-950/85`) dela tutez praci zadarmo. Ze stejneho -duvodu tecka "Zive" nepulzuje: pulz ma jen stav, kdy se spojeni teprve -navazuje nebo obnovuje. +Duvod je dialog. Jeho prekryv (`bg-ink-950/85`) lezi pres cely viewport, +tedy i pres hlavicku. Rozmazana vrstva pod prekryvem se prepocitava pri +kazdem prekresleni pod nim, a v otevrenem dialogu se prekresluje porad: +blika kurzor ve fokusovanem poli, toci se kolecko obnovy dat, prichazi +bublina udalosti. Bez dialogu se hlavicka neprekresluje a rozmazani nic +nestoji, s dialogem bezelo cely cas a vedle portalu sekalo video. Plna barva +hlavicky (`bg-ink-900`) vypada pod tmavym prekryvem stejne a nestoji nic. +Tecka a znacka "Zive" v hlavicce byly odstraneny uplne. **Zadna nekonecna animace nad velkou rozmazanou plochou.** Zare na prihlaseni a na webu jsou staticke: animovat pruhlednost objektu s `blur(120px)` znamena diff --git a/documentation/99-zmeny.md b/documentation/99-zmeny.md index 52a78dc..511cb47 100644 --- a/documentation/99-zmeny.md +++ b/documentation/99-zmeny.md @@ -64,6 +64,29 @@ konektoru a provoznich dat, audit). V `tests/setup.ts` je `SEED_FILE` prazdny, aby testy v pameti nezavisely na obsahu repa. Nove `scripts/**/*.mjs` v eslintu jako Node ESM, `SEED_FILE` v `.env.example`. +## 2026-09-09 - Otevreny dialog sekal video (potreti): hlavicka bez rozmazani + +Po dvou predchozich opravach (`.glass` a podklad dialogu bez rozmazani) +sekani trvalo, a to na kazdem dialogu a jen kdyz je otevreny. Spolecny +jmenovatel vsech dialogu je `Modal.tsx`: portal do `document.body`, prekryv +`fixed inset-0` pres cely viewport, zamek scrollu a focus do prvniho pole. +Sam o sobe nic trvale nedela. Co zmeni pro zbytek stranky: prekryv lezi +nad lepici hlavickou dashboardu, ktera mela jako posledni `backdrop-blur-xl`. +Rozmazana vrstva pod prekryvem se prepocitava pri kazdem prekresleni pod +nim, a v otevrenem dialogu se prekresluje porad (blikajici kurzor ve +fokusovanem poli, kolecko obnovy dat po udalosti ze streamu, bublina +udalosti). Bez dialogu se hlavicka neprekresluje a rozmazani nic nestoji. + +Hlavicka dashboardu ma plnou barvu (`bg-ink-900`) bez `backdrop-blur` +(`DashboardLayout.tsx`). Dialog je jedna vrstva: prekryv `fixed inset-0` +s plnou vyskou a sirkou obrazovky a v nem vycentrovany panel (`m-auto`); +driv byl obal s posuvnikem a pod nim zvlast druhy fixed prvek s pozadim. Tecka a znacka "Zive" jsou odstraneny uplne, na +dashboardu i v ukazkovem panelu na webu (`LiveIndicator.tsx` smazan, +`Hero.tsx`, klic `panel.live` z prekladu). V `index.css` byl blok +`prefers-reduced-motion` dvakrat, zustal jeden. Rozmazani ma uz jen +hlavicka a menu verejneho webu, viz +[22-znacka-a-design.md](22-znacka-a-design.md). + ## 2026-09-09 - Otevreny dialog sekal video (podruhe) Po predchozi oprave (`.glass` bez rozmazani) zustalo rozmazani na podkladu diff --git a/web/src/components/dashboard/DashboardLayout.tsx b/web/src/components/dashboard/DashboardLayout.tsx index efa1c3d..b8612a1 100644 --- a/web/src/components/dashboard/DashboardLayout.tsx +++ b/web/src/components/dashboard/DashboardLayout.tsx @@ -24,7 +24,6 @@ import { ErrorBoundary } from '@/components/ErrorBoundary'; import { useAuth, type AuthUser } from '@/auth/AuthContext'; import { EventStreamProvider } from '@/components/dashboard/EventStreamProvider'; import { EventToasts } from '@/components/dashboard/EventToasts'; -import { LiveIndicator } from '@/components/dashboard/LiveIndicator'; import { Logo } from '@/components/layout/Logo'; import { cn } from '@/lib/cn'; import { CollectionsProvider, useAccess } from '@/lib/collections'; @@ -287,8 +286,14 @@ function DashboardShell() {
{user?.name}
diff --git a/web/src/components/dashboard/LiveIndicator.tsx b/web/src/components/dashboard/LiveIndicator.tsx deleted file mode 100644 index c41cd58..0000000 --- a/web/src/components/dashboard/LiveIndicator.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { useEventStream } from '@/components/dashboard/EventStreamProvider'; -import { cn } from '@/lib/cn'; - -/* - * Pulz jen kdyz se neco deje (pripojuji, obnovuji). Stav "Zive" je vychozi - * a trva hodiny; nekonecna animace v hlavicce s `backdrop-blur` nutila - * prohlizec prepocitavat rozmazani porad dokola, a s otevrenym dialogem - * (dalsi vrstva pres celou obrazovku) to sekalo video vedle portalu. - */ -const meta = { - connecting: { label: 'Připojuji', dot: 'bg-warn-400', text: 'text-warn-400', pulse: true }, - open: { label: 'Živě', dot: 'bg-ok-400', text: 'text-ok-400', pulse: false }, - reconnecting: { - label: 'Obnovuji spojení', - dot: 'bg-warn-400', - text: 'text-warn-400', - pulse: true, - }, - closed: { label: 'Odpojeno', dot: 'bg-white/40', text: 'text-white/45', pulse: false }, -} as const; - -/** Stav spojeni se streamem. Uzivatel musi poznat, ze data nejsou zive. */ -export function LiveIndicator({ className }: { className?: string }) { - const { status } = useEventStream(); - const current = meta[status]; - - return ( - - - {current.label} - - ); -} diff --git a/web/src/components/home/Hero.tsx b/web/src/components/home/Hero.tsx index 7d6e079..1063e99 100644 --- a/web/src/components/home/Hero.tsx +++ b/web/src/components/home/Hero.tsx @@ -270,11 +270,7 @@ function HeroPanel() {Acme s.r.o.
{t('panel.role')}