Nuxt
Добавьте модуль в nuxt.config.ts:
export default defineNuxtConfig({
modules: ['@macrulez/vue-command-palette/nuxt'],
})Модуль автоматически устанавливает плагин, регистрирует <CommandPalette>, <CommandItem>, <CommandGroup> и <VirtualList> как компоненты (без ручного импорта в каком-либо SFC), автоимпортирует все композаблы и фабричные функции пакета — useCommandPalette, useRegisterCommands, useRegisterGroup, resolvePaletteContext, createCommandPalette, installPalette, createCommandStore, createKeyboardManager, fuzzySearch, highlightMatches, getMatchRanges — и добавляет стандартный стилевой файл в nuxt.options.css.
Через модуль можно установить только один инстанс палитры. Для второго именованного инстанса добавьте собственный Nuxt-плагин, который напрямую вызывает app.use(createCommandPalette({ name: '…' })).
Опции
Настройте модуль под собственным ключом vCommandPalette — та же форма, что и у PaletteOptions:
export default defineNuxtConfig({
modules: ['@macrulez/vue-command-palette/nuxt'],
vCommandPalette: {
hotkey: ['$mod', 'k'],
persistRecent: true,
maxRecent: 5,
},
})Опции-функции не поддерживаются в nuxt.config.ts
vCommandPalette записывается в runtimeConfig.public Nuxt, который сериализуется и отправляется на клиент — а функции такую границу не переживают. Если здесь заданы onOpen, onClose, onError, onHighlight, search или onSearch, модуль удаляет их перед записью в runtimeConfig.public и выводит предупреждение на этапе сборки с указанием затронутых опций — так сервер и клиент видят одно и то же (отсутствующее) значение вместо расхождения после гидратации.
Функции-колбэки задавайте через собственный Nuxt-плагин:
// plugins/command-palette.ts
import { VCommandPalettePlugin } from '@macrulez/vue-command-palette'
export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.use(VCommandPalettePlugin, {
onOpen: () => analytics.track('palette_opened'),
})
})Опции не-функции (hotkey, persistRecent, maxRecent, colorTheme и т. д.) прекрасно работают через nuxt.config.ts и в этом обходном пути не нуждаются.