import { ComponentType, FC, Component, ReactNode, MouseEvent } from 'react'; import { IconProps } from '@befe/brick-comp-icon'; import { StateOperation } from './create-state-operation'; type CommonIconProps = Pick; /** * 清除按钮的注入契约:本工厂只管「何时渲染 + 焦点/hover 处理」, * 按钮长什么样由调用方注入(brick 内部注入 `ClearX`)。 */ type CommonClearButtonProps = Omit; export declare function createInputCloseableIcon({ ClearButton, Icon, SvgDiscX, shouldHandleHover, }: { /** * 清除按钮组件(brick 内部传 `ClearX`);传了它就不需要 `Icon` / `SvgDiscX` */ ClearButton?: ComponentType; /** * @deprecated 旧的「裸 Icon」渲染路径,仅为兼容外部既有调用保留,新代码请传 `ClearButton`。 * 裸 Icon 自身没有 `cursor: pointer` 与 hover 反馈,需要调用方自己补样式 * (见 issue 2026-09-10_修-clear-小叉-hover-指针) */ Icon?: ComponentType; /** * @deprecated 配合上面的 `Icon` 使用 */ SvgDiscX?: FC; shouldHandleHover?: boolean; }): { new (comp: Component, opts: { isClearable: () => boolean; isDisabled: () => boolean; renderNode: () => ReactNode; hasValue: () => boolean; isFocus: () => boolean; onClear: () => void; hoverState: string; }): { comp: Component; opts: { isClearable: () => boolean; isDisabled: () => boolean; renderNode: () => ReactNode; hasValue: () => boolean; isFocus: () => boolean; onClear: () => void; hoverState: string; }; state: { isHover: StateOperation>; }; hooks: { mouseEnter: () => void; mouseLeave: () => void; }; /** * 避免 input 被 blur 掉 * * @param e */ handleMouseDown: (e: MouseEvent) => void; handleIconMouseEnter: () => void; handleIconMouseLeave: () => void; render: () => ReactNode; }; }; export {};