# SparseClassNameNode

Represents a sparse class name (e.g. `class="foo ${bar}"`).

## Signatures

```ts
export declare class SparseClassNameNode {
    readonly _tag: "sparse-class-name";
    readonly nodes: Array<ClassNamePartNode | TextNode>;
    constructor(nodes: Array<ClassNamePartNode | TextNode>);
}
```

## Why

Literal and reactive classes remain one locally managed class expression.

## Ownership and lifetime

The model owns segments; the mounted part owns only classes it contributes.

## Constructor

Creates sparse class syntax.

## Property: _tag

Sparse-class discriminant.

## Property: _tag: Why

Selects ordered literal/reactive class joining.

## Property: _tag: Ownership and lifetime

Immutable AST metadata.

## Property: nodes

Ordered literal and dynamic class segments.

## Property: nodes: Why

Defines only this part's class contribution.

## Property: nodes: Ownership and lifetime

Retained AST array; mounted parts own live inputs.

## Examples

```ts
import { SparseClassNameNode } from "@typed/template/Template"

const node = new SparseClassNameNode([])
```
