@fluxo-dev/shell 25.1.12 → 25.2.2
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/index.esm.css +401 -17
- package/index.esm.js +17074 -4079
- package/package.json +12 -12
- package/src/lib/app.d.ts +8 -2
- package/src/lib/layouts/main/app-bar.d.ts +1 -1
- package/src/lib/layouts/main/app-layout.d.ts +3 -3
- package/src/lib/layouts/main/components/CloseSessionConfirmationModal.d.ts +10 -0
- package/src/lib/layouts/main/content.d.ts +1 -1
- package/src/lib/layouts/main/easter-eggs/RetroIntro.d.ts +10 -0
- package/src/lib/layouts/main/easter-eggs/arkanoid.d.ts +4 -0
- package/src/lib/layouts/main/easter-eggs/asteroids.d.ts +4 -0
- package/src/lib/layouts/main/easter-eggs/credits.d.ts +3 -0
- package/src/lib/layouts/main/easter-eggs/pong.d.ts +4 -0
- package/src/lib/layouts/main/easter-eggs/space-invaders.d.ts +4 -0
- package/src/lib/layouts/main/easter-eggs/tetris.d.ts +4 -0
- package/src/lib/layouts/main/hooks/index.d.ts +3 -0
- package/src/lib/layouts/main/hooks/useDocumentTitleManager.d.ts +3 -0
- package/src/lib/layouts/main/hooks/useScrollPositionManager.d.ts +6 -0
- package/src/lib/layouts/main/hooks/useSessionManager.d.ts +17 -0
- package/src/lib/layouts/main/session-persistence.service.d.ts +28 -0
- package/src/lib/layouts/main/shell-session-provider.d.ts +6 -3
- package/src/lib/layouts/main/shell-session.d.ts +7 -5
- package/src/lib/pages/login/user-profile.d.ts +2 -0
- package/src/lib/utils/security/protected-route.d.ts +4 -1
- package/src/lib/pages/login/change-password.d.ts +0 -2
package/index.esm.css
CHANGED
|
@@ -4,48 +4,432 @@
|
|
|
4
4
|
display: block;
|
|
5
5
|
width: 100%;
|
|
6
6
|
color: black;
|
|
7
|
-
font-size:
|
|
8
|
-
padding
|
|
9
|
-
|
|
7
|
+
font-size: 13px;
|
|
8
|
+
padding: 6px 12px;
|
|
9
|
+
margin: 1px 8px;
|
|
10
|
+
transition: background-color 0.2s ease;
|
|
11
|
+
position: relative;
|
|
12
|
+
|
|
10
13
|
&:hover {
|
|
11
|
-
background-color:
|
|
14
|
+
background-color: rgba(0, 0, 0, 0.04);
|
|
12
15
|
color: black;
|
|
13
|
-
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.navbar-item-module_controlActive__0vk5y {
|
|
20
|
+
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
|
|
14
21
|
}
|
|
15
22
|
|
|
16
23
|
.navbar-item-module_controlSub__U-eSe {
|
|
17
24
|
font-weight: 500;
|
|
18
|
-
width: calc(100% -
|
|
25
|
+
width: calc(100% - 32px);
|
|
19
26
|
display: block;
|
|
20
27
|
text-decoration: none;
|
|
21
|
-
padding:
|
|
22
|
-
margin
|
|
23
|
-
font-size:
|
|
28
|
+
padding: 6px 12px;
|
|
29
|
+
margin: 1px 8px 1px 32px;
|
|
30
|
+
font-size: 13px;
|
|
24
31
|
color: black;
|
|
25
|
-
|
|
32
|
+
transition: background-color 0.2s ease;
|
|
33
|
+
position: relative;
|
|
26
34
|
|
|
27
35
|
&:hover {
|
|
28
|
-
background-color:
|
|
36
|
+
background-color: rgba(0, 0, 0, 0.04);
|
|
29
37
|
color: black;
|
|
30
38
|
}
|
|
31
39
|
}
|
|
32
40
|
|
|
41
|
+
.navbar-item-module_controlGroup__3Z3ji {
|
|
42
|
+
font-weight: 500;
|
|
43
|
+
width: calc(100% - 48px);
|
|
44
|
+
display: block;
|
|
45
|
+
text-decoration: none;
|
|
46
|
+
padding: 6px 12px;
|
|
47
|
+
margin: 1px 8px 1px 48px;
|
|
48
|
+
font-size: 13px;
|
|
49
|
+
color: black;
|
|
50
|
+
transition: background-color 0.2s ease;
|
|
51
|
+
position: relative;
|
|
52
|
+
|
|
53
|
+
&:hover {
|
|
54
|
+
background-color: rgba(0, 0, 0, 0.04);
|
|
55
|
+
color: black;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.navbar-item-module_controlGroupActive__BUnNe {
|
|
60
|
+
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
|
|
61
|
+
}
|
|
62
|
+
|
|
33
63
|
.navbar-item-module_link__sVkBe {
|
|
34
64
|
font-weight: 500;
|
|
35
65
|
display: block;
|
|
36
66
|
text-decoration: none;
|
|
37
|
-
padding:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
67
|
+
padding: 6px 12px;
|
|
68
|
+
margin: 1px 8px 1px 32px;
|
|
69
|
+
font-size: 13px;
|
|
70
|
+
transition: background-color 0.2s ease;
|
|
71
|
+
position: relative;
|
|
72
|
+
|
|
73
|
+
&:hover {
|
|
74
|
+
background-color: rgba(0, 0, 0, 0.04);
|
|
75
|
+
color: black;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.navbar-item-module_linkActive__wxVqH {
|
|
80
|
+
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
|
|
81
|
+
font-weight: 500;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.navbar-item-module_linkGroup__qeIhD {
|
|
85
|
+
font-weight: 500;
|
|
86
|
+
display: block;
|
|
87
|
+
text-decoration: none;
|
|
88
|
+
padding: 6px 12px;
|
|
89
|
+
margin: 1px 8px 1px 48px;
|
|
90
|
+
font-size: 13px;
|
|
91
|
+
transition: background-color 0.2s ease;
|
|
92
|
+
position: relative;
|
|
93
|
+
|
|
41
94
|
&:hover {
|
|
42
|
-
background-color:
|
|
95
|
+
background-color: rgba(0, 0, 0, 0.04);
|
|
43
96
|
color: black;
|
|
44
97
|
}
|
|
45
98
|
}
|
|
46
99
|
|
|
100
|
+
.navbar-item-module_linkGroupActive__t011z {
|
|
101
|
+
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
|
|
102
|
+
font-weight: 500;
|
|
103
|
+
}
|
|
104
|
+
|
|
47
105
|
.navbar-item-module_chevron__-1UpS {
|
|
48
|
-
transition: transform
|
|
106
|
+
transition: transform 0.2s ease;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* Import dei font anni 80 */
|
|
110
|
+
@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Bungee:wght@400&family=Audiowide:wght@400&family=Righteous:wght@400&display=swap');
|
|
111
|
+
|
|
112
|
+
/* Animazioni per l'intro Space Invaders in stile anni 80 */
|
|
113
|
+
|
|
114
|
+
@keyframes scanlineMove {
|
|
115
|
+
0% {
|
|
116
|
+
background-position: 0% 0%;
|
|
117
|
+
}
|
|
118
|
+
100% {
|
|
119
|
+
background-position: 100% 100%;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@keyframes glow {
|
|
124
|
+
0% {
|
|
125
|
+
filter: brightness(1) drop-shadow(0 0 5px currentColor);
|
|
126
|
+
transform: scale(1);
|
|
127
|
+
}
|
|
128
|
+
50% {
|
|
129
|
+
filter: brightness(1.5) drop-shadow(0 0 30px currentColor);
|
|
130
|
+
transform: scale(1.05);
|
|
131
|
+
}
|
|
132
|
+
100% {
|
|
133
|
+
filter: brightness(1) drop-shadow(0 0 5px currentColor);
|
|
134
|
+
transform: scale(1);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
@keyframes slideInFromLeft {
|
|
139
|
+
0% {
|
|
140
|
+
transform: translateX(-100px) rotateY(-45deg);
|
|
141
|
+
opacity: 0;
|
|
142
|
+
}
|
|
143
|
+
100% {
|
|
144
|
+
transform: translateX(0) rotateY(0deg);
|
|
145
|
+
opacity: 1;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@keyframes slideInFromRight {
|
|
150
|
+
0% {
|
|
151
|
+
transform: translateX(100px) rotateY(45deg);
|
|
152
|
+
opacity: 0;
|
|
153
|
+
}
|
|
154
|
+
100% {
|
|
155
|
+
transform: translateX(0) rotateY(0deg);
|
|
156
|
+
opacity: 1;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@keyframes fadeIn {
|
|
161
|
+
0% {
|
|
162
|
+
opacity: 0;
|
|
163
|
+
transform: translateY(20px);
|
|
164
|
+
}
|
|
165
|
+
100% {
|
|
166
|
+
opacity: 1;
|
|
167
|
+
transform: translateY(0);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@keyframes gridPulse {
|
|
172
|
+
0% {
|
|
173
|
+
opacity: 0.3;
|
|
174
|
+
transform: scale(1);
|
|
175
|
+
}
|
|
176
|
+
50% {
|
|
177
|
+
opacity: 0.6;
|
|
178
|
+
transform: scale(1.02);
|
|
179
|
+
}
|
|
180
|
+
100% {
|
|
181
|
+
opacity: 0.3;
|
|
182
|
+
transform: scale(1);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
@keyframes blink {
|
|
187
|
+
0%, 50% {
|
|
188
|
+
opacity: 1;
|
|
189
|
+
}
|
|
190
|
+
51%, 100% {
|
|
191
|
+
opacity: 0.3;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
@keyframes progressMove {
|
|
196
|
+
0% {
|
|
197
|
+
background-position: 0% 0%;
|
|
198
|
+
}
|
|
199
|
+
100% {
|
|
200
|
+
background-position: 200% 0%;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* Animazione speciale per il gradiente dei titoli */
|
|
205
|
+
@keyframes gradientMove {
|
|
206
|
+
0% {
|
|
207
|
+
background-position: 0% 50%;
|
|
208
|
+
}
|
|
209
|
+
50% {
|
|
210
|
+
background-position: 100% 50%;
|
|
211
|
+
}
|
|
212
|
+
100% {
|
|
213
|
+
background-position: 0% 50%;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/* Nuove animazioni per il look anni 80 */
|
|
218
|
+
@keyframes neonGlow {
|
|
219
|
+
0%, 100% {
|
|
220
|
+
text-shadow:
|
|
221
|
+
0 0 5px currentColor,
|
|
222
|
+
0 0 10px currentColor,
|
|
223
|
+
0 0 15px currentColor,
|
|
224
|
+
0 0 20px currentColor;
|
|
225
|
+
}
|
|
226
|
+
50% {
|
|
227
|
+
text-shadow:
|
|
228
|
+
0 0 10px currentColor,
|
|
229
|
+
0 0 20px currentColor,
|
|
230
|
+
0 0 30px currentColor,
|
|
231
|
+
0 0 40px currentColor;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@keyframes retroPulse {
|
|
236
|
+
0% {
|
|
237
|
+
box-shadow: 0 0 20px rgba(0, 255, 255, 0.5);
|
|
238
|
+
}
|
|
239
|
+
50% {
|
|
240
|
+
box-shadow: 0 0 40px rgba(255, 0, 255, 0.8);
|
|
241
|
+
}
|
|
242
|
+
100% {
|
|
243
|
+
box-shadow: 0 0 20px rgba(0, 255, 255, 0.5);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/* Animazione speciale per lettere ROCKET anni 80 */
|
|
248
|
+
@keyframes rocketGlow80s {
|
|
249
|
+
0% {
|
|
250
|
+
text-shadow:
|
|
251
|
+
0 0 5px currentColor,
|
|
252
|
+
0 0 10px currentColor,
|
|
253
|
+
0 0 15px currentColor,
|
|
254
|
+
0 0 20px currentColor,
|
|
255
|
+
0 0 35px currentColor,
|
|
256
|
+
2px 2px 4px #000000,
|
|
257
|
+
-2px -2px 4px #000000;
|
|
258
|
+
transform: perspective(400px) rotateX(15deg) rotateY(-5deg) scale(1);
|
|
259
|
+
}
|
|
260
|
+
50% {
|
|
261
|
+
text-shadow:
|
|
262
|
+
0 0 10px currentColor,
|
|
263
|
+
0 0 20px currentColor,
|
|
264
|
+
0 0 30px currentColor,
|
|
265
|
+
0 0 40px currentColor,
|
|
266
|
+
0 0 60px currentColor,
|
|
267
|
+
3px 3px 6px #000000,
|
|
268
|
+
-3px -3px 6px #000000;
|
|
269
|
+
transform: perspective(400px) rotateX(15deg) rotateY(-5deg) scale(1.08);
|
|
270
|
+
}
|
|
271
|
+
100% {
|
|
272
|
+
text-shadow:
|
|
273
|
+
0 0 5px currentColor,
|
|
274
|
+
0 0 10px currentColor,
|
|
275
|
+
0 0 15px currentColor,
|
|
276
|
+
0 0 20px currentColor,
|
|
277
|
+
0 0 35px currentColor,
|
|
278
|
+
2px 2px 4px #000000,
|
|
279
|
+
-2px -2px 4px #000000;
|
|
280
|
+
transform: perspective(400px) rotateX(15deg) rotateY(-5deg) scale(1);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/* Animazione per il testo "GAME" anni 80 */
|
|
285
|
+
@keyframes gameText80s {
|
|
286
|
+
0% {
|
|
287
|
+
transform: translateX(100px) perspective(300px) rotateY(30deg);
|
|
288
|
+
opacity: 0;
|
|
289
|
+
letter-spacing: 20px;
|
|
290
|
+
}
|
|
291
|
+
100% {
|
|
292
|
+
transform: translateX(0) perspective(300px) rotateY(0deg);
|
|
293
|
+
opacity: 1;
|
|
294
|
+
letter-spacing: 12px;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/* Animazione chrome/metal effect anni 80 */
|
|
299
|
+
@keyframes chromeShine {
|
|
300
|
+
0% {
|
|
301
|
+
background-position: -200% 0;
|
|
302
|
+
}
|
|
303
|
+
100% {
|
|
304
|
+
background-position: 200% 0;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/* Classi per applicare le animazioni */
|
|
309
|
+
.rocket-letter {
|
|
310
|
+
animation: rocketGlow80s 2.5s ease-in-out infinite alternate;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.space-text {
|
|
314
|
+
animation: slideInFromLeft 1s ease-out forwards;
|
|
315
|
+
animation-delay: 0.5s;
|
|
316
|
+
transform: translateX(-100px);
|
|
317
|
+
opacity: 0;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.invaders-text {
|
|
321
|
+
animation: slideInFromRight 1s ease-out forwards;
|
|
322
|
+
animation-delay: 0.8s;
|
|
323
|
+
transform: translateX(100px);
|
|
324
|
+
opacity: 0;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.game-text-intro {
|
|
328
|
+
animation: gameText80s 1.8s ease-out forwards;
|
|
329
|
+
transform: translateX(100px);
|
|
330
|
+
opacity: 0;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.presents-text {
|
|
334
|
+
animation: fadeIn 2s ease-out forwards;
|
|
335
|
+
animation-delay: 1s;
|
|
336
|
+
opacity: 0;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
.copyright-text {
|
|
340
|
+
animation: fadeIn 1.5s ease-out forwards;
|
|
341
|
+
animation-delay: 2s;
|
|
342
|
+
opacity: 0;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
.loading-container {
|
|
346
|
+
animation: fadeIn 1s ease-out forwards;
|
|
347
|
+
animation-delay: 2.5s;
|
|
348
|
+
opacity: 0;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
.loading-text {
|
|
352
|
+
animation: blink 1s infinite;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
.loading-progress {
|
|
356
|
+
animation: progressMove 1s linear infinite;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.scanlines {
|
|
360
|
+
animation: scanlineMove 2s linear infinite;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
.retro-grid {
|
|
364
|
+
animation: gridPulse 3s ease-in-out infinite;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/* Animazioni specifiche per elementi del gioco */
|
|
368
|
+
.neon-title {
|
|
369
|
+
animation: gradientMove 3s ease-in-out infinite;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
.score-glow {
|
|
373
|
+
animation: neonGlow 2s ease-in-out infinite alternate;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.retro-panel {
|
|
377
|
+
animation: retroPulse 4s ease-in-out infinite;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/* Effetto chrome anni 80 */
|
|
381
|
+
.chrome-text {
|
|
382
|
+
background: linear-gradient(
|
|
383
|
+
90deg,
|
|
384
|
+
#c0c0c0 0%,
|
|
385
|
+
#ffffff 25%,
|
|
386
|
+
#c0c0c0 50%,
|
|
387
|
+
#808080 75%,
|
|
388
|
+
#c0c0c0 100%
|
|
389
|
+
);
|
|
390
|
+
background-size: 400% 100%;
|
|
391
|
+
-webkit-background-clip: text;
|
|
392
|
+
-webkit-text-fill-color: transparent;
|
|
393
|
+
background-clip: text;
|
|
394
|
+
animation: chromeShine 3s ease-in-out infinite;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/* Stili specifici per i pulsanti del Pong */
|
|
398
|
+
.retro-pong-container button:hover {
|
|
399
|
+
background-color: rgba(255, 255, 0, 0.2) !important;
|
|
400
|
+
transform: scale(1.05);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
.retro-pong-container button:active {
|
|
404
|
+
transform: scale(0.95);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/* Stili specifici per il gioco Tetris */
|
|
408
|
+
@keyframes tetrisGlow {
|
|
409
|
+
from { text-shadow: 0 0 10px #00ffff, 0 0 20px #00ffff, 0 0 30px #00ffff; }
|
|
410
|
+
to { text-shadow: 0 0 20px #00ffff, 0 0 30px #00ffff, 0 0 40px #00ffff, 0 0 50px #00ffff; }
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
@keyframes tetrisPulse {
|
|
414
|
+
0%, 100% { opacity: 1; }
|
|
415
|
+
50% { opacity: 0.5; }
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
.tetris-container .tetris-glow {
|
|
419
|
+
animation: tetrisGlow 2s ease-in-out infinite alternate;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
.tetris-container .tetris-pulse {
|
|
423
|
+
animation: tetrisPulse 1s ease-in-out infinite;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
.tetris-container button:hover {
|
|
427
|
+
background-color: rgba(0, 255, 255, 0.2) !important;
|
|
428
|
+
transform: scale(1.05);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
.tetris-container button:active {
|
|
432
|
+
transform: scale(0.95);
|
|
49
433
|
}
|
|
50
434
|
|
|
51
435
|
@charset "UTF-8";
|