Package-level declarations

Types

Link copied to clipboard

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.

Link copied to clipboard

Semantic palette for the six EPA AQI categories, following StatusColors' per-theme pattern.

Link copied to clipboard
Link copied to clipboard
data class ColorFamily(val color: Color, val onColor: Color, val colorContainer: Color, val onColorContainer: Color)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun interface EventFontResolver

Resolves an edition's EventFirmwareFonts (Google Font family names, e.g. Lato) into loadable FontFamilys.

Link copied to clipboard
data class EventFonts(val heading: FontFamily? = null, val body: FontFamily? = null)

Resolved heading/body typefaces for an active event edition. Either component may be null (fall back to default).

Link copied to clipboard
data class EventTheme(val accent: Color? = null, val highlight: Color? = null, val palette: List<Color> = emptyList(), val fonts: EventFonts? = null)

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.

Link copied to clipboard
data class EventThemeToggle(val enabled: Boolean = true, val onChange: (Boolean) -> Unit = {})

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.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
object IAQColors
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Properties

Link copied to clipboard
Link copied to clipboard

Complete expressive typescale for the Meshtastic application.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

The applied ambient event theme, or null for the default look. See EventTheme.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
const val MIN_GRAPHICAL_CONTRAST: Float = 3.0f

WCAG AA contrast ratio for graphical objects / large text.

Link copied to clipboard
const val MIN_TEXT_CONTRAST: Float = 4.5f

WCAG AA contrast ratio for normal text.

Link copied to clipboard
const val MODE_DYNAMIC: Int = 6969420
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
fun AppTheme(darkTheme: Boolean = isSystemInDarkTheme(), dynamicColor: Boolean = true, content: @Composable () -> Unit)
Link copied to clipboard

WCAG contrast ratio between two opaque colors (1.0 = identical, 21.0 = black-on-white).

Link copied to clipboard

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.

Link copied to clipboard
fun pickLegible(candidates: List<Color>, background: Color, fallback: Color, minRatio: Float = MIN_GRAPHICAL_CONTRAST): Color

The first of candidates that clears minRatio against background, or fallback if none does.

Link copied to clipboard

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.