@trail-ui/react
Version:
44 lines (41 loc) • 1 kB
JavaScript
import {
Ring
} from "./chunk-ZRD6UURY.mjs";
import {
Spin
} from "./chunk-2MFMRIOO.mjs";
import {
Bars
} from "./chunk-TYIRKX5D.mjs";
import {
Dots
} from "./chunk-QRPONS6X.mjs";
// src/spinner/spinner.tsx
import { spinner } from "@trail-ui/theme";
import { forwardRef, useMemo } from "react";
import { jsx } from "react/jsx-runtime";
var SPINNERS = {
bars: Bars,
dots: Dots,
ring: Ring,
spin: Spin
};
var DEFAULT_SPINNER = "spin";
function Spinner(props, ref) {
const { className, variant = DEFAULT_SPINNER, color, size, ...spinnerProps } = props;
const defaultSpinner = variant in SPINNERS ? variant : DEFAULT_SPINNER;
const SpinnerComponent = SPINNERS[defaultSpinner];
const styles = useMemo(
() => spinner({
color,
size,
className
}),
[className, color, size]
);
return /* @__PURE__ */ jsx(SpinnerComponent, { "aria-hidden": true, className: styles, ref, ...spinnerProps });
}
var _Spinner = forwardRef(Spinner);
export {
_Spinner
};