@workadventure/map-starter-kit-core 1.1.0 → 1.1.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.
Files changed (36) hide show
  1. package/README.md +165 -0
  2. package/dist/assets/js/index.js +164 -0
  3. package/dist/assets/views/index.html +71 -0
  4. package/dist/assets/views/step1-git.html +154 -0
  5. package/dist/assets/views/step2-hosting.html +153 -0
  6. package/dist/assets/views/step3-steps-selfhosted.html +502 -0
  7. package/dist/assets/views/step3-steps.html +549 -0
  8. package/dist/assets/views/step4-validated-selfhosted.html +188 -0
  9. package/dist/assets/views/step4-validated.html +80 -0
  10. package/dist/images/world-select.png +0 -0
  11. package/dist/server.js +4 -4
  12. package/dist/server.js.map +1 -1
  13. package/dist/styles/styles.css +1 -8
  14. package/package.json +3 -1
  15. package/public/assets/js/index.js +164 -0
  16. package/public/assets/views/index.html +71 -0
  17. package/public/assets/views/step1-git.html +154 -0
  18. package/public/assets/views/step2-hosting.html +153 -0
  19. package/public/assets/views/step3-steps-selfhosted.html +502 -0
  20. package/public/assets/views/step3-steps.html +549 -0
  21. package/public/assets/views/step4-validated-selfhosted.html +188 -0
  22. package/public/assets/views/step4-validated.html +80 -0
  23. package/public/images/badumtss.svg +12 -0
  24. package/public/images/brand-discord.svg +22 -0
  25. package/public/images/brand-github.svg +19 -0
  26. package/public/images/brand-linkedin.svg +23 -0
  27. package/public/images/brand-x.svg +20 -0
  28. package/public/images/brand-youtube.svg +20 -0
  29. package/public/images/favicon.svg +50 -0
  30. package/public/images/logo.svg +72 -0
  31. package/public/images/world-select.png +0 -0
  32. package/public/styles/styles.css +424 -0
  33. package/public/styles/styles.css.map +1 -0
  34. package/types/server.d.ts +5 -0
  35. package/dist/assets/index.js +0 -80
  36. /package/{dist/images/unknown-room-image copy.png → public/images/unknown-room-image.png} +0 -0
@@ -0,0 +1,424 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
5
+ html,
6
+ body {
7
+ min-height: 100%;
8
+ font-family: "Roboto Condensed", Arial, sans-serif;
9
+ }
10
+
11
+ body {
12
+ display: flex;
13
+ flex-direction: column;
14
+ margin: 0;
15
+ text-align: center;
16
+ background: #1b2a41;
17
+ color: white;
18
+ }
19
+ body .bg {
20
+ background-size: cover;
21
+ position: fixed;
22
+ width: 100%;
23
+ height: 100%;
24
+ z-index: 0;
25
+ filter: blur(8px);
26
+ opacity: 0.35;
27
+ }
28
+
29
+ h1,
30
+ h2 {
31
+ font-weight: bold;
32
+ font-size: 1.3rem;
33
+ margin: 0;
34
+ }
35
+ h1 strong,
36
+ h2 strong {
37
+ color: #66E979;
38
+ }
39
+
40
+ header {
41
+ background: rgba(27, 42, 65, 0.85);
42
+ border-radius: 16px;
43
+ height: 86px;
44
+ display: flex;
45
+ align-items: center;
46
+ position: fixed;
47
+ width: calc(100% - 32px);
48
+ z-index: 1;
49
+ padding: 0 28px;
50
+ }
51
+ header .logo {
52
+ display: block;
53
+ position: relative;
54
+ }
55
+ header .socials {
56
+ display: flex;
57
+ justify-content: center;
58
+ margin-right: 48px;
59
+ column-gap: 12px;
60
+ }
61
+ header .btn-header-wrapper {
62
+ display: flex;
63
+ align-items: center;
64
+ justify-content: space-around;
65
+ column-gap: 12px;
66
+ }
67
+
68
+ .content {
69
+ padding: 16px;
70
+ position: relative;
71
+ z-index: 1;
72
+ }
73
+ .content main {
74
+ min-height: 100vh;
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: center;
78
+ gap: 32px;
79
+ flex-wrap: wrap;
80
+ padding-top: 134px;
81
+ padding-bottom: 121px;
82
+ }
83
+
84
+ .btn {
85
+ display: inline-block;
86
+ padding: 13px 20px 12px;
87
+ background-color: rgba(65, 86, 246, 0.9);
88
+ color: white;
89
+ border-radius: 8px;
90
+ text-decoration: none;
91
+ text-align: center;
92
+ width: auto;
93
+ position: relative;
94
+ font-size: 15px;
95
+ outline: none;
96
+ border: none;
97
+ transition: all 0.5s ease-out;
98
+ cursor: pointer;
99
+ }
100
+ .btn:hover {
101
+ filter: brightness(135%);
102
+ }
103
+ .btn.btn-light {
104
+ background-color: rgba(255, 255, 255, 0.1);
105
+ border: 1px solid rgba(255, 255, 255, 0.1);
106
+ }
107
+
108
+ .card-map {
109
+ max-width: 342px;
110
+ border-radius: 12px;
111
+ border: 1px solid rgba(255, 255, 255, 0.1);
112
+ overflow: hidden;
113
+ display: flex;
114
+ flex-direction: column;
115
+ flex-wrap: wrap;
116
+ align-items: center;
117
+ background: rgba(27, 42, 65, 0.5);
118
+ height: fit-content;
119
+ min-width: 340px;
120
+ }
121
+ .card-map .map-cover {
122
+ min-height: 230px;
123
+ width: 100%;
124
+ background-size: cover;
125
+ background-position: center;
126
+ }
127
+ .card-map .map-date {
128
+ font-style: normal;
129
+ font-weight: 400;
130
+ font-size: 14px;
131
+ line-height: 24px;
132
+ display: flex;
133
+ align-items: center;
134
+ text-align: center;
135
+ color: #ffffff;
136
+ opacity: 0.5;
137
+ margin-top: 12px;
138
+ }
139
+ .card-map .map-name {
140
+ font-style: normal;
141
+ font-weight: 700;
142
+ font-size: 20px;
143
+ line-height: 28px;
144
+ display: flex;
145
+ align-items: center;
146
+ text-align: center;
147
+ color: #ffffff;
148
+ }
149
+ .card-map .map-detail {
150
+ display: flex;
151
+ align-items: center;
152
+ gap: 12px;
153
+ margin-bottom: 6px;
154
+ }
155
+ .card-map .map-detail .map-file {
156
+ font-style: italic;
157
+ font-weight: 400;
158
+ font-size: 13px;
159
+ line-height: 20px;
160
+ display: flex;
161
+ align-items: center;
162
+ text-align: center;
163
+ color: #ffffff;
164
+ }
165
+ .card-map .map-detail .map-weight {
166
+ font-style: italic;
167
+ font-weight: 400;
168
+ font-size: 13px;
169
+ line-height: 20px;
170
+ display: flex;
171
+ align-items: center;
172
+ text-align: center;
173
+ color: #ffffff;
174
+ }
175
+ .card-map .map-desc {
176
+ font-style: normal;
177
+ font-weight: 400;
178
+ font-size: 14px;
179
+ line-height: 20px;
180
+ display: flex;
181
+ align-items: center;
182
+ text-align: center;
183
+ color: #ffffff;
184
+ margin-bottom: 16px;
185
+ padding: 2px 12px;
186
+ }
187
+ .card-map .map-copyright {
188
+ font-size: 12px;
189
+ opacity: 0.7;
190
+ padding: 2px 12px;
191
+ }
192
+ .card-map .map-testurl {
193
+ display: flex;
194
+ flex-direction: column;
195
+ align-items: center;
196
+ padding: 12px;
197
+ gap: 12px;
198
+ width: 100%;
199
+ background: #1b2a41;
200
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
201
+ }
202
+
203
+ .form-center {
204
+ display: flex;
205
+ flex-direction: column;
206
+ align-items: center;
207
+ width: 100%;
208
+ padding-bottom: 80px;
209
+ }
210
+ .form-center.steps {
211
+ align-items: start;
212
+ text-align: left;
213
+ gap: 48px;
214
+ max-width: 780px;
215
+ margin: auto;
216
+ transition: all 1s ease-out;
217
+ }
218
+ .form-center.steps .step {
219
+ display: flex;
220
+ flex-direction: column;
221
+ gap: 8px;
222
+ width: 100%;
223
+ }
224
+ .form-center.steps .step.inactive {
225
+ opacity: 0.35;
226
+ pointer-events: none;
227
+ }
228
+ .form-center.steps .step .step-title {
229
+ display: flex;
230
+ align-items: center;
231
+ gap: 12px;
232
+ margin-bottom: 12px;
233
+ }
234
+ .form-center.steps .step .step-title .step-number {
235
+ border-radius: 8px;
236
+ padding: 6px 12px;
237
+ border: 1px solid rgb(255, 255, 255);
238
+ }
239
+ .form-center.steps .step .alert {
240
+ display: flex;
241
+ flex-direction: row;
242
+ justify-content: center;
243
+ align-items: center;
244
+ padding: 12px 12px 12px 24px;
245
+ gap: 32px;
246
+ background: rgba(233, 109, 81, 0.2);
247
+ border: 1px solid rgba(233, 109, 81, 0.5);
248
+ border-radius: 16px;
249
+ align-self: stretch;
250
+ text-align: left;
251
+ }
252
+ .form-center.steps .step .alert .alert-text {
253
+ font-style: normal;
254
+ font-weight: 700;
255
+ font-size: 16px;
256
+ line-height: 24px;
257
+ color: #F4D5CB;
258
+ }
259
+ .form-center.steps .step .step-text {
260
+ font-style: normal;
261
+ font-weight: 400;
262
+ font-size: 16px;
263
+ line-height: 24px;
264
+ color: rgba(255, 255, 255, 0.75);
265
+ }
266
+ .form-center.steps .step input[type=text], .form-center.steps .step input[type=password], .form-center.steps .step input[type=url] {
267
+ display: flex;
268
+ flex-direction: row;
269
+ align-items: center;
270
+ padding: 0px 6px 0px 16px;
271
+ color: white;
272
+ font-size: 18px;
273
+ gap: 4px;
274
+ height: 52px;
275
+ width: 100%;
276
+ background: #1B2A41;
277
+ border: 1px solid #3C5E90;
278
+ border-radius: 12px;
279
+ flex: none;
280
+ order: 0;
281
+ align-self: stretch;
282
+ flex-grow: 0;
283
+ }
284
+ .form-center.steps .step input[type=text].error, .form-center.steps .step input[type=password].error, .form-center.steps .step input[type=url].error {
285
+ border: 1px solid #E96D51;
286
+ color: #E96D51;
287
+ }
288
+ .form-center.steps .step input[type=text].success, .form-center.steps .step input[type=password].success, .form-center.steps .step input[type=url].success {
289
+ color: #66E979;
290
+ border: 1px solid #66E979;
291
+ }
292
+ .form-center h1 {
293
+ font-weight: 400;
294
+ font-size: 40px;
295
+ }
296
+ .form-center .sub-heading {
297
+ font-size: 14px;
298
+ line-height: 24px;
299
+ margin-bottom: 48px;
300
+ }
301
+ .form-center .radio-wrapper {
302
+ display: flex;
303
+ gap: 32px;
304
+ }
305
+ .form-center .radio-wrapper .radio-card {
306
+ cursor: pointer;
307
+ }
308
+ .form-center .radio-wrapper .radio-card .radio {
309
+ opacity: 0;
310
+ display: none;
311
+ }
312
+ .form-center .radio-wrapper .radio-card .radio:hover ~ .card-details {
313
+ background: rgba(255, 255, 255, 0.1);
314
+ }
315
+ .form-center .radio-wrapper .radio-card .radio:checked ~ .card-details {
316
+ background: white;
317
+ }
318
+ .form-center .radio-wrapper .radio-card .radio:checked ~ .card-details h2 {
319
+ color: #4156F6;
320
+ }
321
+ .form-center .radio-wrapper .radio-card .radio:checked ~ .card-details svg {
322
+ display: flex;
323
+ }
324
+ .form-center .radio-wrapper .radio-card .radio:checked ~ .card-details div strong {
325
+ color: #1B2A41;
326
+ }
327
+ .form-center .radio-wrapper .radio-card .radio:checked ~ .card-details div {
328
+ color: #1B2A41;
329
+ }
330
+ .form-center .radio-wrapper .radio-card .card-details {
331
+ border: 1px solid rgb(255, 255, 255);
332
+ border-radius: 24px;
333
+ padding: 32px 48px;
334
+ transition: all 1s ease-out;
335
+ position: relative;
336
+ }
337
+ .form-center .radio-wrapper .radio-card .card-details h2 {
338
+ font-weight: 400;
339
+ font-size: 26px;
340
+ margin-bottom: 8px;
341
+ }
342
+ .form-center .radio-wrapper .radio-card .card-details svg {
343
+ display: none;
344
+ position: absolute;
345
+ right: 24px;
346
+ top: 24px;
347
+ }
348
+ .form-center .radio-wrapper .radio-card .card-details div {
349
+ font-size: 16px;
350
+ line-height: 24px;
351
+ color: rgba(255, 255, 255, 0.5);
352
+ }
353
+ .form-center .radio-wrapper .radio-card .card-details div strong {
354
+ display: block;
355
+ font-weight: 700;
356
+ color: rgb(255, 255, 255);
357
+ }
358
+
359
+ .button-wrapper {
360
+ background: rgba(27, 42, 65, 0.85);
361
+ display: flex;
362
+ align-items: center;
363
+ position: fixed;
364
+ left: 0;
365
+ bottom: 0;
366
+ width: 100%;
367
+ z-index: 1;
368
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
369
+ padding: 16px;
370
+ flex-direction: row;
371
+ justify-content: center;
372
+ text-align: center;
373
+ }
374
+ .button-wrapper a,
375
+ .button-wrapper .btn {
376
+ display: flex;
377
+ flex-direction: row;
378
+ justify-content: center;
379
+ align-items: center;
380
+ text-align: center;
381
+ padding: 16px 64px;
382
+ font-size: 18px;
383
+ gap: 8px;
384
+ background: #e96d51;
385
+ border-radius: 8px;
386
+ color: white;
387
+ text-decoration: none;
388
+ }
389
+ .button-wrapper a.btn,
390
+ .button-wrapper .btn.btn {
391
+ transition: all 1s ease-out;
392
+ }
393
+ .button-wrapper a.btn.btn-ghost,
394
+ .button-wrapper .btn.btn.btn-ghost {
395
+ background: rgba(255, 255, 255, 0.1);
396
+ }
397
+ .button-wrapper a.btn.btn-ghost:hover,
398
+ .button-wrapper .btn.btn.btn-ghost:hover {
399
+ background: rgba(255, 255, 255, 0.2);
400
+ }
401
+ .button-wrapper a.btn.btn-secondary,
402
+ .button-wrapper .btn.btn.btn-secondary {
403
+ background: #4156F6;
404
+ }
405
+
406
+ .bg-image {
407
+ position: absolute;
408
+ top: 0;
409
+ left: 0;
410
+ width: 100%;
411
+ height: 100%;
412
+ background-size: cover;
413
+ background-position: center;
414
+ transition: opacity 2s ease-in-out;
415
+ filter: blur(2px);
416
+ opacity: 0;
417
+ z-index: -1;
418
+ }
419
+ .bg-image.active {
420
+ opacity: 0.60;
421
+ z-index: 0;
422
+ }
423
+
424
+ /*# sourceMappingURL=styles.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["styles.scss"],"names":[],"mappings":"AAAA;EACE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;AAAA;EAEE;EACA;EACA;;AACA;AAAA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;;AAEF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;;AAGJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;;AAEF;EACE;EACA;;AAKR;EACE;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;EACE;EACA;;AAEE;EACE;EACA;;AACA;EACE;;AAEF;EACE;;AACA;EACE;;AAEF;EACE;;AAGA;EACE;;AAFJ;EAIE;;AAIN;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AACA;EACE;EACA;EACA;;;AAQZ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACE;;AACA;AAAA;EACE;;AACA;AAAA;EACE;;AAGJ;AAAA;EACE","file":"styles.css"}
@@ -0,0 +1,5 @@
1
+ declare module "@workadventure/map-starter-kit-core/dist/server.js" {
2
+ import type { Application } from "express";
3
+ const core: { default: Application; viteNodeApp: Application };
4
+ export default core;
5
+ }
@@ -1,80 +0,0 @@
1
- // Function to retrieve the list of maps from the API
2
- async function getMapsList() {
3
- try {
4
- const response = await fetch('/maps/list');
5
- if (!response.ok) {
6
- throw new Error(`HTTP error! status: ${response.status}`);
7
- }
8
- const maps = await response.json();
9
- return maps;
10
- } catch (error) {
11
- console.error('Error fetching maps list:', error);
12
- return [];
13
- }
14
- }
15
-
16
- // Function to get the list
17
- async function getImagesList() {
18
- try {
19
- const response = await fetch('/images/list');
20
- if (!response.ok) {
21
- throw new Error(`HTTP error! status: ${response.status}`);
22
- }
23
- const images = await response.json();
24
- return images;
25
- } catch (error) {
26
- console.error('Error fetching images list:', error);
27
- return [];
28
- }
29
- }
30
-
31
- // Function to create a background image fade for "bg" element
32
- async function createBackgroundImageFade(images = null) {
33
- // Get the list of images
34
- if (images === null) {
35
- const maps = await getMapsList();
36
- images = maps.map(map => {
37
- if (map.mapImage) {
38
- return map.mapImage.startsWith('http') ? map.mapImage : `/${map.mapImage}`;
39
- }
40
- return null;
41
- }).filter(img => img !== null);
42
- if (images.length === 0) {
43
- return;
44
- }
45
- }
46
-
47
- // Get the "bg" element
48
- const bgElement = document.querySelector('.bg');
49
- if (!bgElement || images.length === 0) return;
50
-
51
- // Create divs for each image with fade animation
52
- bgElement.innerHTML = '';
53
- images.forEach((imageUrl, index) => {
54
- const imgDiv = document.createElement('div');
55
- imgDiv.className = 'bg-image' + (index === 0 ? ' active' : '');
56
- imgDiv.style.backgroundImage = `url('${imageUrl}')`;
57
- bgElement.appendChild(imgDiv);
58
- });
59
-
60
- // Automatic fade between images
61
- let currentIndex = 0;
62
- setInterval(() => {
63
- const imageElements = bgElement.querySelectorAll('.bg-image');
64
- if (imageElements.length === 0) return;
65
-
66
- // Remove the active class from the current image
67
- imageElements[currentIndex].classList.remove('active');
68
-
69
- // Move to the next image
70
- currentIndex = (currentIndex + 1) % imageElements.length;
71
-
72
- // Add the active class to the new image
73
- imageElements[currentIndex].classList.add('active');
74
- }, 5000); // Change image every 5 seconds
75
- }
76
-
77
- // Exporter la fonction pour qu'elle soit accessible depuis index.html
78
- // Use a global declaration for TypeScript/JavaScript
79
- window.getMapsList = getMapsList;
80
- window.createBackgroundImageFade = createBackgroundImageFade;