What is VitePress

VitePress is a lightweight static site generator based on Vue.

Get an API key

  1. Go to the Inkeep Dashboard
  2. Select your project under Projects
  3. Go to the Integrations tab
  4. Click on Create integration
  5. Select Web
  6. Provide a Name and URL (optional) for the integration
  7. Click on Create
  8. Click the Example < /> button to get your API key and view suggested settings

Copy and add the apiKey, integrationId and organizationId to your environment variables:

.env
VITE_INKEEP_API_KEY="INKEEP_API_KEY"
VITE_INKEEP_INTEGRATION_ID="INKEEP_INTEGRATION_ID"
VITE_INKEEP_ORGANIZATION_ID="INKEEP_ORGANIZATION_ID"

Load the script files

Add the below scripts to the config.ts file:

config.ts
export default {
  head: [
    [
      "script",
      {
        src: "https://unpkg.com/@inkeep/widgets-embed@0.2.288/dist/embed.js",
        type: "module",
        defer: true,
      },
    ],
    ["script", { src: "static/addInkeep.js", type: "module", defer: true }],
  ],
};

Create the addInkeep.js script

Create an addInkeep.js file in your static folder.

touch static/addInkeep.js

Now, configure the chat button component.

addInkeep.js
// Embed the widget using the `Inkeep.embed()` function.
const config = {
  componentType: "ChatButton",
  // optional -- for syncing UI color mode
  colorModeSync: {
    observedElement: document.documentElement,
    isDarkModeCallback: (el) => {
      return el.classList.contains("dark");
    },
    colorModeAttribute: "class",
  },
  properties: {
    chatButtonType: "ICON_TEXT",
    baseSettings: {
      apiKey: import.meta.env.VITE_INKEEP_API_KEY, // required
      integrationId: import.meta.env.VITE_INKEEP_INTEGRATION_ID, // required
      organizationId: import.meta.env.VITE_INKEEP_ORGANIZATION_ID, // required
      primaryBrandColor: "#26D6FF", // your brand color, widget color scheme is derived from this
      organizationDisplayName: "Inkeep",
      // ...optional settings
    },
    modalSettings: {
      // optional settings
    },
    searchSettings: {
      // optional settings
    },
    aiChatSettings: {
      // optional settings
      botAvatarSrcUrl: "/img/logo.svg", // use your own bot avatar
      quickQuestions: [
        "Example question 1?",
        "Example question 2?",
        "Example question 3?",
      ],
    },
  },
};

const inkeepWidget = Inkeep().embed(config);

For a full list of customizations, check out the Chat Button documentation.