@rtsee/ngx 0.0.116 → 0.0.117

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.
@@ -0,0 +1,214 @@
1
+ @import "./variables";
2
+
3
+ /* ── STORY ELEMENT THUMBNAIL (author / characters / artifacts / locations) ── */
4
+ /* compact row: small image in the top-left corner, name & description on the right */
5
+
6
+ // opaque approximation of the card background (used to fade the text under the toggle)
7
+ $rts-element-thumbnail-fade-bg: #15151f;
8
+ $rts-element-thumbnail-image-size: 56px;
9
+ $rts-element-thumbnail-image-size-featured: 72px;
10
+
11
+ .rtsee-story-element-thumbnail {
12
+ display: flex;
13
+ flex-direction: row;
14
+ align-items: flex-start;
15
+ gap: ($rts-offset-sm + $rts-offset-xsm);
16
+ height: 100%;
17
+ padding: ($rts-offset-sm + $rts-offset-xsm);
18
+ background: linear-gradient(
19
+ 135deg,
20
+ $rts-rates-bg-card-start 0%,
21
+ $rts-rates-bg-card-end 100%
22
+ );
23
+ border: 1px solid $rts-rates-border-dim;
24
+ border-radius: 14px;
25
+ backdrop-filter: blur(12px);
26
+ color: $rts-rates-text-primary;
27
+ transition:
28
+ transform 0.3s ease,
29
+ border-color 0.3s ease,
30
+ box-shadow 0.3s ease;
31
+ animation: rtseeElementThumbnailSlideUp 0.6s ease-out both;
32
+
33
+ &:hover {
34
+ transform: translateY(-2px);
35
+ border-color: rgba($rts-rates-accent-purple, 0.3);
36
+ box-shadow: 0 8px 28px rgba($rts-rates-accent-purple, 0.12);
37
+
38
+ .rtsee-story-element-thumbnail-image {
39
+ transform: scale(1.06);
40
+ }
41
+ }
42
+
43
+ .rtsee-story-element-thumbnail-media {
44
+ position: relative;
45
+ flex-shrink: 0;
46
+ width: $rts-element-thumbnail-image-size;
47
+ height: $rts-element-thumbnail-image-size;
48
+ margin: 0;
49
+ overflow: hidden;
50
+ border-radius: 12px;
51
+ border: 1px solid $rts-rates-border-med;
52
+ background: linear-gradient(
53
+ 135deg,
54
+ rgba($rts-rates-accent-purple, 0.35) 0%,
55
+ rgba($rts-rates-accent-purple-light, 0.15) 100%
56
+ );
57
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
58
+ }
59
+
60
+ .rtsee-story-element-thumbnail-image {
61
+ display: block;
62
+ width: 100%;
63
+ height: 100%;
64
+ object-fit: cover;
65
+ transition: transform 0.5s ease;
66
+ }
67
+
68
+ .rtsee-story-element-thumbnail-placeholder {
69
+ display: flex;
70
+ align-items: center;
71
+ justify-content: center;
72
+ width: 100%;
73
+ height: 100%;
74
+ font-size: 1.4rem;
75
+ font-weight: 800;
76
+ color: rgba(255, 255, 255, 0.85);
77
+ text-shadow: 0 2px 12px rgba(0, 0, 0, 0.4);
78
+ }
79
+
80
+ .rtsee-story-element-thumbnail-body {
81
+ display: flex;
82
+ flex-direction: column;
83
+ gap: 2px;
84
+ flex: 1 1 auto;
85
+ min-width: 0;
86
+ }
87
+
88
+ .rtsee-story-element-thumbnail-name {
89
+ margin: 0;
90
+ font-size: 0.98rem;
91
+ font-weight: 700;
92
+ line-height: 1.3;
93
+ color: #fff;
94
+ letter-spacing: -0.01em;
95
+ overflow-wrap: anywhere;
96
+ }
97
+
98
+ .rtsee-story-element-thumbnail-description-wrapper {
99
+ position: relative;
100
+ }
101
+
102
+ .rtsee-story-element-thumbnail-description {
103
+ margin: 0;
104
+ font-size: 0.86rem;
105
+ line-height: 1.55;
106
+ color: $rts-rates-text-secondary;
107
+ overflow-wrap: anywhere;
108
+ white-space: pre-line;
109
+ // the full text stays in the DOM (SEO), only visually clamped
110
+ display: -webkit-box;
111
+ -webkit-line-clamp: 3;
112
+ line-clamp: 3;
113
+ -webkit-box-orient: vertical;
114
+ overflow: hidden;
115
+
116
+ &.rtsee-story-element-thumbnail-description-truncatable {
117
+ cursor: pointer;
118
+ }
119
+ }
120
+
121
+ .rtsee-story-element-thumbnail-toggle {
122
+ padding: 0;
123
+ border: none;
124
+ background: none;
125
+ font: inherit;
126
+ font-size: 0.86rem;
127
+ line-height: 1.55;
128
+ font-weight: 600;
129
+ color: $rts-rates-accent-purple-light;
130
+ cursor: pointer;
131
+ transition: color 0.2s ease;
132
+
133
+ &:hover {
134
+ color: #fff;
135
+ text-decoration: underline;
136
+ text-underline-offset: 3px;
137
+ }
138
+
139
+ &:focus-visible {
140
+ outline: 2px solid rgba($rts-rates-accent-purple-light, 0.7);
141
+ outline-offset: 2px;
142
+ border-radius: 4px;
143
+ }
144
+ }
145
+
146
+ // collapsed: sits over the end of the last visible line
147
+ .rtsee-story-element-thumbnail-toggle-more {
148
+ position: absolute;
149
+ right: 0;
150
+ bottom: 0;
151
+ padding-left: 2.2em;
152
+ background: linear-gradient(
153
+ 90deg,
154
+ rgba($rts-element-thumbnail-fade-bg, 0) 0%,
155
+ $rts-element-thumbnail-fade-bg 1.8em
156
+ );
157
+
158
+ &::before {
159
+ content: "…\00a0";
160
+ color: $rts-rates-text-secondary;
161
+ font-weight: 400;
162
+ }
163
+ }
164
+
165
+ // expanded: the paragraph flows inline so the toggle follows the last word
166
+ &.rtsee-story-element-thumbnail-expanded {
167
+ .rtsee-story-element-thumbnail-description {
168
+ display: inline;
169
+ -webkit-line-clamp: unset;
170
+ line-clamp: none;
171
+ overflow: visible;
172
+ }
173
+
174
+ .rtsee-story-element-thumbnail-toggle-less {
175
+ margin-left: 0.4em;
176
+ }
177
+ }
178
+
179
+ /* featured variant (single item, e.g. author) */
180
+ &.rtsee-story-element-thumbnail-featured {
181
+ gap: $rts-offset-md;
182
+ padding: $rts-offset-md;
183
+
184
+ .rtsee-story-element-thumbnail-media {
185
+ width: $rts-element-thumbnail-image-size-featured;
186
+ height: $rts-element-thumbnail-image-size-featured;
187
+ border-radius: 50%;
188
+ }
189
+
190
+ .rtsee-story-element-thumbnail-placeholder {
191
+ font-size: 1.7rem;
192
+ }
193
+
194
+ .rtsee-story-element-thumbnail-name {
195
+ font-size: 1.08rem;
196
+ }
197
+
198
+ .rtsee-story-element-thumbnail-description {
199
+ -webkit-line-clamp: 4;
200
+ line-clamp: 4;
201
+ }
202
+ }
203
+ }
204
+
205
+ @keyframes rtseeElementThumbnailSlideUp {
206
+ from {
207
+ opacity: 0;
208
+ transform: translateY(16px);
209
+ }
210
+ to {
211
+ opacity: 1;
212
+ transform: translateY(0);
213
+ }
214
+ }
@@ -36,6 +36,18 @@
36
36
  //display: block;
37
37
  }
38
38
 
39
+ // virtual slide whose content is not loaded yet
40
+ .story-player-slide-placeholder {
41
+ display: flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ width: 100%;
45
+ height: 100%;
46
+ background: $rts-reading-light-bg;
47
+ color: $rts-reading-light-muted;
48
+ font-size: 2rem;
49
+ }
50
+
39
51
  .rtsee-presentation-slide-controls {
40
52
  padding: $rts-offset-sm;
41
53
  display: flex;
@@ -73,3 +85,46 @@
73
85
 
74
86
 
75
87
 
88
+
89
+ /* ── READING THEMES (story player only) ─────────────────────── */
90
+
91
+ // dark: optimal for bedtime reading in a dark room
92
+ .rtsee-story-player.rtsee-story-player-theme-dark {
93
+ background-color: $rts-reading-dark-bg;
94
+ color: $rts-reading-dark-text;
95
+ color-scheme: dark; // dark scrollbars & native controls
96
+
97
+ .rtsee-presentation-slide {
98
+ background-color: $rts-reading-dark-bg;
99
+ color: $rts-reading-dark-text;
100
+ transition:
101
+ background-color 0.3s ease,
102
+ color 0.3s ease;
103
+
104
+ .rtsee-presentation-slide-default {
105
+ .rtsee-presentation-slide-text {
106
+ color: $rts-reading-dark-text;
107
+ }
108
+
109
+ // slightly soften bright illustrations so they don't glare in the dark
110
+ .rtsee-presentation-slide-image-container {
111
+ filter: brightness(0.9);
112
+ }
113
+ }
114
+
115
+ .slide-navigation-btn.navigation-prev .p-button {
116
+ background: $rts-reading-dark-surface;
117
+ border-color: rgba(255, 255, 255, 0.08);
118
+ color: $rts-reading-dark-text;
119
+ }
120
+ }
121
+
122
+ .story-player-slide-container .story-player-slide-placeholder {
123
+ background: $rts-reading-dark-bg;
124
+ color: $rts-reading-dark-muted;
125
+ }
126
+ }
127
+
128
+ .rtsee-presentation .rtsee-presentation-story-viewer-container.rtsee-presentation-story-viewer-container-dark {
129
+ background-color: $rts-reading-dark-bg;
130
+ }
@@ -0,0 +1,128 @@
1
+ @import "./variables";
2
+
3
+ /* ── STORY SLIDES PREVIEW (circles stack + "N slides" + "~N min") ── */
4
+
5
+ $rts-slides-preview-circle: 52px;
6
+
7
+ .rtsee-story-slides-preview {
8
+ display: flex;
9
+ align-items: center;
10
+ gap: $rts-offset-md;
11
+ color: $rts-rates-text-primary;
12
+
13
+ .rtsee-story-slides-preview-stack {
14
+ display: inline-flex;
15
+ align-items: center;
16
+ flex-shrink: 0;
17
+ padding-left: 14px; // compensates the first circle's negative margin
18
+ }
19
+
20
+ .rtsee-story-slides-preview-circle {
21
+ position: relative;
22
+ display: block;
23
+ width: $rts-slides-preview-circle;
24
+ height: $rts-slides-preview-circle;
25
+ margin-left: -14px;
26
+ border-radius: 50%;
27
+ overflow: hidden;
28
+ border: 2px solid $rts-rates-bg-main;
29
+ box-shadow:
30
+ 0 0 0 1px rgba($rts-rates-accent-purple, 0.45),
31
+ 0 4px 12px rgba(0, 0, 0, 0.35);
32
+ background: linear-gradient(
33
+ 135deg,
34
+ rgba($rts-rates-accent-purple, 0.35) 0%,
35
+ rgba($rts-rates-accent-purple-light, 0.15) 100%
36
+ );
37
+ transition: transform 0.3s ease;
38
+ // backwards: the finished animation must not override the hover transforms
39
+ animation: rtseeSlidesPreviewPop 0.45s ease-out backwards;
40
+
41
+ @for $i from 1 through 3 {
42
+ &:nth-child(#{$i}) {
43
+ z-index: 4 - $i;
44
+ animation-delay: #{$i * 0.08}s;
45
+ }
46
+ }
47
+
48
+ img {
49
+ display: block;
50
+ width: 100%;
51
+ height: 100%;
52
+ object-fit: cover;
53
+ }
54
+
55
+ &.rtsee-story-slides-preview-circle-skeleton {
56
+ background: linear-gradient(
57
+ 90deg,
58
+ rgba(255, 255, 255, 0.06) 0%,
59
+ rgba(255, 255, 255, 0.16) 50%,
60
+ rgba(255, 255, 255, 0.06) 100%
61
+ );
62
+ background-size: 200% 100%;
63
+ animation: rtseeSlidesPreviewShimmer 1.2s linear infinite;
64
+ }
65
+ }
66
+
67
+ .rtsee-story-slides-preview-text {
68
+ display: flex;
69
+ flex-direction: column;
70
+ gap: 2px;
71
+ min-width: 0;
72
+ }
73
+
74
+ .rtsee-story-slides-preview-total {
75
+ display: inline-flex;
76
+ align-items: baseline;
77
+ gap: 6px;
78
+ white-space: nowrap;
79
+ }
80
+
81
+ .rtsee-story-slides-preview-count {
82
+ font-size: 1.35rem;
83
+ font-weight: 800;
84
+ line-height: 1.1;
85
+ color: #fff;
86
+ }
87
+
88
+ .rtsee-story-slides-preview-label {
89
+ font-size: 0.95rem;
90
+ font-weight: 600;
91
+ color: $rts-rates-text-primary;
92
+ }
93
+
94
+ .rtsee-story-slides-preview-time {
95
+ display: inline-flex;
96
+ align-items: center;
97
+ gap: 6px;
98
+ font-size: 0.85rem;
99
+ font-weight: 500;
100
+ color: $rts-rates-text-secondary;
101
+ white-space: nowrap;
102
+
103
+ .pi {
104
+ font-size: 0.8rem;
105
+ opacity: 0.8;
106
+ }
107
+ }
108
+ }
109
+
110
+ @keyframes rtseeSlidesPreviewPop {
111
+ from {
112
+ opacity: 0;
113
+ transform: scale(0.6);
114
+ }
115
+ to {
116
+ opacity: 1;
117
+ transform: scale(1);
118
+ }
119
+ }
120
+
121
+ @keyframes rtseeSlidesPreviewShimmer {
122
+ from {
123
+ background-position: 200% 0;
124
+ }
125
+ to {
126
+ background-position: -200% 0;
127
+ }
128
+ }
@@ -3,6 +3,16 @@
3
3
  $story-thumb-width: 220px;
4
4
  $story-thumb-image-padding: 68%;
5
5
 
6
+ // story player reading themes
7
+ $rts-reading-light-bg: #ffffff;
8
+ $rts-reading-light-text: #333333;
9
+ $rts-reading-light-muted: #888888;
10
+ // warm near-black + warm off-white: low glare & less blue light for bedtime reading
11
+ $rts-reading-dark-bg: #14121a;
12
+ $rts-reading-dark-surface: #1c1924;
13
+ $rts-reading-dark-text: #ece6da;
14
+ $rts-reading-dark-muted: #9a93a6;
15
+
6
16
  $presentation-dashboard-header-height: 50.5px;
7
17
  $presentation-dashboard-tabs-height: 51.5px;
8
18
  $presentation-header-create-button: 36.5px;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.0.116",
2
+ "version": "0.0.117",
3
3
  "name": "@rtsee/ngx",
4
4
  "module": "./dist/ngx/fesm2022/rtsee-ngx.mjs",
5
5
  "types": "./dist/ngx/index.d.ts",
@@ -40,15 +40,15 @@
40
40
  "@angular/platform-browser-dynamic": "^20.1.2",
41
41
  "@angular/router": "^20.1.2",
42
42
  "@primeuix/themes": "^1.2.3",
43
- "@rtsee/common": "^0.0.87",
44
- "@rtsee/conference": "^0.0.88",
45
- "@rtsee/core": "^0.0.131",
46
- "@rtsee/events-dashboard": "^0.0.121",
47
- "@rtsee/factory": "^0.0.130",
48
- "@rtsee/messenger": "^0.0.121",
49
- "@rtsee/presentation": "^0.0.120",
50
- "@rtsee/signaling-client": "^0.0.134",
51
- "@rtsee/utilities-ui": "^0.0.52",
43
+ "@rtsee/common": "^0.0.88",
44
+ "@rtsee/conference": "^0.0.89",
45
+ "@rtsee/core": "^0.0.132",
46
+ "@rtsee/events-dashboard": "^0.0.122",
47
+ "@rtsee/factory": "^0.0.131",
48
+ "@rtsee/messenger": "^0.0.122",
49
+ "@rtsee/presentation": "^0.0.121",
50
+ "@rtsee/signaling-client": "^0.0.135",
51
+ "@rtsee/utilities-ui": "^0.0.53",
52
52
  "@stripe/stripe-js": "^8.6.1",
53
53
  "@types/gtag.js": "^0.0.20",
54
54
  "@types/node": "~24.0.14",
@@ -71,5 +71,5 @@
71
71
  "publishConfig": {
72
72
  "access": "public"
73
73
  },
74
- "gitHead": "8412cdadc3ab2fcec6172785ee42df235a027fee"
74
+ "gitHead": "6c553070dff584bc4f4a0276b33e1583d8b2411f"
75
75
  }