import React, { CSSProperties, InputHTMLAttributes } from 'react';
import { AriaFocusProps } from '../../types/common';
import { InputSize, InputStatus } from './types';
import type { UniqueIdentifier } from '@dnd-kit/core';
export interface ChipInputValue {
id: UniqueIdentifier;
value: string;
canDelete?: boolean;
disabled?: boolean;
}
export interface ChipInputProps extends AriaFocusProps, Omit, 'width' | 'size' | 'value' | 'onChange'> {
value?: ChipInputValue[];
disabled?: boolean;
placeholder?: string;
/** @default 'medium' */
size?: InputSize;
/**
* `error` 이외에 상태는 별도로 UI상 표시되지 않습니다.
* @default 'info'
* */
status?: InputStatus;
/**
* 칩 목록은 한 줄로 제한하거나 개행되도록 할 수 있습니다.
*
* - `nowrap`: 칩이 인풋의 너비를 초과하면 수평으로 스크롤됩니다.
* - `wrap`: 칩이 인풋의 너비를 초과하면 수직으로 스크롤됩니다.
* @default 'nowrap'
* */
wrap?: 'wrap' | 'nowrap';
width?: number;
/**
* `wrap` prop이 `"wrap"`인 경우 최대 높이를 지정할 수 있습니다.
* 최대 높이를 초과하면 수직으로 스크롤됩니다.
* `maxHeight` prop이 지정되지 않으면 `size` prop에 따라 기본 높이가 적용됩니다.(small: 66px, medium: 80px, large: 90px)
* infinite 적용시 value 만큼 높이가 증가합니다.
*/
maxHeight?: number | 'infinite';
/**
* draggable이 true인 경우 칩을 드래그하여 재정렬할 수 있습니다.
* @default false
*/
draggable?: boolean;
className?: string;
style?: CSSProperties;
/**
* DragOverlay의 z-index를 지정합니다.
* @default getZIndex('draggable')
*/
z_index?: number;
onChange?: (value: ChipInputValue[]) => void;
}
export declare const getChipInputPaddingBySize: (size: InputSize) => string;
/**
* 입력된 텍스트가 있다면 아래의 경우에 Chip이 생성 됩니다.
* - 엔터키를 입력
* - 쉼표(,)를 입력
* - blur 이벤트가 발생
* - 붙여넣기시 쉼표(,)로 구분된 값들이 칩으로 추가
*
* 아래의 경우에 Chip이 삭제 됩니다.
* - Chip의 삭제 버튼을 클릭
* - 입력된 텍스트가 없는 상태에서 백스페이스를 누르면 마지막 Chip이 삭제됩니다.
*/
export declare const ChipInput: React.ForwardRefExoticComponent>;