Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: Adds design guidelines #330

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

edonehoo
Copy link
Contributor

Closes #289

@patternfly-build
Copy link

patternfly-build commented Nov 20, 2024

Copy link

@kaylachumley kaylachumley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is great! I left some comments throughout - thanks erin!

1. **Footer:** A persistent region at the bottom of the ChatBot window that contains the message bar and the footnote.
1. **Footnote (optional):** A persistent, short message that contains any legal disclaimers or important information about the ChatBot. Footnotes are optional, but strongly recommended. For more information, refer to the [ChatBot footnote guidelines](#footnotes).
1. **Toggle:** The button that allows users to open and close the ChatBot window. When the ChatBot is opened, the toggle should appear below the ChatBot window.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proposing to add a 9th element to this list!

Options Menu or Action Menu A menu that contains a series of navigational options, including settings, terms of use, feedback, help, and display modes.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

chatbot-elements 2
and then we could rearange the numbers so the options menu is #4 and not #9


1. **Container:** The window that contains the entire ChatBot experience and all of its components.
1. **Header:** A persistent region at the top of the ChatBot window that contains navigation, branding, and actions.
1. **Navigation:** A menu that contains navigational options, including access to the conversation history.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Im wondering if we can be more specific here and name this secondary navigation and then the options menu could be called primary navigation? or we can keep it as options menu? Not sure so I'll refer to you erin!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm def open to opinions on this! My thought is that the terminology of "options menu" makes the most sense for that menu, and the idea "navigation" is going to be familiar with that hamburger icon. But if "navigation" itself sounds too derivative, we could def switch this back to "Conversation history" or even "Conversation navigation" to be more descriptive?

1. **Attachments:** Details about files that a user has uploaded to the ChatBot.
1. **Footer:** A persistent region at the bottom of the ChatBot window that contains the message bar and the footnote.
1. **Footnote (optional):** A persistent, short message that contains any legal disclaimers or important information about the ChatBot. Footnotes are optional, but strongly recommended. For more information, refer to the [ChatBot footnote guidelines](#footnotes).
1. **Toggle:** The button that allows users to open and close the ChatBot window. When the ChatBot is opened, the toggle should appear below the ChatBot window.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wondering if we can call this Launch Toggle instead of Toggle just to be more specific. Since toggle could potentially confuse users with the menu toggle verbiage? who knows 🤷‍♀️

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm that's a fair point. My only thought with "launch toggle" is that the toggle also handles minimizing, rather than just launching (ik this is nitpicky). We could call it the "ChatBot toggle" to make it more standalone? I think the slight repetitiveness of "ChatBot" isn't distracting in this situation?

![A basic user message, bot message, and quick reply buttons.](./img/message-elements.svg)
</div>

1. **Bot message:** Messages from the ChatBot, which are marked with an "AI" label to communicate the use of AI to users. You should choose a descriptive name for your ChatBot.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if the user can change their profile picture and name? it may be built into your login info? we dont have any designs built out for editing a profile

Copy link
Member

@rebeccaalpert rebeccaalpert Nov 21, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We provide support for swapping out the name and avatar for both bot and user messages, but how that happens is up to the product right now. We do force the AI label if it's a bot message.

</div>

1. **Attach button:** Allows users to upload files from their computer.
1. **Use microphone button:** Supports speech recognition to allow users to use voice input.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

may be worth noting that the microphone (speech recognition) does not work in all browsers. The button will only appear if 'SpeechRecognition' or 'webkitSpeechRecognition' are available in window. It is currently compatible in chrome and safari. This does not currently work in Firefox.

1. **Attach button:** Allows users to upload files from their computer.
1. **Use microphone button:** Supports speech recognition to allow users to use voice input.
1. **Send button:** Allows users to send a typed message. This button should be disabled until a user has input text.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should add a 4th element here to show the attach menu. The attach menu component appears when the user clicks on the attachment button. The menu provides the user with various methods to upload content to the chatbot. You can change the behavior of the attach button to open a menu, rather than the default file viewer for your operating system.
attach-menu

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The user has to provide whatever goes in that dropdown just fyi - we just provide the dropdown (drop-up in this case) and search bar.


## Variations

There are a few display modes that users can choose when interacting with a ChatBot.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, I am currently playing around with different ways to present display modes and the LM switcher. The language model switcher is currently meant to be shown in the menu toggle in the header but its quite obstructive and I'm thinking we want to avoid drawing attention to that. Planning to discuss more during our sync. Anyways, I imagine that these images will need updated when we make a decision. Here is an example of what I am talking about!
Screenshot 2024-11-20 at 9 18 55 PM


By clicking into the navigation menu, users can search through previous conversations and perform additional actions, such as sharing a conversation with others.

## Variations

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what if we named this Display variations?

</div>

- **Embedded:** The ChatBot is embedded within a product as its own page.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We may want to add a small section dedicated to the option to change language models - currently located in the header in a menu toggle. I'm wondering if this is something that can be turned on and off? meaning that a product could limit the user to one type of language model at all times if they wanted... question for rebecca and nicole for sure!
Screenshot 2024-11-20 at 9 22 10 PM

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They can decide not to show this at the present moment - the header can have anything in it, whether we provide it or not: https://virtual-assistant-pr-virtual-assistant-330.surge.sh/patternfly-ai/chatbot/ui#header-options.

![A basic user message, bot message, and quick reply buttons.](./img/message-elements.svg)
</div>

1. **Bot message:** Messages from the ChatBot, which are marked with an "AI" label to communicate the use of AI to users. You should choose a descriptive name for your ChatBot.
Copy link
Member

@rebeccaalpert rebeccaalpert Nov 21, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot 2024-11-21 at 12 10 51 PM

Number 1 says it's the bot message, but it's actually the user message in this image.

1. **Name:** Identifier for your ChatBot and the user. Choose a name for your ChatBot that users can easily identify as a bot.
1. **Label:** Labels ChatBot messages as "AI."
1. **Timestamp:** The relative or absolute time that a message was sent.
1. **Quick responses:** Programmable, clickable actions that allow users to quickly answer questions from the ChatBot.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would we also want to show sources, response actions, etc.?

![2 toggles with open and closed icons.](./img/chatbot-toggle.svg)
</div>

When there is an unread message from the ChatBot, a notification badge should be placed on the toggle.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would we also want to discuss adding your own image?

1. **Attach button:** Allows users to upload files from their computer.
1. **Use microphone button:** Supports speech recognition to allow users to use voice input.
1. **Send button:** Allows users to send a typed message. This button should be disabled until a user has input text.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to include the stop button as well? This is a newer feature - it'll hide everything else when it's active.


1. **Bot message:** Messages from the ChatBot, which are marked with an "AI" label to communicate the use of AI to users. You should choose a descriptive name for your ChatBot.
1. **User message:** Messages that the user has sent to the ChatBot.
1. **Avatar:** Representative image for your ChatBot and the user. ChatBot avatars should align with your product's brand, adhering to any brand standards that exist.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We may want to swap the avatar out and/or talk about alternative shapes. I'd like to deprecate this man. :)

![ChatBot in overlay mode.](./img/overlay.svg)
</div>

- **Docked:** Anchors the ChatBot in the UI as a side drawer. When docked, the ChatBot window is persistent, and cannot be toggled.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's technically not a drawer, but it does sort of float on top to the right.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ChatBot Design guidelines
4 participants