| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | 
							- import { createContext, useContext } from 'use-context-selector'
 
- import { hexToRGBA } from './utils'
 
- export class Theme {
 
-   public chatColorTheme: string | null
 
-   public chatColorThemeInverted: boolean
 
-   public primaryColor = '#1C64F2'
 
-   public backgroundHeaderColorStyle = 'backgroundImage: linear-gradient(to right, #2563eb, #0ea5e9)'
 
-   public headerBorderBottomStyle = ''
 
-   public colorFontOnHeaderStyle = 'color: white'
 
-   public colorPathOnHeader = 'text-text-primary-on-surface'
 
-   public backgroundButtonDefaultColorStyle = 'backgroundColor: #1C64F2'
 
-   public roundedBackgroundColorStyle = 'backgroundColor: rgb(245 248 255)'
 
-   public chatBubbleColorStyle = 'backgroundColor: rgb(225 239 254)'
 
-   public chatBubbleColor = 'rgb(225 239 254)'
 
-   constructor(chatColorTheme: string | null = null, chatColorThemeInverted = false) {
 
-     this.chatColorTheme = chatColorTheme
 
-     this.chatColorThemeInverted = chatColorThemeInverted
 
-     this.configCustomColor()
 
-     this.configInvertedColor()
 
-   }
 
-   private configCustomColor() {
 
-     if (this.chatColorTheme !== null && this.chatColorTheme !== '') {
 
-       this.primaryColor = this.chatColorTheme ?? '#1C64F2'
 
-       this.backgroundHeaderColorStyle = `backgroundColor: ${this.primaryColor}`
 
-       this.backgroundButtonDefaultColorStyle = `backgroundColor: ${this.primaryColor}; color: ${this.colorFontOnHeaderStyle};`
 
-       this.roundedBackgroundColorStyle = `backgroundColor: ${hexToRGBA(this.primaryColor, 0.05)}`
 
-       this.chatBubbleColorStyle = `backgroundColor: ${hexToRGBA(this.primaryColor, 0.15)}`
 
-       this.chatBubbleColor = `${hexToRGBA(this.primaryColor, 0.15)}`
 
-     }
 
-   }
 
-   private configInvertedColor() {
 
-     if (this.chatColorThemeInverted) {
 
-       this.backgroundHeaderColorStyle = 'backgroundColor: #ffffff'
 
-       this.colorFontOnHeaderStyle = `color: ${this.primaryColor}`
 
-       this.headerBorderBottomStyle = 'borderBottom: 1px solid #ccc'
 
-       this.colorPathOnHeader = this.primaryColor
 
-     }
 
-   }
 
- }
 
- export class ThemeBuilder {
 
-   private _theme?: Theme
 
-   private buildChecker = false
 
-   public get theme() {
 
-     if (this._theme === undefined) {
 
-       this._theme = new Theme()
 
-       return this._theme
 
-     }
 
-     else {
 
-       return this._theme
 
-     }
 
-   }
 
-   public buildTheme(chatColorTheme: string | null = null, chatColorThemeInverted = false) {
 
-     if (!this.buildChecker) {
 
-       this._theme = new Theme(chatColorTheme, chatColorThemeInverted)
 
-       this.buildChecker = true
 
-     }
 
-     else {
 
-       if (this.theme?.chatColorTheme !== chatColorTheme || this.theme?.chatColorThemeInverted !== chatColorThemeInverted) {
 
-         this._theme = new Theme(chatColorTheme, chatColorThemeInverted)
 
-         this.buildChecker = true
 
-       }
 
-     }
 
-   }
 
- }
 
- const ThemeContext = createContext<ThemeBuilder>(new ThemeBuilder())
 
- export const useThemeContext = () => useContext(ThemeContext)
 
 
  |