@rtsee/ngx 0.0.112 → 0.0.114

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.
@@ -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;
@@ -608,11 +618,22 @@ declare class ManageChatComponent {
608
618
  static ɵcmp: i0.ɵɵComponentDeclaration<ManageChatComponent, "rtsee-manage-chat", never, { "messenger": { "alias": "messenger"; "required": false; }; "menuState": { "alias": "menuState"; "required": false; }; }, {}, never, never, true, never>;
609
619
  }
610
620
 
621
+ interface ICallPresentMember {
622
+ id: string;
623
+ name: string;
624
+ imageUrl?: string;
625
+ initials: string;
626
+ }
611
627
  declare class CallWidgetComponent implements OnInit {
612
628
  message: RTSeeMessage<IRTSeeCall>;
613
629
  messenger: RTSeeMessenger;
614
630
  chat: RTSeeChat;
615
631
  ngOnInit(): void;
632
+ get roomId(): string | null;
633
+ get callerName(): string;
634
+ get isUserInCall(): boolean;
635
+ get presentMembers(): ICallPresentMember[];
636
+ private getInitials;
616
637
  joinCall(): void;
617
638
  static ɵfac: i0.ɵɵFactoryDeclaration<CallWidgetComponent, never>;
618
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>;
@@ -685,6 +706,9 @@ declare class ChatComponent implements OnInit, OnDestroy {
685
706
  chatData?: IRTSeeChat;
686
707
  entity?: RTSeeEntity;
687
708
  messenger: RTSeeMessenger;
709
+ showInvite: boolean;
710
+ get isSoleAdmin(): boolean;
711
+ toggleInvite(): void;
688
712
  onInViewPortChange(value: boolean): void;
689
713
  ngOnInit(): void;
690
714
  ngOnDestroy(): void;
@@ -717,7 +741,7 @@ interface IRTSeeMessageGroup {
717
741
  senderVisible: boolean;
718
742
  messages: RTSeeMessage[];
719
743
  }
720
- declare class MessagesListComponent implements AfterViewInit, OnDestroy, OnInit {
744
+ declare class MessagesListComponent implements AfterViewInit, OnChanges, OnDestroy, OnInit {
721
745
  private timeFormatService;
722
746
  private scroller;
723
747
  private document;
@@ -726,19 +750,33 @@ declare class MessagesListComponent implements AfterViewInit, OnDestroy, OnInit
726
750
  messagesGroups: IRTSeeMessageGroup[];
727
751
  firstGroupedMessage: RTSeeMessage | null;
728
752
  lastGroupedMessage: RTSeeMessage | null;
753
+ shouldStickToBottom: boolean;
754
+ private resizeObserver;
755
+ private onMediaCapture;
756
+ private initialScrollInterval;
729
757
  chat: RTSeeChat;
730
758
  messenger: RTSeeMessenger;
731
759
  scrollContainer: ElementRef<HTMLDivElement>;
760
+ contentBlock: ElementRef<HTMLDivElement>;
761
+ bottomAnchor: ElementRef<HTMLDivElement>;
732
762
  constructor(timeFormatService: TimeFormatHelperService, scroller: ViewportScroller, document: Document);
733
763
  onWindowScroll(event: Event): void;
764
+ onWindowResize(): void;
734
765
  ngOnInit(): void;
766
+ ngOnChanges(changes: SimpleChanges): void;
735
767
  ngAfterViewInit(): void;
736
768
  onMessageSent(): void;
737
769
  ngOnDestroy(): void;
770
+ onContainerScroll(event: Event): void;
738
771
  onScrolledToTop(): void;
739
772
  onScroll(): void;
740
- scrollToBottom(): void;
773
+ scrollToBottom(immediate?: boolean): void;
741
774
  formatDate(message: RTSeeMessage): string;
775
+ private checkScrollPosition;
776
+ private isAtBottom;
777
+ private enforceInitialScroll;
778
+ private bindChatEvents;
779
+ private unbindChatEvents;
742
780
  private groupMessages;
743
781
  private saveFirstAndLastGroupedMessages;
744
782
  protected readonly RTSeeChatTypes: typeof RTSeeChatTypes;
@@ -784,6 +822,7 @@ declare class ChatInputComponent implements OnInit, OnDestroy {
784
822
  ngOnInit(): void;
785
823
  ngOnDestroy(): void;
786
824
  get isGroupChat(): boolean;
825
+ startVideoCall(): void;
787
826
  sendMessage(): void;
788
827
  get anyAutocompleteVisible(): boolean;
789
828
  onKeyDown(event: KeyboardEvent): void;
@@ -824,7 +863,8 @@ declare class MessengerHeaderComponent {
824
863
  defaultImagesService: DefaultImagesService;
825
864
  messenger: RTSeeMessenger;
826
865
  isDropdownOpen: boolean;
827
- chatImageExpanded: boolean;
866
+ imageExpandedToSquare: boolean;
867
+ private lastSquareToggleTime;
828
868
  constructor(defaultImagesService: DefaultImagesService);
829
869
  openProfile(id: string): void;
830
870
  toggleDropdown(): void;
@@ -832,9 +872,15 @@ declare class MessengerHeaderComponent {
832
872
  openNewChatDialog(): void;
833
873
  closeManageChatDialog(): void;
834
874
  onChatSaved(chat: IRTSeeChat): void;
875
+ onMyAvatarClick(): void;
876
+ onMyAvatarDblClick(): void;
835
877
  onChatImageClick(): void;
878
+ onChatImageDblClick(): void;
836
879
  collapseInfo(): void;
837
880
  get isGroupOrChannelChat(): boolean;
881
+ get headerTitle(): string;
882
+ get myProfileImageUrl(): string;
883
+ get chatImageUrl(): string;
838
884
  protected readonly RTSeeTextLabelKeys: typeof RTSeeTextLabelKeys;
839
885
  static ɵfac: i0.ɵɵFactoryDeclaration<MessengerHeaderComponent, never>;
840
886
  static ɵcmp: i0.ɵɵComponentDeclaration<MessengerHeaderComponent, "rtsee-messenger-header", never, { "messenger": { "alias": "messenger"; "required": false; }; }, {}, never, never, true, never>;
@@ -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;
@@ -151,6 +158,7 @@
151
158
 
152
159
  .rtsee-events-dashboard-container {
153
160
  display: none;
161
+ padding-bottom: $rts-bottom-nav-height + $rts-offset-md;
154
162
  }
155
163
 
156
164
  .rtsee-presentation-container {
@@ -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;
@@ -5,10 +5,46 @@
5
5
  @import "../common-variables";
6
6
 
7
7
  .rts-chat-input {
8
+ padding-left: $rts-chat-input-height;
8
9
  padding-right: $rts-chat-input-height;
9
10
  position: relative;
10
11
  overflow: visible;
11
12
 
13
+ .rts-start-call-button {
14
+ position: absolute;
15
+ height: $rts-chat-input-height - $rts-offset-md;
16
+ width: $rts-chat-input-height - $rts-offset-md;
17
+ line-height: 0;
18
+ left: $rtsu-space-xs;
19
+ bottom: $rtsu-space-xs;
20
+ background: linear-gradient(135deg, #10b981 0%, #059669 100%);
21
+ border: none;
22
+ outline: none;
23
+ border-radius: $rtsu-radius-sm;
24
+ color: #fff;
25
+ cursor: pointer;
26
+ display: flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ transition: transform $rtsu-transition-fast,
30
+ box-shadow $rtsu-transition-fast;
31
+ box-shadow: 0 2px 8px rgba(16, 185, 129, 0.35);
32
+
33
+ span {
34
+ font-size: 20px;
35
+ line-height: 1;
36
+ }
37
+
38
+ &:hover {
39
+ transform: scale(1.05);
40
+ box-shadow: 0 4px 16px rgba(16, 185, 129, 0.5);
41
+ }
42
+
43
+ &:active {
44
+ transform: scale(0.95);
45
+ }
46
+ }
47
+
12
48
  .rts-send-message {
13
49
  &::-webkit-scrollbar {
14
50
  display: none;
@@ -37,6 +37,96 @@
37
37
  }
38
38
  }
39
39
 
40
+ // ── Sole Admin Invite Banner ──
41
+ .rts-chat-sole-admin-banner {
42
+ margin: $rtsu-space-sm;
43
+ background: linear-gradient(
44
+ 135deg,
45
+ rgba(108, 92, 231, 0.12) 0%,
46
+ rgba(162, 155, 254, 0.05) 100%
47
+ );
48
+ border: 1px solid rgba(108, 92, 231, 0.25);
49
+ border-radius: $rtsu-radius-lg;
50
+ backdrop-filter: $rtsu-glass-blur;
51
+ padding: $rtsu-space-sm $rtsu-space-md;
52
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
53
+ animation: rts-fade-up 0.4s ease-out both;
54
+
55
+ .rts-chat-sole-admin-header {
56
+ display: flex;
57
+ align-items: center;
58
+ gap: $rtsu-space-sm;
59
+
60
+ .rts-chat-sole-admin-badge {
61
+ width: 36px;
62
+ height: 36px;
63
+ border-radius: 50%;
64
+ background: rgba(108, 92, 231, 0.2);
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+ color: var(--rts-accent-light, #a29bfe);
69
+ flex-shrink: 0;
70
+
71
+ .material-icons-outlined {
72
+ font-size: 20px;
73
+ }
74
+ }
75
+
76
+ .rts-chat-sole-admin-info {
77
+ flex: 1;
78
+
79
+ h4 {
80
+ margin: 0;
81
+ font-size: $rtsu-font-size-sm + 1px;
82
+ font-weight: $rtsu-font-weight-semibold;
83
+ color: var(--rts-text-primary);
84
+ }
85
+
86
+ p {
87
+ margin: 2px 0 0;
88
+ font-size: $rtsu-font-size-xs;
89
+ color: var(--rts-text-secondary);
90
+ }
91
+ }
92
+
93
+ .rts-chat-invite-toggle-btn {
94
+ display: inline-flex;
95
+ align-items: center;
96
+ gap: $rtsu-space-xs;
97
+ padding: 6px 14px;
98
+ font-size: $rtsu-font-size-xs + 1px;
99
+ font-weight: $rtsu-font-weight-semibold;
100
+ border-radius: $rtsu-radius-sm;
101
+ white-space: nowrap;
102
+ background: linear-gradient(
103
+ 135deg,
104
+ $rtsu-accent-purple 0%,
105
+ $rtsu-accent-purple-light 100%
106
+ );
107
+ color: #fff;
108
+ border: none;
109
+ cursor: pointer;
110
+ transition: transform $rtsu-transition-fast, box-shadow $rtsu-transition-fast;
111
+
112
+ .material-icons-outlined {
113
+ font-size: 16px;
114
+ }
115
+
116
+ &:hover {
117
+ transform: translateY(-1px);
118
+ box-shadow: $rtsu-shadow-accent-sm;
119
+ }
120
+ }
121
+ }
122
+
123
+ .rts-chat-sole-admin-invite {
124
+ margin-top: $rtsu-space-sm;
125
+ border-top: 1px solid rgba(108, 92, 231, 0.15);
126
+ padding-top: $rtsu-space-xs;
127
+ }
128
+ }
129
+
40
130
  // ── Chat Body ──
41
131
  .rts-chat-body-container {
42
132
  height: 100%;
@@ -2,8 +2,11 @@
2
2
  // MESSENGER — Chats List
3
3
  // ═══════════════════════════════════════════════════════════════════
4
4
  @import "./variables";
5
+ @import "../common-variables";
5
6
 
6
7
  .rts-chats-list {
8
+ padding-bottom: $rtsu-bottom-nav-height + $rts-offset-md;
9
+
7
10
  .rts-chat-thumbnail-container {
8
11
  border-bottom: 1px solid var(--rts-border-dim);
9
12
 
@@ -11,4 +14,8 @@
11
14
  border-bottom: none;
12
15
  }
13
16
  }
17
+
18
+ @media screen and (min-width: $rtsu-break-md) {
19
+ padding-bottom: 0;
20
+ }
14
21
  }
@@ -68,6 +68,77 @@
68
68
  padding: $rtsu-space-sm 0;
69
69
  }
70
70
 
71
+ .rts-chat-info-call-actions {
72
+ display: flex;
73
+ align-items: center;
74
+ justify-content: center;
75
+ gap: $rtsu-space-sm;
76
+ padding: $rtsu-space-xs 0 $rtsu-space-sm;
77
+
78
+ .rts-call-btn {
79
+ flex: 1;
80
+ max-width: 140px;
81
+ display: inline-flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ gap: $rtsu-space-xs;
85
+ padding: 8px 16px;
86
+ background: rgba(255, 255, 255, 0.05);
87
+ border: 1px solid var(--rts-border-med);
88
+ border-radius: $rtsu-radius-md;
89
+ color: var(--rts-text-primary);
90
+ font-family: $rtsu-font-family;
91
+ font-size: $rtsu-font-size-sm;
92
+ font-weight: $rtsu-font-weight-medium;
93
+ cursor: pointer;
94
+ transition: background $rtsu-transition-fast,
95
+ border-color $rtsu-transition-fast,
96
+ transform $rtsu-transition-fast,
97
+ box-shadow $rtsu-transition-fast;
98
+
99
+ .material-icons-outlined,
100
+ .pi {
101
+ font-size: 18px;
102
+ color: var(--rts-accent-light, #a29bfe);
103
+ transition: color $rtsu-transition-fast;
104
+ }
105
+
106
+ &:hover {
107
+ background: rgba(108, 92, 231, 0.15);
108
+ border-color: rgba(108, 92, 231, 0.4);
109
+ transform: translateY(-1px);
110
+ box-shadow: 0 4px 12px rgba(108, 92, 231, 0.15);
111
+
112
+ .material-icons-outlined,
113
+ .pi {
114
+ color: #c4b5fd;
115
+ }
116
+ }
117
+
118
+ &:active {
119
+ transform: translateY(0);
120
+ }
121
+
122
+ &.rts-call-btn-video {
123
+ .material-icons-outlined,
124
+ .pi {
125
+ color: #10b981;
126
+ }
127
+
128
+ &:hover {
129
+ background: rgba(16, 185, 129, 0.15);
130
+ border-color: rgba(16, 185, 129, 0.4);
131
+ box-shadow: 0 4px 12px rgba(16, 185, 129, 0.15);
132
+
133
+ .material-icons-outlined,
134
+ .pi {
135
+ color: #34d399;
136
+ }
137
+ }
138
+ }
139
+ }
140
+ }
141
+
71
142
  .rts-divider {
72
143
  border: none;
73
144
  border-top: 1px solid var(--rts-border-dim);
@@ -28,15 +28,21 @@
28
28
  &.rts-message-from-me {
29
29
  .rts-messenger-message {
30
30
  float: right;
31
- background: linear-gradient(
32
- 135deg,
33
- $rtsu-accent-purple 0%,
34
- $rtsu-accent-purple-light 100%
35
- );
36
- color: #fff;
37
- border-bottom-right-radius: $rtsu-radius-xs;
38
- box-shadow: $rtsu-shadow-accent-sm;
39
31
  }
32
+
33
+ &:not(.rts-message-is-widget) {
34
+ .rts-messenger-message {
35
+ background: linear-gradient(
36
+ 135deg,
37
+ $rtsu-accent-purple 0%,
38
+ $rtsu-accent-purple-light 100%
39
+ );
40
+ color: #fff;
41
+ border-bottom-right-radius: $rtsu-radius-xs;
42
+ box-shadow: $rtsu-shadow-accent-sm;
43
+ }
44
+ }
45
+
40
46
  }
41
47
 
42
48
  // ── Message Bubble ──
@@ -73,6 +73,19 @@
73
73
  background-color: transparent;
74
74
  border-top: 1px solid transparent;
75
75
 
76
+ .rts-messages-list-inner {
77
+ display: flex;
78
+ flex-direction: column;
79
+ min-height: 100%;
80
+ }
81
+
82
+ .rts-messages-list-bottom-anchor {
83
+ height: 1px;
84
+ width: 100%;
85
+ pointer-events: none;
86
+ visibility: hidden;
87
+ }
88
+
76
89
  .rts-messenger-message-wrapper {
77
90
  margin-bottom: $rtsu-space-sm;
78
91
  position: relative;
@@ -126,7 +139,8 @@
126
139
  }
127
140
  }
128
141
 
129
- &:last-child {
142
+ &:last-child,
143
+ &:last-of-type {
130
144
  margin-bottom: $rtsu-bottom-nav-height;
131
145
  }
132
146
  }
@@ -160,7 +174,8 @@
160
174
  overscroll-behavior-y: contain;
161
175
 
162
176
  .rts-messenger-message-wrapper {
163
- &:last-child {
177
+ &:last-child,
178
+ &:last-of-type {
164
179
  margin-bottom: 0;
165
180
  }
166
181
 
@@ -49,7 +49,7 @@
49
49
  }
50
50
  }
51
51
 
52
- // ── My Profile Mode ──
52
+ // ── My Profile Mode (State 2: Centered circle) ──
53
53
  &.rts-messenger-header-my-profile-mode {
54
54
  background-color: var(--rts-bg-primary);
55
55
  border-bottom-color: var(--rts-border-dim);
@@ -66,12 +66,20 @@
66
66
  width: 100%;
67
67
  height: auto;
68
68
  position: static;
69
+ display: flex;
70
+ justify-content: center;
71
+ padding: $rtsu-space-lg $rtsu-space-md 0;
69
72
 
70
73
  .rts-messenger-header-avatar {
71
74
  padding: 0;
75
+ width: 160px;
76
+ height: 160px;
77
+ flex-shrink: 0;
72
78
 
73
79
  .rts-messenger-header-avatar-image {
74
- border-radius: 0;
80
+ border-radius: 50%;
81
+ border: 3px solid var(--rts-border-med);
82
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.35);
75
83
  }
76
84
  }
77
85
  }
@@ -79,6 +87,13 @@
79
87
  .rts-messenger-header-right {
80
88
  display: none;
81
89
  }
90
+
91
+ .rts-messenger-header-chat-title {
92
+ text-align: center;
93
+ margin: $rtsu-space-sm 0;
94
+ font-size: $rtsu-font-size-lg;
95
+ font-weight: $rtsu-font-weight-bold;
96
+ }
82
97
  }
83
98
 
84
99
  // ── Create Chat Mode ──
@@ -102,7 +117,7 @@
102
117
  }
103
118
  }
104
119
 
105
- // ── Chat Info Mode ──
120
+ // ── Chat Info Mode (State 2: Centered circle) ──
106
121
  &.rts-messenger-header-chat-info-mode {
107
122
  .rts-messenger-header-right {
108
123
  width: 100%;
@@ -110,17 +125,18 @@
110
125
  position: static;
111
126
  display: flex;
112
127
  justify-content: center;
113
- padding: $rtsu-space-lg $rtsu-space-md;
128
+ padding: $rtsu-space-lg $rtsu-space-md 0;
114
129
 
115
130
  .rts-messenger-header-avatar {
116
131
  padding: 0;
117
- width: 120px;
118
- height: 120px;
132
+ width: 160px;
133
+ height: 160px;
119
134
  flex-shrink: 0;
120
135
 
121
136
  .rts-messenger-header-avatar-image {
122
137
  border-radius: 50%;
123
- border: 2px solid var(--rts-border-med);
138
+ border: 3px solid var(--rts-border-med);
139
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.35);
124
140
  }
125
141
  }
126
142
  }
@@ -131,12 +147,17 @@
131
147
 
132
148
  .rts-messenger-header-chat-title {
133
149
  text-align: center;
150
+ margin: $rtsu-space-sm 0;
151
+ font-size: $rtsu-font-size-lg;
152
+ font-weight: $rtsu-font-weight-bold;
134
153
  }
135
154
  }
136
155
 
137
- // ── Chat Image Expanded (full-width square on second click) ──
156
+ // ── State 3: Image Expanded to Square (full-width container on double-click) ──
157
+ &.rts-messenger-header-image-square,
138
158
  &.rts-messenger-header-chat-image-expanded {
139
- .rts-messenger-header-right {
159
+ &.rts-messenger-header-my-profile-mode .rts-messenger-header-left,
160
+ &.rts-messenger-header-chat-info-mode .rts-messenger-header-right {
140
161
  padding: 0;
141
162
  display: block;
142
163
 
@@ -147,6 +168,7 @@
147
168
  .rts-messenger-header-avatar-image {
148
169
  border-radius: 0;
149
170
  border: none;
171
+ box-shadow: none;
150
172
  }
151
173
  }
152
174
  }
@@ -179,6 +201,9 @@
179
201
  .rts-messenger-header-avatar {
180
202
  padding: $rtsu-space-sm;
181
203
  cursor: pointer;
204
+ transition: width 0.35s cubic-bezier(0.4, 0, 0.2, 1),
205
+ height 0.35s cubic-bezier(0.4, 0, 0.2, 1),
206
+ padding 0.35s cubic-bezier(0.4, 0, 0.2, 1);
182
207
 
183
208
  .rts-messenger-header-avatar-image {
184
209
  width: 100%;
@@ -186,7 +211,10 @@
186
211
  background-position: center;
187
212
  padding-top: 100%;
188
213
  border-radius: 50%;
189
- transition: border-radius $rtsu-transition-fast;
214
+ transition: width 0.35s cubic-bezier(0.4, 0, 0.2, 1),
215
+ border-radius 0.35s cubic-bezier(0.4, 0, 0.2, 1),
216
+ box-shadow 0.35s cubic-bezier(0.4, 0, 0.2, 1),
217
+ border 0.35s ease;
190
218
 
191
219
  &:hover {
192
220
  outline: 3px solid rgba(108, 92, 231, 0.3);
@@ -200,6 +228,7 @@
200
228
  position: fixed;
201
229
  left: $rtsu-space-sm;
202
230
  top: $rtsu-space-sm;
231
+ z-index: 20;
203
232
  color: #fff;
204
233
  background-color: rgba(0, 0, 0, 0.35);
205
234
  backdrop-filter: $rtsu-glass-blur;
@@ -230,8 +259,9 @@
230
259
  left: 0;
231
260
  width: $rts-messenger-header-height;
232
261
  height: $rts-messenger-header-height;
233
- transition: width $rtsu-transition-fast,
234
- height $rtsu-transition-fast;
262
+ transition: width 0.35s cubic-bezier(0.4, 0, 0.2, 1),
263
+ height 0.35s cubic-bezier(0.4, 0, 0.2, 1),
264
+ padding 0.35s cubic-bezier(0.4, 0, 0.2, 1);
235
265
  }
236
266
 
237
267
  .rts-messenger-header-right {
@@ -241,8 +271,9 @@
241
271
  right: 0;
242
272
  width: $rts-messenger-header-height;
243
273
  height: $rts-messenger-header-height;
244
- transition: width $rtsu-transition-fast,
245
- height $rtsu-transition-fast;
274
+ transition: width 0.35s cubic-bezier(0.4, 0, 0.2, 1),
275
+ height 0.35s cubic-bezier(0.4, 0, 0.2, 1),
276
+ padding 0.35s cubic-bezier(0.4, 0, 0.2, 1);
246
277
  }
247
278
 
248
279
  // ── Center Content ──