@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.
- package/dist/ngx/fesm2022/rtsee-ngx.mjs +542 -82
- package/dist/ngx/fesm2022/rtsee-ngx.mjs.map +1 -1
- package/dist/ngx/index.d.ts +49 -3
- package/dist/ngx/src/lib/theme/containers/nav.scss +2 -0
- package/dist/ngx/src/lib/theme/containers/shell.scss +14 -6
- package/dist/ngx/src/lib/theme/containers/variables.scss +1 -1
- package/dist/ngx/src/lib/theme/messenger/chat-input.scss +36 -0
- package/dist/ngx/src/lib/theme/messenger/chat.scss +90 -0
- package/dist/ngx/src/lib/theme/messenger/chats-list.scss +7 -0
- package/dist/ngx/src/lib/theme/messenger/create-chat.scss +71 -0
- package/dist/ngx/src/lib/theme/messenger/message.scss +14 -8
- package/dist/ngx/src/lib/theme/messenger/messages-list.scss +17 -2
- package/dist/ngx/src/lib/theme/messenger/messenger-header.scss +45 -14
- package/dist/ngx/src/lib/theme/messenger/profile.scss +68 -259
- package/package.json +11 -11
package/dist/ngx/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
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>;
|
|
@@ -25,12 +25,11 @@
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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 {
|
|
@@ -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:
|
|
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:
|
|
118
|
-
height:
|
|
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:
|
|
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
|
-
// ──
|
|
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-
|
|
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:
|
|
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
|
|
234
|
-
height
|
|
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
|
|
245
|
-
height
|
|
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 ──
|