# OutlinedButton

Common/AllAndroid/JVM

## Functions summary

|---|---|---|
| `Unit` | `@Composable OutlinedButton( onClick: () -> Unit, modifier: Modifier, enabled: Boolean, shape: Shape, colors: ButtonColors, elevation: ButtonElevation?, border: BorderStroke?, contentPadding: PaddingValues, interactionSource: MutableInteractionSource?, content: @Composable RowScope.() -> Unit )` [Material Design outlined button](https://m3.material.io/components/buttons/overview) | Cmn |
| `Unit` | `@Composable OutlinedButton( onClick: () -> Unit, shapes: ButtonShapes, modifier: Modifier, enabled: Boolean, colors: ButtonColors, elevation: ButtonElevation?, border: BorderStroke?, contentPadding: PaddingValues, interactionSource: MutableInteractionSource?, content: @Composable RowScope.() -> Unit )` [Material Design outlined button](https://m3.material.io/components/buttons/overview) | Cmn |

## Functions

### OutlinedButton

Cmn Artifact: [androidx.compose.material3:material3](https://developer.android.com/jetpack/androidx/releases/compose-material3.md.txt) [View Source](https://cs.android.com/search?q=file:androidx/compose/material3/Button.kt+function:OutlinedButton)

```
@Composable
fun OutlinedButton(
    onClick: () -> Unit,
    modifier: Modifier = Modifier,
    enabled: Boolean = true,
    shape: Shape = ButtonDefaults.outlinedShape,
    colors: ButtonColors = ButtonDefaults.outlinedButtonColors(),
    elevation: ButtonElevation? = null,
    border: BorderStroke? = ButtonDefaults.outlinedButtonBorder(enabled),
    contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
    interactionSource: MutableInteractionSource? = null,
    content: @Composable RowScope.() -> Unit
): Unit
```

[Material Design outlined button](https://m3.material.io/components/buttons/overview)

Buttons help people initiate actions, from sending an email, to sharing a document, to liking a post.

![Outlined button
image](https://developer.android.com/images/reference/androidx/compose/material3/outlined-button.png)

Outlined buttons are medium-emphasis buttons. They contain actions that are important, but are not the primary action in an app. Outlined buttons pair well with `Button`s to indicate an alternative, secondary action.

```kotlin
import androidx.compose.material3.Button
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Text

OutlinedButton(onClick = { /* Do something! */ }) { Text("Outlined Button") }
```

Choose the best button for an action based on the amount of emphasis it needs. The more important an action is, the higher emphasis its button should be.

- See `Button` for a high-emphasis button without a shadow, also known as a filled button.

- See `FilledTonalButton` for a middle ground between `OutlinedButton` and `Button`.

- See `OutlinedButton` for a medium-emphasis button with a border.

- See `TextButton` for a low-emphasis button with no border.

The default text style for internal `Text` components will be set to `Typography.labelLarge`.

| Parameters |
|---|---|
| `onClick: () -> Unit` | called when this button is clicked |
| `modifier: Modifier = Modifier` | the `Modifier` to be applied to this button |
| `enabled: Boolean = true` | controls the enabled state of this button. When `false`, this component will not respond to user input, and it will appear visually disabled and disabled to accessibility services. |
| `shape: Shape = ButtonDefaults.outlinedShape` | defines the shape of this button's container, border (when `border` is not null), and shadow (when using `elevation`). |
| `colors: ButtonColors = ButtonDefaults.outlinedButtonColors()` | `ButtonColors` that will be used to resolve the colors for this button in different states. See `ButtonDefaults.outlinedButtonColors`. |
| `elevation: ButtonElevation? = null` | `ButtonElevation` used to resolve the elevation for this button in different states. This controls the size of the shadow below the button. Additionally, when the container color is `ColorScheme.surface`, this controls the amount of primary color applied as an overlay. |
| `border: BorderStroke? = ButtonDefaults.outlinedButtonBorder(enabled)` | the border to draw around the container of this button. Pass `null` for no border. |
| `contentPadding: PaddingValues = ButtonDefaults.ContentPadding` | the spacing values to apply internally between the container and the content |
| `interactionSource: MutableInteractionSource? = null` | an optional hoisted `MutableInteractionSource` for observing and emitting `Interaction`s for this button. You can use this to change the button's appearance or preview the button in different states. Note that if `null` is provided, interactions will still happen internally. |
| `content: @Composable RowScope.() -> Unit` | The content displayed on the button, expected to be text, icon or image. |

### OutlinedButton

Cmn Artifact: [androidx.compose.material3:material3](https://developer.android.com/jetpack/androidx/releases/compose-material3.md.txt) [View Source](https://cs.android.com/search?q=file:androidx/compose/material3/Button.kt+function:OutlinedButton)

```
@Composable
fun OutlinedButton(
    onClick: () -> Unit,
    shapes: ButtonShapes,
    modifier: Modifier = Modifier,
    enabled: Boolean = true,
    colors: ButtonColors = ButtonDefaults.outlinedButtonColors(),
    elevation: ButtonElevation? = null,
    border: BorderStroke? = ButtonDefaults.outlinedButtonBorder(enabled),
    contentPadding: PaddingValues = ButtonDefaults.contentPaddingFor(ButtonDefaults.MinHeight),
    interactionSource: MutableInteractionSource? = null,
    content: @Composable RowScope.() -> Unit
): Unit
```

[Material Design outlined button](https://m3.material.io/components/buttons/overview)

Buttons help people initiate actions, from sending an email, to sharing a document, to liking a post. It also morphs between the shapes provided in `shapes` depending on the state of the interaction with the button as long as the shapes provided our `CornerBasedShape`s. If a shape in `shapes` isn't a `CornerBasedShape`, then button will change between the `ButtonShapes` according to user interaction.

![Outlined button
image](https://developer.android.com/images/reference/androidx/compose/material3/outlined-button.png)

Outlined buttons are medium-emphasis buttons. They contain actions that are important, but are not the primary action in an app. Outlined buttons pair well with `Button`s to indicate an alternative, secondary action.

```kotlin
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Text

OutlinedButton(onClick = {}, shapes = ButtonDefaults.shapes()) { Text("Outlined Button") }
```

Choose the best button for an action based on the amount of emphasis it needs. The more important an action is, the higher emphasis its button should be.

- See `Button` for a high-emphasis button without a shadow, also known as a filled button.

- See `FilledTonalButton` for a middle ground between `OutlinedButton` and `Button`.

- See `OutlinedButton` for a medium-emphasis button with a border.

- See `TextButton` for a low-emphasis button with no border.

The default text style for internal `Text` components will be set to `Typography.labelLarge`.

| Parameters |
|---|---|
| `onClick: () -> Unit` | called when this button is clicked |
| `shapes: ButtonShapes` | the `ButtonShapes` that this button with morph between depending on the user's interaction with the button. |
| `modifier: Modifier = Modifier` | the `Modifier` to be applied to this button |
| `enabled: Boolean = true` | controls the enabled state of this button. When `false`, this component will not respond to user input, and it will appear visually disabled and disabled to accessibility services. |
| `colors: ButtonColors = ButtonDefaults.outlinedButtonColors()` | `ButtonColors` that will be used to resolve the colors for this button in different states. See `ButtonDefaults.outlinedButtonColors`. |
| `elevation: ButtonElevation? = null` | `ButtonElevation` used to resolve the elevation for this button in different states. This controls the size of the shadow below the button. Additionally, when the container color is `ColorScheme.surface`, this controls the amount of primary color applied as an overlay. |
| `border: BorderStroke? = ButtonDefaults.outlinedButtonBorder(enabled)` | the border to draw around the container of this button. Pass `null` for no border. |
| `contentPadding: PaddingValues = ButtonDefaults.contentPaddingFor(ButtonDefaults.MinHeight)` | the spacing values to apply internally between the container and the content |
| `interactionSource: MutableInteractionSource? = null` | an optional hoisted `MutableInteractionSource` for observing and emitting `Interaction`s for this button. You can use this to change the button's appearance or preview the button in different states. Note that if `null` is provided, interactions will still happen internally. |
| `content: @Composable RowScope.() -> Unit` | The content displayed on the button, expected to be text, icon or image. |