@rtsee/ngx 0.0.103 → 0.0.105
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 +2992 -1624
- package/dist/ngx/fesm2022/rtsee-ngx.mjs.map +1 -1
- package/dist/ngx/index.d.ts +98 -11
- package/dist/ngx/src/lib/theme/common-components/image-uploader.scss +37 -4
- package/dist/ngx/src/lib/theme/common-variables.scss +1 -1
- package/dist/ngx/src/lib/theme/common.scss +1 -1
- package/dist/ngx/src/lib/theme/containers/shell.scss +2 -2
- package/dist/ngx/src/lib/theme/forms/variables.scss +1 -2
- package/dist/ngx/src/lib/theme/messenger/call-widget.scss +25 -6
- package/dist/ngx/src/lib/theme/messenger/chat-input.scss +206 -17
- package/dist/ngx/src/lib/theme/messenger/chat-thumbnail.scss +79 -62
- package/dist/ngx/src/lib/theme/messenger/chat.scss +38 -23
- package/dist/ngx/src/lib/theme/messenger/chats-list.scss +10 -10
- package/dist/ngx/src/lib/theme/messenger/create-chat.scss +383 -0
- package/dist/ngx/src/lib/theme/messenger/index.scss +7 -0
- package/dist/ngx/src/lib/theme/messenger/invite-link.scss +63 -0
- package/dist/ngx/src/lib/theme/messenger/message-time-and-status.scss +29 -15
- package/dist/ngx/src/lib/theme/messenger/message.scss +36 -21
- package/dist/ngx/src/lib/theme/messenger/messages-list.scss +83 -68
- package/dist/ngx/src/lib/theme/messenger/messenger-header.scss +257 -77
- package/dist/ngx/src/lib/theme/messenger/messenger-search.scss +26 -11
- package/dist/ngx/src/lib/theme/messenger/messenger.scss +42 -26
- package/dist/ngx/src/lib/theme/messenger/payment-product-snippet.scss +57 -72
- package/dist/ngx/src/lib/theme/messenger/payments.scss +31 -105
- package/dist/ngx/src/lib/theme/messenger/profile.scss +109 -137
- package/dist/ngx/src/lib/theme/messenger/rate-input.scss +37 -15
- package/dist/ngx/src/lib/theme/messenger/variables.scss +13 -3
- package/dist/ngx/src/lib/theme/rts-common/_index.scss +24 -0
- package/dist/ngx/src/lib/theme/rts-common/_variables-colors.scss +133 -0
- package/dist/ngx/src/lib/theme/rts-common/_variables-effects.scss +28 -0
- package/dist/ngx/src/lib/theme/rts-common/_variables-layout.scss +30 -0
- package/dist/ngx/src/lib/theme/rts-common/_variables-spacing.scss +12 -0
- package/dist/ngx/src/lib/theme/rts-common/_variables-typography.scss +36 -0
- package/dist/ngx/src/lib/theme/rts-common/animations.scss +77 -0
- package/dist/ngx/src/lib/theme/rts-common/avatars.scss +76 -0
- package/dist/ngx/src/lib/theme/rts-common/buttons.scss +169 -0
- package/dist/ngx/src/lib/theme/rts-common/cards.scss +71 -0
- package/dist/ngx/src/lib/theme/rts-common/forms.scss +191 -0
- package/dist/ngx/src/lib/theme/rts-common/inputs.scss +109 -0
- package/dist/ngx/src/lib/theme/rts-common/labels.scss +80 -0
- package/dist/ngx/src/lib/theme/rts-common/messages.scss +60 -0
- package/dist/ngx/src/lib/theme/rts-common/user-thumbnails.scss +68 -0
- package/dist/ngx/src/lib/theme/styles.scss +1 -0
- package/package.json +11 -11
package/dist/ngx/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { OnInit, AfterViewInit, ElementRef, EventEmitter, OutputEmitterRef, ViewContainerRef, ComponentFactoryResolver, ChangeDetectorRef, OnDestroy } from '@angular/core';
|
|
2
|
+
import { OnInit, AfterViewInit, ElementRef, EventEmitter, OutputEmitterRef, ViewContainerRef, ComponentFactoryResolver, ChangeDetectorRef, OnDestroy, Type, OnChanges, SimpleChanges } from '@angular/core';
|
|
3
3
|
import { RTSeeConference, RTSeePeerConnection } from '@rtsee/conference';
|
|
4
|
-
import { RTSeeMessenger, RTSeeMessengerSearch, RTSeeMessage, RTSeeChat, RTSeeChatMember } from '@rtsee/messenger';
|
|
4
|
+
import { RTSeeMessenger, RTSeeMessengerSearch, RTSeeMessage, RTSeeChat, RTSeeChatMember, RTSeeMentionAutocomplete, RTSeeWorkflowAutocomplete, OzzyClientTask } from '@rtsee/messenger';
|
|
5
5
|
import { IPeer, RTSeeTextLabelKeys, IRTSeeCall } from '@rtsee/core';
|
|
6
6
|
import { HttpClient } from '@angular/common/http';
|
|
7
7
|
import { RTSeeAuth, RTSeeAuthConfiguration, IRtseeSignInRequestOptions, IRTSeeSignInResponse, IRtseeSignUpRequestOptions, IRTSeeSignUpResponse, AuthEndpointsKeys } from '@rtsee/auth';
|
|
8
8
|
import { Observable, Subscription } from 'rxjs';
|
|
9
9
|
import * as i47 from '@angular/router';
|
|
10
10
|
import { Router, ActivatedRoute } from '@angular/router';
|
|
11
|
-
import { IRTSeePaymentProduct, IRTSeePaymentPriceItem, IRTSeeChat, RTSeeChatTypes, IMessageThumbnail } from '@rtsee/common';
|
|
11
|
+
import { IRTSeePaymentProduct, IRTSeePaymentPriceItem, IRTSeeChat, RTSeeChatTypes, IMessageThumbnail, IOzzyWorkflowDefinition, IOzzyTaskLog } from '@rtsee/common';
|
|
12
12
|
import { RTSeeEventsDashboard, RTSeeDashboardClientSession, RTSeeDashboardEvent, RTSeeDashboardClient } from '@rtsee/events-dashboard';
|
|
13
13
|
import { RTSee, INavigationConfig, IRouteConfig } from '@rtsee/factory';
|
|
14
14
|
import { RTSeePresentation, RTSeeStory, RTSeePresentationSettings, RTSeeStorySlide } from '@rtsee/presentation';
|
|
@@ -155,6 +155,7 @@ declare class RTSeeContainerComponent implements OnInit {
|
|
|
155
155
|
auth: RTSeeAuth<any>;
|
|
156
156
|
constructor(authService: RTSeeAuthService, router: Router);
|
|
157
157
|
ngOnInit(): void;
|
|
158
|
+
subscribeToHtmlEvents(): void;
|
|
158
159
|
onSidenavToggleClicked(): void;
|
|
159
160
|
defineSideNavState(url: string): void;
|
|
160
161
|
static ɵfac: i0.ɵɵFactoryDeclaration<RTSeeContainerComponent, never>;
|
|
@@ -622,12 +623,7 @@ declare class MessagesListComponent implements AfterViewInit, OnDestroy, OnInit
|
|
|
622
623
|
scrollToBottom(): void;
|
|
623
624
|
formatDate(message: RTSeeMessage): string;
|
|
624
625
|
private groupMessages;
|
|
625
|
-
private performGrouping;
|
|
626
|
-
private stitchGroups;
|
|
627
|
-
private areForwardMessagesAdded;
|
|
628
|
-
private areBackwardMessagesAdded;
|
|
629
626
|
private saveFirstAndLastGroupedMessages;
|
|
630
|
-
private getFirstAndLastMessage;
|
|
631
627
|
protected readonly RTSeeChatTypes: typeof RTSeeChatTypes;
|
|
632
628
|
static ɵfac: i0.ɵɵFactoryDeclaration<MessagesListComponent, never>;
|
|
633
629
|
static ɵcmp: i0.ɵɵComponentDeclaration<MessagesListComponent, "rtsee-messages-list", never, { "chat": { "alias": "chat"; "required": false; }; "messenger": { "alias": "messenger"; "required": false; }; }, {}, never, never, true, never>;
|
|
@@ -653,14 +649,41 @@ declare class ChatThumbnailComponent {
|
|
|
653
649
|
static ɵcmp: i0.ɵɵComponentDeclaration<ChatThumbnailComponent, "rtsee-chat-thumbnail", never, { "chat": { "alias": "chat"; "required": false; }; "messenger": { "alias": "messenger"; "required": false; }; }, {}, never, never, true, never>;
|
|
654
650
|
}
|
|
655
651
|
|
|
656
|
-
declare class ChatInputComponent {
|
|
652
|
+
declare class ChatInputComponent implements OnInit, OnDestroy {
|
|
657
653
|
sendMessageForm: FormGroup;
|
|
658
654
|
messenger: RTSeeMessenger;
|
|
659
655
|
chat: RTSeeChat;
|
|
660
656
|
chatInput: ElementRef<HTMLTextAreaElement>;
|
|
657
|
+
messageTextarea: ElementRef<HTMLTextAreaElement>;
|
|
658
|
+
autocomplete: RTSeeMentionAutocomplete;
|
|
659
|
+
workflowAutocomplete: RTSeeWorkflowAutocomplete;
|
|
660
|
+
mentionedMemberId: string | null;
|
|
661
|
+
agentAccessDenied: boolean;
|
|
662
|
+
/** prevents the Enter keyup that selected a workflow from sending the message */
|
|
663
|
+
private workflowJustSelected;
|
|
664
|
+
private accessDeniedTimer;
|
|
665
|
+
private onAutocompleteChanged;
|
|
666
|
+
private onAgentAccessDeniedBound;
|
|
667
|
+
ngOnInit(): void;
|
|
668
|
+
ngOnDestroy(): void;
|
|
669
|
+
get isGroupChat(): boolean;
|
|
661
670
|
sendMessage(): void;
|
|
671
|
+
get anyAutocompleteVisible(): boolean;
|
|
672
|
+
onKeyDown(event: KeyboardEvent): void;
|
|
662
673
|
onKeyUp(event: KeyboardEvent): void;
|
|
674
|
+
onInput(): void;
|
|
675
|
+
onMemberSelected(member: RTSeeChatMember): void;
|
|
676
|
+
onWorkflowSelected(workflow: IOzzyWorkflowDefinition): void;
|
|
677
|
+
stopAgent(): void;
|
|
678
|
+
dismissAccessDenied(): void;
|
|
663
679
|
handleResize(): void;
|
|
680
|
+
private showAccessDeniedBanner;
|
|
681
|
+
private clearAccessDeniedTimer;
|
|
682
|
+
private updateAutocomplete;
|
|
683
|
+
private selectWorkflow;
|
|
684
|
+
private applyWorkflow;
|
|
685
|
+
private selectMention;
|
|
686
|
+
private applyMentionToInput;
|
|
664
687
|
static ɵfac: i0.ɵɵFactoryDeclaration<ChatInputComponent, never>;
|
|
665
688
|
static ɵcmp: i0.ɵɵComponentDeclaration<ChatInputComponent, "rtsee-chat-input", never, { "messenger": { "alias": "messenger"; "required": false; }; "chat": { "alias": "chat"; "required": false; }; }, {}, never, never, true, never>;
|
|
666
689
|
}
|
|
@@ -683,8 +706,18 @@ declare class RtseeSoundbarComponent implements OnInit {
|
|
|
683
706
|
declare class MessengerHeaderComponent {
|
|
684
707
|
defaultImagesService: DefaultImagesService;
|
|
685
708
|
messenger: RTSeeMessenger;
|
|
709
|
+
isDropdownOpen: boolean;
|
|
710
|
+
chatImageExpanded: boolean;
|
|
686
711
|
constructor(defaultImagesService: DefaultImagesService);
|
|
687
712
|
openProfile(id: string): void;
|
|
713
|
+
toggleDropdown(): void;
|
|
714
|
+
closeDropdown(): void;
|
|
715
|
+
openNewChatDialog(): void;
|
|
716
|
+
closeManageChatDialog(): void;
|
|
717
|
+
onChatSaved(chat: IRTSeeChat): void;
|
|
718
|
+
onChatImageClick(): void;
|
|
719
|
+
collapseInfo(): void;
|
|
720
|
+
get isGroupOrChannelChat(): boolean;
|
|
688
721
|
protected readonly RTSeeTextLabelKeys: typeof RTSeeTextLabelKeys;
|
|
689
722
|
static ɵfac: i0.ɵɵFactoryDeclaration<MessengerHeaderComponent, never>;
|
|
690
723
|
static ɵcmp: i0.ɵɵComponentDeclaration<MessengerHeaderComponent, "rtsee-messenger-header", never, { "messenger": { "alias": "messenger"; "required": false; }; }, {}, never, never, true, never>;
|
|
@@ -813,5 +846,59 @@ declare class GtagService {
|
|
|
813
846
|
static ɵprov: i0.ɵɵInjectableDeclaration<GtagService>;
|
|
814
847
|
}
|
|
815
848
|
|
|
816
|
-
|
|
817
|
-
|
|
849
|
+
interface IWorkflowStepWidget {
|
|
850
|
+
/** matches IOzzyWorkflowStepDefinition.widget */
|
|
851
|
+
name: string;
|
|
852
|
+
/** standalone component with `step`, `workflow`, `chat`, `messenger` inputs */
|
|
853
|
+
component: Type<unknown>;
|
|
854
|
+
}
|
|
855
|
+
/**
|
|
856
|
+
* Registry of the components which render workflow steps inside the rts-workflow widget.
|
|
857
|
+
*/
|
|
858
|
+
declare class WorkflowStepsService {
|
|
859
|
+
stepsMap: IWorkflowStepWidget[];
|
|
860
|
+
register(widget: IWorkflowStepWidget): void;
|
|
861
|
+
getStepComponentByName(name?: string): Type<unknown> | null;
|
|
862
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WorkflowStepsService, never>;
|
|
863
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<WorkflowStepsService>;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
/**
|
|
867
|
+
* Default client-side representation of a server-side OzzyTask.
|
|
868
|
+
* Can be used directly (`[task]`) or as a message widget (`message.data.taskId`).
|
|
869
|
+
*/
|
|
870
|
+
declare class RTSeeTaskComponent implements OnInit, OnChanges, OnDestroy {
|
|
871
|
+
private cdr;
|
|
872
|
+
task?: OzzyClientTask | null;
|
|
873
|
+
message?: RTSeeMessage;
|
|
874
|
+
messenger?: RTSeeMessenger;
|
|
875
|
+
chat?: RTSeeChat;
|
|
876
|
+
/** hide the execute button (e.g. when the workflow executes the task itself) */
|
|
877
|
+
allowExecute: boolean;
|
|
878
|
+
logsContainer?: ElementRef<HTMLDivElement>;
|
|
879
|
+
copied: 'input' | 'output' | null;
|
|
880
|
+
private subscribedTask;
|
|
881
|
+
private onChangedBound;
|
|
882
|
+
constructor(cdr: ChangeDetectorRef);
|
|
883
|
+
ngOnInit(): void;
|
|
884
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
885
|
+
ngOnDestroy(): void;
|
|
886
|
+
get statusLabel(): string;
|
|
887
|
+
get statusClass(): string;
|
|
888
|
+
get inputJson(): string;
|
|
889
|
+
get outputJson(): string;
|
|
890
|
+
get hasOutput(): boolean;
|
|
891
|
+
get hasLogs(): boolean;
|
|
892
|
+
execute(): void;
|
|
893
|
+
copy(kind: 'input' | 'output'): Promise<void>;
|
|
894
|
+
trackLog(index: number, log: IOzzyTaskLog): string;
|
|
895
|
+
private toJson;
|
|
896
|
+
private subscribe;
|
|
897
|
+
private unsubscribe;
|
|
898
|
+
private onTaskChanged;
|
|
899
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RTSeeTaskComponent, never>;
|
|
900
|
+
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>;
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
export { EntitiesConfigurationsListComponent, EntitiesListComponent, FormComponent, GtagService, ManageEntityComponent, ManageEntityConfigurationComponent, MessengerComponent, NgxService, PaymentProductSnippetComponent, PresentationComponent, ProfileComponent, RTSeeAuthComponent, RTSeeConferenceComponent, RTSeeContainerComponent, RTSeeControlsComponent, RTSeeModule, RTSeeTaskComponent, RtseeEntityCommentsComponent, RtseeEntityPreviewComponent, RtseeEntityTagsComponent, RtseeEventsDashboardComponent, RtseePeerComponent, RtseeSettingsComponent, RtseeTagGroupManageComponent, RtseeTagGroupsManageComponent, RtseeTagManageComponent, RtseeTagsAccordionMenuComponent, WorkflowStepsService };
|
|
904
|
+
export type { IAccordionItem, IWorkflowStepWidget, RTSeeTagForm, RTSeeTagGroupForm };
|
|
@@ -14,18 +14,51 @@
|
|
|
14
14
|
|
|
15
15
|
.rtsee-image-uploader-preview-image {
|
|
16
16
|
width: 100%;
|
|
17
|
+
border-radius: 8px;
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
.rtsee-preloader-image-placeholder {
|
|
20
|
-
padding
|
|
21
|
-
background
|
|
21
|
+
padding: 48px 24px;
|
|
22
|
+
background: linear-gradient(
|
|
23
|
+
135deg,
|
|
24
|
+
rgba(108, 92, 231, 0.06) 0%,
|
|
25
|
+
rgba(162, 155, 254, 0.03) 100%
|
|
26
|
+
);
|
|
27
|
+
border: 2px dashed rgba(162, 155, 254, 0.3);
|
|
28
|
+
border-radius: 12px;
|
|
22
29
|
display: flex;
|
|
23
30
|
flex-direction: column;
|
|
24
31
|
justify-content: center;
|
|
25
32
|
align-items: center;
|
|
33
|
+
gap: 12px;
|
|
34
|
+
transition: border-color 0.2s ease, background 0.2s ease;
|
|
26
35
|
|
|
27
|
-
|
|
28
|
-
|
|
36
|
+
&:hover {
|
|
37
|
+
border-color: rgba(162, 155, 254, 0.6);
|
|
38
|
+
background: linear-gradient(
|
|
39
|
+
135deg,
|
|
40
|
+
rgba(108, 92, 231, 0.1) 0%,
|
|
41
|
+
rgba(162, 155, 254, 0.06) 100%
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.rtsee-upload-icon {
|
|
46
|
+
font-size: 40px;
|
|
47
|
+
color: rgba(162, 155, 254, 0.6);
|
|
48
|
+
transition: color 0.2s ease;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.rtsee-upload-text {
|
|
52
|
+
font-size: 14px;
|
|
53
|
+
color: rgba(162, 155, 254, 0.5);
|
|
54
|
+
font-weight: 500;
|
|
55
|
+
letter-spacing: 0.3px;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
&:hover .rtsee-preloader-image-placeholder {
|
|
60
|
+
.rtsee-upload-icon {
|
|
61
|
+
color: rgba(162, 155, 254, 0.85);
|
|
29
62
|
}
|
|
30
63
|
}
|
|
31
64
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
@import "./common-components/preloader";
|
|
3
3
|
@import "./messenger/variables";
|
|
4
4
|
|
|
5
|
-
.rtsee-messenger, .rtsee-events-dashboard {
|
|
5
|
+
.rtsee-messenger, .rts-messenger, .rtsee-events-dashboard {
|
|
6
6
|
font-family: "Work Sans", Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;
|
|
7
7
|
}
|
|
8
8
|
|
|
@@ -1,11 +1,30 @@
|
|
|
1
|
+
// ═══════════════════════════════════════════════════════════════════
|
|
2
|
+
// MESSENGER — Call Widget
|
|
3
|
+
// ═══════════════════════════════════════════════════════════════════
|
|
1
4
|
@import "./variables";
|
|
2
5
|
|
|
3
|
-
.
|
|
4
|
-
.
|
|
6
|
+
.rts-call-widget {
|
|
7
|
+
.rts-join-call-btn {
|
|
5
8
|
border: none;
|
|
6
|
-
background: $
|
|
7
|
-
color:
|
|
8
|
-
border-radius: $
|
|
9
|
-
padding: $
|
|
9
|
+
background: linear-gradient(135deg, $rtsu-accent-purple 0%, $rtsu-accent-purple-light 100%);
|
|
10
|
+
color: #fff;
|
|
11
|
+
border-radius: $rtsu-radius-md;
|
|
12
|
+
padding: $rtsu-space-sm + $rtsu-space-xs $rtsu-space-lg;
|
|
13
|
+
font-family: $rtsu-font-family;
|
|
14
|
+
font-weight: $rtsu-font-weight-semibold;
|
|
15
|
+
font-size: $rtsu-font-size-base;
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
box-shadow: $rtsu-shadow-accent-sm;
|
|
18
|
+
transition: transform $rtsu-transition-fast,
|
|
19
|
+
box-shadow $rtsu-transition-fast;
|
|
20
|
+
|
|
21
|
+
&:hover {
|
|
22
|
+
transform: translateY(-1px);
|
|
23
|
+
box-shadow: $rtsu-shadow-accent-md;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&:active {
|
|
27
|
+
transform: translateY(0);
|
|
28
|
+
}
|
|
10
29
|
}
|
|
11
30
|
}
|
|
@@ -1,50 +1,239 @@
|
|
|
1
|
+
// ═══════════════════════════════════════════════════════════════════
|
|
2
|
+
// MESSENGER — Chat Input
|
|
3
|
+
// ═══════════════════════════════════════════════════════════════════
|
|
1
4
|
@import "./variables";
|
|
2
5
|
@import "../common-variables";
|
|
3
6
|
|
|
4
|
-
.
|
|
5
|
-
padding-right: $
|
|
7
|
+
.rts-chat-input {
|
|
8
|
+
padding-right: $rts-chat-input-height;
|
|
6
9
|
position: relative;
|
|
7
|
-
overflow:
|
|
10
|
+
overflow: visible;
|
|
8
11
|
|
|
9
|
-
.
|
|
12
|
+
.rts-send-message {
|
|
10
13
|
&::-webkit-scrollbar {
|
|
11
14
|
display: none;
|
|
12
15
|
}
|
|
13
16
|
|
|
14
|
-
.
|
|
17
|
+
.rts-chat-input-form {
|
|
15
18
|
overflow: hidden;
|
|
16
19
|
line-height: 0;
|
|
17
20
|
|
|
18
|
-
.
|
|
21
|
+
.rts-chat-input-field {
|
|
19
22
|
width: 100%;
|
|
20
23
|
max-height: 130px;
|
|
21
24
|
border: none;
|
|
22
25
|
outline: none;
|
|
23
|
-
font-size:
|
|
26
|
+
font-size: $rtsu-font-size-md;
|
|
27
|
+
font-family: $rtsu-font-family;
|
|
28
|
+
background: transparent;
|
|
29
|
+
color: var(--rts-text-primary);
|
|
30
|
+
padding: $rtsu-space-sm;
|
|
31
|
+
resize: none;
|
|
32
|
+
|
|
33
|
+
&::placeholder {
|
|
34
|
+
color: var(--rts-text-muted);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&:disabled,
|
|
38
|
+
&[disabled] {
|
|
39
|
+
opacity: 0.5;
|
|
40
|
+
cursor: not-allowed;
|
|
41
|
+
background: var(--rts-bg-dim, rgba(0, 0, 0, 0.03));
|
|
42
|
+
}
|
|
24
43
|
}
|
|
25
44
|
}
|
|
26
45
|
}
|
|
27
46
|
|
|
28
|
-
.
|
|
47
|
+
.rts-send-message-button {
|
|
29
48
|
position: absolute;
|
|
30
|
-
height:
|
|
49
|
+
height: $rts-chat-input-height - $rts-offset-md;
|
|
31
50
|
line-height: 0;
|
|
32
|
-
right:
|
|
33
|
-
bottom:
|
|
34
|
-
width: $
|
|
35
|
-
background:
|
|
51
|
+
right: $rtsu-space-xs;
|
|
52
|
+
bottom: $rtsu-space-xs;
|
|
53
|
+
width: $rts-chat-input-height - $rts-offset-md;
|
|
54
|
+
background: linear-gradient(135deg, $rtsu-accent-purple 0%, $rtsu-accent-purple-light 100%);
|
|
36
55
|
border: none;
|
|
37
56
|
outline: none;
|
|
38
|
-
|
|
39
|
-
color:
|
|
57
|
+
border-radius: $rtsu-radius-sm;
|
|
58
|
+
color: #fff;
|
|
40
59
|
cursor: pointer;
|
|
60
|
+
display: flex;
|
|
61
|
+
align-items: center;
|
|
62
|
+
justify-content: center;
|
|
63
|
+
transition: transform $rtsu-transition-fast,
|
|
64
|
+
box-shadow $rtsu-transition-fast;
|
|
65
|
+
box-shadow: $rtsu-shadow-accent-sm;
|
|
41
66
|
|
|
42
67
|
span {
|
|
43
|
-
|
|
68
|
+
font-size: 18px;
|
|
69
|
+
line-height: 1;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
&:hover {
|
|
73
|
+
transform: scale(1.05);
|
|
74
|
+
box-shadow: $rtsu-shadow-accent-md;
|
|
44
75
|
}
|
|
45
76
|
|
|
77
|
+
&:active {
|
|
78
|
+
transform: scale(0.95);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.rts-send-message-button-stop {
|
|
83
|
+
background: linear-gradient(135deg, #e74c3c 0%, #c0392b 100%);
|
|
84
|
+
box-shadow: 0 2px 8px rgba(231, 76, 60, 0.3);
|
|
85
|
+
|
|
46
86
|
&:hover {
|
|
47
|
-
|
|
87
|
+
box-shadow: 0 4px 16px rgba(231, 76, 60, 0.4);
|
|
48
88
|
}
|
|
49
89
|
}
|
|
50
90
|
}
|
|
91
|
+
|
|
92
|
+
.rts-chat-input-streaming {
|
|
93
|
+
.rts-send-message {
|
|
94
|
+
opacity: 0.7;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// --- @-Mention Suggestions Popup ---
|
|
99
|
+
.rts-chat-member-suggestions {
|
|
100
|
+
position: absolute;
|
|
101
|
+
bottom: 100%;
|
|
102
|
+
left: 0;
|
|
103
|
+
right: $rts-chat-input-height;
|
|
104
|
+
background: var(--rts-bg-secondary, #fff);
|
|
105
|
+
border: 1px solid var(--rts-border-dim);
|
|
106
|
+
border-radius: $rtsu-radius-sm;
|
|
107
|
+
box-shadow: $rtsu-shadow-md;
|
|
108
|
+
z-index: 100;
|
|
109
|
+
margin-bottom: $rtsu-space-xs;
|
|
110
|
+
overflow: hidden;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.rts-chat-member-suggestion {
|
|
114
|
+
display: flex;
|
|
115
|
+
align-items: center;
|
|
116
|
+
gap: $rtsu-space-sm;
|
|
117
|
+
padding: $rtsu-space-sm $rtsu-space-md;
|
|
118
|
+
cursor: pointer;
|
|
119
|
+
transition: background $rtsu-transition-fast;
|
|
120
|
+
|
|
121
|
+
&:hover,
|
|
122
|
+
&.rts-chat-member-suggestion-active {
|
|
123
|
+
background: var(--rts-bg-hover, rgba(0, 0, 0, 0.05));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.rts-chat-member-suggestion-avatar {
|
|
128
|
+
width: 28px;
|
|
129
|
+
height: 28px;
|
|
130
|
+
border-radius: 50%;
|
|
131
|
+
background-size: cover;
|
|
132
|
+
background-position: center;
|
|
133
|
+
background-color: var(--rts-bg-dim);
|
|
134
|
+
flex-shrink: 0;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.rts-chat-member-suggestion-name {
|
|
138
|
+
font-size: $rtsu-font-size-md;
|
|
139
|
+
font-family: $rtsu-font-family;
|
|
140
|
+
color: var(--rts-text-primary);
|
|
141
|
+
white-space: nowrap;
|
|
142
|
+
overflow: hidden;
|
|
143
|
+
text-overflow: ellipsis;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// --- #-Workflow Suggestions Popup ---
|
|
147
|
+
.rts-workflow-suggestions-head {
|
|
148
|
+
padding: 6px $rtsu-space-md 2px;
|
|
149
|
+
font-size: 10px;
|
|
150
|
+
font-weight: 700;
|
|
151
|
+
letter-spacing: 0.08em;
|
|
152
|
+
text-transform: uppercase;
|
|
153
|
+
color: var(--rts-text-secondary, #8a8fa3);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.rts-workflow-suggestion-icon {
|
|
157
|
+
display: inline-flex;
|
|
158
|
+
align-items: center;
|
|
159
|
+
justify-content: center;
|
|
160
|
+
width: 28px;
|
|
161
|
+
height: 28px;
|
|
162
|
+
flex-shrink: 0;
|
|
163
|
+
border-radius: 8px;
|
|
164
|
+
color: #fff;
|
|
165
|
+
font-weight: 700;
|
|
166
|
+
background: linear-gradient(135deg, #6366f1, #8b5cf6);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.rts-workflow-suggestion-body {
|
|
170
|
+
display: flex;
|
|
171
|
+
flex-direction: column;
|
|
172
|
+
min-width: 0;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.rts-workflow-suggestion-meta {
|
|
176
|
+
font-size: 11px;
|
|
177
|
+
color: var(--rts-text-secondary, #8a8fa3);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// --- Agent Access Denied Banner ---
|
|
181
|
+
.rts-agent-access-denied-banner {
|
|
182
|
+
position: absolute;
|
|
183
|
+
bottom: 100%;
|
|
184
|
+
left: 0;
|
|
185
|
+
right: $rts-chat-input-height;
|
|
186
|
+
display: flex;
|
|
187
|
+
align-items: center;
|
|
188
|
+
gap: $rtsu-space-sm;
|
|
189
|
+
padding: $rtsu-space-sm $rtsu-space-md;
|
|
190
|
+
background: var(--rts-bg-warning, #fff3e0);
|
|
191
|
+
border: 1px solid var(--rts-border-warning, #ffcc80);
|
|
192
|
+
border-radius: $rtsu-radius-sm;
|
|
193
|
+
box-shadow: $rtsu-shadow-md;
|
|
194
|
+
z-index: 100;
|
|
195
|
+
margin-bottom: $rtsu-space-xs;
|
|
196
|
+
animation: rts-banner-slide-in 0.2s ease-out;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.rts-agent-access-denied-icon {
|
|
200
|
+
font-size: 16px;
|
|
201
|
+
flex-shrink: 0;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.rts-agent-access-denied-text {
|
|
205
|
+
flex: 1;
|
|
206
|
+
font-size: $rtsu-font-size-sm;
|
|
207
|
+
font-family: $rtsu-font-family;
|
|
208
|
+
color: var(--rts-text-warning, #e65100);
|
|
209
|
+
line-height: 1.4;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.rts-agent-access-denied-dismiss {
|
|
213
|
+
flex-shrink: 0;
|
|
214
|
+
padding: 4px 12px;
|
|
215
|
+
border: none;
|
|
216
|
+
border-radius: $rtsu-radius-sm;
|
|
217
|
+
background: var(--rts-text-warning, #e65100);
|
|
218
|
+
color: #fff;
|
|
219
|
+
font-size: $rtsu-font-size-sm;
|
|
220
|
+
font-family: $rtsu-font-family;
|
|
221
|
+
font-weight: 600;
|
|
222
|
+
cursor: pointer;
|
|
223
|
+
transition: opacity $rtsu-transition-fast;
|
|
224
|
+
|
|
225
|
+
&:hover {
|
|
226
|
+
opacity: 0.85;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
@keyframes rts-banner-slide-in {
|
|
231
|
+
from {
|
|
232
|
+
opacity: 0;
|
|
233
|
+
transform: translateY(4px);
|
|
234
|
+
}
|
|
235
|
+
to {
|
|
236
|
+
opacity: 1;
|
|
237
|
+
transform: translateY(0);
|
|
238
|
+
}
|
|
239
|
+
}
|