Package-level declarations

Buttons and button-like actions: JengaButton, JengaIconButton, JengaFab, with their variants and *Defaults.

Types

Link copied to clipboard
class JengaButtonColors(val container: Color, val content: Color, val border: Color, val disabledContainer: Color, val disabledContent: Color, val disabledBorder: Color)

Resolved colors for a JengaButton in a single state set. Obtain a themed instance from JengaButtonDefaults.colors and copy(...) to override.

Link copied to clipboard

Default values and token mappings for JengaButton. Override any of these per call.

Link copied to clipboard

Size of a JengaButton; controls height, padding and label style.

Link copied to clipboard
class JengaButtonSizeStyle(val minHeight: Dp? = null, val shape: Shape? = null, val contentPadding: PaddingValues? = null, val textStyle: TextStyle? = null)

Theme-wide metrics for one JengaButtonSize, part of a JengaButtonStyle. A null value keeps Jenga's default.

Link copied to clipboard
class JengaButtonStyle(val small: JengaButtonSizeStyle? = null, val medium: JengaButtonSizeStyle? = null, val large: JengaButtonSizeStyle? = null, val primary: JengaButtonColors? = null, val ink: JengaButtonColors? = null, val ghost: JengaButtonColors? = null, val neutral: JengaButtonColors? = null, val outline: JengaButtonColors? = null, val danger: JengaButtonColors? = null, val brandOutline: JengaButtonColors? = null)

Theme-wide style for every JengaButton, set through io.github.joelkanyi.jenga.theme.JengaComponentStyles.button. A null value keeps Jenga's default; arguments passed to a JengaButton call still win.

Link copied to clipboard
Link copied to clipboard
class JengaIconButtonColors(val container: Color, val content: Color, val disabledContainer: Color, val disabledContent: Color, val border: Color = Color.Transparent)

Resolved colors for a JengaIconButton. Override via JengaIconButtonDefaults.colors.

Link copied to clipboard

Defaults and token mappings for JengaIconButton.

Link copied to clipboard
class JengaIconButtonStyle(val standard: JengaIconButtonVariantStyle? = null, val filled: JengaIconButtonVariantStyle? = null, val tonal: JengaIconButtonVariantStyle? = null, val overlay: JengaIconButtonVariantStyle? = null, val outlined: JengaIconButtonVariantStyle? = null)

Theme-wide style for every JengaIconButton, set through io.github.joelkanyi.jenga.theme.JengaComponentStyles.iconButton. A null value keeps Jenga's default; arguments passed to a JengaIconButton call still win.

Link copied to clipboard
Link copied to clipboard
class JengaIconButtonVariantStyle(val size: Dp? = null, val shape: Shape? = null, val colors: JengaIconButtonColors? = null)

Theme-wide look for one JengaIconButtonVariant, part of a JengaIconButtonStyle. A null value keeps Jenga's default.

Functions

Link copied to clipboard
fun JengaButton(onClick: () -> Unit, modifier: Modifier = Modifier, variant: JengaButtonVariant = JengaButtonVariant.Primary, size: JengaButtonSize = JengaButtonSize.Medium, enabled: Boolean = true, loading: Boolean = false, leadingIcon: @Composable () -> Unit? = null, trailingIcon: @Composable () -> Unit? = null, shape: Shape = JengaTheme.components.button?.size(size)?.shape ?: JengaButtonDefaults.shape, colors: JengaButtonColors = JengaButtonDefaults.colors(variant), contentPadding: PaddingValues = JengaTheme.components.button?.size(size)?.contentPadding ?: JengaButtonDefaults.contentPadding(size), content: @Composable RowScope.() -> Unit)

A Jenga button with a custom content slot.

fun JengaButton(text: String, onClick: () -> Unit, modifier: Modifier = Modifier, variant: JengaButtonVariant = JengaButtonVariant.Primary, size: JengaButtonSize = JengaButtonSize.Medium, enabled: Boolean = true, loading: Boolean = false, leadingIcon: @Composable () -> Unit? = null, trailingIcon: @Composable () -> Unit? = null, colors: JengaButtonColors = JengaButtonDefaults.colors(variant), loadingText: String? = null, contentPadding: PaddingValues = JengaTheme.components.button?.size(size)?.contentPadding ?: JengaButtonDefaults.contentPadding(size), textStyle: TextStyle = JengaButtonDefaults.textStyle(size))

A Jenga button: the primary way to trigger an action.

Link copied to clipboard
fun JengaIconButton(onClick: () -> Unit, modifier: Modifier = Modifier, variant: JengaIconButtonVariant = JengaIconButtonVariant.Standard, enabled: Boolean = true, shape: Shape = JengaTheme.components.iconButton?.variant(variant)?.shape ?: JengaIconButtonDefaults.shape, colors: JengaIconButtonColors = JengaIconButtonDefaults.colors(variant), size: Dp = JengaTheme.components.iconButton?.variant(variant)?.size ?: JengaIconButtonDefaults.Size, content: @Composable () -> Unit)

A compact, icon-only button, for app-bar actions, toolbars, and inline controls where a labelled JengaButton would be too heavy.