Package-level declarations

The theme entry point. JengaTheme wraps content, exposes every token set (JengaTheme.colors / typography / spacing / shapes / sizing / elevation / motion) through CompositionLocals, and bridges to Material 3 internally. Brand and typeface are injected here: brand the whole theme from one seed with JengaTheme(brand = jengaBrand(seed = Color(0xFF6D28D9))).

Types

Link copied to clipboard
class JengaComponentStyles(val button: JengaButtonStyle? = null, val iconButton: JengaIconButtonStyle? = null, val textField: JengaTextFieldStyle? = null, val searchField: JengaSearchFieldStyle? = null, val searchTrigger: JengaSearchFieldStyle? = null, val listItem: JengaListItemStyle? = null, val card: JengaCardStyle? = null, val chip: JengaChipStyle? = null, val dialog: JengaDialogStyle? = null, val snackbar: JengaSnackbarStyle? = null, val sectionHeader: JengaSectionHeaderStyles? = null, val progress: JengaProgressStyle? = null, val selectionListItem: JengaSelectionListItemStyle? = null, val keyValueRow: JengaKeyValueRowStyle? = null, val state: JengaStateStyle? = null, val iconTile: JengaIconTileStyle? = null, val listSheet: JengaListSheetStyle? = null, val link: JengaLinkStyle? = null, val segmentedControl: JengaSegmentedControlStyle? = null, val topAppBar: JengaTopAppBarStyle? = null, val statusPill: JengaStatusPillStyle? = null, val avatar: JengaAvatarStyle? = null, val infoBar: JengaInfoBarStyle? = null, val circularProgress: JengaCircularProgressStyle? = null, val cardFooter: JengaCardFooterStyle? = null, val tabs: JengaTabsStyle? = null, val stepper: JengaStepperStyle? = null, val dropdownMenu: JengaDropdownMenuStyle? = null, val fab: JengaFabStyle? = null, val navigationRailItem: JengaNavigationRailItemStyle? = null, val thumbnailStrip: JengaThumbnailStripStyle? = null, val wheelPicker: JengaWheelPickerStyle? = null)

Theme-wide component styles, passed to JengaTheme so every component below it takes the same look without per-call arguments:

Link copied to clipboard
object JengaTheme

Entry point to Jenga's design tokens, mirroring how MaterialTheme exposes colorScheme/typography/shapes.

Properties

Link copied to clipboard

The preferred content color (text, icons) for the current subtree, mirroring Material's LocalContentColor. Components set this so their slot content inherits the right color (e.g. text inside a primary button becomes onBrand). Color.Unspecified means "fall back to the theme"; see JengaText.

Functions

Link copied to clipboard
fun JengaTheme(scheme: JengaScheme, darkTheme: Boolean = isSystemInDarkTheme(), typography: JengaTypography? = null, spacing: JengaSpacing = jengaSpacing(), shapes: JengaShapes = jengaShapes(), sizing: JengaSizing = jengaSizing(), elevation: JengaElevation = jengaElevation(), motion: JengaMotion = jengaMotion(), icons: JengaIconSet? = null, components: JengaComponentStyles = JengaComponentStyles(), content: @Composable () -> Unit)

Provides Jenga from a fully hand-authored scheme (a light + dark JengaColors pair). The scheme is selected for the current darkTheme; other token bundles keep their defaults or can be overridden.

fun JengaTheme(darkTheme: Boolean = isSystemInDarkTheme(), colors: JengaColors = if (darkTheme) jengaDarkColors() else jengaLightColors(), typography: JengaTypography? = null, spacing: JengaSpacing = jengaSpacing(), shapes: JengaShapes = jengaShapes(), sizing: JengaSizing = jengaSizing(), elevation: JengaElevation = jengaElevation(), motion: JengaMotion = jengaMotion(), icons: JengaIconSet? = null, components: JengaComponentStyles = JengaComponentStyles(), content: @Composable () -> Unit)

Provides the Jenga design system to content.

fun JengaTheme(brand: JengaBrand, darkTheme: Boolean = isSystemInDarkTheme(), colors: JengaColors = if (darkTheme) brand.darkColors() else brand.lightColors(), typography: JengaTypography? = null, spacing: JengaSpacing = brand.spacing(), shapes: JengaShapes = brand.shapes(), sizing: JengaSizing = brand.sizing(), elevation: JengaElevation = jengaElevation(), motion: JengaMotion = jengaMotion(), icons: JengaIconSet? = brand.icons, components: JengaComponentStyles = JengaComponentStyles(), content: @Composable () -> Unit)

Provides Jenga themed from a single brand: one seed color yields a coherent, accessible light and dark scheme plus type, shape and density: