import type { JSX } from "@solidjs/web"; import { type Accessor } from "solid-js"; import { type MaybeAccessor } from "../internals/maybe-accessor.js"; /** * Options for {@link createMeter}. Every reactive input is `MaybeAccessor`. * * Headless primitive — `` layers the label-id registry and the * NVDA-pump span on top. */ export interface CreateMeterOptions { /** Current value. */ value: MaybeAccessor; /** Minimum value. @default 0 */ min?: MaybeAccessor; /** Maximum value. @default 100 */ max?: MaybeAccessor; /** `Intl.NumberFormat` options forwarded to {@link formatNumberValue}. */ format?: MaybeAccessor; /** Locale for {@link Intl.NumberFormat}. */ locale?: MaybeAccessor; /** * Compute `aria-valuetext`. Receives the formatted value and the raw * value. Default returns the formatted string when `format` is provided, * otherwise `"%"`. */ getAriaValueText?: (formattedValue: string, value: number) => string; } /** Slot bag for the `
` element. */ export interface MeterRootSlotProps { role: "meter"; "aria-valuemin": number; "aria-valuemax": number; "aria-valuenow": number; "aria-valuetext": string; } /** Public api returned by {@link createMeter}. */ export interface MeterApi { /** Current value. */ value: Accessor; /** Minimum (defaults to 0). */ min: Accessor; /** Maximum (defaults to 100). */ max: Accessor; /** Formatted value string. */ formattedValue: Accessor; /** Resolved `aria-valuetext`. */ ariaValueText: Accessor; /** Slot bag for the root element. */ root: (userProps?: U) => MeterRootSlotProps & (U extends object ? U : object); /** Context provider — pair with {@link useMeter}. */ Provider: (props: { children: JSX.Element; }) => JSX.Element; } /** * Read the nearest {@link MeterApi} provided by `c.Provider`. Throws if * called outside a Provider. */ export declare function useMeter(): MeterApi; /** * Solid-native headless meter primitive — pure derivations from * value/min/max + format options. No internal state. */ export declare function createMeter(options: CreateMeterOptions): MeterApi; //# sourceMappingURL=create-meter.d.ts.map