# Dialog.ContentOptions

Dialog content options with exactly one accessible naming strategy.

## Signatures

```ts
export type ContentOptions = ContentOptionsBase & AccessibleName;
```

## Why

A dialog requires an accessible name. The union makes `label` and
`labelledBy` mutually exclusive at compile time instead of silently choosing.

## Options

`state` synchronizes the native element, `content` renders its subtree, `id`
provides a target for browsers supporting native commands, `describedBy`
connects supporting text, and
`modal` selects `showModal()` by default or `show()` when explicitly false.
The supplied label values may be reactive, but the command target id is a
stable string so the server and client address the same element.

## Ownership and lifetime

Options are inert; rendering owns dynamic values and native synchronization
for its Effect Scope.
