import { TNode, Value } from '@tempots/dom'; import { ThemeColorName } from '../../tokens'; import { RadiusName } from '../../tokens/radius'; import { ExtendedColor } from '../theme/style-utils'; /** * Configuration options for the {@link ProgressBar} component. */ export interface ProgressBarOptions { /** Current progress value (0 to max). @default 50 @min 0 @max 100 @step 1 */ value?: Value; /** Maximum value for the progress bar. @default 100 @min 1 @step 1 */ max?: Value; /** Visual size variant. @default 'md' */ size?: Value<'sm' | 'md' | 'lg'>; /** Theme color for the progress fill. @default 'primary' */ color?: Value; /** Whether to show indeterminate loading animation. @default false */ indeterminate?: Value; /** Whether to show percentage text label. @default false */ showLabel?: Value; /** Border radius preset for the progress bar. @default 'full' */ roundedness?: Value; } /** * Generates CSS class names for the progress bar based on size and indeterminate state. * * @param size - Size variant (sm, md, lg) * @param indeterminate - Whether in indeterminate state * @param roundedness - Border radius preset * @returns Space-separated CSS class string */ export declare function generateProgressBarClasses(size: 'sm' | 'md' | 'lg', indeterminate: boolean, roundedness: RadiusName): string; /** * Generates inline CSS custom properties for progress bar theming based on color. * Sets fill and track colors for both light and dark modes. * * @param color - The theme color * @returns Semicolon-separated CSS custom property declarations */ export declare function generateProgressBarStyles(color: ExtendedColor): string; /** * A horizontal progress bar component that shows completion status. * Supports determinate (with value) and indeterminate (loading) states, * configurable sizing, theming, and optional percentage labels. * * Uses ARIA progressbar role with proper attributes for accessibility. * * @param options - Configuration for value, size, color, and display options * @returns A styled progress bar element with track and fill * * @example * ```typescript * // Basic determinate progress bar * ProgressBar({ value: 65, max: 100 }) * ``` * * @example * ```typescript * // With label showing percentage * ProgressBar({ value: 75, showLabel: true, color: 'success' }) * ``` * * @example * ```typescript * // Indeterminate loading state * ProgressBar({ indeterminate: true, color: 'primary' }) * ``` * * @example * ```typescript * // Custom sizing and color * ProgressBar({ * value: 42, * max: 100, * size: 'lg', * color: 'warning', * roundedness: 'sm' * }) * ``` */ export declare function ProgressBar({ value, max, size, color, indeterminate, showLabel, roundedness, }: ProgressBarOptions): TNode;