---
title: "TVAFn"
description: "A variant component built by [tva](https://pitlane.tools/package/theme/function/tva.md). Call it with a variant selection to get a `mix`-ready descriptor; call `resolve` for the merged [ThemedCSSProps](https://pitlane.tools/package/theme/interface/ThemedCSSProps.md) without building a descriptor."
url: "https://pitlane.tools/package/theme/interface/TVAFn"
---

# TVAFn

```ts
import type { TVAFn } from "@pitlane/theme";
```

A variant component built by [tva](https://pitlane.tools/package/theme/function/tva.md). Call it with a variant selection to get a `mix`-ready descriptor; call `resolve` for the merged [ThemedCSSProps](https://pitlane.tools/package/theme/interface/ThemedCSSProps.md) without building a descriptor.

## Type Parameters

### V

`V` _extends_ `VariantShape`

```ts
TVAFn<node>(props?): ThemedCSSMixin<node>;
```

Resolves the selection and returns a `mix`-ready descriptor. Node-generic like [css](https://pitlane.tools/package/theme/function/css.md): `MixinDescriptor` is invariant in its node, so the element type binds per `mix` callsite.

## Type Parameters

### node

`node` _extends_ `Element` = `Element`

## Parameters

### props?

`Selection`\<`V`>

## Returns

[`ThemedCSSMixin`](https://pitlane.tools/package/theme/type/ThemedCSSMixin.md)\<`node`>

## Methods

### resolve()

```ts
resolve(props?): ThemedCSSProps;
```

Returns the merged style object for a selection without producing a descriptor. [combine](https://pitlane.tools/package/theme/function/combine.md) is built on it.

#### Parameters

##### props?

`Selection`\<`V`>

#### Returns

[`ThemedCSSProps`](https://pitlane.tools/package/theme/interface/ThemedCSSProps.md)
