@chat21/chat21-ionic 3.0.107-rc.9 → 3.0.108-rc.1

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 (34) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +1 -1
  3. package/src/app/app.module.ts +6 -4
  4. package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.ts +0 -1
  5. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.scss +5 -5
  6. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.scss +5 -5
  7. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.scss +5 -5
  8. package/src/app/components/authentication/login/login.component.scss +1 -1
  9. package/src/app/components/authentication/login/login.component.ts +1 -1
  10. package/src/app/components/conversation-info/info-support-group/info-support-group.component.ts +1 -1
  11. package/src/app/components/conversations-list/header-conversations-list/header-conversations-list.component.html +2 -3
  12. package/src/app/components/sidebar/sidebar.component.html +4 -7
  13. package/src/app/components/sidebar/sidebar.component.scss +6 -0
  14. package/src/app/components/sidebar/sidebar.component.ts +4 -0
  15. package/src/app/modals/send-email/send-email.page.html +1 -1
  16. package/src/app/modals/send-email/send-email.page.scss +2 -0
  17. package/src/app/modals/send-email/send-email.page.ts +2 -0
  18. package/src/app/pages/authentication/login/login.page.html +1 -0
  19. package/src/app/pages/authentication/login/login.page.ts +5 -2
  20. package/src/app/services/brand/brand.service.spec.ts +16 -0
  21. package/src/app/services/brand/brand.service.ts +210 -0
  22. package/src/app/utils/BrandResources.ts +59 -0
  23. package/src/app/utils/utils-resources.ts +22 -0
  24. package/src/assets/logos/tiledesk-logo_new_white.svg +45 -0
  25. package/src/assets/logos/tiledesk_logo.svg +51 -0
  26. package/src/assets/logos/tiledesk_logo_no_text.svg +14 -0
  27. package/src/assets/logos/tiledesk_logo_white_small.svg +15 -0
  28. package/src/chat-config-template.json +1 -0
  29. package/src/chat-config.json +1 -0
  30. package/src/variables.scss +2 -0
  31. package/src/assets/transparent.png +0 -0
  32. /package/src/assets/{chat21-logo.png → logos/chat21-logo.png} +0 -0
  33. /package/src/assets/{logo.png → logos/logo.png} +0 -0
  34. /package/src/assets/{tiledesk-solo-logo.png → logos/tiledesk-solo-logo.png} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # chat21-ionic ver 3.0
2
2
 
3
+ ### 3.0.108.rc.1
4
+ - added: brandService to manage remote resources
5
+ - added: brandSrc env property
6
+ - bug-fixed: conversation-list header shows sidebar-user-detail button
7
+
8
+ ### 3.0.107 in PROD
9
+
3
10
  ### 3.0.107.rc.9
4
11
  - changed: whatsapp api url
5
12
  - changed: whatsapp template params removed if array is empty
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chat21/chat21-ionic",
3
3
  "author": "Tiledesk SRL",
4
- "version": "3.0.107-rc.9",
4
+ "version": "3.0.108-rc.1",
5
5
  "license": "MIT License",
6
6
  "homepage": "https://tiledesk.com/",
7
7
  "repository": {
@@ -117,6 +117,7 @@ import { Deeplinks } from '@ionic-native/deeplinks/ngx';
117
117
  import { TriggerEvents } from './services/triggerEvents/triggerEvents';
118
118
  import { Globals } from './utils/globals';
119
119
  import { GlobalSettingsService } from './services/global-settings/global-settings.service';
120
+ import { BrandService } from './services/brand/brand.service';
120
121
 
121
122
  // FACTORIES
122
123
  export function createTranslateLoader(http: HttpClient) {
@@ -254,13 +255,14 @@ export function notificationsServiceFactory(appConfig: AppConfigProvider, chat21
254
255
  }
255
256
  }
256
257
 
257
- const appInitializerFn = (appConfig: AppConfigProvider, logger: NGXLogger) => {
258
- return () => {
258
+ const appInitializerFn = (appConfig: AppConfigProvider, brandService: BrandService, logger: NGXLogger) => {
259
+ return async() => {
259
260
  let customLogger = new CustomLogger(logger)
260
261
  LoggerInstance.setInstance(customLogger)
261
262
  if (environment.remoteConfig) {
262
- return appConfig.loadAppConfig();
263
+ await appConfig.loadAppConfig();
263
264
  }
265
+ await brandService.loadBrand();
264
266
  };
265
267
  };
266
268
 
@@ -323,7 +325,7 @@ const appInitializerFn = (appConfig: AppConfigProvider, logger: NGXLogger) => {
323
325
  provide: APP_INITIALIZER,
324
326
  useFactory: appInitializerFn,
325
327
  multi: true,
326
- deps: [AppConfigProvider, NGXLogger]
328
+ deps: [AppConfigProvider, BrandService, NGXLogger]
327
329
  },
328
330
  {
329
331
  provide: MessagingAuthService,
@@ -22,7 +22,6 @@ export class AvatarComponent implements OnInit {
22
22
  this.url = this.baseLocation +'/assets/images/light_avatar_placeholder.svg'
23
23
  }
24
24
  }
25
-
26
25
  }
27
26
 
28
27
  onBotImgError(event){
@@ -1,11 +1,11 @@
1
1
  // @import '../../../../../sass/variables';
2
2
 
3
3
  div {
4
- --backgroundColor: --basic-blue;
5
- --textColor: --bck-msg-sent;
6
- --hoverBackgroundColor: --bck-msg-sent;
7
- --hoverTextColor: --basic-blue;
8
- --buttonFontSize: --button-in-msg-font-size;
4
+ --backgroundColor: #{var(--basic-blue)};
5
+ --textColor: #{var(--bck-msg-sent)};
6
+ --hoverBackgroundColor: #{var(--bck-msg-sent)};
7
+ --hoverTextColor: #{var(--basic-blue)};
8
+ ---buttonFontSize: #{var(--button-in-msg-font-size)};
9
9
  }
10
10
 
11
11
  .button-in-msg {
@@ -1,11 +1,11 @@
1
1
  // @import '../../../../../sass/variables';
2
2
 
3
3
  div {
4
- --backgroundColor: --basic-blue;
5
- --textColor: --bck-msg-sent;
6
- --hoverBackgroundColor: --bck-msg-sent;
7
- --hoverTextColor: --basic-blue;
8
- --buttonFontSize: --button-in-msg-font-size;
4
+ --backgroundColor: #{var(--basic-blue)};
5
+ --textColor: #{var(--bck-msg-sent)};
6
+ --hoverBackgroundColor: #{var(--bck-msg-sent)};
7
+ --hoverTextColor: #{var(--basic-blue)};
8
+ ---buttonFontSize: #{var(--button-in-msg-font-size)};
9
9
  }
10
10
 
11
11
  .button-in-msg {
@@ -1,10 +1,10 @@
1
1
  // @import '../../../../../sass/variables';
2
2
  div {
3
- --backgroundColor: --basic-blue;
4
- --textColor: --bck-msg-sent;
5
- --hoverBackgroundColor: --bck-msg-sent;
6
- --hoverTextColor: --basic-blue;
7
- --buttonFontSize: --button-in-msg-font-size;
3
+ --backgroundColor: #{var(--basic-blue)};
4
+ --textColor: #{var(--bck-msg-sent)};
5
+ --hoverBackgroundColor: #{var(--bck-msg-sent)};
6
+ --hoverTextColor: #{var(--basic-blue)};
7
+ ---buttonFontSize: #{var(--button-in-msg-font-size)};
8
8
  }
9
9
 
10
10
 
@@ -57,7 +57,7 @@
57
57
  font-size: 16px;
58
58
  letter-spacing: 2px;
59
59
  color: #fff;
60
- background-color: #f0806f !important;
60
+ background-color: var(--base-brand-color) !important;
61
61
  margin-top: 10px;
62
62
  &:active,
63
63
  &:focus,
@@ -23,6 +23,7 @@ export class LoginComponent implements OnInit {
23
23
  @Input() showSpinnerInLoginBtn: boolean;
24
24
  @Input() translationMap: Map<string, string>;
25
25
  @Input() companyLogoBlackUrl: string;
26
+ @Input() companySiteUrl: string;
26
27
  @Input() companyName: string;
27
28
  @Output() onSignInWithEmailAndPassword = new EventEmitter<{ email: string, password: string }>();
28
29
  @Output() onSignInWithGoogle = new EventEmitter()
@@ -30,7 +31,6 @@ export class LoginComponent implements OnInit {
30
31
 
31
32
  // @ViewChild('email', { static: false }) emailInputEl: IonInput;
32
33
  userForm: FormGroup;
33
- companySiteUrl: string;
34
34
  emailMustBeAValidEmail: string;
35
35
  DASHBOARD_URL: string;
36
36
 
@@ -33,7 +33,7 @@ export class InfoSupportGroupComponent implements OnInit {
33
33
 
34
34
  onLoad(iframe){
35
35
  let styleData = this.appStorageService.getItem('style')
36
- console.log('[InfoSupportGroupComponent] styleeeeee', styleData)
36
+ this.logger.log('[InfoSupportGroupComponent] styleeeeee', styleData)
37
37
  if(styleData && styleData !== 'undefined'){
38
38
  this.loadStyle(JSON.parse(styleData))
39
39
  }
@@ -1,14 +1,13 @@
1
1
  <ion-toolbar [class.mobile]="isMobile">
2
2
 
3
- <!-- *ngIf="isMobile || !supportMode" -->
4
- <ion-buttons slot="start" style="height:60px">
3
+
4
+ <ion-buttons *ngIf="isMobile || !supportMode" slot="start" style="height:60px">
5
5
  <ion-button ion-button icon-only fill="clear" (click)="onOpenProfileInfo($event)">
6
6
  <ion-icon slot="icon-only" name="reorder-three-outline"></ion-icon>
7
7
  </ion-button>
8
8
  </ion-buttons>
9
9
 
10
10
  <ion-title>
11
- <!-- <img src="assets/chat21-logo.svg" class="header-logo" alt="header-logo"> -->
12
11
  <div *ngIf="numberOpenConv > 0" class="number-open-conv">({{numberOpenConv}})</div>
13
12
  </ion-title>
14
13
 
@@ -2,7 +2,7 @@
2
2
  <div class="logo">
3
3
  <!-- <a class="logo-img-wpr" [ngClass]="{'small-sidebar-logo-img-wpr' : SIDEBAR_IS_SMALL === true }">
4
4
  <div class="logo-img" (click)="goToHome()" style="cursor: pointer;">
5
- <img class="small-sidebar__logo" src="assets/tiledesk-solo-logo.png" />
5
+ <img class="small-sidebar__logo" src="assets/logos/tiledesk-solo-logo.svg" />
6
6
  </div>
7
7
  </a> -->
8
8
 
@@ -222,16 +222,13 @@
222
222
 
223
223
  </ul>
224
224
 
225
- <div matTooltipClass="custom-mat-tooltip" matTooltip="Tiledesk" class="logoBrand"
225
+ <div matTooltipClass="custom-mat-tooltip" [matTooltip]="LOGOS_ITEMS['COMPANY_LOGO_NO_TEXT'].label" class="logoBrand"
226
226
  #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100">
227
227
  <!-- ------------------------------------------- -->
228
- <!-- LOGO TILEDESK (click)="goToOfficialSite()" -->
228
+ <!-- LOGO BRAND (click)="goToOfficialSite()" -->
229
229
  <!-- ------------------------------------------- -->
230
230
  <a target="_blank" href="{{ tiledesk_url }}" class="customAncor">
231
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="60px" height="30px" x="0px" y="0px" viewBox="0 0 60 60" xml:space="preserve">
232
- <path d="M51.8,28.2h-19c-1.7,0-3-1.3-3-3V6.4c0-1.7-1.3-3-3-3H8c-1.7,0-3,1.3-3,3v22v22c0,1.7,1.3,3,3,3H6.7h3.4 c0.8,0,1.3,0.2,1.9,0.8l2.3,2.3l2.1,2.1c0.8,0.8,1.7,0.8,2.4,0l2.1-2.1l2.3-2.3c0.6-0.6,1.1-0.8,1.9-0.8H52c1.7,0,3-1.3,3-3V31.2 C54.8,29.5,53.5,28.2,51.8,28.2"/>
233
- <path d="M52,24.2H36.8c-1.5,0-2.8-1.3-2.8-2.8V6.2c0-1.5,1.3-2.8,2.8-2.8H52c1.5,0,2.8,1.3,2.8,2.8v15.2 C54.8,22.9,53.5,24.2,52,24.2"/>
234
- </svg>
231
+ <img [src]="LOGOS_ITEMS['COMPANY_LOGO_NO_TEXT'].icon">
235
232
  </a>
236
233
  </div>
237
234
  </div>
@@ -24,6 +24,8 @@
24
24
  position: absolute;
25
25
  bottom: 0;
26
26
  display: flex;
27
+ justify-content: center;
28
+ width: 100%;
27
29
  height: 60px;
28
30
 
29
31
  svg path:first-child {
@@ -32,6 +34,10 @@
32
34
  svg path:nth-child(2){
33
35
  fill: #E5BBAD
34
36
  }
37
+
38
+ img{
39
+ width: 30px;
40
+ }
35
41
  }
36
42
 
37
43
 
@@ -14,6 +14,7 @@ import { tranlatedLanguage } from '../../../chat21-core/utils/constants';
14
14
 
15
15
  // utils
16
16
  import { avatarPlaceholder, getColorBck } from 'src/chat21-core/utils/utils-user';
17
+ import { BRAND_BASE_INFO, LOGOS_ITEMS } from 'src/app/utils/utils-resources';
17
18
 
18
19
  @Component({
19
20
  selector: 'app-sidebar',
@@ -58,6 +59,7 @@ export class SidebarComponent implements OnInit {
58
59
  dashboard_history_url: string;
59
60
  dashboard_settings_url: string;
60
61
  tiledesk_url: string;
62
+ LOGOS_ITEMS = LOGOS_ITEMS;
61
63
  constructor(
62
64
  public imageRepoService: ImageRepoService,
63
65
  public appStorageService: AppStorageService,
@@ -72,6 +74,8 @@ export class SidebarComponent implements OnInit {
72
74
  ) { }
73
75
 
74
76
  ngOnInit() {
77
+ this.tiledesk_url = BRAND_BASE_INFO['COMPANY_SITE_URL']
78
+
75
79
  this.DASHBOARD_URL = this.appConfig.getConfig().dashboardUrl + '#/project/';
76
80
  // console.log('[SIDEBAR] DASHBOARD_URL ', this.DASHBOARD_URL)
77
81
  this.getStoredProjectAndUserRole()
@@ -34,7 +34,7 @@
34
34
  </ion-textarea>
35
35
  <div class="info-wrapper">
36
36
  <ion-label>Powered by</ion-label>
37
- <img src="https://support-pre.tiledesk.com/dashboard/assets/img/logos/tiledesk-logo_new_gray.svg">
37
+ <img [src]="LOGOS_ITEMS['BASE_LOGO'].icon">
38
38
  </div>
39
39
  </div>
40
40
 
@@ -161,6 +161,8 @@ ion-label.message-placeholder{
161
161
 
162
162
  img{
163
163
  max-width: 35%;
164
+ max-height: 50px;
165
+ filter: brightness(0) saturate(100%) invert(64%) sepia(1%) saturate(46%) hue-rotate(314deg) brightness(103%) contrast(99%);
164
166
  }
165
167
  }
166
168
 
@@ -7,6 +7,7 @@ import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service
7
7
  import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
8
8
  import { UserModel } from 'src/chat21-core/models/user';
9
9
  import { checkPlatformIsMobile } from 'src/chat21-core/utils/utils';
10
+ import { LOGOS_ITEMS } from 'src/app/utils/utils-resources';
10
11
 
11
12
  @Component({
12
13
  selector: 'send-email-modal',
@@ -27,6 +28,7 @@ export class SendEmailModal implements OnInit {
27
28
  emailFormGroup: FormGroup;
28
29
  private logger: LoggerService = LoggerInstance.getInstance()
29
30
  public isMobile: boolean = false;
31
+ LOGOS_ITEMS = LOGOS_ITEMS;
30
32
 
31
33
  constructor(
32
34
  public viewCtrl: ModalController,
@@ -3,5 +3,6 @@
3
3
  [translationMap] = translationMap
4
4
  [companyLogoBlackUrl]= companyLogoBlackUrl
5
5
  [companyName]= companyName
6
+ [companySiteUrl]="companySiteUrl"
6
7
  (onSignInWithEmailAndPassword)="onSignInWithEmailAndPassword($event)">
7
8
  </component-login>
@@ -17,6 +17,7 @@ import { isInArray } from 'src/chat21-core/utils/utils';
17
17
  import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
18
18
  import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
19
19
  import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
20
+ import { BRAND_BASE_INFO, LOGOS_ITEMS } from 'src/app/utils/utils-resources';
20
21
 
21
22
  @Component({
22
23
  selector: 'app-login',
@@ -29,6 +30,7 @@ export class LoginPage implements OnInit {
29
30
  showErrorSignIn = false;
30
31
  companyLogoBlackUrl: string;
31
32
  companyName: string;
33
+ companySiteUrl: string;
32
34
 
33
35
  public translationMap: Map<string, string>;
34
36
  private subscriptions = [];
@@ -60,8 +62,9 @@ export class LoginPage implements OnInit {
60
62
 
61
63
  /** */
62
64
  initialize() {
63
- this.companyLogoBlackUrl = 'assets/chat21-logo.png';
64
- this.companyName = 'Tiledesk'; // this.chatManager.getTenant();
65
+ this.companyLogoBlackUrl = LOGOS_ITEMS['BASE_LOGO'].icon;
66
+ this.companyName = BRAND_BASE_INFO['COMPANY_NAME']; // this.chatManager.getTenant();
67
+ this.companySiteUrl = BRAND_BASE_INFO['COMPANY_SITE_URL']
65
68
  this.translations();
66
69
  this.events.subscribe('sign-in', this.signIn);
67
70
  this.setSubscriptions();
@@ -0,0 +1,16 @@
1
+ import { TestBed } from '@angular/core/testing';
2
+
3
+ import { BrandService } from './brand.service';
4
+
5
+ describe('BrandService', () => {
6
+ let service: BrandService;
7
+
8
+ beforeEach(() => {
9
+ TestBed.configureTestingModule({});
10
+ service = TestBed.inject(BrandService);
11
+ });
12
+
13
+ it('should be created', () => {
14
+ expect(service).toBeTruthy();
15
+ });
16
+ });
@@ -0,0 +1,210 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Injectable } from '@angular/core';
3
+ import { TranslateService } from '@ngx-translate/core';
4
+ import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
5
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
6
+ import { AppConfigProvider } from '../app-config';
7
+ import { BrandResources } from 'src/app/utils/BrandResources';
8
+
9
+ @Injectable({
10
+ providedIn: 'root'
11
+ })
12
+ export class BrandService {
13
+
14
+ // "brandSrc":"https://tiledeskbrand.nicolan74.repl.co/mybrand",
15
+
16
+ public brand: any;
17
+
18
+ _brand = {
19
+ DASHBOARD: {
20
+ META_TITLE: "Tiledesk Support Dashboard",
21
+ FAVICON_URL: "https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v13-300x300.png",
22
+ "company_name": "Tiledesk",
23
+ "company_site_name": "tiledesk.com",
24
+ "company_site_url": "https://www.tiledesk.com",
25
+ "company_logo_white__url": "assets/img/logos/tiledesk-logo_white_orange.svg",
26
+ "company_logo_black__url": "assets/img/logos/tiledesk_3.0_logo_black_v2_no_version.svg",
27
+ "company_logo_allwhite__url": "assets/img/logos/tiledesk_3.0_logo_all_white_v2_no_version.svg",
28
+ "company_logo_no_text__url": "assets/img/logos/tiledesk-solo-logo.png",
29
+ "privacy_policy_link_text": "Privacy Policy",
30
+ "privacy_policy_url": "https://www.tiledesk.com/privacy.html",
31
+ "display_terms_and_conditions_link": true,
32
+ "terms_and_conditions_url": "https://www.tiledesk.com/termsofservice.html",
33
+ "contact_us_email": "support@tiledesk.com",
34
+ "footer": {
35
+ "display_terms_and_conditions_link": true,
36
+ "display_contact_us_email": true
37
+ },
38
+ "recent_project_page": {
39
+ "company_logo_black__width": "130px"
40
+ },
41
+ "signup_page": {
42
+ "display_terms_and_conditions_link": true
43
+ },
44
+ "handle_invitation_page": {
45
+ "company_logo_45x45": "assets/img/logos/tiledesk-solo-logo.png"
46
+ },
47
+ "wizard_create_project_page": {
48
+ "logo_x_rocket": "assets/img/logos/logo_x_rocket4x4.svg"
49
+ },
50
+ "wizard_install_widget_page": {
51
+ "logo_on_rocket": "assets/img/logos/tiledesk-solo-logo.png"
52
+ },
53
+ },
54
+ CHAT: {
55
+
56
+ },
57
+ CDS: {
58
+ META_TITLE:"Design Studio",
59
+ FAVICON_URL: "https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v13-300x300.png",
60
+ INFO_MENU_ITEMS: [
61
+ { key: 'HELP_CENTER', icon: "", src:"", status: "inactive"},
62
+ { key: 'ROAD_MAP', icon: "", src:"", status: "inactive"},
63
+ { key: 'FEEDBACK', icon: "", src:"", status: "inactive"},
64
+ { key: 'SUPPORT', icon: "", src:"", status: "inactive"},
65
+ { key: 'CHANGELOG', icon: "", src:"", status: "inactive"},
66
+ { key: 'GITHUB', icon: "", src:"", status: "inactive"},
67
+ ]
68
+ },
69
+ COMMON: {
70
+ COMPANY_LOGO:"assets/logos/tiledesk_logo.svg",
71
+ COMPANY_LOGO_NO_TEXT:"assets/logos/tiledesk_logo.svg",
72
+ BASE_LOGO: "assets/logos/tiledesk_logo.svg",
73
+ BASE_LOGO_NO_TEXT: "assets/logos/tiledesk_logo.svg",
74
+ BASE_LOGO_WHITE: "assets/logos/tiledesk-logo_new_white.svg",
75
+ BASE_LOGO_WHITE_NO_TEXT:"",
76
+ COMPANY_NAME: "Tiledesk",
77
+ COMPANY_SITE_NAME:"tiledesk.com",
78
+ COMANY_SITE_URL:"https://www.tiledesk.com",
79
+ CONTACT_US_EMAIL: "support@tiledesk.com",
80
+ COMPANY_PRIMARY_COLOR:""
81
+ }
82
+ }
83
+
84
+ public assetBrand: any;
85
+ // public brand = brand
86
+ // local_url = '/assets/brand/brand.json';
87
+ warning: string;
88
+ loadBrandError: string;
89
+
90
+ private logger: LoggerService = LoggerInstance.getInstance();
91
+
92
+ constructor(
93
+ private httpClient: HttpClient,
94
+ private translate: TranslateService,
95
+ private appConfigProvider: AppConfigProvider
96
+ ) {
97
+ this.getTranslations()
98
+ this.brand = this._brand
99
+ }
100
+
101
+ getTranslations() {
102
+ this.translate.get('Warning')
103
+ .subscribe((text: string) => {
104
+ this.warning = text;
105
+ });
106
+
107
+ this.translate.get('RelatedKnowledgeBase')
108
+ .subscribe((text: string) => {
109
+ this.loadBrandError = text;
110
+ });
111
+ }
112
+
113
+ isEmpty(url: string) {
114
+ return (url === undefined || url == null || url.length <= 0) ? true : false;
115
+ }
116
+
117
+ // getData() {
118
+ // return this.httpClient.get('/assets/brand/brand.json');
119
+ // }
120
+
121
+
122
+
123
+ async loadBrand() {
124
+ // this.getData()
125
+ // .subscribe(data => {
126
+ // this.assetBrand = data
127
+ // console.log('[BRAND-SERV] BRAND RETIEVED FROM ASSET assetBrand ', this.assetBrand);
128
+ // });
129
+
130
+ // let url = ''
131
+ // if (environment.remoteConfig === false) {
132
+
133
+ // if (environment.hasOwnProperty("brandSrc")) {
134
+
135
+ // this.logger.log('[BRAND-SERV] loadBrand remoteConfig is false - env has Property brandSrc');
136
+ // const remoteBrandUrl = this.isEmpty(environment['brandSrc']);
137
+
138
+ // if (!remoteBrandUrl) {
139
+ // this.logger.log('[BRAND-SERV] loadBrand remoteConfig is false - env brandSrc is empty ? ', remoteBrandUrl);
140
+ // url = environment['brandSrc']
141
+ // } else {
142
+ // this.logger.log('[BRAND-SERV] loadBrand remoteConfig is false - env brandSrc is empty ? ', remoteBrandUrl, ' -> load from assets')
143
+ // this.brand = this._brand;
144
+ // }
145
+ // } else {
146
+ // this.logger.log('[BRAND-SERV] loadBrand remoteConfig is false - env NOT has Property brandSrc -> load from assets');
147
+ // this.brand = this._brand;
148
+ // }
149
+ // } else {
150
+ // const res = await this.httpClient.get(environment['remoteConfigUrl']).toPromise();
151
+ // this.logger.log('[BRAND-SERV] loadBrand - remoteConfig -> true get remoteConfig response ', res);
152
+
153
+ // // const remoteConfigData = JSON.parse(res['_body'])
154
+ // const remoteConfigData = res
155
+ // // this.logger.log('BrandService loadBrand - remoteConfig is true - get remoteConfigData res ', remoteConfigData);
156
+
157
+ // if (remoteConfigData.hasOwnProperty("brandSrc")) {
158
+ // this.logger.log('[BRAND-SERV] loadBrand remoteConfig is true - remoteConfigData has Property brandSrc');
159
+
160
+ // const remoteBrandUrl = this.isEmpty(remoteConfigData['brandSrc']);
161
+ // if (!remoteBrandUrl) {
162
+ // this.logger.log('[BRAND-SERV] loadBrand remoteConfig is true - remoteConfigData brandSrc is empty ?', remoteBrandUrl);
163
+
164
+ // url = remoteConfigData['brandSrc']
165
+
166
+
167
+ // } else {
168
+ // this.logger.log('[BRAND-SERV] loadBrand remoteConfig is true - remoteConfigData brandSrc is empty ?', remoteBrandUrl, ' -> load from assets');
169
+
170
+ // this.brand = this._brand;
171
+ // }
172
+
173
+ // } else {
174
+ // this.logger.log('[BRAND-SERV] loadBrand remoteConfig is true - remoteConfigData NOT has Property brandSrc -> load from assets');
175
+ // // this.setBrand(this.local_url)
176
+ // // url = this.local_url
177
+ // this.brand = this._brand;
178
+ // }
179
+ // }
180
+
181
+ try {
182
+ let url = this.appConfigProvider.getConfig().brandSrc
183
+ if (url && url !== 'CHANGEIT') {
184
+ const data = await this.httpClient.get(url).toPromise();
185
+
186
+ console.log('[BRAND-SERV] **** GET BRAND FROM URL ****', url);
187
+
188
+ this.brand =data
189
+
190
+ console.log('[BRAND-SERV] loadBrand - brand: ', this.brand);
191
+
192
+ const resources = new BrandResources(this);
193
+ resources.loadResources()
194
+ }
195
+ } catch (err) {
196
+ console.error('[BRAND-SERV] loadBrand error : ', err);
197
+
198
+ this.brand = this._brand;
199
+ }
200
+
201
+
202
+ }
203
+
204
+ getBrand() {
205
+ console.log('BrandService getBrand has been called - brand: ', this.brand);
206
+ return { ...this.brand['CHAT'], ...this.brand['COMMON'] }
207
+ }
208
+
209
+
210
+ }
@@ -0,0 +1,59 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { BrandService } from "../services/brand/brand.service";
3
+ import { BRAND_BASE_INFO, LOGOS_ITEMS } from "./utils-resources";
4
+
5
+ @Injectable({
6
+ providedIn: 'root'
7
+ })
8
+ export class BrandResources {
9
+
10
+ brand: {}
11
+
12
+ constructor(
13
+ brandService: BrandService
14
+ ) {
15
+ this.brand = brandService.getBrand()
16
+ }
17
+
18
+ loadResources(){
19
+ if(!this.brand){
20
+ return;
21
+ }
22
+
23
+ /** META TITLE and FAVICON */
24
+ document.title = this.brand['COMPANY_NAME'] + ' ' + this.brand['META_TITLE']
25
+ var icon = document.querySelector("link[rel~='icon']") as HTMLElement;
26
+ icon.setAttribute('href', this.brand['FAVICON_URL'])
27
+
28
+ /** CSS */
29
+ document.body.style.setProperty('--base-brand-color', this.brand['BRAND_COLOR']);
30
+
31
+ /** LOGOS_ITEMS */
32
+ Object.keys(LOGOS_ITEMS).forEach(key => { LOGOS_ITEMS[key].icon = this.brand[key]; LOGOS_ITEMS[key].label = this.brand['COMPANY_NAME']})
33
+
34
+ /** BRAND_BASE_INFO */
35
+ Object.keys(BRAND_BASE_INFO).forEach(key => BRAND_BASE_INFO[key] = this.brand[key])
36
+
37
+ // /** INFO_MENU_ITEMS */
38
+ // let result: Array<{ key: string, label: string, icon: string, type: TYPE_URL, status: "active" | "inactive", src?: string}> = Array.from([...INFO_MENU_ITEMS, ...this.brand['INFO_MENU_ITEMS']].reduce((m, o) => m.set(o.key, o), new Map).values());
39
+ // result.forEach(el => {
40
+ // INFO_MENU_ITEMS.find(a => a.key === el.key).icon = el.icon
41
+ // INFO_MENU_ITEMS.find(a => a.key === el.key).src = el.src
42
+ // INFO_MENU_ITEMS.find(a => a.key === el.key).status = el.status
43
+ // INFO_MENU_ITEMS.find(a => a.key === el.key).icon = el.icon
44
+ // })
45
+
46
+ // /** MEDIA */
47
+ // Object.keys(MEDIA).forEach(key => {
48
+ // if(this.brand['MEDIA'][key].src) MEDIA[key].src = this.brand['MEDIA'][key].src
49
+ // if(this.brand['MEDIA'][key].text) MEDIA[key].text = this.brand['MEDIA'][key].text
50
+ // if(this.brand['MEDIA'][key].description) MEDIA[key].description = this.brand['MEDIA'][key].description
51
+ // })
52
+
53
+
54
+
55
+
56
+ // console.log('infooooo', INFO_MENU_ITEMS)
57
+ }
58
+ }
59
+
@@ -0,0 +1,22 @@
1
+ export const LOGOS_ITEMS: { [key: string] : { label: string, icon: string }} ={
2
+ COMPANY_LOGO: {label: 'Tiledesk', icon: 'assets/logos/tiledesk_logo.svg'},
3
+ COMPANY_LOGO_NO_TEXT: {label: 'Tiledesk', icon: 'assets/logos/tiledesk_logo_no_text.svg'},
4
+ BASE_LOGO: {label: 'Tiledesk', icon: 'assets/logos/tiledesk_logo.svg'},
5
+ BASE_LOGO_NO_TEXT: {label: 'Tiledesk', icon: 'assets/logos/tiledesk_logo_no_text.svg'},
6
+ BASE_LOGO_WHITE: { label: 'Tiledesk', icon: '"assets/logos/tiledesk-logo_new_white.svg'},
7
+ BASE_LOGO_WHITE_NO_TEXT: { label: 'Tiledesk', icon: '"assets/logos/tiledesk-logo_new_white.svg'}
8
+ }
9
+
10
+ export const BRAND_BASE_INFO: { [key: string] : any} ={
11
+ COMPANY_NAME: "Tiledesk",
12
+ COMPANY_SITE_NAME:"tiledesk.com",
13
+ COMPANY_SITE_URL:"https://www.tiledesk.com",
14
+ CONTACT_US_EMAIL: "support@tiledesk.com",
15
+ FAVICON: "https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v13-300x300.png",
16
+ META_TITLE:"Design Studio"
17
+ }
18
+
19
+ export const MEDIA: { [key: string]: { src: string, text: string, description: string}}= {
20
+ RULES: { src: "https://www.youtube.com/embed/p0ux-86Y4_I", text: "CDSSplashScreen.YouHaveNoRules", description: "CDSSplashScreen.LearnAboutAI"},
21
+ GLOBALS: { src: "", text: "CDSGlobals.NoGlobalVariables", description: ""},
22
+ }
@@ -0,0 +1,45 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 412 132" style="enable-background:new 0 0 412 132;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#FFFFFF;}
7
+ </style>
8
+ <g>
9
+ <path class="st0" d="M84,53.1H54.7c-2.6,0-4.6-2.1-4.6-4.6V19.2c0-2.6-2.1-4.6-4.6-4.6H16.1c-2.6,0-4.6,2.1-4.6,4.6v33.9V87
10
+ c0,2.6,2.1,4.6,4.6,4.6h-2h5.3c1.1,0,2.1,0.4,2.8,1.2l3.4,3.4l3.2,3.2c1,1,2.7,1,3.7,0l3.2-3.2l3.4-3.4c0.8-0.8,1.8-1.2,2.8-1.2h42
11
+ c2.6,0,4.6-2.1,4.6-4.6V57.8C88.6,55.2,86.6,53.1,84,53.1"/>
12
+ <path class="st0" d="M85.8,46.9H59.1c-1.5,0-2.8-1.3-2.8-2.8V17.4c0-1.5,1.3-2.8,2.8-2.8h26.8c1.5,0,2.8,1.3,2.8,2.8v26.8
13
+ C88.6,45.7,87.4,46.9,85.8,46.9"/>
14
+ <path class="st0" d="M262.4,26.5h-0.2c-1.3,0-2.3,1-2.3,2.3c0,0.1,0,9,0,15.5c-3.7-2.7-8.3-4.2-13.4-3.7c-9,0.9-16.3,8.1-17.3,17.1
15
+ c-1.2,11.6,7.8,21.5,19.2,21.5c4.5,0,8.7-1.6,12-4.2c0.1,2.4,2.1,4.3,4.5,4.3c2.5,0,4.5-2,4.5-4.5V33.6
16
+ C269.5,29.7,266.3,26.5,262.4,26.5 M251.8,71.2c-8.3,1.8-15.5-5.4-13.7-13.7c0.9-4.2,4.3-7.6,8.5-8.5c8.3-1.8,15.5,5.4,13.7,13.7
17
+ C259.4,66.9,256,70.3,251.8,71.2"/>
18
+ <path class="st0" d="M147.4,75l-1.4-3.7c-0.4-1.1-1.7-1.7-2.8-1.3c-4,1.3-7.5-0.5-7.2-5.4V52.2c0-0.8,0.7-1.5,1.5-1.5h5.7
19
+ c1.3,0,2.3-1,2.3-2.3v-5.5c0-1.3-1-2.3-2.3-2.3h-5.7c-0.8,0-1.5-0.7-1.5-1.5V28.8c0-1.3-1-2.3-2.3-2.3c-4.9,0-8.9,4-8.9,8.9v3.7
20
+ c0,0.8-0.7,1.5-1.5,1.5h-2.1c-1.3,0-2.3,1-2.3,2.3v5.5c0,1.3,1,2.3,2.3,2.3h2.1c0.8,0,1.5,0.7,1.5,1.5v12.7
21
+ c-0.1,9.9,5,14.3,14.3,14.4C141.7,79.1,148.5,79,147.4,75"/>
22
+ <path class="st0" d="M168.5,76.5V29.3c0-1.6,1.3-2.8,2.8-2.8h5.4c1.6,0,2.8,1.3,2.8,2.8v47.2c0,1.6-1.3,2.8-2.8,2.8h-5.4
23
+ C169.7,79.3,168.5,78.1,168.5,76.5"/>
24
+ <path class="st0" d="M222.2,49.7c-7.1-12.5-28.2-12.2-35.1,0.3c-5.4,9.2-2.3,22.6,7.7,27.3c7.4,3.8,21.4,3.1,25.6-2
25
+ c0.9-1.1,1.2-3.8-0.6-5.4c-2-1.8-6-0.4-7.8,0.2c-5,1.9-12.4,1.1-15.2-3.9c-0.5-0.9-1-2.8-0.3-2.8c0.9,0,24,0,24,0
26
+ C224.3,63.3,225.7,56.3,222.2,49.7 M213.2,56.8c-2,0-17.3,0-17.4,0c-0.7,0,0-2,0.7-3.3c1.4-2.9,4.6-4.5,7.8-4.7
27
+ c2-0.1,4.4,0.1,6.2,1.3C214.3,52.7,214.1,56.8,213.2,56.8"/>
28
+ <path class="st0" d="M312.1,49.7C305,37.2,283.9,37.5,277,50c-5.4,9.2-2.3,22.6,7.7,27.3c7.4,3.8,21.4,3.1,25.6-2
29
+ c0.9-1.1,1.2-3.8-0.6-5.4c-2-1.8-6-0.4-7.8,0.2c-5,1.9-12.4,1.1-15.2-3.9c-0.5-0.9-1-2.8-0.3-2.8c0.9,0,24,0,24,0
30
+ C314.3,63.3,315.6,56.3,312.1,49.7 M303.1,56.8c-2,0-17.3,0-17.4,0c-0.7,0,0-2,0.7-3.3c1.4-2.9,4.6-4.5,7.8-4.7
31
+ c2-0.1,4.4,0.1,6.2,1.3C304.2,52.7,304,56.8,303.1,56.8"/>
32
+ <path class="st0" d="M334.7,79.8c-5-0.2-10.3-1.6-14.5-3.8c-1.1-0.6-1.4-2-0.9-3.1l1.9-3.7c0.6-1.1,2-1.6,3.1-1
33
+ c3.7,2.2,17.5,6.2,18.4,0.1c0-0.9-0.3-1.6-1.1-2.1c-2.1-1.2-5-1.5-7.7-2.2c-3.2-0.7-6.6-1.5-9.3-3.3c-5.1-2.9-5.4-10.8-1.7-15.1
34
+ c3.8-4.3,9.6-5.4,15.8-5.1c2.6,0.1,5.4,0.6,8.1,1.4c3.6,1,5.2,5.1,3.5,8.4c-1.6,2.7-4.4-0.1-6.5-0.4c-3.2-1-8.5-1.5-10.9-0.2
35
+ c-2.1,0.9-2.6,3.5-0.7,4.7c0.8,0.5,1.9,1,3.3,1.3c4.5,1,9.8,1.7,13.8,4.3c4.7,2.7,5.3,9.6,2.4,14C348,78.9,341.4,80.2,334.7,79.8"
36
+ />
37
+ <path class="st0" d="M396.4,75.6l-13.6-17.2c-0.5-0.6-0.5-1.5,0.1-2.1L394,45c1.4-1.5,0.4-3.9-1.6-3.9h-6.8c-0.6,0-1.2,0.2-1.6,0.6
38
+ l-13.1,12.4c-0.9,0.9-2.5,0.2-2.5-1.1V34.1c0-4.2-3.4-7.6-7.6-7.6h-0.9c-0.9,0-1.6,0.7-1.6,1.6v49.6c0,0.9,0.7,1.6,1.6,1.6h6.2
39
+ c1.3,0,2.3-1,2.3-2.3v-6.3c0-0.7,0.3-1.3,0.8-1.8l3.6-3.5c0.6-0.6,1.6-0.5,2.1,0.1c2.7,3.4,10.3,12.9,10.3,12.9
40
+ c0.4,0.5,1.1,0.9,1.8,0.9h7.6C396.5,79.3,397.6,77.1,396.4,75.6"/>
41
+ <path class="st0" d="M152.4,76.5V43.3c0-1.6,1.3-2.8,2.8-2.8h5.4c1.6,0,2.8,1.3,2.8,2.8v33.2c0,1.6-1.3,2.8-2.8,2.8h-5.4
42
+ C153.7,79.3,152.4,78.1,152.4,76.5"/>
43
+ <path class="st0" d="M163.4,32.1c-0.2,7.3-10.8,7.3-11,0C152.6,24.8,163.3,24.8,163.4,32.1"/>
44
+ </g>
45
+ </svg>
@@ -0,0 +1,51 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 26.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 311.8 73.7" style="enable-background:new 0 0 311.8 73.7;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#F28779;}
7
+ .st1{fill:#F6B0A1;}
8
+ .st2{fill:#454848;}
9
+ </style>
10
+ <g>
11
+ <path class="st0" d="M61.1,33.5H37.9c-2,0-3.7-1.6-3.7-3.7V6.7c0-2-1.6-3.7-3.7-3.7h-23c-2,0-3.7,1.6-3.7,3.7v26.8v26.8
12
+ c0,2,1.6,3.7,3.7,3.7H5.9h4.2c0.8,0,1.6,0.3,2.2,0.9l2.7,2.7l2.5,2.5c0.8,0.8,2.1,0.8,3,0l2.5-2.5l2.7-2.7c0.6-0.6,1.4-0.9,2.2-0.9
13
+ h33.2c2,0,3.7-1.6,3.7-3.7V37.1C64.7,35.1,63.1,33.5,61.1,33.5"/>
14
+ <path class="st1" d="M62.5,28.6H41.4c-1.2,0-2.2-1-2.2-2.2V5.3c0-1.2,1-2.2,2.2-2.2h21.1c1.2,0,2.2,1,2.2,2.2v21.1
15
+ C64.7,27.6,63.7,28.6,62.5,28.6"/>
16
+ </g>
17
+ <g>
18
+ <g>
19
+ <path class="st2" d="M196,14.7h-0.1c-1,0-1.9,0.8-1.9,1.9c0,0.1,0,7.5,0,12.8c-3-2.2-6.9-3.5-11-3c-7.5,0.7-13.5,6.7-14.4,14.2
20
+ c-1.1,9.7,6.5,17.8,16,17.8c3.8,0,7.1-1.3,9.9-3.5c0.1,2,1.7,3.6,3.8,3.6c2.1,0,3.8-1.7,3.8-3.8V20.6
21
+ C201.9,17.5,199.2,14.7,196,14.7 M187.3,51.8c-6.9,1.6-12.9-4.5-11.3-11.3c0.7-3.5,3.6-6.3,7-7c6.9-1.6,12.9,4.5,11.3,11.3
22
+ C193.5,48.2,190.7,51.1,187.3,51.8"/>
23
+ <path class="st2" d="M100.7,55l-1.2-3c-0.3-0.9-1.4-1.4-2.3-1.1c-3.4,1.1-6.2-0.4-6-4.5V36.1c0-0.6,0.5-1.3,1.3-1.3h4.7
24
+ c1,0,1.9-0.8,1.9-1.9v-4.6c0-1-0.8-1.9-1.9-1.9h-4.7c-0.6,0-1.3-0.5-1.3-1.3v-8.5c0-1.1-0.8-1.9-1.9-1.9c-4.1,0-7.4,3.3-7.4,7.3v3
25
+ c0,0.6-0.5,1.3-1.3,1.3H79c-1.1,0-1.9,0.8-1.9,1.9V33c0,1,0.8,1.9,1.9,1.9h1.8c0.6,0,1.3,0.5,1.3,1.3v10.5
26
+ c-0.1,8.2,4.1,11.9,11.9,12C96,58.4,101.7,58.3,100.7,55"/>
27
+ <path class="st2" d="M118.2,56.2V17.1c0-1.3,1.1-2.3,2.3-2.3h4.5c1.3,0,2.3,1.1,2.3,2.3v39.1c0,1.3-1.1,2.3-2.3,2.3h-4.5
28
+ C119.2,58.6,118.2,57.5,118.2,56.2"/>
29
+ <path class="st2" d="M162.7,34c-5.9-10.4-23.3-10.1-29.1,0.2c-4.5,7.6-1.9,18.8,6.4,22.7c6.1,3.2,17.7,2.6,21.2-1.7
30
+ c0.7-0.8,1.1-3.2-0.5-4.5c-1.7-1.5-4.9-0.3-6.5,0.1c-4.2,1.6-10.3,0.8-12.6-3.3c-0.4-0.7-0.8-2.3-0.2-2.3c0.7,0,19.8,0,19.8,0
31
+ C164.5,45.3,165.6,39.4,162.7,34 M155.2,39.9c-1.7,0-14.3,0-14.4,0c-0.5,0,0-1.7,0.5-2.7c1.2-2.4,3.8-3.8,6.4-3.9
32
+ c1.7-0.1,3.7,0.1,5.1,1.2C156.2,36.6,156,39.9,155.2,39.9"/>
33
+ <path class="st2" d="M237.2,34c-5.9-10.4-23.3-10.1-29.1,0.2c-4.5,7.6-1.9,18.8,6.4,22.7c6.1,3.2,17.7,2.6,21.2-1.7
34
+ c0.7-0.8,1.1-3.2-0.5-4.5c-1.7-1.5-4.9-0.3-6.5,0.1c-4.2,1.6-10.3,0.8-12.6-3.3c-0.4-0.7-0.8-2.3-0.2-2.3c0.7,0,19.8,0,19.8,0
35
+ C239,45.3,240.1,39.4,237.2,34 M229.8,39.9c-1.7,0-14.3,0-14.4,0c-0.5,0,0-1.7,0.5-2.7c1.2-2.4,3.8-3.8,6.4-3.9
36
+ c1.7-0.1,3.7,0.1,5.1,1.2C230.6,36.6,230.5,39.9,229.8,39.9"/>
37
+ <path class="st2" d="M255.9,58.9c-4.2-0.2-8.5-1.3-12-3.1c-0.9-0.5-1.2-1.7-0.7-2.5l1.6-3c0.5-0.9,1.6-1.3,2.5-0.8
38
+ c3,1.8,14.5,5.1,15.2,0.1c0-0.7-0.3-1.4-0.9-1.8c-1.8-1-4.1-1.3-6.4-1.8c-2.6-0.5-5.5-1.3-7.8-2.7c-4.2-2.4-4.5-9-1.4-12.5
39
+ c3.2-3.6,8-4.5,13.1-4.2c2.1,0.1,4.5,0.5,6.7,1.2c2.9,0.8,4.3,4.3,2.8,6.9c-1.4,2.2-3.7-0.1-5.4-0.3c-2.7-0.8-7-1.3-9-0.2
40
+ c-1.7,0.7-2.1,2.9-0.5,3.9c0.7,0.4,1.6,0.8,2.7,1c3.7,0.8,8.1,1.4,11.4,3.6c3.9,2.3,4.4,8,2,11.5C267,58.2,261.5,59.2,255.9,58.9"
41
+ />
42
+ <path class="st2" d="M307.1,55.5l-11.2-14.3c-0.4-0.5-0.4-1.3,0.1-1.8l9.2-9.3c1.2-1.2,0.3-3.3-1.4-3.3h-5.7
43
+ c-0.5,0-0.9,0.2-1.3,0.5l-10.8,10.3c-0.7,0.7-2.1,0.2-2.1-0.8V21c0-3.5-2.8-6.3-6.3-6.3h-0.7c-0.7,0-1.4,0.6-1.4,1.4v41.2
44
+ c0,0.7,0.6,1.4,1.4,1.4h5.1c1,0,1.9-0.8,1.9-1.9v-5.2c0-0.5,0.2-1.2,0.6-1.5l2.9-2.9c0.5-0.5,1.3-0.4,1.8,0.1
45
+ c2.3,2.8,8.6,10.7,8.6,10.7c0.3,0.4,0.9,0.7,1.5,0.7h6.3C307.2,58.6,308,56.7,307.1,55.5"/>
46
+ <path class="st2" d="M104.9,56.2V28.7c0-1.3,1-2.3,2.3-2.3h4.5c1.3,0,2.3,1.1,2.3,2.3v27.5c0,1.3-1,2.3-2.3,2.3h-4.5
47
+ C106,58.6,104.9,57.5,104.9,56.2"/>
48
+ </g>
49
+ <path class="st2" d="M114,19.3c-0.1,6-8.9,6-9.1,0C105,13.4,113.9,13.4,114,19.3"/>
50
+ </g>
51
+ </svg>
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 26.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#F18876;}
7
+ .st1{fill:#E5BBAD;}
8
+ </style>
9
+ <path class="st0" d="M51.8,28.2h-19c-1.7,0-3-1.3-3-3V6.4c0-1.7-1.3-3-3-3H8c-1.7,0-3,1.3-3,3v22v22c0,1.7,1.3,3,3,3H6.7h3.4
10
+ c0.8,0,1.3,0.2,1.9,0.8l2.3,2.3l2.1,2.1c0.8,0.8,1.7,0.8,2.4,0l2.1-2.1l2.3-2.3c0.6-0.6,1.1-0.8,1.9-0.8H52c1.7,0,3-1.3,3-3V31.2
11
+ C54.8,29.5,53.5,28.2,51.8,28.2"/>
12
+ <path class="st1" d="M52,24.2H36.8c-1.5,0-2.8-1.3-2.8-2.8V6.2c0-1.5,1.3-2.8,2.8-2.8H52c1.5,0,2.8,1.3,2.8,2.8v15.2
13
+ C54.8,22.9,53.5,24.2,52,24.2"/>
14
+ </svg>
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 62.4 62.4" style="enable-background:new 0 0 62.4 62.4;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#FFFFFF;}
7
+ </style>
8
+ <g>
9
+ <path class="st0" d="M53.5,28.4H34.2c-1.7,0-3-1.4-3-3V6.1c0-1.7-1.4-3-3-3H8.9c-1.7,0-3,1.4-3,3v22.3v22.3c0,1.7,1.4,3,3,3H7.5H11
10
+ c0.7,0,1.4,0.3,1.9,0.8l2.2,2.2l2.1,2.1c0.7,0.7,1.8,0.7,2.5,0l2.1-2.1l2.2-2.2c0.5-0.5,1.2-0.8,1.9-0.8h27.6c1.7,0,3-1.4,3-3V31.4
11
+ C56.5,29.7,55.2,28.4,53.5,28.4"/>
12
+ <path class="st0" d="M54.7,24.3H37.1c-1,0-1.8-0.8-1.8-1.8V4.9c0-1,0.8-1.8,1.8-1.8h17.6c1,0,1.8,0.8,1.8,1.8v17.6
13
+ C56.5,23.5,55.7,24.3,54.7,24.3"/>
14
+ </g>
15
+ </svg>
@@ -28,6 +28,7 @@
28
28
  "APIendpoint": "${MQTT_APIENDPOINT}"
29
29
  },
30
30
  "apiUrl": "${API_URL}",
31
+ "brandSrc": "${BRAND_SRC}",
31
32
  "whatsappTemplatesBaseUrl":"${WHATSAPP_TEMPLATES_BASE_URL}",
32
33
  "baseImageUrl": "${API_BASEIMAGE_URL}",
33
34
  "dashboardUrl": "${DASHBOARD_URL}",
@@ -25,6 +25,7 @@
25
25
  "APIendpoint": "http://localhost:8004/api"
26
26
  },
27
27
  "apiUrl": "http://localhost:3000/",
28
+ "brandSrc": "${BRAND_SRC}",
28
29
  "whatsappTemplatesBaseUrl":"http://localhost:3000/",
29
30
  "baseImageUrl": "https://firebasestorage.googleapis.com/v0/b/",
30
31
  "dashboardUrl": "https://support-pre.tiledesk.com/dashboard/",
@@ -2,6 +2,8 @@ body {
2
2
  /* Color palette */
3
3
  --black: #000000;
4
4
 
5
+ --base-brand-color: rgb(224, 106, 88);
6
+
5
7
  --basic-green: #0A7D41;
6
8
  --dark-green: #005f3b;
7
9
  --light-green: #8cc841;
Binary file
File without changes