'use client';

/**
 * Slash commands — the `/verb` surface for the chat composer.
 *
 * Public exports:
 * - Types (`SlashCommand`, `SlashState`, `SlashConfig`, `SlashCommandAction`)
 * - Pure helpers (`parseSlashState`, `filterCommands`, `applyCommand`,
 *   `resolveCommandAction`, `extractSlashToken`)
 * - React hook (`useSlashCommands`)
 * - UI primitives (`SlashMenu`, `SlashToken`, `SlashHighlightTextarea`)
 * - Labels (`DEFAULT_SLASH_LABELS`, `SlashMenuLabels`)
 *
 * Integration: when the host passes `composerSlots.slashCommands` to
 * `<Composer>`, the composer mounts an internal `<SlashMenu>` as a
 * floating popover anchored over the input surface, and (when no
 * custom `slots.Textarea` is provided) swaps the plain textarea for
 * `<SlashHighlightTextarea>` so the `/verb` chip is visible in-flow.
 */
export type { SlashCommand, SlashState, SlashConfig } from './types';
export {
  parseSlashState,
  filterCommands,
  applyCommand,
  resolveCommandAction,
  extractSlashToken,
  isSubmittableSlash,
  type SlashCommandAction,
} from './state';
export {
  useSlashCommands,
  type UseSlashCommandsOptions,
  type UseSlashCommandsReturn,
} from './useSlashCommands';
export { SlashMenu, type SlashMenuProps } from './SlashMenu';
export { SlashToken, type SlashTokenProps } from './SlashToken';
export {
  SlashHighlightTextarea,
  type SlashHighlightTextareaProps,
} from './SlashHighlightTextarea';
export {
  DEFAULT_SLASH_LABELS,
  type SlashMenuLabels,
} from './labels';
