import type { JSX } from "@solidjs/web"; export interface LabelableProviderProps { /** * Explicit control id to seed the provider with. When omitted, the provider * generates one lazily (only used if a labelable control registers without * supplying its own id). */ controlId?: string | null | undefined; children?: JSX.Element | undefined; } /** * Provides a {@link LabelableContext} to descendants so label components and * the control they label can discover each other. * * Design notes (differences from Base UI React's `LabelableProvider`): * * - Control-id and label-id registries are kept in separate `Map` * registries, each paired with a signal that holds the current computed * view. When a registration changes, we recompute the view once and push * the new value through the signal — no `tick` indirection. * - Registrations arrive from `useLabel` / `useLabelableId` during owned * setup. Both registry signals opt into `ownedWrite` so those writes don't * trip the Solid 2 `SIGNAL_WRITE_IN_OWNED_SCOPE` check (RFC 01). The writes * are pure internal plumbing — no app-visible state depends on their * timing within the owned scope. * - `getLabelIds` returns a fresh frozen array on each change so consumers * that memoize off its reference (e.g. `useAriaLabelledBy` joining with * spaces) see a stable identity between registrations. * - The `controlId` accessor reports the first still-registered control id * (matching React's "first wins, ignore stale" logic). `null` means * "implicit label", `undefined` means "nothing registered yet". */ export declare function LabelableProvider(props: LabelableProviderProps): JSX.Element; //# sourceMappingURL=labelable-provider.d.ts.map