The type of the `responseRenderer` config property is as follows:

```ts
// A function that creates a DOM element for streamed or batched data.
// The AiMsg type is the type of the message content.
type ResponseRenderer<AiMsg> = (
    (props: StreamResponseComponentProps<AiMsg>) => HTMLElement | null
) | (
    (props: BatchResponseComponentProps<AiMsg>) => HTMLElement | null
);
```

**For streamed data**, the custom renderer is a JavaScript function that creates a DOM element that will be appended to
the message container. The function receives the following props, where `AiMsg` is the type of the message content.

```ts
type StreamResponseComponentProps<AiMsg> = {
    uid: string; // Unique identifier generated by NLUX
    dataTransferMode: 'stream'; // Always 'stream' for streamed data

    // The status of the message, which can be 'streaming' or 'complete'
    // When an error occurs, the entire message will be removed from the chat area and an error message
    // will be displayed to the user.
    status: 'streaming' | 'complete';

    // The content of the message. This will only be defined when the status is 'complete'.
    // It will include an array of all the chunks (partial messages) received from the server.
    content?: AiMsg[];

    // The raw server response without any processing.
    // This is only available with NLUX standard adapters, and only when the status is 'complete'.
    serverResponse?: unknown[];
};
```

**For batched data**, the custom renderer is a also JavaScript function that creates a DOM element that will be appended
to the message container. The function receives the following props.

```ts
type BatchResponseComponentProps<AiMsg> = {
    uid: string; // Unique identifier generated by NLUX
    dataTransferMode: 'batch'; // Always 'batch' for batched data
    status: 'complete'; // The status of the message, which is always 'complete' for batched data
    content: AiMsg; // The content of the message
    serverResponse: unknown; // The raw server response without any processing
};
```
