@adzen/doohbot 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/fesm2022/adzen-doohbot.mjs +1541 -1137
  2. package/fesm2022/adzen-doohbot.mjs.map +1 -1
  3. package/index.d.ts +87 -111
  4. package/index.d.ts.map +1 -1
  5. package/package.json +1 -1
  6. package/src/lib/app/chat/components/chat-button/chat-button.component.scss +43 -9
  7. package/src/lib/app/chat/components/chat-footer/chat-footer.component.scss +3 -3
  8. package/src/lib/app/chat/components/chat-header/chat-header.component.scss +29 -11
  9. package/src/lib/app/chat/components/{chat-history-sidebar/chat-history-sidebar.component.scss → chat-history/chat-history.component.scss} +46 -34
  10. package/src/lib/app/chat/components/chat-input/chat-input.component.scss +44 -21
  11. package/src/lib/app/chat/components/chat-message/chat-message.component.scss +178 -178
  12. package/src/lib/app/chat/components/chat-message-container/chat-message-container.component.scss +55 -24
  13. package/src/lib/app/chat/components/chat-window/chat-window.component.scss +282 -21
  14. package/src/lib/app/login/login-form.component.scss +24 -24
  15. package/src/lib/app/personalization/personalization-dialog.component.scss +17 -17
  16. package/src/lib/app/personalization/sections/account/account-section.component.scss +167 -166
  17. package/src/lib/app/personalization/sections/instruction/instruction-section.component.scss +47 -46
  18. package/src/lib/app/personalization/sections/preferences/preferences-section.component.scss +172 -170
  19. package/src/lib/app/personalization/sections/terms/terms-section.component.scss +58 -57
  20. package/src/lib/doohbot.component.scss +6 -12
  21. package/src/lib/shared/chips/chips.component.scss +8 -8
  22. package/src/lib/shared/confirmation-dialog/confirmation-dialog.component.scss +24 -0
  23. package/src/lib/shared/dropdown-menu/dropdown-menu.component.scss +5 -5
  24. package/src/lib/shared/input-dialog/input-dialog.component.scss +8 -8
  25. package/src/lib/shared/notification-banner/notification-banner.component.scss +342 -0
  26. package/src/lib/shared/snackbar/snackbar.component.scss +3 -3
  27. package/src/lib/styles/_theme.scss +101 -45
  28. package/src/lib/styles/material-override.scss +36 -26
  29. package/src/lib/styles/utility.scss +64 -12
  30. package/src/lib/theme/index.scss +7 -7
  31. package/src/lib/theme/palettes/aqua.scss +76 -62
  32. package/src/lib/theme/palettes/candy.scss +75 -61
  33. package/src/lib/theme/palettes/doohbot.scss +21 -7
  34. package/src/lib/theme/palettes/forest.scss +75 -61
  35. package/src/lib/theme/palettes/midnight.scss +75 -61
  36. package/src/lib/theme/palettes/slate.scss +75 -61
  37. package/src/lib/theme/palettes/sunset.scss +75 -61
  38. package/src/lib/shared/dialog/dialog.component.scss +0 -90
  39. package/src/lib/shared/menu-item/menu-item.component.scss +0 -0
  40. package/src/lib/theme/themes.scss +0 -7
  41. package/src/lib/theme/tokens/semantic.scss +0 -102
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnDestroy, RendererFactory2, ElementRef, Renderer2, Signal, OnInit, SimpleChanges, InjectionToken } from '@angular/core';
2
+ import { OnDestroy, RendererFactory2, ElementRef, OnInit, OnChanges, SimpleChanges, InjectionToken } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
4
  import { HttpClient, HttpHeaders } from '@angular/common/http';
5
5
  import { MatSnackBar } from '@angular/material/snack-bar';
@@ -306,12 +306,15 @@ interface DoohbotConfig {
306
306
  * ```ts
307
307
  * theme: {
308
308
  * buttonStyle: 'fab',
309
- * primaryColor: '#4f46e5',
310
- * backgroundColor: '#ffffff',
311
- * textColor: '#111827',
312
- * userMessageColor: '#e0e7ff',
313
- * botMessageColor: '#f3f4f6',
314
- * fontFamily: 'Inter, Roboto, sans-serif',
309
+ * palette: 'doohbot',
310
+ * tokens: {
311
+ * primaryColor: '#4f46e5',
312
+ * backgroundColor: '#ffffff',
313
+ * textColor: '#111827',
314
+ * userMessageColor: '#e0e7ff',
315
+ * botMessageColor: '#f3f4f6',
316
+ * fontFamily: 'Inter, Roboto, sans-serif',
317
+ * },
315
318
  * enableDrag: true,
316
319
  * enableResize: true
317
320
  * }
@@ -483,6 +486,7 @@ declare class SnackbarService {
483
486
  static ɵprov: i0.ɵɵInjectableDeclaration<SnackbarService>;
484
487
  }
485
488
 
489
+ type PrereqStatus = 'success' | 'failed' | 'pending';
486
490
  declare class AuthService {
487
491
  private http;
488
492
  private storageService;
@@ -495,9 +499,25 @@ declare class AuthService {
495
499
  private readonly federatedAuthTokenSubject;
496
500
  private readonly licenseFileSubject;
497
501
  private readonly licenseCodeSubject;
502
+ private readonly _isAuthenticating;
503
+ private readonly _loginErrorMessage;
504
+ private readonly _errors;
505
+ /** Gets the last login error message */
506
+ readonly loginErrorMessage: i0.Signal<string | null>;
507
+ /** Computed prerequisites status */
508
+ readonly prerequisitesStatus: i0.Signal<{
509
+ federatedToken: PrereqStatus;
510
+ licenseFile: PrereqStatus;
511
+ licenseCode: PrereqStatus;
512
+ }>;
513
+ /** True if all prerequisites are satisfied */
514
+ readonly allPrerequisitesMet: i0.Signal<boolean>;
515
+ private getStatus;
498
516
  private apiBaseUrl;
499
517
  /** Gets if user is authenticated */
500
518
  readonly isAuthenticated: i0.Signal<boolean>;
519
+ /** Gets if user is currently authenticating */
520
+ readonly isAuthenticating: i0.Signal<boolean>;
501
521
  /** Sets remember_me */
502
522
  readonly setRememberMe: (value?: boolean) => void;
503
523
  /** Gets remember_me */
@@ -508,6 +528,8 @@ declare class AuthService {
508
528
  readonly username: () => string;
509
529
  /** Logged-in user avatar URL */
510
530
  readonly profileImageUrl: () => string | null;
531
+ /** `email` of logged in user */
532
+ readonly email: () => string | null;
511
533
  /** `roles` of logged in user */
512
534
  readonly roles: () => string | null;
513
535
  /** `permissions` of logged in user */
@@ -541,18 +563,14 @@ declare class AuthService {
541
563
  * Authenticate user based on stored tokens or refresh tokens.
542
564
  */
543
565
  private authenticate;
544
- /**
545
- * Refresh login token.
546
- */
547
- refreshLogin(): Observable<AuthResult | null>;
548
566
  /**
549
567
  * True if doohbot API requests that are auth-related
550
568
  */
551
569
  isAuthUrl(url: string): boolean;
552
570
  /**
553
- * True if if not a doohbot API request (e.g. external API calls)
571
+ * True if if not a consumer API request (e.g. external API calls)
554
572
  */
555
- isDoohbotApiRequest(url: string): boolean;
573
+ isConsumerApiRequest(url: string): boolean;
556
574
  /**
557
575
  * Initializes the federated authentication flow.
558
576
  *
@@ -591,6 +609,7 @@ declare class AuthService {
591
609
  * This method is called when the user logs out.
592
610
  */
593
611
  clearAuth(): void;
612
+ private extractErrorMessage;
594
613
  static ɵfac: i0.ɵɵFactoryDeclaration<AuthService, never>;
595
614
  static ɵprov: i0.ɵɵInjectableDeclaration<AuthService>;
596
615
  }
@@ -599,6 +618,8 @@ interface ApiResponse<T> {
599
618
  success: boolean;
600
619
  message: string;
601
620
  data?: T;
621
+ timestamp: string;
622
+ errorCode?: string;
602
623
  }
603
624
 
604
625
  interface CustomInstructions {
@@ -658,19 +679,14 @@ declare class ThemeService implements OnDestroy {
658
679
  private _activeTheme;
659
680
  activeTheme: i0.Signal<"light-theme" | "dark-theme">;
660
681
  private observer;
661
- constructor(rendererFactory: RendererFactory2, overlay: OverlayContainer, personalization: PersonalizationService, configService: DoohbotConfigService);
662
- private _currentConfig;
663
682
  private rootElement;
664
- setThemeConfig(elementRef: ElementRef, renderer: Renderer2, isDarkMode?: boolean): void;
665
- applyPrimaryColorToGlobal(colorInput: string): void;
683
+ constructor(rendererFactory: RendererFactory2, overlay: OverlayContainer, personalization: PersonalizationService, configService: DoohbotConfigService);
666
684
  /**
667
- * Helper to convert hex to comma-separated RGB
685
+ * Called by DoohbotComponent during init
668
686
  */
687
+ setThemeConfig(elementRef: ElementRef, isDarkMode?: boolean): void;
688
+ applyPrimaryColorToGlobal(colorInput: string): void;
669
689
  private hexToRgb;
670
- /**
671
- * Simple luminance-based contrast calculation
672
- * Returns #ffffff for dark colors and #000000 for light colors
673
- */
674
690
  private getContrastColor;
675
691
  setTheme(mode: ThemeMode): void;
676
692
  private updateActiveTheme;
@@ -679,12 +695,9 @@ declare class ThemeService implements OnDestroy {
679
695
  private isParentDark;
680
696
  private applyThemeToGlobal;
681
697
  private applyPaletteToGlobal;
682
- private cleanupObservers;
683
698
  ngOnDestroy(): void;
684
- /**
685
- * Manual CSS variable application is now handled via theme.css tokens
686
- */
687
- applyCssVariables(element: HTMLElement, config: DoohbotThemeConfig | undefined): void;
699
+ private cleanupObservers;
700
+ applyCssVariables(element: HTMLElement, config?: DoohbotThemeConfig): void;
688
701
  static ɵfac: i0.ɵɵFactoryDeclaration<ThemeService, never>;
689
702
  static ɵprov: i0.ɵɵInjectableDeclaration<ThemeService>;
690
703
  }
@@ -711,19 +724,33 @@ interface Message {
711
724
  copied?: boolean;
712
725
  }
713
726
 
727
+ interface ChatSessionDto {
728
+ response_id: string;
729
+ last_message_at: Date;
730
+ title: string;
731
+ messages: Message[];
732
+ userId: string;
733
+ }
734
+
714
735
  /**
715
- * ChatUIStateService - Centralized UI state management
716
- *
717
- * Manages all UI-related state for the chat component including:
718
- * - Chat window open/close state
719
- * - History sidebar visibility
720
- * - Unread message tracking
721
- * - Fullscreen state
722
- *
723
- * This service uses Angular signals for reactive state management,
724
- * allowing components to subscribe to state changes efficiently.
736
+ * Prompt mode
725
737
  */
726
- declare class ChatUIStateService {
738
+ type PromptMode = 'markdown' | 'plain';
739
+
740
+ interface ChatStreamMessage {
741
+ role: MessageRole;
742
+ content: string;
743
+ }
744
+
745
+ declare class ChatService {
746
+ private apiService;
747
+ private snackbar;
748
+ private authService;
749
+ private configService;
750
+ private config;
751
+ private chatHistoryService;
752
+ private markdownService;
753
+ private chatSessions;
727
754
  /**
728
755
  * Whether the chat window is currently open
729
756
  */
@@ -740,28 +767,29 @@ declare class ChatUIStateService {
740
767
  * ID of the last message that was read by the user
741
768
  */
742
769
  private lastReadMessageId;
743
- /**
744
- * Reference to current messages (injected from outside)
745
- */
746
- private messagesSignal;
747
770
  /**
748
771
  * Computed number of unread bot messages
749
- * TODO: Actual implementation is to be done
750
772
  */
751
- unreadCount: Signal<number>;
773
+ unreadCount: i0.Signal<number>;
752
774
  /**
753
775
  * Effect to automatically mark messages as read when chat is opened
754
- * TODO: Actual implementation is to be done
755
776
  */
756
- markAsReadEffect: i0.EffectRef;
777
+ messages: i0.WritableSignal<Message[]>;
757
778
  /**
758
- * Set the messages signal reference from an external source
759
- * This allows the UI state service to track messages from MessageService
779
+ * Determine if suggestion chips should be shown
760
780
  */
761
- setMessagesSignal(messagesSignal: Signal<Message[]>): void;
781
+ showSuggestionChips: i0.Signal<boolean>;
782
+ activeSession: i0.WritableSignal<ChatSessionDto | null>;
783
+ isLoadingApi: i0.WritableSignal<boolean>;
784
+ isBotTyping: i0.WritableSignal<boolean>;
785
+ promptMode: i0.WritableSignal<PromptMode>;
786
+ isStreaming: i0.Signal<boolean>;
787
+ messagesStream: Array<ChatStreamMessage>;
788
+ currentResponse: string;
789
+ getFallbackError(): string;
790
+ constructor();
762
791
  /**
763
792
  * Toggle the chat window open/close state
764
- * TODO:
765
793
  */
766
794
  toggleChat(): void;
767
795
  /**
@@ -804,56 +832,6 @@ declare class ChatUIStateService {
804
832
  * Get the last read message ID
805
833
  */
806
834
  getLastReadMessageId(): string | null;
807
- static ɵfac: i0.ɵɵFactoryDeclaration<ChatUIStateService, never>;
808
- static ɵprov: i0.ɵɵInjectableDeclaration<ChatUIStateService>;
809
- }
810
-
811
- interface ChatSessionDto {
812
- response_id: string;
813
- last_message_at: Date;
814
- title: string;
815
- messages: Message[];
816
- userId: string;
817
- }
818
-
819
- /**
820
- * Prompt mode
821
- */
822
- type PromptMode = 'markdown' | 'plain';
823
-
824
- interface ChatStreamMessage {
825
- role: MessageRole;
826
- content: string;
827
- }
828
-
829
- declare class ChatService {
830
- private apiService;
831
- private snackbar;
832
- private authService;
833
- private configService;
834
- private config;
835
- private chatHistoryService;
836
- private chatUIStateService;
837
- private markdownService;
838
- private chatSessions;
839
- messages: i0.WritableSignal<Message[]>;
840
- /**
841
- * Determine if suggestion chips should be shown
842
- */
843
- showSuggestionChips: i0.Signal<boolean>;
844
- private activeSession;
845
- isLoadingApi: i0.WritableSignal<boolean>;
846
- isBotTyping: i0.WritableSignal<boolean>;
847
- promptMode: i0.WritableSignal<PromptMode>;
848
- isStreaming: i0.Signal<boolean>;
849
- messagesStream: Array<ChatStreamMessage>;
850
- currentResponse: string;
851
- getFallbackError(): string;
852
- constructor();
853
- /**
854
- * Create a new chat session
855
- */
856
- createSession(userId: string, sessionId: string): ChatSessionDto;
857
835
  /**
858
836
  * Start a new chat session
859
837
  */
@@ -928,10 +906,8 @@ type FullscreenMode = 'browser' | 'viewport' | 'contained';
928
906
  * Doohbot Main Component
929
907
  * Root component of the Doohbot library
930
908
  */
931
- declare class DoohbotComponent implements OnInit, OnDestroy {
909
+ declare class DoohbotComponent implements OnInit, OnChanges, OnDestroy {
932
910
  private elementRef;
933
- private renderer;
934
- private uiState;
935
911
  private themeService;
936
912
  private licenseService;
937
913
  private authService;
@@ -1023,9 +999,10 @@ declare class DoohbotComponent implements OnInit, OnDestroy {
1023
999
  */
1024
1000
  fullscreenMode: FullscreenMode;
1025
1001
  private destroyIsAuthenticated$;
1026
- constructor(elementRef: ElementRef, renderer: Renderer2, uiState: ChatUIStateService, themeService: ThemeService, licenseService: LicenseService, authService: AuthService, chatService: ChatService, configService: DoohbotConfigService);
1002
+ constructor(elementRef: ElementRef, themeService: ThemeService, licenseService: LicenseService, authService: AuthService, chatService: ChatService, configService: DoohbotConfigService);
1027
1003
  ngOnInit(): Promise<void>;
1028
1004
  ngOnChanges(changes: SimpleChanges): void;
1005
+ private applyTheme;
1029
1006
  private initializeUI;
1030
1007
  private tryStartAuthFlow;
1031
1008
  ngOnDestroy(): void;
@@ -1094,20 +1071,18 @@ declare class Logger {
1094
1071
  * provideDoohbot({
1095
1072
  * environment: 'production',
1096
1073
  * licenseFilePath: 'assets/doohbot_license.json',
1097
- * // Optional api configuration if want to use your own api
1074
+ * // Optional api configuration if want to use your own api.
1075
+ * // If omitted, baseUrl is resolved from environment automatically.
1098
1076
  * api: {
1099
- * apiBaseUrl: 'https://api.doohbot.com/',
1100
1077
  * apiKey: 'your-api-key',
1101
1078
  * },
1102
1079
  * // Optional theme configuration if want to match doohbot to your application theme
1103
1080
  * theme: {
1104
1081
  * buttonStyle: 'fab',
1105
- * primaryColor: '#4f46e5',
1106
- * backgroundColor: '#ffffff',
1107
- * textColor: '#111827',
1108
1082
  * fontFamily: 'Inter, Roboto, sans-serif',
1109
1083
  * enableDrag: true,
1110
- * enableResize: true
1084
+ * enableResize: true,
1085
+ * palette: 'doohbot'
1111
1086
  * }
1112
1087
  * }),
1113
1088
  * ],
@@ -1126,9 +1101,10 @@ declare const DOOHBOT_CONFIG: InjectionToken<DoohbotConfig>;
1126
1101
  * Merges user-provided config overrides with defaults.
1127
1102
  *
1128
1103
  * @param overrides - Partial config to override defaults
1104
+ * @param baseConfig - Base config to merge into. Defaults to library defaults.
1129
1105
  * @returns Fully resolved DoohbotConfig object
1130
1106
  */
1131
- declare function resolveDoohbotConfig(overrides?: Partial<DoohbotConfig>): DoohbotConfig;
1107
+ declare function resolveDoohbotConfig(overrides?: Partial<DoohbotConfig>, baseConfig?: DoohbotConfig): DoohbotConfig;
1132
1108
 
1133
1109
  declare const doohbotConst: {
1134
1110
  appTitle: string;
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../src/lib/core/models/api-config.model.ts","../../src/lib/core/models/auth-config.model.ts","../../src/lib/core/models/theme-config.model.ts","../../src/lib/core/config/doohbot-config.model.ts","../../src/lib/core/config/doohbot-config.service.ts","../../src/lib/core/auth/models/auth-result.model.ts","../../src/lib/core/auth/models/federated-login-request.model.ts","../../src/lib/core/auth/models/login-request.model.ts","../../src/lib/core/auth/storage.service.ts","../../src/lib/core/http/http.service.ts","../../src/lib/shared/snackbar/snackbar.service.ts","../../src/lib/core/auth/auth.service.ts","../../src/lib/core/models/api-response.model.ts","../../src/lib/app/personalization/personalization.service.ts","../../src/lib/core/services/theme.service.ts","../../src/lib/core/types/message-role.type.ts","../../src/lib/core/models/message.ts","../../src/lib/app/chat/chat-ui-state.service.ts","../../src/lib/app/chat/model/chat-session.model.ts","../../src/lib/core/types/prompt-mode.type.ts","../../src/lib/app/chat/model/chat-stream-message.model.ts","../../src/lib/app/chat/chat.service.ts","../../src/lib/core/services/license.service.ts","../../src/lib/core/directives/fullscreen.directive.ts","../../src/lib/doohbot.component.ts","../../src/lib/doohbot.service.ts","../../src/lib/core/utils/logger.service.ts","../../src/lib/doohbot.providers.ts","../../src/lib/core/config/doohbot-config.token.ts","../../src/lib/core/config/doohbot-config.resolver.ts","../../src/lib/const/doohbot-constant.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["_angular_core"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../src/lib/core/models/api-config.model.ts","../../src/lib/core/models/auth-config.model.ts","../../src/lib/core/models/theme-config.model.ts","../../src/lib/core/config/doohbot-config.model.ts","../../src/lib/core/config/doohbot-config.service.ts","../../src/lib/core/auth/models/auth-result.model.ts","../../src/lib/core/auth/models/federated-login-request.model.ts","../../src/lib/core/auth/models/login-request.model.ts","../../src/lib/core/auth/storage.service.ts","../../src/lib/core/http/http.service.ts","../../src/lib/shared/snackbar/snackbar.service.ts","../../src/lib/core/auth/auth.service.ts","../../src/lib/core/models/api-response.model.ts","../../src/lib/app/personalization/personalization.service.ts","../../src/lib/core/services/theme.service.ts","../../src/lib/core/types/message-role.type.ts","../../src/lib/core/models/message.ts","../../src/lib/app/chat/model/chat-session.model.ts","../../src/lib/core/types/prompt-mode.type.ts","../../src/lib/app/chat/model/chat-stream-message.model.ts","../../src/lib/app/chat/chat.service.ts","../../src/lib/core/services/license.service.ts","../../src/lib/core/directives/fullscreen.directive.ts","../../src/lib/doohbot.component.ts","../../src/lib/doohbot.service.ts","../../src/lib/core/utils/logger.service.ts","../../src/lib/doohbot.providers.ts","../../src/lib/core/config/doohbot-config.token.ts","../../src/lib/core/config/doohbot-config.resolver.ts","../../src/lib/const/doohbot-constant.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["_angular_core"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adzen/doohbot",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "multi tenancy chatbot",
5
5
  "peerDependencies": {
6
6
  "@angular/core": ">=17.0.0",
@@ -5,10 +5,10 @@
5
5
  width: 40px;
6
6
  height: 120px;
7
7
  border-radius: 16px 0 0 16px;
8
- background: var(--background-color);
9
- color: var(--white);
8
+ background: var(--db-bg-color);
9
+ color: var(--db-text-primary);
10
10
  border: none;
11
- box-shadow: var(--border-shadow-color);
11
+ box-shadow: var(--db-border-shadow);
12
12
  display: flex;
13
13
  justify-content: center;
14
14
  align-items: center;
@@ -35,7 +35,7 @@
35
35
  height: 18px;
36
36
  border-radius: 50%;
37
37
  background: var(--red);
38
- color: var(--white);
38
+ color: var(--db-bg-color);
39
39
  font-size: 10px;
40
40
  display: flex;
41
41
  align-items: center;
@@ -66,8 +66,8 @@
66
66
  width: 56px;
67
67
  height: 56px;
68
68
  border-radius: 50%;
69
- background: var(--background-color);
70
- color: var(--white);
69
+ background: var(--db-bg-color);
70
+ color: var(--db-text-primary);
71
71
  box-shadow: 0 6px 16px rgba(var(--black-rgb), 0.2);
72
72
  border: none;
73
73
  cursor: pointer;
@@ -75,6 +75,39 @@
75
75
  display: flex;
76
76
  align-items: center;
77
77
  justify-content: center;
78
+ overflow: hidden;
79
+ transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
80
+
81
+ .fab-content {
82
+ transition: all 0.3s ease;
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+
87
+ &.loading {
88
+ opacity: 0;
89
+ transform: scale(0.5);
90
+ }
91
+ }
92
+
93
+ .fab-loader {
94
+ position: absolute;
95
+ top: 50%;
96
+ left: 50%;
97
+ transform: translate(-50%, -50%);
98
+ display: flex;
99
+ align-items: center;
100
+ justify-content: center;
101
+
102
+ ::ng-deep .mat-mdc-progress-spinner {
103
+ --mdc-circular-progress-active-indicator-color: var(--db-primary);
104
+ }
105
+ }
106
+
107
+ &[disabled] {
108
+ cursor: default;
109
+ background: var(--db-bg-color);
110
+ }
78
111
  }
79
112
 
80
113
  .chat-fab svg,
@@ -84,6 +117,7 @@
84
117
  }
85
118
 
86
119
  .chat-fab:hover {
120
+ // transform: rotate(15deg);
87
121
  transform: scale(1.1);
88
122
  }
89
123
 
@@ -92,7 +126,7 @@
92
126
  top: -4px;
93
127
  right: -4px;
94
128
  background: var(--red);
95
- color: var(--white);
129
+ color: var(--db-bg-color);
96
130
  border-radius: 50%;
97
131
  min-width: 18px;
98
132
  height: 18px;
@@ -111,5 +145,5 @@
111
145
  mask: url('/assets/logo.svg') no-repeat center;
112
146
  mask-size: contain;
113
147
 
114
- background-color: var(--primary-color);
115
- }
148
+ background-color: var(--db-primary);
149
+ }
@@ -6,9 +6,9 @@
6
6
  .disclaimer {
7
7
  margin: 0;
8
8
  font-size: 11px;
9
- color: var(--secondary-text-color);
10
- font-family: var(--font-family);
9
+ color: var(--db-text-secondary);
10
+ font-family: var(--db-font);
11
11
  opacity: 0.8;
12
12
  user-select: none;
13
13
  }
14
- }
14
+ }
@@ -5,8 +5,8 @@
5
5
  justify-content: space-between;
6
6
  align-items: center;
7
7
  padding: 10px 20px;
8
- background-color: var(--background-color);
9
- color: var(--text-alt-color);
8
+ background-color: var(--db-bg-color);
9
+ color: var(--db-text-tertiary);
10
10
  // cursor: move;
11
11
  user-select: none;
12
12
  }
@@ -19,7 +19,7 @@
19
19
  display: flex;
20
20
  align-items: center;
21
21
  gap: 6px;
22
- font-family: var(--font-family);
22
+ font-family: var(--db-font);
23
23
  flex-wrap: nowrap;
24
24
  }
25
25
 
@@ -33,8 +33,8 @@
33
33
  .chat-header h2 {
34
34
  margin: 0;
35
35
  font-size: 1.2rem;
36
- color: var(--text-color);
37
- font-family: var(--font-family);
36
+ color: var(--db-text-primary);
37
+ font-family: var(--db-font);
38
38
  font-weight: bold;
39
39
  white-space: nowrap;
40
40
  flex-shrink: 0;
@@ -48,8 +48,8 @@
48
48
 
49
49
  /* Header buttons: fullscreen + close (directly in header) */
50
50
  .header-button {
51
- background: var(--background-color);
52
- border: 1px solid var(--background-color);
51
+ background: var(--db-bg-color);
52
+ border: 1px solid var(--db-bg-color);
53
53
  border-radius: 50%;
54
54
  width: 32px;
55
55
  height: 32px;
@@ -58,7 +58,7 @@
58
58
  align-items: center;
59
59
  justify-content: center;
60
60
  cursor: pointer;
61
- color: var(--text-color);
61
+ color: var(--db-text-primary);
62
62
  transition: all 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);
63
63
  outline: none;
64
64
 
@@ -69,9 +69,9 @@
69
69
  }
70
70
 
71
71
  &:hover {
72
- // background-color: var(--primary-color);
73
- // border-color: var(--primary-color);
74
- // color: var(--white);
72
+ // background-color: var(--db-primary);
73
+ // border-color: var(--db-primary);
74
+ // color: var(--db-bg-color);
75
75
  transform: translateY(-1px);
76
76
  box-shadow: 0 4px 12px rgba(var(--black-rgb), 0.15);
77
77
  }
@@ -79,4 +79,22 @@
79
79
  &:active {
80
80
  transform: translateY(0);
81
81
  }
82
+
83
+ &.avatar-button {
84
+ overflow: hidden;
85
+ padding: 0;
86
+
87
+ mat-icon {
88
+ font-size: 22px;
89
+ width: 22px;
90
+ height: 22px;
91
+ color: var(--db-text-secondary);
92
+ }
93
+
94
+ .profile-avatar {
95
+ width: 100%;
96
+ height: 100%;
97
+ object-fit: cover;
98
+ }
99
+ }
82
100
  }