# Attribute

Represents every static or dynamic attribute-like AST node.

## Signatures

```ts
export type Attribute = AttributeNode | AttrPartNode | SparseAttrNode | BooleanNode | BooleanPartNode | ClassNamePartNode | SparseClassNameNode | DataPartNode | EventPartNode | PropertyPartNode | PropertiesPartNode | RefPartNode;
```

## Why

Attribute, property, event, ref, class, data, boolean, and spread semantics
remain distinct for native DOM updates and safe SSR serialization.

## Ownership and lifetime

The union owns no Attr, listener, ref target, or Scope.

## Examples

```ts
import { AttributeNode, type Attribute } from "@typed/template/Template"

const attribute: Attribute = new AttributeNode("aria-label", "Close")
```
