IntegrationsNextra

Add Embedded Chat to Nextra

Integrate Inkeep's embedded chat into your Nextra documentation for seamless user interaction.

What is Nextra

Nextra is a framework for creating content-focused websites using Next.js and markdown.

Get an API key

Follow these steps to create an API key for your web integration.

Copy and add the apiKey to your environment variables:

.env
NEXT_PUBLIC_INKEEP_API_KEY="INKEEP_API_KEY"

Install the component library

npm install @inkeep/cxkit-react
yarn add @inkeep/cxkit-react

Customize your settings

Define your Inkeep settings.

const baseSettings = {
  apiKey,
  primaryBrandColor: "#26D6FF", // your brand color, widget color scheme is derived from this
  organizationDisplayName: "Inkeep",
  // ...optional settings
};
 
const modalSettings = {
  // optional settings
};
 
const searchSettings = {
  // optional settings
};
 
const aiChatSettings = {
  // optional settings
  aiAssistantAvatar: "/img/logo.svg", // use your own AI assistant avatar
  exampleQuestions: [
    "Example question 1?",
    "Example question 2?",
    "Example question 3?",
  ],
};
import type {
  InkeepAIChatSettings,
  InkeepSearchSettings,
  InkeepBaseSettings,
  InkeepModalSettings,
} from "@inkeep/cxkit-react";
 
const baseSettings: InkeepBaseSettings = {
  apiKey,
  primaryBrandColor: "#26D6FF", // your brand color, widget color scheme is derived from this
  organizationDisplayName: "Inkeep",
  // ...optional settings
};
 
const modalSettings: InkeepModalSettings = {
  // optional settings
};
 
const searchSettings: InkeepSearchSettings = {
  // optional settings
};
 
const aiChatSettings: InkeepAIChatSettings = {
  // optional settings
  aiAssistantAvatar: "/img/logo.svg", // use your own AI assistant avatar
  exampleQuestions: [
    "Example question 1?",
    "Example question 2?",
    "Example question 3?",
  ],
};

Define the component

Create an InkeepEmbeddedChat.tsx file for the Embedded Chat component.

import { useEffect, useState } from "react";
 
export default function InkeepEmbeddedChat() {
  const [EmbeddedChat, setEmbeddedChat] = useState(null);
 
  // load the library asynchronously
  useEffect(() => {
    const loadEmbeddedChat = async () => {
      try {
        const { InkeepEmbeddedChat } = await import("@inkeep/cxkit-react");
        setEmbeddedChat(() => InkeepEmbeddedChat);
      } catch (error) {
        console.error("Failed to load EmbeddedChat:", error);
      }
    };
 
    loadEmbeddedChat();
  }, []);
 
  const embeddedChatProps = {
    baseSettings,
    aiChatSettings,
  };
 
  return EmbeddedChat && <EmbeddedChat {...embeddedChatProps} />;
}
import { ReactNode, useEffect, useState } from "react";
import type { InkeepEmbeddedChatProps } from "@inkeep/cxkit-react";
 
export default function InkeepEmbeddedChat() {
  const [EmbeddedChat, setEmbeddedChat] =
    useState<(e: InkeepEmbeddedChatProps) => JSX.Element | ReactNode>();
 
  // load the library asynchronously
  useEffect(() => {
    const loadEmbeddedChat = async () => {
      try {
        const { InkeepEmbeddedChat } = await import("@inkeep/cxkit-react");
        setEmbeddedChat(() => InkeepEmbeddedChat);
      } catch (error) {
        console.error("Failed to load EmbeddedChat:", error);
      }
    };
 
    loadEmbeddedChat();
  }, []);
 
  const embeddedChatProps: InkeepEmbeddedChatProps = {
    baseSettings,
    aiChatSettings,
  };
 
  return EmbeddedChat && <EmbeddedChat {...embeddedChatProps} />;
}

Use the component

Now to add the InkeepEmbeddedChat.tsx component follow these steps:

  1. Create a new page - Ask AI ✨
    touch pages/ask-ai.mdx
  1. Initialize the page in the _meta.json file:
_meta.json
{
  // ...
  "ask-ai": "Ask AI ✨"
  // ...
}
  1. Add a widget to the page:
ask-ai.mdx
# Ask AI
 
import InkeepEmbeddedChat from "@/components/InkeepEmbeddedChat";
 
<InkeepEmbeddedChat />

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

On this page