@rtsee/ngx 0.0.111 → 0.0.113

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnInit, AfterViewInit, ElementRef, EventEmitter, OnDestroy, ChangeDetectorRef, OutputEmitterRef, ViewContainerRef, ComponentFactoryResolver, OnChanges, SimpleChanges, Type } from '@angular/core';
2
+ import { OnInit, AfterViewInit, ElementRef, EventEmitter, OnDestroy, ChangeDetectorRef, OutputEmitterRef, OnChanges, SimpleChanges, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';
3
3
  import { RTSeeConference, RTSeePeerConnection } from '@rtsee/conference';
4
4
  import { RTSeeMessenger, RTSeeMessengerSearch, RTSeeMessage, RTSeeChat, RTSeeChatMember, RTSeeMentionAutocomplete, RTSeeWorkflowAutocomplete, OzzyClientTask } from '@rtsee/messenger';
5
5
  import { IPeer, RTSeeTextLabelKeys, IRTSeeCall } from '@rtsee/core';
@@ -111,6 +111,16 @@ declare class ProfileComponent {
111
111
  messenger: RTSeeMessenger;
112
112
  peer?: IPeer;
113
113
  constructor(authService: RTSeeAuthService, router: Router);
114
+ get targetPeer(): {
115
+ id: string;
116
+ name?: string;
117
+ imageUrl?: string;
118
+ } | undefined;
119
+ get isOtherUser(): boolean;
120
+ get displayName(): string;
121
+ get displayInitials(): string;
122
+ get displayImageUrl(): string | undefined;
123
+ get displaySubtitle(): string;
114
124
  setLanguage(): void;
115
125
  call(): void;
116
126
  videoCall(): void;
@@ -139,6 +149,7 @@ declare class PaymentProductSnippetComponent {
139
149
 
140
150
  declare class RtseeEventsDashboardComponent {
141
151
  eventsDashboard: RTSeeEventsDashboard;
152
+ loadMore(): void;
142
153
  static ɵfac: i0.ɵɵFactoryDeclaration<RtseeEventsDashboardComponent, never>;
143
154
  static ɵcmp: i0.ɵɵComponentDeclaration<RtseeEventsDashboardComponent, "rtsee-events-dashboard", never, { "eventsDashboard": { "alias": "eventsDashboard"; "required": false; }; }, {}, never, never, true, never>;
144
155
  }
@@ -511,10 +522,21 @@ declare class TimeFormatHelperService {
511
522
  static ɵprov: i0.ɵɵInjectableDeclaration<TimeFormatHelperService>;
512
523
  }
513
524
 
514
- declare class RtseeEventsDashboardSessionComponent {
525
+ declare class RtseeEventsDashboardSessionComponent implements OnInit, OnChanges, OnDestroy {
515
526
  timeFormatService: TimeFormatHelperService;
527
+ private cd;
516
528
  session: RTSeeDashboardClientSession;
517
- constructor(timeFormatService: TimeFormatHelperService);
529
+ durationText: string;
530
+ visibleEventsCount: number;
531
+ private timerInterval;
532
+ constructor(timeFormatService: TimeFormatHelperService, cd: ChangeDetectorRef);
533
+ ngOnInit(): void;
534
+ ngOnChanges(changes: SimpleChanges): void;
535
+ ngOnDestroy(): void;
536
+ loadMoreEvents(): void;
537
+ private initTimer;
538
+ private stopTimer;
539
+ private updateDuration;
518
540
  static ɵfac: i0.ɵɵFactoryDeclaration<RtseeEventsDashboardSessionComponent, never>;
519
541
  static ɵcmp: i0.ɵɵComponentDeclaration<RtseeEventsDashboardSessionComponent, "rtsee-rtsee-events-dashboard-session", never, { "session": { "alias": "session"; "required": false; }; }, {}, never, never, true, never>;
520
542
  }
@@ -544,21 +566,24 @@ declare class EventsWidgetsService {
544
566
  static ɵprov: i0.ɵɵInjectableDeclaration<EventsWidgetsService>;
545
567
  }
546
568
 
547
- declare class EventThumbnailComponent implements OnInit, AfterViewInit {
569
+ declare class EventThumbnailComponent implements OnInit, OnChanges, AfterViewInit {
548
570
  private widgetsService;
549
571
  private componentFactoryResolver;
550
572
  timeFormatService: TimeFormatHelperService;
551
573
  private cd;
552
574
  tooltip?: string;
553
575
  timeInAgoFormat: string;
576
+ private componentRef?;
554
577
  event: RTSeeDashboardEvent;
578
+ session?: RTSeeDashboardClientSession;
555
579
  widgetHost: WidgetDirective;
556
580
  constructor(widgetsService: EventsWidgetsService, componentFactoryResolver: ComponentFactoryResolver, timeFormatService: TimeFormatHelperService, cd: ChangeDetectorRef);
557
581
  ngOnInit(): void;
558
582
  generateTooltip(): void;
583
+ ngOnChanges(changes: SimpleChanges): void;
559
584
  ngAfterViewInit(): void;
560
585
  static ɵfac: i0.ɵɵFactoryDeclaration<EventThumbnailComponent, never>;
561
- static ɵcmp: i0.ɵɵComponentDeclaration<EventThumbnailComponent, "rtsee-event-thumbnail", never, { "event": { "alias": "event"; "required": false; }; }, {}, never, never, true, never>;
586
+ static ɵcmp: i0.ɵɵComponentDeclaration<EventThumbnailComponent, "rtsee-event-thumbnail", never, { "event": { "alias": "event"; "required": false; }; "session": { "alias": "session"; "required": false; }; }, {}, never, never, true, never>;
562
587
  }
563
588
 
564
589
  declare class ShaveDirective implements AfterViewInit {
@@ -593,11 +618,22 @@ declare class ManageChatComponent {
593
618
  static ɵcmp: i0.ɵɵComponentDeclaration<ManageChatComponent, "rtsee-manage-chat", never, { "messenger": { "alias": "messenger"; "required": false; }; "menuState": { "alias": "menuState"; "required": false; }; }, {}, never, never, true, never>;
594
619
  }
595
620
 
621
+ interface ICallPresentMember {
622
+ id: string;
623
+ name: string;
624
+ imageUrl?: string;
625
+ initials: string;
626
+ }
596
627
  declare class CallWidgetComponent implements OnInit {
597
628
  message: RTSeeMessage<IRTSeeCall>;
598
629
  messenger: RTSeeMessenger;
599
630
  chat: RTSeeChat;
600
631
  ngOnInit(): void;
632
+ get roomId(): string | null;
633
+ get callerName(): string;
634
+ get isUserInCall(): boolean;
635
+ get presentMembers(): ICallPresentMember[];
636
+ private getInitials;
601
637
  joinCall(): void;
602
638
  static ɵfac: i0.ɵɵFactoryDeclaration<CallWidgetComponent, never>;
603
639
  static ɵcmp: i0.ɵɵComponentDeclaration<CallWidgetComponent, "ngx-call-widget", never, { "message": { "alias": "message"; "required": false; }; "messenger": { "alias": "messenger"; "required": false; }; "chat": { "alias": "chat"; "required": false; }; }, {}, never, never, true, never>;
@@ -670,6 +706,9 @@ declare class ChatComponent implements OnInit, OnDestroy {
670
706
  chatData?: IRTSeeChat;
671
707
  entity?: RTSeeEntity;
672
708
  messenger: RTSeeMessenger;
709
+ showInvite: boolean;
710
+ get isSoleAdmin(): boolean;
711
+ toggleInvite(): void;
673
712
  onInViewPortChange(value: boolean): void;
674
713
  ngOnInit(): void;
675
714
  ngOnDestroy(): void;
@@ -702,7 +741,7 @@ interface IRTSeeMessageGroup {
702
741
  senderVisible: boolean;
703
742
  messages: RTSeeMessage[];
704
743
  }
705
- declare class MessagesListComponent implements AfterViewInit, OnDestroy, OnInit {
744
+ declare class MessagesListComponent implements AfterViewInit, OnChanges, OnDestroy, OnInit {
706
745
  private timeFormatService;
707
746
  private scroller;
708
747
  private document;
@@ -711,19 +750,33 @@ declare class MessagesListComponent implements AfterViewInit, OnDestroy, OnInit
711
750
  messagesGroups: IRTSeeMessageGroup[];
712
751
  firstGroupedMessage: RTSeeMessage | null;
713
752
  lastGroupedMessage: RTSeeMessage | null;
753
+ shouldStickToBottom: boolean;
754
+ private resizeObserver;
755
+ private onMediaCapture;
756
+ private initialScrollInterval;
714
757
  chat: RTSeeChat;
715
758
  messenger: RTSeeMessenger;
716
759
  scrollContainer: ElementRef<HTMLDivElement>;
760
+ contentBlock: ElementRef<HTMLDivElement>;
761
+ bottomAnchor: ElementRef<HTMLDivElement>;
717
762
  constructor(timeFormatService: TimeFormatHelperService, scroller: ViewportScroller, document: Document);
718
763
  onWindowScroll(event: Event): void;
764
+ onWindowResize(): void;
719
765
  ngOnInit(): void;
766
+ ngOnChanges(changes: SimpleChanges): void;
720
767
  ngAfterViewInit(): void;
721
768
  onMessageSent(): void;
722
769
  ngOnDestroy(): void;
770
+ onContainerScroll(event: Event): void;
723
771
  onScrolledToTop(): void;
724
772
  onScroll(): void;
725
- scrollToBottom(): void;
773
+ scrollToBottom(immediate?: boolean): void;
726
774
  formatDate(message: RTSeeMessage): string;
775
+ private checkScrollPosition;
776
+ private isAtBottom;
777
+ private enforceInitialScroll;
778
+ private bindChatEvents;
779
+ private unbindChatEvents;
727
780
  private groupMessages;
728
781
  private saveFirstAndLastGroupedMessages;
729
782
  protected readonly RTSeeChatTypes: typeof RTSeeChatTypes;
@@ -769,6 +822,7 @@ declare class ChatInputComponent implements OnInit, OnDestroy {
769
822
  ngOnInit(): void;
770
823
  ngOnDestroy(): void;
771
824
  get isGroupChat(): boolean;
825
+ startVideoCall(): void;
772
826
  sendMessage(): void;
773
827
  get anyAutocompleteVisible(): boolean;
774
828
  onKeyDown(event: KeyboardEvent): void;
@@ -809,7 +863,8 @@ declare class MessengerHeaderComponent {
809
863
  defaultImagesService: DefaultImagesService;
810
864
  messenger: RTSeeMessenger;
811
865
  isDropdownOpen: boolean;
812
- chatImageExpanded: boolean;
866
+ imageExpandedToSquare: boolean;
867
+ private lastSquareToggleTime;
813
868
  constructor(defaultImagesService: DefaultImagesService);
814
869
  openProfile(id: string): void;
815
870
  toggleDropdown(): void;
@@ -817,9 +872,15 @@ declare class MessengerHeaderComponent {
817
872
  openNewChatDialog(): void;
818
873
  closeManageChatDialog(): void;
819
874
  onChatSaved(chat: IRTSeeChat): void;
875
+ onMyAvatarClick(): void;
876
+ onMyAvatarDblClick(): void;
820
877
  onChatImageClick(): void;
878
+ onChatImageDblClick(): void;
821
879
  collapseInfo(): void;
822
880
  get isGroupOrChannelChat(): boolean;
881
+ get headerTitle(): string;
882
+ get myProfileImageUrl(): string;
883
+ get chatImageUrl(): string;
823
884
  protected readonly RTSeeTextLabelKeys: typeof RTSeeTextLabelKeys;
824
885
  static ɵfac: i0.ɵɵFactoryDeclaration<MessengerHeaderComponent, never>;
825
886
  static ɵcmp: i0.ɵɵComponentDeclaration<MessengerHeaderComponent, "rtsee-messenger-header", never, { "messenger": { "alias": "messenger"; "required": false; }; }, {}, never, never, true, never>;
@@ -948,23 +1009,6 @@ declare class GtagService {
948
1009
  static ɵprov: i0.ɵɵInjectableDeclaration<GtagService>;
949
1010
  }
950
1011
 
951
- interface IWorkflowStepWidget {
952
- /** matches IOzzyWorkflowStepDefinition.widget */
953
- name: string;
954
- /** standalone component with `step`, `workflow`, `chat`, `messenger` inputs */
955
- component: Type<unknown>;
956
- }
957
- /**
958
- * Registry of the components which render workflow steps inside the rts-workflow widget.
959
- */
960
- declare class WorkflowStepsService {
961
- stepsMap: IWorkflowStepWidget[];
962
- register(widget: IWorkflowStepWidget): void;
963
- getStepComponentByName(name?: string): Type<unknown> | null;
964
- static ɵfac: i0.ɵɵFactoryDeclaration<WorkflowStepsService, never>;
965
- static ɵprov: i0.ɵɵInjectableDeclaration<WorkflowStepsService>;
966
- }
967
-
968
1012
  /**
969
1013
  * Default client-side representation of a server-side OzzyTask.
970
1014
  * Can be used directly (`[task]`) or as a message widget (`message.data.taskId`).
@@ -1002,5 +1046,60 @@ declare class RTSeeTaskComponent implements OnInit, OnChanges, OnDestroy {
1002
1046
  static ɵcmp: i0.ɵɵComponentDeclaration<RTSeeTaskComponent, "rtsee-task", never, { "task": { "alias": "task"; "required": false; }; "message": { "alias": "message"; "required": false; }; "messenger": { "alias": "messenger"; "required": false; }; "chat": { "alias": "chat"; "required": false; }; "allowExecute": { "alias": "allowExecute"; "required": false; }; }, {}, never, never, true, never>;
1003
1047
  }
1004
1048
 
1005
- export { EntitiesConfigurationsListComponent, EntitiesListComponent, FormComponent, GtagService, IllustratorComponent, InteractiveStoryEditorComponent, ManageEntityComponent, ManageEntityConfigurationComponent, MessengerComponent, NgxService, PaymentProductSnippetComponent, PresentationComponent, ProfileComponent, RTSeeAuthComponent, RTSeeConferenceComponent, RTSeeContainerComponent, RTSeeControlsComponent, RTSeeModule, RTSeeTaskComponent, RtseeEntityCommentsComponent, RtseeEntityPreviewComponent, RtseeEntityTagsComponent, RtseeEventsDashboardComponent, RtseePeerComponent, RtseeSettingsComponent, RtseeTagGroupManageComponent, RtseeTagGroupsManageComponent, RtseeTagManageComponent, RtseeTagsAccordionMenuComponent, StoryElementsSectionComponent, WorkflowStepsService };
1006
- export type { IAccordionItem, IWorkflowStepWidget, RTSeeTagForm, RTSeeTagGroupForm };
1049
+ declare abstract class BaseEventWidgetComponent implements OnInit, OnChanges, OnDestroy {
1050
+ protected cd: ChangeDetectorRef;
1051
+ private _event;
1052
+ set event(value: RTSeeDashboardEvent);
1053
+ get event(): RTSeeDashboardEvent;
1054
+ private _session?;
1055
+ set session(value: RTSeeDashboardClientSession | undefined);
1056
+ get session(): RTSeeDashboardClientSession | undefined;
1057
+ durationText: string;
1058
+ totalSeconds: number;
1059
+ isLive: boolean;
1060
+ private intervalId;
1061
+ constructor(cd: ChangeDetectorRef);
1062
+ ngOnInit(): void;
1063
+ ngOnChanges(changes: SimpleChanges): void;
1064
+ ngOnDestroy(): void;
1065
+ protected initCounter(): void;
1066
+ protected stopCounter(): void;
1067
+ updateDuration(): void;
1068
+ protected formatSeconds(seconds: number): string;
1069
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseEventWidgetComponent, never>;
1070
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BaseEventWidgetComponent, never, never, { "event": { "alias": "event"; "required": false; }; "session": { "alias": "session"; "required": false; }; }, {}, never, never, true, never>;
1071
+ }
1072
+
1073
+ declare class StoryDetailsOpenedWidgetComponent extends BaseEventWidgetComponent {
1074
+ constructor(cd: ChangeDetectorRef);
1075
+ get storyName(): string;
1076
+ get storyUrl(): string | null;
1077
+ get imageUrl(): string | null;
1078
+ get description(): string | null;
1079
+ static ɵfac: i0.ɵɵFactoryDeclaration<StoryDetailsOpenedWidgetComponent, never>;
1080
+ static ɵcmp: i0.ɵɵComponentDeclaration<StoryDetailsOpenedWidgetComponent, "rtsee-story-details-opened-widget", never, {}, {}, never, never, true, never>;
1081
+ }
1082
+
1083
+ declare class StoryReadingStartedWidgetComponent extends BaseEventWidgetComponent {
1084
+ constructor(cd: ChangeDetectorRef);
1085
+ get storyName(): string;
1086
+ get storyUrl(): string | null;
1087
+ get imageUrl(): string | null;
1088
+ static ɵfac: i0.ɵɵFactoryDeclaration<StoryReadingStartedWidgetComponent, never>;
1089
+ static ɵcmp: i0.ɵɵComponentDeclaration<StoryReadingStartedWidgetComponent, "rtsee-story-reading-started-widget", never, {}, {}, never, never, true, never>;
1090
+ }
1091
+
1092
+ declare class SlideNumberChangedWidgetComponent extends BaseEventWidgetComponent {
1093
+ constructor(cd: ChangeDetectorRef);
1094
+ get slideNumber(): number | string;
1095
+ get totalSlides(): number | null;
1096
+ get slideText(): string;
1097
+ get storyName(): string | null;
1098
+ get storyUrl(): string | null;
1099
+ get imageUrl(): string | null;
1100
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlideNumberChangedWidgetComponent, never>;
1101
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlideNumberChangedWidgetComponent, "rtsee-slide-number-changed-widget", never, {}, {}, never, never, true, never>;
1102
+ }
1103
+
1104
+ export { BaseEventWidgetComponent, EntitiesConfigurationsListComponent, EntitiesListComponent, EventsWidgetsService, FormComponent, GtagService, IllustratorComponent, InteractiveStoryEditorComponent, ManageEntityComponent, ManageEntityConfigurationComponent, MessengerComponent, NgxService, PaymentProductSnippetComponent, PresentationComponent, ProfileComponent, RTSeeAuthComponent, RTSeeConferenceComponent, RTSeeContainerComponent, RTSeeControlsComponent, RTSeeModule, RTSeeTaskComponent, RtseeEntityCommentsComponent, RtseeEntityPreviewComponent, RtseeEntityTagsComponent, RtseeEventsDashboardComponent, RtseePeerComponent, RtseeSettingsComponent, RtseeTagGroupManageComponent, RtseeTagGroupsManageComponent, RtseeTagManageComponent, RtseeTagsAccordionMenuComponent, SlideNumberChangedWidgetComponent, StoryDetailsOpenedWidgetComponent, StoryElementsSectionComponent, StoryReadingStartedWidgetComponent };
1105
+ export type { IAccordionItem, RTSeeTagForm, RTSeeTagGroupForm };
@@ -98,7 +98,7 @@
98
98
  .auth-logo {
99
99
  width: $rtsee-auth-logo-size;
100
100
  height: $rtsee-auth-logo-size;
101
- padding: $rtsee-auth-logo-padding;
101
+ padding: 0; // $rtsee-auth-logo-padding;
102
102
  box-sizing: border-box;
103
103
  margin-bottom: $rtsu-space-md;
104
104
  border-radius: $rtsu-radius-lg;
@@ -14,6 +14,8 @@
14
14
  display: block;
15
15
  width: $nav-item-width;
16
16
  height: $nav-item-height;
17
+ border-radius: 9px;
18
+ overflow: hidden;
17
19
 
18
20
  img {
19
21
  width: 100%;
@@ -25,12 +25,11 @@
25
25
  }
26
26
  }
27
27
 
28
- &.rtsee-shell-messenger-active {
29
- .rtsee-messenger-container {
30
- .rts-messenger {
31
- .rts-messenger-header-container {
32
- top: $video-container-height;
33
- }
28
+
29
+ .rtsee-messenger-container {
30
+ .rts-messenger {
31
+ .rts-messenger-header-container {
32
+ top: $video-container-height;
34
33
  }
35
34
  }
36
35
  }
@@ -38,6 +37,14 @@
38
37
  @media screen and (min-width: $rts-break-md) {
39
38
  padding-top: 0;
40
39
 
40
+ .rtsee-messenger-container {
41
+ .rts-messenger {
42
+ .rts-messenger-header-container {
43
+ top: 0;
44
+ }
45
+ }
46
+ }
47
+
41
48
  .rtsee-presentation-settings {
42
49
  top: 0;
43
50
  right: $video-container-width;
@@ -161,6 +168,10 @@
161
168
  @media screen and (min-width: $rts-break-md) {
162
169
  $rts-divider-style: 2px solid rgba(0, 0, 0, 0.9);
163
170
 
171
+ .rtsee-events-dashboard-container {
172
+ padding-bottom: $rts-bottom-nav-height + $rts-offset-md;
173
+ }
174
+
164
175
  .rtsee-nav-block {
165
176
  position: fixed;
166
177
  height: 100%;
@@ -10,7 +10,7 @@ $rts-sidenav-expanded-width: $video-container-width;
10
10
 
11
11
 
12
12
 
13
- $sidenav-bg-color: #fff;
13
+ $sidenav-bg-color: #000;
14
14
  $default-border-color: #e8e8e8;
15
15
  $primary-blue: #5b7a9f;
16
16
  $sidenav-collapsed-width: $rts-header-height;
@@ -1,15 +1,35 @@
1
1
  @import "../common-variables";
2
+ @import "./variables";
2
3
 
3
- $live-indicator-d: 15px;
4
- $engage-button-border-thickness: 2px;
4
+ $live-indicator-d: 13px;
5
+ $engage-button-border-thickness: 1px;
5
6
 
6
7
  .rtsee-dashboard-client-thumbnail {
7
8
  position: relative;
9
+ background: linear-gradient(
10
+ 135deg,
11
+ rgba(24, 24, 38, 0.85) 0%,
12
+ rgba(16, 16, 26, 0.95) 100%
13
+ );
14
+ border: 1px solid rgba(255, 255, 255, 0.08);
15
+ padding: 16px;
16
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.35);
17
+ backdrop-filter: blur(16px);
18
+ transition:
19
+ border-color 0.2s ease,
20
+ box-shadow 0.2s ease;
21
+
22
+ &:hover {
23
+ border-color: rgba(255, 255, 255, 0.14);
24
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.45);
25
+ }
8
26
 
9
27
  .rtsee-dashboard-client-header {
10
28
  position: relative;
11
- padding-left: $rts-user-avatar-d-sm + $rts-offset-sm;
29
+ padding-left: $rts-user-avatar-d-sm + $rts-offset-md;
12
30
  height: $rts-user-avatar-d-sm;
31
+ display: flex;
32
+ align-items: center;
13
33
 
14
34
  .rtsee-dashboard-client-header-photo {
15
35
  position: absolute;
@@ -24,16 +44,23 @@ $engage-button-border-thickness: 2px;
24
44
  border-radius: 50%;
25
45
  overflow: hidden;
26
46
  background-size: cover;
47
+ background-position: center;
48
+ background-color: rgba(255, 255, 255, 0.05);
49
+ border: 2px solid rgba(255, 255, 255, 0.12);
50
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
27
51
  }
28
52
 
29
53
  .rtsee-dashboard-client-live-indicator {
30
54
  position: absolute;
31
- bottom: -1px;
32
- right: -1px;
55
+ bottom: 0;
56
+ right: 0;
33
57
  width: $live-indicator-d;
34
58
  height: $live-indicator-d;
35
59
  border-radius: 50%;
36
- background: $rts-live-color;
60
+ background: #2ecc71;
61
+ border: 2px solid #161622;
62
+ box-shadow: 0 0 10px #2ecc71;
63
+ animation: pulseGreen 2s infinite ease-in-out;
37
64
  }
38
65
  }
39
66
 
@@ -45,8 +72,10 @@ $engage-button-border-thickness: 2px;
45
72
  font-weight: 600;
46
73
  padding-right: $rts-user-avatar-d-sm + $rts-offset-sm;
47
74
  position: relative;
48
- display: inline-block;
49
- max-width: 100%;
75
+ width: 100%;
76
+ color: $rts-rates-text-primary;
77
+ display: flex;
78
+ align-items: center;
50
79
 
51
80
  .rtsee-dashboard-client-name-text {
52
81
  width: 100%;
@@ -54,27 +83,38 @@ $engage-button-border-thickness: 2px;
54
83
  overflow: hidden;
55
84
  text-overflow: ellipsis;
56
85
  display: inline-block;
86
+ letter-spacing: -0.2px;
57
87
  }
58
88
 
59
89
  .rtsee-dashboard-client-engage {
60
90
  position: absolute;
61
- width: $rts-user-avatar-d-sm;
62
- height: $rts-user-avatar-d-sm;
91
+ width: 36px;
92
+ height: 36px;
63
93
  right: 0;
64
- top: 0;
94
+ top: 50%;
95
+ transform: translateY(-50%);
65
96
  outline: none;
66
- border: $engage-button-border-thickness solid $rts-font-color-light;
67
- background-color: transparent;
97
+ border: $engage-button-border-thickness solid rgba(162, 155, 254, 0.3);
98
+ background: rgba(108, 92, 231, 0.15);
99
+ color: #a29bfe;
68
100
  cursor: pointer;
69
- border-radius: $rts-default-border-radius;
101
+ border-radius: 10px;
102
+ display: flex;
103
+ align-items: center;
104
+ justify-content: center;
105
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
70
106
 
71
107
  &:hover {
72
- opacity: 0.7;
108
+ background: rgba(108, 92, 231, 0.3);
109
+ border-color: rgba(162, 155, 254, 0.6);
110
+ color: #ffffff;
111
+ box-shadow: 0 0 12px rgba(108, 92, 231, 0.4);
112
+ transform: translateY(-50%) scale(1.05);
73
113
  }
74
114
 
75
115
  .rtsee-dashboard-client-engage-icon {
76
- font-size: 23px;
77
- line-height: $rts-user-avatar-d-sm - $engage-button-border-thickness * 2;
116
+ font-size: 18px;
117
+ line-height: 1;
78
118
  }
79
119
  }
80
120
  }
@@ -84,15 +124,58 @@ $engage-button-border-thickness: 2px;
84
124
  overflow-x: auto;
85
125
  overflow-y: hidden;
86
126
  white-space: nowrap;
87
- padding-top: $rts-offset-sm;
127
+ padding-top: $rts-offset-md;
128
+ padding-bottom: 6px;
129
+ margin-top: $rts-offset-sm;
130
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
131
+
132
+ /* Sleek custom scrollbar */
133
+ scrollbar-width: thin;
134
+ scrollbar-color: rgba(255, 255, 255, 0.15) transparent;
135
+
136
+ &::-webkit-scrollbar {
137
+ height: 6px;
138
+ }
139
+
140
+ &::-webkit-scrollbar-track {
141
+ background: transparent;
142
+ }
143
+
144
+ &::-webkit-scrollbar-thumb {
145
+ background: rgba(255, 255, 255, 0.15);
146
+ border-radius: 3px;
147
+
148
+ &:hover {
149
+ background: rgba(255, 255, 255, 0.25);
150
+ }
151
+ }
88
152
 
89
153
  .rtsee-dashboard-sessions-container {
90
154
  display: inline-block;
91
- width: 320px;
92
- margin-right: $rts-offset-sm;
155
+ width: 330px;
156
+ margin-right: $rts-offset-md;
93
157
  vertical-align: top;
158
+ white-space: normal;
159
+
160
+ &:last-of-type {
161
+ margin-right: 0;
162
+ }
94
163
  }
95
164
  }
96
165
 
166
+ @media screen and (min-width: $rtsu-break-md) {
167
+ border-radius: 14px;
168
+ }
169
+ }
97
170
 
171
+ @keyframes pulseGreen {
172
+ 0% {
173
+ box-shadow: 0 0 0 0 rgba(46, 204, 113, 0.6);
174
+ }
175
+ 70% {
176
+ box-shadow: 0 0 0 5px rgba(46, 204, 113, 0);
177
+ }
178
+ 100% {
179
+ box-shadow: 0 0 0 0 rgba(46, 204, 113, 0);
180
+ }
98
181
  }
@@ -1,47 +1,74 @@
1
1
  @import "../common-variables";
2
2
 
3
-
4
3
  .rtsee-events-dashboard-event-thumbnail {
4
+ width: 100%;
5
5
 
6
6
  .rtsee-events-dashboard-default-event-thumbnail {
7
7
  display: flex;
8
+ align-items: center;
8
9
  justify-content: space-between;
9
- height: $rts-user-avatar-d-sm;
10
- background-color: $rts-slightly-active-color;
11
- padding: 0 $rts-offset-sm;
12
- border-radius: $rts-default-border-radius;
10
+ min-height: 38px;
11
+ background: linear-gradient(
12
+ 135deg,
13
+ rgba(28, 28, 42, 0.85) 0%,
14
+ rgba(18, 18, 30, 0.95) 100%
15
+ );
16
+ border: 1px solid rgba(255, 255, 255, 0.08);
17
+ padding: 6px 12px;
18
+ border-radius: 8px;
19
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
20
+ transition: all 0.2s ease;
21
+
22
+ &:hover {
23
+ border-color: rgba(162, 155, 254, 0.3);
24
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.3);
25
+ transform: translateY(-1px);
26
+ }
27
+
28
+ &.rtsee-events-dashboard-default-event-thumbnail-with-data {
29
+ border-left: 3px solid #6c5ce7;
30
+ }
13
31
 
14
32
  .rtsee-events-dashboard-default-event-thumbnail-name {
15
- font-size: 16px;
33
+ font-size: 13px;
34
+ font-weight: 500;
35
+ color: $rts-rates-text-primary;
16
36
  overflow: hidden;
17
37
  white-space: nowrap;
18
38
  text-overflow: ellipsis;
19
- line-height: $rts-user-avatar-d-sm;
39
+ flex: 1;
40
+ padding-right: 8px;
20
41
  }
21
42
 
22
- .rtsee-events-dashboard-default-event-thumbnail-info {
43
+ .rtsee-events-dashboard-default-event-thumbnail-info {
23
44
  display: flex;
24
- justify-content: flex-end;
25
-
26
- .rtsee-events-dashboard-default-event-thumbnail-time {
27
- padding-left: $rts-offset-sm;
28
- font-size: 12px;
29
- font-weight: 300;
30
- color: $rts-font-color-light;
31
- line-height: $rts-user-avatar-d-sm;
32
- }
33
-
45
+ align-items: center;
46
+ gap: 6px;
47
+ flex-shrink: 0;
34
48
 
35
49
  .rtsee-events-dashboard-default-event-thumbnail-details {
36
- height: $rts-user-avatar-d-sm;
37
- line-height: $rts-user-avatar-d-sm;
50
+ display: flex;
51
+ align-items: center;
52
+ color: #a29bfe;
53
+ cursor: pointer;
38
54
 
39
55
  .rtsee-events-dashboard-default-event-thumbnail-details-icon {
40
- height: 100%;
41
- font-size: 24px;
42
- line-height: $rts-user-avatar-d-sm;
56
+ font-size: 16px;
57
+ line-height: 1;
58
+ transition: transform 0.15s ease;
59
+
60
+ &:hover {
61
+ transform: scale(1.15);
62
+ }
43
63
  }
44
64
  }
65
+
66
+ .rtsee-events-dashboard-default-event-thumbnail-time {
67
+ font-size: 11px;
68
+ font-weight: 400;
69
+ color: $rts-rates-text-muted;
70
+ white-space: nowrap;
71
+ }
45
72
  }
46
73
  }
47
74
  }