Theming
Overview of Styling and Theming in LikeMinds SDK
The STYLES
class provides extensive customization capabilities for the LikeMinds Chat SDK, allowing developers to define and maintain a consistent design language across their application. By configuring its properties, you can set colors, fonts, spacing, and styles for various components and screens.
Default Styles and Customization Options
Key Properties of STYLES
:
class STYLES {
static $COLORS: {
PRIMARY: string;
SECONDARY: string;
FONT_PRIMARY: string;
};
static $FONT_SIZES: {
XS: number;
SMALL: number;
REGULAR: number;
MEDIUM: number;
LARGE: number;
XL: number;
XXL: number;
};
static $FONT_WEIGHTS: {
LIGHT: string;
MEDIUM: string;
BOLD: string;
};
static $FONT_TYPES: {
LIGHT: string;
MEDIUM: string;
SEMI_BOLD: string;
BOLD: string;
BLACK: string;
};
static $BACKGROUND_COLORS: {
LIGHT: string;
DARK: string;
};
static $SHADOWS: {
LIGHT: string;
MEDIUM: string;
HEAVY: string;
};
static $MARGINS: {
XS: number;
SMALL: number;
MEDIUM: number;
LARGE: number;
};
static $PADDINGS: {
SMALL: number;
MEDIUM: number;
LARGE: number;
};
static $AVATAR: {
WIDTH: number;
HEIGHT: number;
BORDER_RADIUS: number;
};
static $ALIGN_ROW: {
display: string;
flexDirection: string;
alignItems: string;
};
static $TEXTVIEW_WIDTH: {
REGULAR: number;
};
static $STATUS_BAR_STYLE: {
default: string;
"dark-content": string;
"light-content": string;
};
// Various screen-specific styles
static $CHAT_BUBBLE_STYLE: ChatBubbleStyles;
static $INPUT_BOX_STYLE: InputBoxStyles;
static $REACTION_LIST_STYLE: ReactionListStyles;
static $CHATROOM_HEADER_STYLE: ChatroomHeaderStyles;
static $CHATROOM_TOPIC_STYLE: ChatroomTopicStyles;
static $FILE_UPLOAD_STYLE: FileUploadStyles;
static $MEMBER_DIRECTORY_STYLE: MemberDirectoryStyles;
static $CAROUSEL_SCREEN_STYLE: CarouselScreenStyles;
static $EXPLORE_CHATROOM_STYLE: ExploreChatroomStyles;
static $HOME_FEED_STYLE: HomeFeedStyles;
static $SEARCH_IN_CHATROOM: SearchInChatroomStyles;
static $CHATBOT_INIT_SCREEN_STYLE: ChatBotInitiateScreenStyles;
static $LMCHAT_AI_BUTTON_STYLE: LMChatAIButtonStyle;
}
Theme Configuration
You can dynamically configure themes using the setTheme
method, which allows you to update colors, font types, and background styles. Below is an example:
import { STYLES } from "@likeminds.community/chat-rn-core";
const App = () => {
useEffect(() => {
// Set theme colors and fonts
STYLES.setTheme({
hue: 220,
fontColor: "#333",
primaryColor: "#0055FF",
secondaryColor: "#FFAA00",
lightBackgroundColor: "#FFFFFF",
fontTypes: {
LIGHT: "Roboto-Light",
MEDIUM: "Roboto-Medium",
SEMI_BOLD: "Roboto-SemiBold",
BOLD: "Roboto-Bold",
BLACK: "Roboto-Black",
},
});
}, []);
return <>{/* Your application code here */}</>;
};
Screen-Specific Style Configuration
You can customize individual components or screens by using the provided setter methods. Each setter method accepts a style object to override default styles.
Example: Customizing Chat Bubble Styles
STYLES.setChatBubbleStyle({
bubbleColor: "#0055FF",
textColor: "#FFFFFF",
borderRadius: 12,
});
Example: Customizing Input Box Styles
STYLES.setInputBoxStyle({
borderColor: "#AAAAAA",
placeholderTextColor: "#888888",
backgroundColor: "#FFFFFF",
fontSize: 14,
});
Available Setter Methods
setChatBubbleStyle(chatBubbleStyles: ChatBubbleStyles)
setInputBoxStyle(inputBoxStyles: InputBoxStyles)
setReactionListStyle(reactionListStyles: ReactionListStyles)
setChatroomHeaderStyle(chatroomHeaderStyles: ChatroomHeaderStyles)
setChatroomTopicStyle(chatroomTopicStyles: ChatroomTopicStyles)
setFileUploadStyle(fileUploadStyles: FileUploadStyles)
setMemberDirectoryStyle(memberDirectoryStyles: MemberDirectoryStyles)
setCarouselScreenStyle(carouselScreenStyles: CarouselScreenStyles)
setExploreChatroomStyle(exploreChatroomStyles: ExploreChatroomStyles)
setHomeFeedStyle(homeFeedStyles: HomeFeedStyles)
setSearchInChatroomStyle(searchInChatroomStyles: SearchInChatroomStyles)
setChatbotInitScreenStyle(chatBotInitiateScreenStyles: ChatBotInitiateScreenStyles)
setLMChatAIButtonStyle(lmChatAIButtonStyle: LMChatAIButtonStyle)
Applying Custom Styles Across Components
By leveraging the flexibility of STYLES
, you can create a cohesive and branded experience for your application. Experiment with different configurations to achieve the desired look and feel.