import { InputHTMLAttributes, SelectHTMLAttributes, TextareaHTMLAttributes, ReactNode, forwardRef } from "react";
// Input Component
export interface InputProps extends InputHTMLAttributes {
label?: string;
error?: string;
}
export const Input = forwardRef(
({ label, error, className = "", ...props }, ref) => {
return (
{label && (
)}
{error && (
{error}
)}
);
}
);
Input.displayName = "Input";
// Select Component
export interface SelectProps extends SelectHTMLAttributes {
label?: string;
error?: string;
children: ReactNode;
}
export const Select = forwardRef(
({ label, error, children, className = "", ...props }, ref) => {
return (
{label && (
)}
{error && (
{error}
)}
);
}
);
Select.displayName = "Select";
// Textarea Component
export interface TextareaProps extends TextareaHTMLAttributes {
label?: string;
error?: string;
}
export const Textarea = forwardRef(
({ label, error, className = "", ...props }, ref) => {
return (
{label && (
)}
{error && (
{error}
)}
);
}
);
Textarea.displayName = "Textarea";
// Search Input with Icon
interface SearchInputProps extends InputHTMLAttributes {
icon?: ReactNode;
}
export const SearchInput = forwardRef(
({ icon, className = "", ...props }, ref) => {
return (
);
}
);
SearchInput.displayName = "SearchInput";