Package-level declarations
Types
Supplies AppTheme to previews annotated with @PreviewWrapper(AppThemePreviewWrapper::class), replacing a manual AppTheme { } in the preview body. Only the renderer of the annotated function applies this — a preview invoked as a plain function call from another composable does not inherit it.
Semantic palette for the six EPA AQI categories, following StatusColors' per-theme pattern.
Resolves an edition's EventFirmwareFonts (Google Font family names, e.g. Lato) into loadable FontFamilys.
Resolved heading/body typefaces for an active event edition. Either component may be null (fall back to default).
The ambient event branding to apply app-wide — a subtle accent wash, the event palette, and/or the event fonts. Populated at the composition root only when a device is on event firmware and the user hasn't opted out via LocalEventThemeToggle; null everywhere else. AppTheme reads fonts to swap AppTypography; the app bar reads accent for its wash and palette for its brand rule. The event info sheet and branding icon are driven separately by LocalEventBranding so they stay available even when opted out.
Sheet-level opt-out for the ambient event theme (accent wash + fonts). Shown whenever the event info sheet is open (which only happens for an active event, and every event carries an accent), so no availability gating is needed.
Properties
Complete expressive typescale for the Meshtastic application.
The applied ambient event theme, or null for the default look. See EventTheme.
WCAG AA contrast ratio for graphical objects / large text.
WCAG AA contrast ratio for normal text.
Functions
WCAG contrast ratio between two opaque colors (1.0 = identical, 21.0 = black-on-white).
Returns a dynamic color scheme if supported by the platform, otherwise null.
Returns a dynamic color scheme if supported by the platform, otherwise null.
JVM/Desktop does not support dynamic color schemes.
The first of candidates that clears minRatio against background, or fallback if none does.
Applies fonts across the full M3 typescale: EventFonts.heading to display/headline/title styles, EventFonts.body to body/label styles. A null component leaves those styles unchanged.