"use client"; // packages/react/progress/src/Progress.tsx import * as React from "react"; import { createContextScope } from "@radix-ui/react-context"; import { Primitive } from "@radix-ui/react-primitive"; import { jsx } from "react/jsx-runtime"; var PROGRESS_NAME = "Progress"; var DEFAULT_MAX = 100; var [createProgressContext, createProgressScope] = createContextScope(PROGRESS_NAME); var [ProgressProvider, useProgressContext] = createProgressContext(PROGRESS_NAME); var Progress = React.forwardRef( (props, forwardedRef) => { const { __scopeProgress, value: valueProp = null, max: maxProp, getValueLabel = defaultGetValueLabel, ...progressProps } = props; if ((maxProp || maxProp === 0) && !isValidMaxNumber(maxProp)) { console.error(getInvalidMaxError(`${maxProp}`, "Progress")); } const max = isValidMaxNumber(maxProp) ? maxProp : DEFAULT_MAX; if (valueProp !== null && !isValidValueNumber(valueProp, max)) { console.error(getInvalidValueError(`${valueProp}`, "Progress")); } const value = isValidValueNumber(valueProp, max) ? valueProp : null; const valueLabel = isNumber(value) ? getValueLabel(value, max) : void 0; return /* @__PURE__ */ jsx(ProgressProvider, { scope: __scopeProgress, value, max, children: /* @__PURE__ */ jsx( Primitive.div, { "aria-valuemax": max, "aria-valuemin": 0, "aria-valuenow": isNumber(value) ? value : void 0, "aria-valuetext": valueLabel, role: "progressbar", "data-state": getProgressState(value, max), "data-value": value ?? void 0, "data-max": max, ...progressProps, ref: forwardedRef } ) }); } ); Progress.displayName = PROGRESS_NAME; var INDICATOR_NAME = "ProgressIndicator"; var ProgressIndicator = React.forwardRef( (props, forwardedRef) => { const { __scopeProgress, ...indicatorProps } = props; const context = useProgressContext(INDICATOR_NAME, __scopeProgress); return /* @__PURE__ */ jsx( Primitive.div, { "data-state": getProgressState(context.value, context.max), "data-value": context.value ?? void 0, "data-max": context.max, ...indicatorProps, ref: forwardedRef } ); } ); ProgressIndicator.displayName = INDICATOR_NAME; function defaultGetValueLabel(value, max) { return `${Math.round(value / max * 100)}%`; } function getProgressState(value, maxValue) { return value == null ? "indeterminate" : value === maxValue ? "complete" : "loading"; } function isNumber(value) { return typeof value === "number"; } function isValidMaxNumber(max) { return isNumber(max) && !isNaN(max) && max > 0; } function isValidValueNumber(value, max) { return isNumber(value) && !isNaN(value) && value <= max && value >= 0; } function getInvalidMaxError(propValue, componentName) { return `Invalid prop \`max\` of value \`${propValue}\` supplied to \`${componentName}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${DEFAULT_MAX}\`.`; } function getInvalidValueError(propValue, componentName) { return `Invalid prop \`value\` of value \`${propValue}\` supplied to \`${componentName}\`. The \`value\` prop must be: - a positive number - less than the value passed to \`max\` (or ${DEFAULT_MAX} if no \`max\` prop is set) - \`null\` or \`undefined\` if the progress is indeterminate. Defaulting to \`null\`.`; } var Root = Progress; var Indicator = ProgressIndicator; export { Indicator, Progress, ProgressIndicator, Root, createProgressScope }; //# sourceMappingURL=index.mjs.map