import { ReactNode, Ref, ComponentPropsWithoutRef } from 'react'; import { Color } from '../types.js'; import { SurfaceVariant } from './Surface.js'; export type NumberScrubberSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl'; interface NumberScrubberOwnProps { /** Optional content rendered after the formatted value (e.g. badges, suffix nodes). */ children?: ReactNode; /** Extra classes for the trigger root (Button when idle, Input when editing). */ className?: string; /** Extra classes for the inner content row of the trigger. */ contentClassName?: string; /** Extra classes for the inner Input's input element. */ inputClassName?: string; /** Visually dim and disable all interactions (drag and edit). */ disabled?: boolean; /** Block drag and edit while keeping the trigger visually enabled. */ readOnly?: boolean; /** When `true`, applies fully rounded corners (`rounded-full`). Default size-specific radii are used when `false`. */ rounded?: boolean; /** Trigger size - drives heights, paddings, font, and the inner Input/Button size. Default `'md'`. */ size?: NumberScrubberSize; /** Underlying `Surface` variant used by the idle Button - see `SurfaceVariant`. Defaults to `'gradient'`. */ variant?: SurfaceVariant; /** Accent color token. Sets `cladd-color-{name}` on the trigger - drives text and ring colors. */ color?: Color; /** Render the surface outline ring on the idle Button. Defaults to `true`. */ outline?: boolean; /** Forwarded to the underlying `Surface` as `level` - see `SurfaceProps.level` for the relative-offset (`"+1"`/`"-1"`) syntax. */ surfaceLevel?: string | number; /** Show the chevron-expand indicator on the left of the trigger. Default `true`. */ scrubberIcon?: boolean; /** Icon node rendered inside the trigger - forwarded to the inner `Input` when editing and rendered as the first child of the idle `Button`. */ icon?: ReactNode; /** Extra classes for the icon wrapper. */ iconClassName?: string; /** Minimum allowed value. Default `0`. */ min?: number; /** Maximum allowed value. Default `1_000_000`. */ max?: number; /** Current value (controlled). Default `0`. */ value?: number; /** Increment used both for the keyboard input and to round drag deltas. Default `1`. */ step?: number; /** Value advanced per pixel of drag. Default `step / 5` (5 pixels per step - finer scrubbing). */ dragStep?: number; /** Value advanced per pixel of drag while `Shift` is held. Default `step` (1 pixel per step - coarser scrubbing). Set lower than `dragStep` to invert the gesture. */ altDragStep?: number; /** Format the displayed value, e.g. `(v) => `${v} px``. Defaults to plain stringification. */ displayValue?: (value: number) => string; /** Fires continuously during drag with the in-progress value (already clamped to `[min, max]`). Useful for live previewing the change without committing it to controlled state. */ onTemporaryChange?: (value: number) => void; /** Fires once a drag ends (or after Enter/blur in edit mode), with the final value (already clamped to `[min, max]`). */ onChange?: (value: number) => void; /** Forwarded to the trigger Button root. */ ref?: Ref; } export type NumberScrubberProps = NumberScrubberOwnProps & Omit, keyof NumberScrubberOwnProps>; /** Shape of `NumberScrubber` defaults that can be supplied via `CladdProvider`'s `defaults` prop. */ export type NumberScrubberDefaultProps = Partial>; export declare const NumberScrubber: (props: NumberScrubberProps) => import("react/jsx-runtime").JSX.Element; export {}; //# sourceMappingURL=NumberScrubber.d.ts.map