Appearance
Input, Search & Dialogs
Add custom styling to the agent input (the tab completion and suggestions overlay), the Search bar and the Dialogs.
Configuring the custom styles
The custom styles object is passed as argument when mounting the DeepdeskSDK:
js
deepdeskSDK.mount(inputElement, {
customStyles
});
Components and class names
Example of passing class names to the suggestions overlay components using BEM notation.
js
const customStyles = {
/**
* Adds class to root node of the tab completion overlay
*/
rootNode: 'exampleRootNode',
portalRootNode: 'examplePortalRootNode',
/**
* Adds class to root node of the suggestions overlay
*/
suggestionsRootNode: 'exampleSuggestionsRootNode',
CommandPalette: {
root: 'exampleCommandPalette',
list: 'exampleCommandPalette__list',
listWrapper: 'exampleCommandPalette__listWrapper',
listHorizontal: 'exampleCommandPalette__listHorizontal',
page: 'exampleCommandPalette__page',
pageNav: 'exampleCommandPalette__page',
pageBackButton: 'exampleCommandPalette__page',
listHeading: 'exampleCommandPalette__listHeading',
listItem: 'exampleCommandPalette__listItem',
listItemContent: 'exampleCommandPalette__listItemContent',
listItemText: 'exampleCommandPalette__listItemText',
listItemDescription: 'exampleCommandPalette__listItemDescription',
truncate: 'exampleCommandPalette__truncate',
lineClamp: 'exampleCommandPalette__lineClamp',
listItemTitle: 'exampleCommandPalette__listItemTitle',
listItemAction: 'exampleCommandPalette__listItemAction',
listItemSelected: 'exampleCommandPalette__listItemSelected',
sources: 'exampleCommandPalette__sources',
sourcesTitle: 'exampleCommandPalette__sourcesTitle',
source: 'exampleCommandPalette__source',
icon: 'exampleCommandPalette__icon',
search: 'exampleCommandPalette__search',
searchIcon: 'exampleCommandPalette__searchIcon',
searchInputWrapper: 'exampleCommandPalette__searchInputWrapper',
searchInput: 'exampleCommandPalette__searchInput',
select: 'exampleCommandPalette__select',
selectType: 'exampleCommandPalette__selectType',
selectWrapper: 'exampleCommandPalette__selectWrapper',
image: 'exampleCommandPalette__image',
imageSrc: 'exampleCommandPalette__imageSrc',
imageTitle: 'exampleCommandPalette__imageTitle',
actions: 'exampleCommandPalette__actions',
actionsWrapper: 'exampleCommandPalette__actionsWrapper',
actionsBar: 'exampleCommandPalette__actionsBar',
actionButton: 'exampleCommandPalette__actionButton',
actionShortcut: 'exampleCommandPalette__actionShortcut',
actionShortcutFixKerning: 'exampleCommandPalette__actionShortcutFixKerning',
},
Dialog: {
root: 'exampleDialog',
content: 'exampleDialog__content',
},
EditSuggestionForm: {
root: 'exampleEditSuggestionForm',
content: 'exampleEditSuggestionForm__content',
title: 'exampleEditSuggestionForm__title',
actions: 'exampleEditSuggestionForm__actions',
pagination: 'exampleEditSuggestionForm__pagination',
primaryButton: 'exampleEditSuggestionForm__primaryButton',
primaryButtons: 'exampleEditSuggestionForm__primaryButtons',
},
EntitiesList: {
root: 'exampleEntitiesList',
title: 'exampleEntitiesList__title',
empty: 'exampleEntitiesList__empty',
},
Label: {
root: 'exampleLabel'
},
Chip: {
root: 'exampleChip',
},
Login: {
root: 'exampleLogin',
anchor: 'exampleLogin__anchor',
anchorButton: 'exampleLogin__anchorButton',
},
SearchTrigger: {
root: 'exampleSearchTrigger',
text: 'exampleSearchTrigger__text',
},
Suggestion: {
root: 'exampleSuggestion',
fadein: 'exampleSuggestion--fadein',
isSelected: 'exampleSuggestion--isSelected',
isClickable: 'exampleSuggestion--isClickable',
actions: 'exampleSuggestion__actions',
actionsIsFixed: 'exampleSuggestion__actions--isFixed',
actionButton: 'exampleSuggestion__actionButton',
actionButtonIsPrimary: 'exampleSuggestion__actionButton--isPrimary',
actionButtonIsDisabled: 'exampleSuggestion__actionButton--isDisabled',
dropdownList: 'exampleSuggestion__dropdownList',
dropdownButton: 'exampleSuggestion__dropdownButton',
dropdownItem: 'exampleSuggestion__dropdownItem',
dropdownItemButton: 'exampleSuggestion__dropdownItemButton',
label: 'exampleSearchTrigger__label',
labels: 'exampleSearchTrigger__labels',
},
SuggestionList: {
root: 'exampleSuggestionList',
isWithDivider: 'exampleSuggestionList--isWithDivider'
},
SuggestionsOverlay: {
root: 'exampleSuggestionsOverlay',
isInline: 'exampleSuggestionsOverlay--isInline',
isCollapsed: 'exampleSuggestionsOverlay--isCollapsed',
toggleButton: 'exampleSuggestionsOverlay__toggleButton',
toggleButtonWrapper: 'exampleSuggestionsOverlay__toggleButtonWrapper',
toggleButtonWrapperHidden: 'exampleSuggestionsOverlay__toggleButtonWrapperHidden',
collapsible: 'exampleSuggestionsOverlay__collapsible',
hints: 'exampleSuggestionsOverlay__hints',
hintsHidden: 'exampleSuggestionsOverlay__hintsHidden',
triggers: 'exampleSuggestionsOverlay__triggers',
triggersRight: 'exampleSuggestionsOverlay__triggersRight',
},
TextSuggestion: {
badge: 'exampleTextSuggestion__badge',
formattedText: 'exampleTextSuggestion__formattedText',
},
KeyboardHint: {
root: 'exampleKeyboardHint',
},
ToggleButton: {
root: 'exampleToggleButton',
isCollapsed: 'exampleToggleButton--isCollapsed', // modifier on root element
},
TabCompletion: {
root: 'exampleTabCompletion',
container: 'exampleTabCompletion__container',
agentText: 'exampleTabCompletion__agentText',
tabText: 'exampleTabCompletion__tabText',
hint: 'exampleTabCompletion__hint',
focus: 'exampleTabCompletion__focus',
resetIndent: 'exampleTabCompletion__resetIndent',
matchSelection: 'exampleTabCompletion__matchSelection',
matchKeyword: 'exampleTabCompletion__matchKeyword',
matchPlaceholder: 'exampleTabCompletion__matchPlaceholder',
hover: 'exampleTabCompletion__hover',
hintText: 'exampleTabCompletion__hintText',
popover: 'exampleTabCompletion__popover',
popoverRoot: 'exampleTabCompletion__popoverRoot',
popoverContentContainer: 'exampleTabCompletion__popoverContentContainer',
popoverContent: 'exampleTabCompletion__popoverContent',
selectionOptions: 'exampleTabCompletion__selectionOptions',
selectionOptionsIsHidden: 'exampleTabCompletion__selectionOptionsIsHidden',
selectionOptionsButton: 'exampleTabCompletion__selectionOptionsButton',
caret: 'exampleTabCompletion__caret',
popoverSuggestionsRoot: 'exampleTabCompletion__popoverSuggestionsRoot',
suggestionsOverlayInputStyles: 'exampleTabCompletion__suggestionsOverlayInputStyles',
},
};
CSS variables
Note that on the TabCompletion root has the following css variables set inline:
--dd-color
--dd-font-size
--dd-font-family
--dd-font-variant
These variables are the computed style values of the agent input field where the DeepdeskSDK is mounted. So --dd-color
contains the computed css color
value of the agent input, and so on.
You could use the TabCompletion container
class name to override these values.