---
title: "Shapes"
description: "Material surfaces can be displayed in different shapes. Shapes direct attention, identify
components, communicate state, and express brand.

The shape scale defines the style of container, offering a range of curved shapes (mostly
polygonal). The default [Shapes] theme for Material3 is rounded rectangles, with various degrees
of corner roundness:
- Extra Small
- Small
- Medium
- Large
- Extra Large

You can customize the shape system for all components in the [MaterialTheme] or you can do it on
a per component basis by overriding the shape parameter for that component. For example, by
default, buttons use the shape style \"large\". If your product requires a smaller amount of
roundness, you can override the shape parameter with a different shape value like [Shapes.small]."
type: "class"
---

<div class='type'>Class</div>


<a id='references'></a>

<div class='sourceset sourceset-android'>Android</div>


```kotlin
public class Shapes(
    public val extraSmall: CornerBasedShape = ShapeDefaults.ExtraSmall,
    public val small: CornerBasedShape = ShapeDefaults.Small,
    public val medium: CornerBasedShape = ShapeDefaults.Medium,
    public val large: CornerBasedShape = ShapeDefaults.Large,
    public val extraLarge: CornerBasedShape = ShapeDefaults.ExtraLarge,
)
```


Material surfaces can be displayed in different shapes. Shapes direct attention, identify
components, communicate state, and express brand.

The shape scale defines the style of container, offering a range of curved shapes (mostly
polygonal). The default `Shapes` theme for Material3 is rounded rectangles, with various degrees
of corner roundness:
- Extra Small
- Small
- Medium
- Large
- Extra Large

You can customize the shape system for all components in the `MaterialTheme` or you can do it on
a per component basis by overriding the shape parameter for that component. For example, by
default, buttons use the shape style "large". If your product requires a smaller amount of
roundness, you can override the shape parameter with a different shape value like `Shapes.small`.

#### Parameters

| | |
| --- | --- |
| extraSmall | By default, provides `ShapeDefaults.ExtraSmall`, a `RoundedCornerShape` with 4dp `CornerSize` (used by bundled Cards). |
| small | By default, provides `ShapeDefaults.Small`, a `RoundedCornerShape` with 8dp `CornerSize`. |
| medium | By default, provides `ShapeDefaults.Medium`, a `RoundedCornerShape` with 18dp `CornerSize` (used by shape-shifting Buttons and rounded rectangle buttons). |
| large | By default, provides `ShapeDefaults.Large`, a `RoundedCornerShape` with 26dp `CornerSize` (used by Cards). |
| extraLarge | By default, provides `ShapeDefaults.ExtraLarge`, a `RoundedCornerShape` with 36dp `CornerSize`. |



## Functions

```kotlin
public fun copy(
        extraSmall: CornerBasedShape = this.extraSmall,
        small: CornerBasedShape = this.small,
        medium: CornerBasedShape = this.medium,
        large: CornerBasedShape = this.large,
        extraLarge: CornerBasedShape = this.extraLarge,
    ): Shapes
```


Returns a copy of this Shapes, optionally overriding some of the values.



