import { InputProps, SystemProps } from "@chakra-ui/react"; import type { CSSProperties, ReactNode } from "react"; /** The library's primary single-line text field (default size `sm`, 38px; no default placeholder). `type="password"` auto-renders a show/hide toggle unless `inputRightIcon` is set or `isPasswordToggleDisabled` is true. Inside a consumer's own `FormControl`, it detects the ancestor and skips rendering its own, inheriting id/invalid/required/disabled from it. */ export type TextInputProps = Omit & { label?: string; /** Optional — an id is generated when omitted, so the label is always bound. `isRequired` sets `aria-required`, not native `required`. */ id?: string; name?: string; /** Marks the input invalid (error border + `aria-invalid`) and swaps `helperText` for `errorMessage`. */ error?: boolean; /** Shown while `error` is true. Omitting it renders no message and still hides `helperText`. */ errorMessage?: string; /** Shown under the field when there is no error; linked via `aria-describedby`. */ helperText?: string; /** Chakra field look: `"outline"` (default), `"filled"` (tinted, borderless until focus) or `"flushed"` (bottom border only). */ variant?: "outline" | "filled" | "flushed"; /** When set, the right icon renders as a real, focusable `