Button

Buttons help our travellers make all kinds of action, from logging in to booking that dream trip.

Button

Maven Central Class reference Source code

Default

Day Night
Button component Button component - dark mode

Large

Day Night
Large Button component Large Button component - dark mode
Day Night
Link Button component Link Button component - dark mode

Drawable Icon

Day Night
Drawable Icon Button component Drawable Icon Button component - dark mode

Installation

Backpack Compose is available through Maven Central. Check the main Readme for a complete installation guide.

Usage

Example of a text Button with default (small) size and primary type:

import net.skyscanner.backpack.compose.button.BpkButton
import net.skyscanner.backpack.compose.button.BpkButtonSize
import net.skyscanner.backpack.compose.button.BpkButtonType

BpkButton(
  text = stringResource(R.string.my_button_text),
  size = BpkButtonSize.Default,
  type = BpkButtonType.Primary,
) {
    // onClick
}

Example of a disabled button:

import net.skyscanner.backpack.compose.button.BpkButton

BpkButton(
  text = stringResource(R.string.my_button_text),
  enabled = false,
) {
  // onClick
}

Example of a loading button:

import net.skyscanner.backpack.compose.button.BpkButton

BpkButton(
  text = stringResource(R.string.my_button_text),
  loading = true,
) {
  // onClick
}

Example of a large button:

import net.skyscanner.backpack.compose.button.BpkButton
import net.skyscanner.backpack.compose.button.BpkButtonSize

BpkButton(
  text = stringResource(R.string.my_button_text),
  size = BpkButtonSize.Large,
) {
  // onClick
}

Example of a secondary button:

import net.skyscanner.backpack.compose.button.BpkButton
import net.skyscanner.backpack.compose.button.BpkButtonType

BpkButton(
  text = stringResource(R.string.my_button_text),
  type = BpkButtonType.Secondary,
) {
  // onClick
}

Example of a icon only button:

import net.skyscanner.backpack.compose.button.BpkButton
import net.skyscanner.backpack.compose.icons.BpkIcons
import net.skyscanner.backpack.compose.icons.sm.LongArrowRight

BpkButton(
  icon = BpkIcons.Sm.LongArrowRight,
  contentDescription = stringResource(R.string.my_button_content_description),
) {
  // onClick
}

Example of a button with leading icon and text:

import net.skyscanner.backpack.compose.button.BpkButton
import net.skyscanner.backpack.compose.button.BpkButtonIconPosition
import net.skyscanner.backpack.compose.icons.BpkIcons
import net.skyscanner.backpack.compose.icons.sm.LongArrowRight

BpkButton(
  text = stringResource(R.string.my_button_text),
  icon = BpkIcons.Sm.LongArrowRight,
  position = BpkButtonIconPosition.Start,
) {
  // onClick
}

Example of a button with custom icon and text:

import net.skyscanner.backpack.compose.button.BpkButton
import androidx.compose.ui.res.painterResource

BpkButton(
  text = stringResource(R.string.my_button_text),
  icon = painterResource(id = R.drwable.custom_icon),
) {
  // onClick
}