import type { TagsInputRootProps } from 'reka-ui';

/**
 * A tags input component that renders tags inside an input, followed by an actual text input.
 * Use for entering multiple values like tags, keywords, or email addresses.
 * @category Form Inputs
 * @useCases tag entry, keyword input, email list, multi-value input, chip input
 * @keywords tags, input, chips, tokens, multi, keywords, labels
 * @related UiInput, UiBadge
 * @augments TagsInputRootProps
 */
export type UiTagsInputProps = Omit<TagsInputRootProps, 'class' | 'modelValue'>;

/**
 * Props for the UiTagsInputInput component.
 * The text input field for entering new tags.
 */
export interface UiTagsInputInputProps {
  /**
   * Placeholder text for the input field.
   */
  placeholder?: string;
}

/**
 * Props for the UiTagsInputItem component.
 * Represents a single tag in the input.
 */
export interface UiTagsInputItemProps {
  /**
   * The value of the tag item.
   */
  value: string;
  /**
   * Whether the tag is disabled.
   * @default false
   */
  disabled?: boolean;
}

/**
 * Props for the UiTagsInputItemText component.
 * Displays the text content of a tag.
 */
export type UiTagsInputItemTextProps = Record<string, never>;

/**
 * Props for the UiTagsInputItemDelete component.
 * The delete button for removing a tag.
 */
export type UiTagsInputItemDeleteProps = Record<string, never>;
