import type { HTMLAttributes } from 'svelte/elements';
import type { ProgressSlots, ProgressVariants } from './progress.variants.js';
/**
* @summary How far along something is — or that it is running at all.
* @description Progress indicator for determinate and indeterminate loading states.
* Supports linear bar and circular ring variants with semantic intents and animation.
*
* @tag feedback
* @related Spinner
* @related Skeleton
*
* @example
* ```svelte
*
* ```
*
* @example
* ```svelte
*
* ```
*/
export interface ProgressProps extends ProgressVariants, Omit, 'children' | 'class'> {
/** Current progress value (0–100). Omit for indeterminate mode. */
value?: number;
/** Minimum value for the progress range. @default 0 */
min?: number;
/** Maximum value for the progress range. @default 100 */
max?: number;
/** Text label displayed above or inside the progress indicator. */
label?: string;
/** Show the numeric value (percentage or absolute) next to the label. @default false */
showValue?: boolean;
/** Format function for the displayed value. @default (v, max) => `${Math.round((v/max) * 100)}%` */
formatValue?: (value: number, max: number) => string;
/** Shape of the progress indicator. @default 'linear' */
shape?: 'linear' | 'circular';
/** Diameter of the circular indicator in pixels. @default 80 */
circularSize?: number;
/** Stroke width of the circular indicator in pixels. @default 6 */
strokeWidth?: number;
/** Display striped pattern on the fill. @default false */
striped?: boolean;
/** Animate the striped pattern. Requires `striped` to be true. @default false */
animated?: boolean;
/** Extra classes merged onto the root wrapper element. */
class?: string;
/** Remove all default tv() classes. */
unstyled?: boolean;
/**
* Per-slot class overrides merged with tv() styles. Slots: wrapper (linear
* root — what `class` targets in linear shape) | header | label | valueText |
* track | fill | circularWrapper (circular root — what `class` targets in
* circular shape) | circularTrack | circularFill | circularLabel.
*/
slotClasses?: Partial>;
/**
* Apply a named preset registered via ``.
* Prefer this over `class` overrides when the requested look falls outside the
* semantic intent palette — presets keep hover/active/dark-mode logic coherent
* and make the custom look reusable across the project.
*/
preset?: string;
}
export { default as Progress } from './Progress.svelte';
export { type ProgressVariants, progressVariants } from './progress.variants.js';