'use client';

/** Composer — the `<Composer>` shell + its slot kit. */

export {
  Composer,
  type ComposerProps,
  type ComposerSize,
  type ComposerAppearance,
} from './Composer';
export { ComposerButton, BUTTON_SIZE, type ComposerButtonProps } from './ComposerButton';
export {
  ComposerMenuButton,
  type ComposerMenuButtonProps,
  type ComposerMenuAttachItem,
} from './ComposerMenuButton';
export { ComposerRichTextarea, type ComposerRichTextareaProps } from './ComposerRichTextarea';
export { ComposerActionBar } from './ComposerActionBar';
export { ComposerToolPill, type ComposerToolPillProps } from './ComposerToolPill';
export {
  ComposerModelPicker,
  type ComposerModelPickerProps,
  type ComposerModelOption,
} from './ComposerModelPicker';
export {
  ComposerBanner,
  type ComposerBannerProps,
  type ComposerBannerAction,
} from './ComposerBanner';
export { ComposerFooter } from './ComposerFooter';
export { useResolvedComposerSize } from './size-context';
export {
  useComposerActions,
  type UseComposerActionsParams,
  type ComposerActionClusters,
} from './useComposerActions';
export {
  useComposerAttach,
  type UseComposerAttachParams,
} from './useComposerAttach';
export { useComposerAttachContext } from './AttachContext';
export { fileToAttachment, revokeAttachmentUrl } from './fileToAttachment';
export {
  textToAttachment,
  deriveTextTitle,
  DEFAULT_PASTE_TEXT_THRESHOLD,
} from './textToAttachment';
export {
  PastedTextDialog,
  type PastedTextDialogProps,
} from './PastedTextDialog';
export {
  parseSlashState,
  filterCommands,
  applyCommand,
  resolveCommandAction,
  extractSlashToken,
  useSlashCommands,
  SlashMenu,
  SlashToken,
  SlashHighlightTextarea,
  DEFAULT_SLASH_LABELS,
  type SlashCommand,
  type SlashState,
  type SlashConfig,
  type SlashCommandAction,
  type UseSlashCommandsOptions,
  type UseSlashCommandsReturn,
  type SlashMenuProps,
  type SlashTokenProps,
  type SlashHighlightTextareaProps,
  type SlashMenuLabels,
} from './slash';
export type {
  ComposerAction,
  ComposerActionVisibility,
  ComposerLayout,
  ComposerSlots,
  ComposerSlotComponents,
  ComposerSlotProps,
  ComposerFooterProps,
  SendButtonProps,
  AttachButtonProps,
  ComposerTextareaProps,
  ActionBarProps,
  ComposerAcceptType,
  ComposerAttachConfig,
  ComposerAttachHandle,
  ComposerUploadFn,
  ComposerUploadResult,
} from './types';
