Bin
2025-12-16 9e0b2ba2c317b1a86212f24cbae3195ad1f3dbfa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { forwardRef, useMemo } from "react";
import { cn } from "../../utils/bem";
import Label from "../Label/Label";
import "./Input.scss";
 
const Input = forwardRef(({ label, className, required, labelProps, ghost, waiting, ...props }, ref) => {
  const rootClass = cn("input");
  const classList = [rootClass.mod({ ghost }), className].join(" ").trim();
 
  const input = useMemo(() => {
    return waiting ? (
      <div className={rootClass.elem("spinner")} />
    ) : (
      <input {...props} ref={ref} className={classList} />
    );
  }, [props, ref, classList, waiting]);
 
  return label ? (
    <Label {...(labelProps ?? {})} text={label} required={required}>
      {input}
    </Label>
  ) : (
    input
  );
});
 
Input.displayName = "Input";
 
export default Input;