Komponenten / Framework
Hinweise & Protokolle
Hinweise und Banner, Live-Ansagen für Screenreader und ein Protokoll-Viewer.
Komponenten werden geladen …
Hinweise und Banner, Live-Ansagen für Screenreader und ein Protokoll-Viewer.
Komponenten werden geladen …
import { Alert, AlertTitle, AlertDescription, AlertActions } from '@rapold/framework-core'
<Alert tone="warning" dismissible onDismiss={() => setOpen(false)}>
<AlertTitle>Wartung am Samstag</AlertTitle>
<AlertDescription>Exporte sind von 06:00–08:00 nicht möglich.</AlertDescription>
<AlertActions><Button size="sm">Details</Button></AlertActions>
</Alert>Jetzt: Morgenrot · Lea Brunner. Der Screenreader hört den Wechsel erst, wenn der neue Titel 1,5 s hält; der Stand beim Laden bleibt still.
Tab-Titel: unverändert
import { Announcer, useDocumentTitle } from '@rapold/framework-core'
<Announcer message={`Jetzt läuft: ${title}`} announceKey={trackId} settleMs={5000} />
useDocumentTitle(playing ? `▶ ${title} – Atlas` : 'Atlas')Absatz 1
Absatz 2
Absatz 3
Absatz 4
Absatz 5
Absatz 6
Absatz 7
Absatz 8
Absatz 9
Absatz 10
Absatz 11
Absatz 12
Absatz 13
Absatz 14
Absatz 15
Absatz 16
Absatz 17
Absatz 18
Absatz 19
Absatz 20
import { useMediaQuery, usePrefersReducedMotion, useElementSize,
useScrollDirection, useVisibilityAwareInterval } from '@rapold/framework-core'
const wide = useMediaQuery('(min-width: 48rem)')
const size = useElementSize(ref) // { width, height } | null
const dir = useScrollDirection({ container: ref })
useVisibilityAwareInterval({ interval: 5000, onTick: () => fetchStatus() })Hochscrollen pausiert das Folgen; der Knopf zählt neue Einträge und springt zurück.
Noch keine Einträge.
import { LogView } from '@rapold/framework-core'
<LogView
lines={[{ id: 1, time: new Date(), source: 'api', message: 'GET /projekte 200', level: 'info' }]}
maxLines={500}
viewportClassName="h-96"
/>