import type { Ref } from 'vue';
import { createContext } from 'reka-ui';

export { default as Command } from './Command.vue';
export { default as CommandEmpty } from './CommandEmpty.vue';
export { default as CommandGroup } from './CommandGroup.vue';
export { default as CommandInput } from './CommandInput.vue';
export { default as CommandInputOnly } from './CommandInputOnly.vue';
export { default as CommandItem } from './CommandItem.vue';
export { default as CommandList } from './CommandList.vue';
export { default as CommandSeparator } from './CommandSeparator.vue';

export const [useCommand, provideCommandContext] = createContext<{
  allItems: Ref<Map<string, string>>;
  allGroups: Ref<Map<string, Set<string>>>;
  filterState: {
    search: string;
    filtered: { count: number; items: Map<string, number>; groups: Set<string> };
  };
}>('Command');

export const [useCommandGroup, provideCommandGroupContext] = createContext<{
  id?: string;
}>('CommandGroup');
