# Composite.rootTabIndex

Derives 0 when the root owns focus and -1 once a roving-focus item is active.

## Signatures

```ts
export declare function rootTabIndex<CompositeState extends State, E, R>(state: RefSubject.RefSubject<CompositeState, E, R>): RefSubject.Computed<0 | -1, E, R>;
```

## Why

The operation exposes Composite's transition directly so callers can compose it in Effect
programs and native event handlers.

## Ownership and lifetime

Creating the Computed value acquires nothing eagerly. The Scope that subscribes to it owns
observation of the source RefSubject.

## Example

Import with `import { rootTabIndex } from "@typed/ui/Composite";` Extend the [Composite.makeState
runnable setup](https://tylors.github.io/typed-smol/reference/symbols/QHR5cGVkL3VpL0NvbXBvc2l0ZSNtYWtlU3RhdGU/). Inside the linked Effect
program read `const value = yield* rootTabIndex(state)`; it is `0` while the root owns focus and
`-1` after a roving-focus item becomes active.
