DocWeave / frontend /src /components /ui /Input.jsx
shak3008's picture
feat: add durable workflows, proposal review, and frontend foundation
9308228
Raw
History Blame Contribute Delete
994 Bytes
import { forwardRef, useId } from "react";
import "./Input.css";
export const Input = forwardRef(function Input(
{ label, error, hint, icon = null, id, className = "", ...props },
ref
) {
const generatedId = useId();
const inputId = id || generatedId;
return (
<div className={`dw-field ${className}`}>
{label && (
<label htmlFor={inputId} className="dw-field__label">
{label}
</label>
)}
<div className={`dw-field__control ${error ? "dw-field__control--error" : ""}`}>
{icon && <span className="dw-field__icon">{icon}</span>}
<input ref={ref} id={inputId} {...props} />
</div>
{error ? (
<span className="dw-field__message dw-field__message--error">{error}</span>
) : hint ? (
<span className="dw-field__message">{hint}</span>
) : null}
</div>
);
});