---
title: Theme Overrides
description: Learn how to override your themes for advanced customizations.
---

## What are theme overrides?

Theme overrides allow you to override your theme's default styling for a group of components at once.

This is handy for when:

- You want to style a group of components as a group, instead of styling each one individually
- You are responsible for styling a piece of UI you do not control (i.e., you are building slot-based components)

## Styling a group of components

Every [component](components.md) in Unstyled is themable. They will make use of the current theme's [default content color](custom-themes.md#content-color) and [default text style](custom-themes.md#text-style) to render their content.

Instead of styling each component individually:

```kotlin
Column {
    Text("Less than 10 minutes remaining") 
    Icon(Lucide.AlarmClock, contentDescription = null, tint = Color.Red.copy(alpha = 0.6f)) 
    Text("You are running out of time!", color = Color.Red.copy(alpha = 0.6f)) 
}
```

use the `ProvideContentColor` to override the content color used:

```kotlin
Column {
    Text("Less than 10 minutes remaining") 
    ProvideContentColor(Color.Red.copy(alpha = 0.6f)) {
        Icon(Lucide.AlarmClock, contentDescription = null) // automatically picks up the red color
        Text("You are running out of time!") // automatically picks up the red color
    }
}
```

Both the Icon and Text components automatically inherit the provided color without needing explicit styling parameters.

`ProvideTextStyle` is also available for overriding the text style used. 

If you need to override an entire theme use `ThemeOverride` which allows to override specific theme token values.

## Styling slot-based components

You can use theme overrides to provide a specific styling to the content of your slots:

```kotlin
@Composable
fun Card(
    contentColor: Color = Color.Black,
    backgroundColor: Color = Color.White,
    modifier: Modifier = Modifier,
    content: @Composable () -> Unit
) {
    Box(modifier.background(backgroundColor)) {
        ProvideContentColor(contentColor) {
            content()
        }
    }
}
```

This way the `Card` component is responsible for styling itself and its content. Any [component](components.md) passed to the `content` slot will be styled accordingly.
