install (Vue, options = {}) {
    let packIcons = {}
    const extendedIcons = options.icons ? options.icons.extend || {} : {}

    if (options.icons) {
      packIcons = parsePackIcons(options.icons.iconSet)
    }

    const icons = {
      ...internalIcons,
      ...packIcons,
      ...extendedIcons
    }

    // Recursively merge extended theme variables
    const mergedTheme = toCSSVar(merge(defaultTheme, options.extendTheme))

    Vue.directive('chakra', createClientDirective(mergedTheme))

    // Bind theme and icons to prototype
    Vue.prototype.$chakra = {
      theme: mergedTheme,
      icons
    }

    const toast = useToast()
    Vue.prototype.$toast = toast

    /** Install dependent plugins */
    Vue.use(VScrollLock)

    Vue.mixin({
      computed: {
        chakraColorMode () {
          return colorModeObserver.colorMode
        },
        chakraTheme () {
          return colorModeObserver.theme
        },
        chakraToggleColorMode () {
          return colorModeObserver.toggleColorMode
        },
        $mode: vm => (lightValue, darkValue) => mode(lightValue, darkValue, colorModeObserver)
      }
    })
  }
@param {Vue} Vue
@param {import("../../types").Options} options