19 lines
723 B
TypeScript
19 lines
723 B
TypeScript
import type { IconValue } from '../../composables/icons.js';
|
|
import type { EventProp } from '../../util/index.js';
|
|
type names = 'clear' | 'prepend' | 'append' | 'appendInner' | 'prependInner';
|
|
type InputIconProps<T extends names> = {
|
|
label: string | undefined;
|
|
} & {
|
|
[K in `${T}Icon`]: IconValue | undefined;
|
|
} & {
|
|
[K in `onClick:${T}`]: EventProp | undefined;
|
|
};
|
|
type Listeners<T extends {}, U = keyof T> = U extends `onClick:${infer V extends names}` ? V : never;
|
|
export declare function useInputIcon<T extends {}, K extends names = Listeners<T>>(props: T & InputIconProps<K>): {
|
|
InputIcon: ({ name, color, ...attrs }: {
|
|
name: Extract<names, K>;
|
|
color?: string;
|
|
}) => JSX.Element;
|
|
};
|
|
|