/** * `Stepper` — the product's numeric control (the pill + hover arrows that the * settings page draws for 字号大小), transcribed from the live control because * the product's UI kit exports NO numeric component. * * WHAT WAS MEASURED (2026-10-01, live DOM, Settings → General → 字号大小): * control inline-flex, gap 8 * pill 72x36, radius var(--dsw-radius-md) 12, fill * --dsw-alias-bg-module-platform, value span 18x22 at 14px/22px * (tabular figures) * arrows absolute, right 8, column, gap 2, opacity 0 — revealed on * hover/focus-within; each button 17x12, radius 4, fill * color-mix(in srgb, var(--dsw-alias-bg-layer-1) 75%, transparent) * unit separate label after the pill at 14px/22px, * --dsw-alias-label-secondary * * WHY A SLIDER IS NOT USED (see the plugin dev guide §2.5 for the rule): * a slider communicates "explore the range", not "set this value": it cannot * show a precise number, and the product ships no slider style at all — it uses * this stepper for every numeric setting, a `Menu` for every discrete choice and * a `Switch` for every boolean. */ import * as React from 'react'; /** Props of {@link Stepper}. */ export interface StepperProps { /** The persisted value. */ value: number; /** Called with the clamped next value. */ onChange: (value: number) => void; /** Smallest allowed value (also disables the down arrow). */ min: number; /** Largest allowed value (also disables the up arrow). */ max: number; /** Increment per arrow press. */ step?: number; /** Unit printed after the pill ('' hides it). */ unit?: string; /** Value renderer; defaults to the plain number (use it for fractions). */ format?: (value: number) => string; } /** * Numeric stepper. Controlled: this panel re-renders from the bridge snapshot on * every prefs write, so the pill always shows the persisted value. * @param props - see {@link StepperProps}. * @returns the control (pill + arrows + unit). */ export declare function Stepper({ value, onChange, min, max, step, unit, format }: StepperProps): React.ReactElement;