# TemplateAttributeProps

Web-standard attributes and Typed template prefixes accepted by every host.

## Signatures

```ts
export type TemplateAttributeProps = {
    readonly id?: StringAttributeValue;
    readonly class?: StringAttributeValue;
    readonly className?: StringAttributeValue;
    readonly for?: StringAttributeValue;
    readonly tabindex?: AttributeValue;
    readonly value?: AttributeValue;
    readonly min?: AttributeValue;
    readonly max?: AttributeValue;
    readonly low?: AttributeValue;
    readonly high?: AttributeValue;
    readonly optimum?: AttributeValue;
    readonly step?: AttributeValue;
    readonly role?: StringAttributeValue;
    readonly style?: StyleValue;
    readonly popover?: StringAttributeValue;
    readonly popovertarget?: StringAttributeValue;
    readonly popovertargetaction?: PopoverTargetActionValue;
    readonly command?: CommandValue;
    readonly commandfor?: StringAttributeValue;
    readonly ".data"?: Readonly<Record<string, RenderableInput>>;
} & {
    readonly [K in `aria-${string}`]?: AttributeValue;
} & {
    readonly [K in `data-${string}`]?: DataAttributeValue;
} & {
    readonly [K in `?${string}`]?: BooleanAttributeValue;
};
```

## Why

Attribute, ARIA, data, boolean (`?name`), dataset (`.data`), command, and
popover fields stay available to component users instead of being filtered
through a framework-owned prop vocabulary.

## Ownership and lifetime

Scalar parts retain direct references to their targets and update locally.
The renderer removes only values installed through the corresponding part.
