import React from 'react'; export type ProgressBarIntent = 'primary' | 'success' | 'warning' | 'error'; export type ProgressBarSize = 'sm' | 'md'; export interface ProgressBarProps extends Omit, 'children'> { /** What is progressing. Required — a bare bar announces a number and no noun. */ label: string; /** 0 to `max`. Omit for an indeterminate bar. */ value?: number; /** Defaults to 100. */ max?: number; intent?: ProgressBarIntent; size?: ProgressBarSize; /** Show the label as text above the track. */ isLabelVisible?: boolean; /** Show the percentage beside the label. Determinate bars only. */ isValueVisible?: boolean; /** * Spoken instead of the percentage — "3 of 12 files". A percentage is rarely * the thing a person wants read aloud. */ valueText?: string; } /** * ProgressBar — a determinate or indeterminate measure of work. * * DETERMINATE AND INDETERMINATE ARE THE SAME COMPONENT ON PURPOSE * * Work that starts unmeasurable and becomes measurable is the common case — a * upload that does not know its size until the first chunk lands. Splitting * them into two components would make that transition a swap, which remounts * the node and loses the live region with it. * * Omitting `value` is what makes it indeterminate. `aria-valuenow` is then * omitted too, which is exactly what the ARIA spec asks for and is the detail * hand-rolled progress bars get wrong most often — a bar reporting * `aria-valuenow="0"` forever tells a screen reader the work is stuck at zero, * not that it is unmeasured. * * WHY `label` IS REQUIRED * * `role="progressbar"` announces a number. Without a name the user hears "42 * percent" with no indication of what is at 42 percent, which is worse than * silence because it sounds like information. */ export declare const ProgressBar: React.ForwardRefExoticComponent>; //# sourceMappingURL=ProgressBar.d.ts.map