What is VuePress

VuePress a markdown-centered static site generator.

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

Load the script files

  1. Navigate to the .vuepress directory
  2. Add the below scripts to the config.js file:
config.js
export default {
  head: [
    [
      "script",
      {
        src: "https://unpkg.com/@inkeep/uikit-js@0.3.19/dist/embed.js",
        type: "module",
        defer: true,
        onLoad: "initializeInkeep()",
      },
    ],
    ["script", { src: "js/addInkeep.js", type: "module", defer: true }],
  ],
};

Create the addInkeep.js script

Create an addInkeep.js file in your public/js folder.

touch public/js/addInkeep.js

Create container for embedded chat

To create a container for the embedded chat component, navigate to your desired page and add the following code:

<ClientOnly>
  <div id="inkeepEmbeddedChat"></div>
</ClientOnly>

Configure the component

Next, configure the Inkeep widget:

addInkeep.js
const initializeInkeep = () => {
  const addInkeepWidget = () => {
    const embeddedContainer = document.querySelector("#inkeepEmbeddedChat");

    if (!embeddedContainer) return;

    const inkeepWiddget = Inkeep().embed({
      componentType: "EmbeddedChat",
      targetElement: "#inkeepEmbeddedChat",
      colorModeSync: {
        observedElement: document.documentElement,
        isDarkModeCallback: (el) => {
          const currentTheme = el.getAttribute("data-md-color-scheme");
          return currentTheme === "dracula" || currentTheme === "dark";
        },
        colorModeAttribute: "data-md-color-scheme",
      },
      properties: {
        baseSettings: {
          apiKey: "INKEEP_API_KEY", // required
          integrationId: "INKEEP_INTEGRATION_ID", // required
          organizationId: "INKEEP_ORGANIZATION_ID", // required
          primaryBrandColor: "#26D6FF",
          organizationDisplayName: "Inkeep",
        },
      },
    });
  };

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", addInkeepWidget);

    return;
  }

  addInkeepWidget();
};

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