import type React from "react"; import type { ChangeEventHandler } from "react"; export interface TextInputProps { id?: string; className?: string; inputClassName?: string; labelClassName?: string; name?: string; maxLength?: number; spellCheck?: boolean; placeholder?: string; defaultValue?: string; value?: string; onChange?: ChangeEventHandler; disabled?: boolean; } export interface TextAreaProps extends TextInputProps{ rows?: number; cols?: number; onChange?: ChangeEventHandler; } export interface SelectInputProps { label: React.ReactNode; value?: string; onChange?: (newValue: string) => void; children: React.ReactNode; } export interface OptionInputProps { id?: string; className?: string; value: string; children: React.ReactNode; } export type MattrixwvSwitchSize = "none" | "xs" | "sm" | "md" | "lg" | "xl"; export interface MattrixwvSwitchProps { id?: string; className?: string; knobClassName?: string; size?: MattrixwvSwitchSize; wide?: boolean; name?: string; value?: string; defaultChecked?: boolean; checked?: boolean; onChange?: (newChecked: boolean) => void; disabled?: boolean; children?: React.ReactNode; offText?: React.ReactNode; onText?: React.ReactNode; } export interface MattrixwvButtonSwitchProps { id?: string; className?: string; name?: string; value?: string; defaultChecked?: boolean; checked?: boolean; onChange?: (newChecked: boolean) => void; disabled?: boolean; onNode: React.ReactNode; offNode: React.ReactNode; } export interface NumberInputProps { id?: string; className?: string; inputClassName?: string; labelClassName?: string; name?: string; min?: number; max?: number; defaultValue?: number; value?: number; onChange?: (newValue: number) => void; disabled?: boolean; children?: React.ReactNode; } export interface NumberSliderProps { id?: string; className?: string; name?: string; min?: number; max?: number; step?: number; defaultValue?: number; value?: number; onChange?: (newValue: number) => void; disabled?: boolean; } export interface FileInputProps { id?: string; className?: string; name?: string; minSize?: number; maxSize?: number; showFileName?: boolean; showSize?: boolean; onChange?: (newFile: File | undefined) => void; disabled?: boolean; children?: React.ReactNode; } export type CheckboxSize = "none" | "xs" | "sm" | "md" | "lg" | "xl"; export interface CheckboxProps { id?: string; className?: string; labelClassName?: string; name?: string; size?: CheckboxSize; box?: boolean; onChange?: (newChecked: boolean) => void; checked?: boolean; defaultChecked?: boolean; strokeWidth?: number; value?: string; children?: React.ReactNode; } export type RadioButtonSize = "none" | "xs" | "sm" | "md" | "lg" | "xl"; export interface RadioButtonProps { id?: string; className?: string; labelClassName?: string; size?: RadioButtonSize; value: string; children?: React.ReactNode; } export interface RadioListProps { id?: string; className?: string; name?: string; value?: string; onChange?: (value: string) => void; defaultValue?: string; direction?: "vertical" | "horizontal"; children?: React.ReactNode; } export interface DateInputProps { id?: string; className?: string; defaultValue?: Date; value?: Date; onChange?: (newValue: Date) => void; }