@rtsee/ngx 0.0.110 → 0.0.112

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';
@@ -139,6 +139,7 @@ declare class PaymentProductSnippetComponent {
139
139
 
140
140
  declare class RtseeEventsDashboardComponent {
141
141
  eventsDashboard: RTSeeEventsDashboard;
142
+ loadMore(): void;
142
143
  static ɵfac: i0.ɵɵFactoryDeclaration<RtseeEventsDashboardComponent, never>;
143
144
  static ɵcmp: i0.ɵɵComponentDeclaration<RtseeEventsDashboardComponent, "rtsee-events-dashboard", never, { "eventsDashboard": { "alias": "eventsDashboard"; "required": false; }; }, {}, never, never, true, never>;
144
145
  }
@@ -511,10 +512,21 @@ declare class TimeFormatHelperService {
511
512
  static ɵprov: i0.ɵɵInjectableDeclaration<TimeFormatHelperService>;
512
513
  }
513
514
 
514
- declare class RtseeEventsDashboardSessionComponent {
515
+ declare class RtseeEventsDashboardSessionComponent implements OnInit, OnChanges, OnDestroy {
515
516
  timeFormatService: TimeFormatHelperService;
517
+ private cd;
516
518
  session: RTSeeDashboardClientSession;
517
- constructor(timeFormatService: TimeFormatHelperService);
519
+ durationText: string;
520
+ visibleEventsCount: number;
521
+ private timerInterval;
522
+ constructor(timeFormatService: TimeFormatHelperService, cd: ChangeDetectorRef);
523
+ ngOnInit(): void;
524
+ ngOnChanges(changes: SimpleChanges): void;
525
+ ngOnDestroy(): void;
526
+ loadMoreEvents(): void;
527
+ private initTimer;
528
+ private stopTimer;
529
+ private updateDuration;
518
530
  static ɵfac: i0.ɵɵFactoryDeclaration<RtseeEventsDashboardSessionComponent, never>;
519
531
  static ɵcmp: i0.ɵɵComponentDeclaration<RtseeEventsDashboardSessionComponent, "rtsee-rtsee-events-dashboard-session", never, { "session": { "alias": "session"; "required": false; }; }, {}, never, never, true, never>;
520
532
  }
@@ -544,21 +556,24 @@ declare class EventsWidgetsService {
544
556
  static ɵprov: i0.ɵɵInjectableDeclaration<EventsWidgetsService>;
545
557
  }
546
558
 
547
- declare class EventThumbnailComponent implements OnInit, AfterViewInit {
559
+ declare class EventThumbnailComponent implements OnInit, OnChanges, AfterViewInit {
548
560
  private widgetsService;
549
561
  private componentFactoryResolver;
550
562
  timeFormatService: TimeFormatHelperService;
551
563
  private cd;
552
564
  tooltip?: string;
553
565
  timeInAgoFormat: string;
566
+ private componentRef?;
554
567
  event: RTSeeDashboardEvent;
568
+ session?: RTSeeDashboardClientSession;
555
569
  widgetHost: WidgetDirective;
556
570
  constructor(widgetsService: EventsWidgetsService, componentFactoryResolver: ComponentFactoryResolver, timeFormatService: TimeFormatHelperService, cd: ChangeDetectorRef);
557
571
  ngOnInit(): void;
558
572
  generateTooltip(): void;
573
+ ngOnChanges(changes: SimpleChanges): void;
559
574
  ngAfterViewInit(): void;
560
575
  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>;
576
+ static ɵcmp: i0.ɵɵComponentDeclaration<EventThumbnailComponent, "rtsee-event-thumbnail", never, { "event": { "alias": "event"; "required": false; }; "session": { "alias": "session"; "required": false; }; }, {}, never, never, true, never>;
562
577
  }
563
578
 
564
579
  declare class ShaveDirective implements AfterViewInit {
@@ -948,23 +963,6 @@ declare class GtagService {
948
963
  static ɵprov: i0.ɵɵInjectableDeclaration<GtagService>;
949
964
  }
950
965
 
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
966
  /**
969
967
  * Default client-side representation of a server-side OzzyTask.
970
968
  * Can be used directly (`[task]`) or as a message widget (`message.data.taskId`).
@@ -1002,5 +1000,60 @@ declare class RTSeeTaskComponent implements OnInit, OnChanges, OnDestroy {
1002
1000
  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
1001
  }
1004
1002
 
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 };
1003
+ declare abstract class BaseEventWidgetComponent implements OnInit, OnChanges, OnDestroy {
1004
+ protected cd: ChangeDetectorRef;
1005
+ private _event;
1006
+ set event(value: RTSeeDashboardEvent);
1007
+ get event(): RTSeeDashboardEvent;
1008
+ private _session?;
1009
+ set session(value: RTSeeDashboardClientSession | undefined);
1010
+ get session(): RTSeeDashboardClientSession | undefined;
1011
+ durationText: string;
1012
+ totalSeconds: number;
1013
+ isLive: boolean;
1014
+ private intervalId;
1015
+ constructor(cd: ChangeDetectorRef);
1016
+ ngOnInit(): void;
1017
+ ngOnChanges(changes: SimpleChanges): void;
1018
+ ngOnDestroy(): void;
1019
+ protected initCounter(): void;
1020
+ protected stopCounter(): void;
1021
+ updateDuration(): void;
1022
+ protected formatSeconds(seconds: number): string;
1023
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseEventWidgetComponent, never>;
1024
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BaseEventWidgetComponent, never, never, { "event": { "alias": "event"; "required": false; }; "session": { "alias": "session"; "required": false; }; }, {}, never, never, true, never>;
1025
+ }
1026
+
1027
+ declare class StoryDetailsOpenedWidgetComponent extends BaseEventWidgetComponent {
1028
+ constructor(cd: ChangeDetectorRef);
1029
+ get storyName(): string;
1030
+ get storyUrl(): string | null;
1031
+ get imageUrl(): string | null;
1032
+ get description(): string | null;
1033
+ static ɵfac: i0.ɵɵFactoryDeclaration<StoryDetailsOpenedWidgetComponent, never>;
1034
+ static ɵcmp: i0.ɵɵComponentDeclaration<StoryDetailsOpenedWidgetComponent, "rtsee-story-details-opened-widget", never, {}, {}, never, never, true, never>;
1035
+ }
1036
+
1037
+ declare class StoryReadingStartedWidgetComponent extends BaseEventWidgetComponent {
1038
+ constructor(cd: ChangeDetectorRef);
1039
+ get storyName(): string;
1040
+ get storyUrl(): string | null;
1041
+ get imageUrl(): string | null;
1042
+ static ɵfac: i0.ɵɵFactoryDeclaration<StoryReadingStartedWidgetComponent, never>;
1043
+ static ɵcmp: i0.ɵɵComponentDeclaration<StoryReadingStartedWidgetComponent, "rtsee-story-reading-started-widget", never, {}, {}, never, never, true, never>;
1044
+ }
1045
+
1046
+ declare class SlideNumberChangedWidgetComponent extends BaseEventWidgetComponent {
1047
+ constructor(cd: ChangeDetectorRef);
1048
+ get slideNumber(): number | string;
1049
+ get totalSlides(): number | null;
1050
+ get slideText(): string;
1051
+ get storyName(): string | null;
1052
+ get storyUrl(): string | null;
1053
+ get imageUrl(): string | null;
1054
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlideNumberChangedWidgetComponent, never>;
1055
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlideNumberChangedWidgetComponent, "rtsee-slide-number-changed-widget", never, {}, {}, never, never, true, never>;
1056
+ }
1057
+
1058
+ 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 };
1059
+ export type { IAccordionItem, RTSeeTagForm, RTSeeTagGroupForm };
@@ -1,199 +1,163 @@
1
1
  @import "./variables";
2
- @import "../common-variables";
2
+
3
+ // ═══════════════════════════════════════════════════════════════════
4
+ // AUTH — Page shell & glass card (sign-in, sign-up, forgot / reset password)
5
+ // Follows the messenger / presentation dark glass design language.
6
+ // ═══════════════════════════════════════════════════════════════════
3
7
 
4
8
  .rtsee-auth {
9
+ position: relative;
5
10
  min-height: 100vh;
6
11
  min-height: 100dvh;
7
12
  display: flex;
8
13
  flex-direction: column;
9
14
  justify-content: center;
10
15
  align-items: center;
16
+ padding: $rtsee-auth-page-padding;
17
+ box-sizing: border-box;
18
+ overflow: hidden;
19
+ background: $rtsee-auth-background;
20
+ color: var(--rts-text-primary);
21
+ font-family: $rtsu-font-family;
22
+
23
+ // soft accent glow behind the card (same as the presentation hero)
24
+ &::before {
25
+ content: '';
26
+ position: absolute;
27
+ inset: 0;
28
+ background: $rtsee-auth-glow;
29
+ pointer-events: none;
30
+ }
31
+
32
+ // ── PrimeNG tokens scoped to auth pages (PrimeNG runs in light mode app-wide) ──
33
+ --p-inputtext-background: var(--rts-bg-surface);
34
+ --p-inputtext-color: var(--rts-text-primary);
35
+ --p-inputtext-border-color: var(--rts-border-med);
36
+ --p-inputtext-hover-border-color: var(--rts-border-bright);
37
+ --p-inputtext-focus-border-color: var(--rts-accent, #{$rtsu-accent-purple});
38
+ --p-inputtext-invalid-border-color: var(--rts-danger, #{$rtsu-danger});
39
+ --p-inputtext-placeholder-color: var(--rts-text-muted);
40
+ --p-inputtext-border-radius: #{$rtsee-auth-input-radius};
41
+ --p-inputtext-padding-x: #{$rtsee-auth-input-padding-x};
42
+ --p-inputtext-padding-y: #{$rtsee-auth-input-padding-y};
43
+ --p-inputtext-shadow: none;
44
+ --p-inputtext-focus-ring-shadow: #{$rtsee-auth-focus-ring};
45
+
46
+ --p-floatlabel-color: var(--rts-text-muted);
47
+ --p-floatlabel-focus-color: var(--rts-accent-light, #{$rtsu-accent-purple-light});
48
+ --p-floatlabel-active-color: var(--rts-text-secondary);
49
+ --p-floatlabel-invalid-color: var(--rts-danger, #{$rtsu-danger});
50
+ --p-floatlabel-on-active-background: var(--rts-bg-surface);
51
+
52
+ --p-password-icon-color: var(--rts-text-muted);
53
+
54
+ --p-checkbox-background: var(--rts-bg-surface);
55
+ --p-checkbox-border-color: var(--rts-border-bright);
56
+ --p-checkbox-hover-border-color: var(--rts-accent-light, #{$rtsu-accent-purple-light});
57
+ --p-checkbox-checked-background: var(--rts-accent, #{$rtsu-accent-purple});
58
+ --p-checkbox-checked-border-color: var(--rts-accent, #{$rtsu-accent-purple});
59
+ --p-checkbox-checked-hover-background: var(--rts-accent-light, #{$rtsu-accent-purple-light});
60
+ --p-checkbox-checked-hover-border-color: var(--rts-accent-light, #{$rtsu-accent-purple-light});
61
+ --p-checkbox-icon-checked-color: #fff;
62
+ --p-checkbox-icon-checked-hover-color: #fff;
63
+ --p-checkbox-focus-ring-shadow: #{$rtsee-auth-focus-ring};
11
64
 
65
+ --p-message-error-simple-color: var(--rts-danger, #{$rtsu-danger});
66
+ --p-message-success-simple-color: var(--rts-success, #{$rtsu-success});
67
+
68
+ --p-progressspinner-color-one: var(--rts-accent-light, #{$rtsu-accent-purple-light});
69
+ --p-progressspinner-color-two: var(--rts-accent, #{$rtsu-accent-purple});
70
+ --p-progressspinner-color-three: var(--rts-accent-highlight, #{$rtsu-accent-highlight});
71
+ --p-progressspinner-color-four: var(--rts-accent-blue, #{$rtsu-accent-blue});
72
+
73
+ // ── Card ──
12
74
  .auth-container {
13
- max-width: 420px;
75
+ position: relative;
76
+ width: 100%;
77
+ max-width: $rtsee-auth-card-max-width;
78
+ box-sizing: border-box;
79
+ padding: $rtsee-auth-card-padding;
80
+ border-radius: $rtsee-auth-card-radius;
81
+ box-shadow: $rtsee-auth-card-shadow;
82
+
83
+ // .rts-glass-card hover lift is too lively for a form, keep the border highlight only
84
+ &.rts-glass-card:hover {
85
+ box-shadow: $rtsee-auth-card-shadow, 0 6px 24px rgba(108, 92, 231, 0.08);
86
+ }
87
+ }
88
+
89
+ // ── Header (logo, title, description) ──
90
+ .auth-header {
91
+ display: flex;
92
+ flex-direction: column;
93
+ align-items: center;
94
+ text-align: center;
95
+ margin-bottom: $rtsu-space-lg;
96
+ }
97
+
98
+ .auth-logo {
99
+ width: $rtsee-auth-logo-size;
100
+ height: $rtsee-auth-logo-size;
101
+ padding: 0; // $rtsee-auth-logo-padding;
102
+ box-sizing: border-box;
103
+ margin-bottom: $rtsu-space-md;
104
+ border-radius: $rtsu-radius-lg;
105
+ object-fit: contain;
106
+ background: var(--rts-accent-highlight-dim, #{$rtsu-accent-highlight-dim});
107
+ border: 1px solid var(--rts-border-med);
108
+ box-shadow: $rtsu-shadow-accent-sm;
109
+ }
110
+
111
+ .auth-title {
112
+ margin: 0 0 $rtsu-space-sm 0;
113
+ font-size: $rtsee-auth-title-size;
114
+ font-weight: $rtsu-font-weight-bold;
115
+ line-height: $rtsu-line-height-snug;
116
+ letter-spacing: $rtsu-tracking-tight;
117
+ color: var(--rts-text-primary);
118
+ }
119
+
120
+ .auth-title-description {
121
+ margin: 0;
122
+ font-size: $rtsee-auth-description-size;
123
+ line-height: $rtsu-line-height-normal;
124
+ color: var(--rts-text-secondary);
125
+ }
126
+
127
+ // ── Links ──
128
+ .auth-link {
129
+ color: var(--rts-accent-light, #{$rtsu-accent-purple-light});
130
+ font-weight: $rtsu-font-weight-semibold;
131
+ text-decoration: none;
132
+ transition: color $rtsu-transition-fast;
133
+
134
+ &:hover {
135
+ color: var(--rts-accent-highlight, #{$rtsu-accent-highlight});
136
+ text-decoration: underline;
137
+ }
138
+ }
139
+
140
+ // ── Footer ("Don't have an account? …") ──
141
+ .auth-footer {
142
+ margin: $rtsu-space-lg 0 0 0;
143
+ padding-top: $rtsu-space-md;
144
+ border-top: 1px solid var(--rts-border-dim);
145
+ text-align: center;
146
+ font-size: $rtsu-font-size-base;
147
+ color: var(--rts-text-secondary);
14
148
  }
15
149
  }
16
150
 
151
+ @media (max-width: $rtsu-break-sm) {
152
+ .rtsee-auth {
153
+ padding: $rtsu-space-md $rtsu-space-sm;
17
154
 
155
+ .auth-container {
156
+ padding: $rtsee-auth-card-padding-mobile;
157
+ }
18
158
 
19
- //.auth-container {
20
- // max-width: $max-width-container;
21
- // margin: $btn-margin-top auto;
22
- // padding: $rts-offset-md;
23
- // background: linear-gradient(to bottom, $light-blue-gray 0%, $white 100%);
24
- // border-radius: $rts-default-border-radius;
25
- //
26
- // .auth-logo {
27
- // width: $auth-logo-width;
28
- // height: $auth-logo-height;
29
- // border-radius: $rts-default-border-radius;
30
- // }
31
- //
32
- // .auth-title {
33
- // margin-bottom: $auth-title-text-margin-bottom;
34
- // font-size: $auth-title-text-font-size;
35
- // font-weight: bold;
36
- // color: $dark-blue-gray;
37
- // text-shadow: $auth-title-text-shadow;
38
- // }
39
- //
40
- // .auth-title-description {
41
- // margin: $auth-title-description-text-margin;
42
- // font-size: $auth-title-description-text-font-size;
43
- // color: $medium-blue-gray;
44
- // }
45
- //
46
- // .auth-form {
47
- // padding: $rts-offset-md;
48
- // display: flex;
49
- // flex-direction: column;
50
- // align-items: center;
51
- // border-radius: $rts-default-border-radius;
52
- // background-color: $white;
53
- // box-shadow: $auth-form-box-shadow;
54
- //
55
- // .auth-input-container {
56
- // width: 100%;
57
- // margin-bottom: $input-bottom-margin;
58
- //
59
- // input {
60
- // width: 100%;
61
- // padding: $auth-form-input-padding;
62
- // border: $auth-form-input-border;
63
- // border-radius: $rts-default-border-radius;
64
- // font-size: $auth-title-description-text-font-size;
65
- //
66
- // &:focus {
67
- // border-color: $dark-blue-gray;
68
- // outline: none;
69
- // box-shadow: $auth-form-input-focus-shadow;
70
- // }
71
- // }
72
- // }
73
- //
74
- // .auth-sm-medium {
75
- // margin-bottom: $label-bottom-margin;
76
- // font-size: $auth-sm-medium-font-side;
77
- // color: $dark-blue-gray;
78
- // }
79
- //
80
- // .auth-options {
81
- // display: flex;
82
- // justify-content: space-between;
83
- // width: 100%;
84
- // align-items: center;
85
- // margin: $auth-options-margin;
86
- //
87
- // .auth-checkbox-label {
88
- // display: flex;
89
- // align-items: center;
90
- //
91
- // .auth-remember-checkbox {
92
- // margin-right: $auth-options-remember-check-box-margin;
93
- // accent-color: $dark-blue-gray;
94
- // }
95
- //
96
- // label {
97
- // font-size: $auth-sm-medium-font-side;
98
- // color: $dark-blue-gray;
99
- // }
100
- // }
101
- //
102
- // a {
103
- // font-size: $auth-sm-medium-font-side;
104
- // color: $deep-blue;
105
- // text-decoration: none;
106
- //
107
- // &:hover {
108
- // text-decoration: underline;
109
- // }
110
- // }
111
- // }
112
- //
113
- // .auth-btn-container {
114
- // width: 100%;
115
- // padding: $auth-button-padding;
116
- // text-align: center;
117
- // font-size: $auth-button-font-size;
118
- // background-color: $deep-blue;
119
- // color: $white;
120
- // border: none;
121
- // border-radius: $auth-button-border-radius;
122
- // cursor: pointer;
123
- // transition: $auth-button-transition;
124
- //
125
- // &:hover {
126
- // background-color: darken($deep-blue, 10%);
127
- // }
128
- //
129
- // &:disabled {
130
- // background-color: $medium-blue-gray;
131
- // cursor: not-allowed;
132
- // box-shadow: none;
133
- // transform: none;
134
- // }
135
- // }
136
- // }
137
- //
138
- // .auth-media-blue-gray-sm-normal {
139
- // margin-top: $auth-new-account-text-margin;
140
- // font-size: $auth-new-account-text-font-size;
141
- // color: $medium-blue-gray;
142
- //
143
- // .auth-deep-blue-sm-medium {
144
- // text-decoration: none;
145
- // color: $deep-blue;
146
- //
147
- // &:hover {
148
- // text-decoration: underline;
149
- // opacity: 0.8;
150
- // }
151
- // }
152
- // }
153
- //}
154
- //
155
- ///* Mobile Styles */
156
- //@media (max-width: 480px) {
157
- // .auth-container {
158
- // padding: $auth-container-mobile-padding;
159
- //
160
- // .auth-form {
161
- // padding: $auth-form-mobile-padding;
162
- //
163
- // .auth-input-container {
164
- // margin-bottom: $auth-input-container-mobile-margin;
165
- //
166
- // input {
167
- // padding: $auth-input-mobile-padding;
168
- // font-size: $auth-mobile-font-size;
169
- // }
170
- // }
171
- //
172
- // .auth-btn-container {
173
- // padding: $auth-button-container-mobile-padding;
174
- // font-size: $auth-mobile-font-size;
175
- // }
176
- //
177
- // .auth-options {
178
- // flex-direction: column;
179
- // align-items: flex-start;
180
- //
181
- // .auth-checkbox-label {
182
- // margin-bottom: $auth-check-box-label-mobile-margin;
183
- // }
184
- //
185
- // a {
186
- // font-size: $auth-mobile-font-size;
187
- // }
188
- // }
189
- // }
190
- //
191
- // .auth-media-blue-gray-sm-normal {
192
- // font-size: $auth-mobile-font-size;
193
- //
194
- // .auth-deep-blue-sm-medium {
195
- // font-size: $auth-mobile-font-size;
196
- // }
197
- // }
198
- // }
199
- //}
159
+ .auth-title {
160
+ font-size: $rtsu-font-size-lg + 2px;
161
+ }
162
+ }
163
+ }
@@ -0,0 +1,153 @@
1
+ @import "./variables";
2
+
3
+ // ═══════════════════════════════════════════════════════════════════
4
+ // AUTH — Form internals (fields, options row, submit, messages)
5
+ // Builds on top of .rtsee-form-container / .rtsee-form (theme/forms).
6
+ // ═══════════════════════════════════════════════════════════════════
7
+
8
+ .rtsee-auth {
9
+ .auth-form {
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: $rtsee-auth-field-gap;
13
+
14
+ // spacing is handled by the gap above
15
+ // (compound .rtsee-form to win over theme/forms, which is imported after auth)
16
+ &.rtsee-form .rtsee-form-field-container,
17
+ &.rtsee-form .rtsee-form-field-container.rtsee-autocomplete {
18
+ margin-bottom: 0;
19
+ }
20
+
21
+ // inputs (incl. p-password's inner input) stretch to the card width
22
+ .p-inputgroup,
23
+ .p-floatlabel,
24
+ .p-password,
25
+ .p-password-input,
26
+ .p-inputtext {
27
+ width: 100%;
28
+ }
29
+
30
+ .p-inputtext {
31
+ font-family: $rtsu-font-family;
32
+ font-size: $rtsu-font-size-base + 1px;
33
+ transition: border-color $rtsu-transition-fast,
34
+ box-shadow $rtsu-transition-fast,
35
+ background-color $rtsu-transition-fast;
36
+
37
+ &:enabled:focus {
38
+ background-color: var(--rts-bg-surface-elevated);
39
+ }
40
+ }
41
+
42
+ .rtsee-form-field-error-message {
43
+ padding: $rtsu-space-xs $rtsu-space-xs 0 $rtsu-space-xs;
44
+ }
45
+ }
46
+
47
+ // ── Remember me / forgot password / terms ──
48
+ .auth-options {
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: space-between;
52
+ flex-wrap: wrap;
53
+ gap: $rtsu-space-sm;
54
+ font-size: $rtsu-font-size-sm + 1px;
55
+ }
56
+
57
+ .auth-checkbox {
58
+ display: inline-flex;
59
+ align-items: center;
60
+ gap: $rtsu-space-sm;
61
+ }
62
+
63
+ .auth-checkbox-label {
64
+ color: var(--rts-text-secondary);
65
+ cursor: pointer;
66
+ user-select: none;
67
+ line-height: $rtsu-line-height-snug;
68
+ }
69
+
70
+ // ── Form-level feedback (server errors / success) ──
71
+ .rtsee-form-error-message,
72
+ .rtsee-form-success-message {
73
+ .p-message {
74
+ padding: $rtsu-space-sm $rtsu-space-md;
75
+ border-radius: $rtsu-radius-sm;
76
+ outline: none;
77
+ }
78
+ }
79
+
80
+ .rtsee-form-error-message .p-message {
81
+ background: var(--rts-danger-bg, #{$rtsu-danger-bg});
82
+ border: 1px solid var(--rts-danger-border, #{$rtsu-danger-border});
83
+ }
84
+
85
+ .rtsee-form-success-message .p-message {
86
+ background: rgba(46, 204, 113, 0.06);
87
+ border: 1px solid rgba(46, 204, 113, 0.2);
88
+ }
89
+
90
+ // ── Submit ──
91
+ .rtsee-form-submit-container {
92
+ position: relative;
93
+ margin-top: $rtsu-space-xs;
94
+
95
+ p-button,
96
+ .p-button {
97
+ width: 100%;
98
+ }
99
+
100
+ .p-button {
101
+ justify-content: center;
102
+ padding: $rtsee-auth-submit-padding;
103
+ border: none;
104
+ border-radius: $rtsee-auth-submit-radius;
105
+ background: $rtsee-auth-submit-background;
106
+ color: #fff;
107
+ font-family: $rtsu-font-family;
108
+ font-size: $rtsu-font-size-md;
109
+ font-weight: $rtsu-font-weight-bold;
110
+ letter-spacing: $rtsu-tracking-wide;
111
+ box-shadow: $rtsu-shadow-accent-md;
112
+ transition: transform $rtsu-transition-base,
113
+ box-shadow $rtsu-transition-base,
114
+ opacity $rtsu-transition-base;
115
+
116
+ &:enabled:hover {
117
+ background: $rtsee-auth-submit-background;
118
+ color: #fff;
119
+ transform: translateY(-1px);
120
+ box-shadow: $rtsu-shadow-accent-lg;
121
+ }
122
+
123
+ &:enabled:active {
124
+ transform: translateY(0);
125
+ }
126
+
127
+ &:focus-visible {
128
+ outline: none;
129
+ box-shadow: $rtsu-shadow-accent-md, $rtsee-auth-focus-ring;
130
+ }
131
+
132
+ &:disabled {
133
+ opacity: 0.6;
134
+ box-shadow: none;
135
+ }
136
+ }
137
+
138
+ // spinner sits inside the button's right edge instead of pushing it
139
+ .rtsee-progress-spinner {
140
+ position: absolute;
141
+ right: $rtsu-space-md;
142
+ top: 50%;
143
+ margin: 0;
144
+ transform: translateY(-50%);
145
+ pointer-events: none;
146
+
147
+ &.rtsee-progress-spinner-sm {
148
+ width: $rtsu-space-lg;
149
+ height: $rtsu-space-lg;
150
+ }
151
+ }
152
+ }
153
+ }
@@ -1 +1,3 @@
1
1
  @import "./auth-container";
2
+ @import "./auth-form";
3
+ @import "./privacy-policy";