@robotical/martyblocksjr 4.2.2 → 4.2.4

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 (47) hide show
  1. package/editions/free/src/app.bundle.js +1 -1
  2. package/editions/free/src/css/editor.css +5 -0
  3. package/editions/free/src/css/editorleftpanel.css +12 -6
  4. package/editions/free/src/inapp/about.html +55 -26
  5. package/editions/free/src/inapp/blocks.html +16 -459
  6. package/editions/free/src/inapp/images/interface.png +0 -0
  7. package/editions/free/src/inapp/images/paint.png +0 -0
  8. package/editions/free/src/inapp/interface.html +136 -123
  9. package/editions/free/src/inapp/style/about.css +333 -21
  10. package/editions/free/src/inapp/style/blocks.css +423 -82
  11. package/editions/free/src/inapp/style/interface.css +178 -453
  12. package/editions/free/src/localizations/bg.json +36 -2
  13. package/editions/free/src/localizations/ca.json +36 -2
  14. package/editions/free/src/localizations/cs.json +36 -2
  15. package/editions/free/src/localizations/cy.json +36 -2
  16. package/editions/free/src/localizations/da.json +36 -2
  17. package/editions/free/src/localizations/de.json +36 -2
  18. package/editions/free/src/localizations/el.json +36 -2
  19. package/editions/free/src/localizations/en.json +114 -7
  20. package/editions/free/src/localizations/es.json +36 -2
  21. package/editions/free/src/localizations/fi.json +36 -2
  22. package/editions/free/src/localizations/fr.json +36 -2
  23. package/editions/free/src/localizations/it.json +36 -2
  24. package/editions/free/src/localizations/ja.json +36 -2
  25. package/editions/free/src/localizations/ko.json +36 -2
  26. package/editions/free/src/localizations/nl.json +36 -2
  27. package/editions/free/src/localizations/no.json +36 -2
  28. package/editions/free/src/localizations/pl.json +36 -2
  29. package/editions/free/src/localizations/pt-br.json +36 -2
  30. package/editions/free/src/localizations/pt.json +36 -2
  31. package/editions/free/src/localizations/sv.json +36 -2
  32. package/editions/free/src/localizations/th.json +36 -2
  33. package/editions/free/src/localizations/tr.json +36 -2
  34. package/editions/free/src/localizations/uk.json +36 -2
  35. package/editions/free/src/localizations/zh-cn.json +36 -2
  36. package/editions/free/src/localizations/zh-tw.json +36 -2
  37. package/package.json +1 -1
  38. package/scripts/a11y-structure.mjs +9 -2
  39. package/tests/BlockGuideRegistry.test.js +60 -0
  40. package/tests/MartyManager.test.js +88 -0
  41. package/tests/e2e/accessibility.e2e.test.js +153 -10
  42. package/tests/e2e/blocks-jr-hidden-blocks.e2e.test.js +84 -0
  43. package/tests/e2e/chromium-79-smoke.test.js +12 -17
  44. package/tests/e2e/marty-connection-ui.e2e.test.js +177 -12
  45. package/tests/e2e/microbit-extension-project-reload.e2e.test.js +1 -6
  46. package/tests/e2e/project-load-progress-loop.e2e.test.js +1 -6
  47. package/tests/e2e/sidebar-scrollbars.e2e.test.js +179 -0
@@ -1,137 +1,478 @@
1
1
  @import url('../../css/font.css');
2
2
 
3
+ :root {
4
+ color: #24434b;
5
+ font-family: 'Lato Regular', Arial, sans-serif;
6
+ font-size: 16px;
7
+ line-height: 1.5;
8
+ }
9
+
10
+ * {
11
+ box-sizing: border-box;
12
+ }
13
+
3
14
  html {
4
15
  -webkit-user-select: none;
16
+ background: #f6f4ee;
5
17
  }
6
18
 
7
19
  body {
8
- background: #F7F6EE;
9
- margin-top: ${css_vh(6)};
10
- margin-bottom: ${css_vh(22.20)};
20
+ margin: 0;
21
+ background:
22
+ radial-gradient(circle at 92% 1%, rgba(49, 175, 201, 0.14), transparent 28rem),
23
+ #f6f4ee;
24
+ }
25
+
26
+ button {
27
+ font: inherit;
28
+ }
29
+
30
+ .blocks-guide-page {
31
+ width: min(1120px, calc(100% - 44px));
32
+ margin: 0 auto;
33
+ padding: 30px 0 72px;
34
+ }
35
+
36
+ .blocks-guide-hero {
37
+ display: grid;
38
+ grid-template-columns: minmax(0, 1fr) auto;
39
+ gap: 36px;
40
+ align-items: center;
41
+ padding: 34px 38px;
42
+ overflow: hidden;
43
+ border: 1px solid rgba(35, 145, 168, 0.17);
44
+ border-radius: 26px;
45
+ background: linear-gradient(125deg, #e7fafd 0%, #c8eef3 100%);
46
+ box-shadow: 0 15px 36px rgba(31, 82, 92, 0.1);
11
47
  }
12
48
 
13
- .block-category-header {
14
- color: white;
49
+ .blocks-guide-eyebrow {
50
+ display: inline-block;
51
+ margin: 0 0 9px;
52
+ padding: 5px 11px;
53
+ border-radius: 999px;
54
+ background: rgba(255, 255, 255, 0.88);
55
+ color: #0e7f98;
56
+ font-family: 'Lato Bold', 'Lato Regular', Arial, sans-serif;
57
+ font-size: 0.76rem;
58
+ font-weight: 700;
59
+ letter-spacing: 0.11em;
15
60
  text-transform: uppercase;
16
- padding-left: ${css_vh(2.47)};
17
- padding-top: ${css_vh(1.64)};
18
- padding-bottom: ${css_vh(1.64)};
19
- margin-left: ${css_vh(15.95)};
20
- margin-top: ${css_vh(9.87)};
21
- width: ${css_vh(46.18)};
22
- font-size: ${css_vh(2.75)};
23
61
  }
24
62
 
25
- #yellow-block-category-header {
26
- background-color: #F4E025;
63
+ .blocks-guide-hero h1,
64
+ .blocks-guide-mode-header h2,
65
+ .blocks-guide-category-title,
66
+ .blocks-guide-extension h2,
67
+ .blocks-guide-extension h3,
68
+ .block-guide-card h4,
69
+ .block-guide-card h5 {
70
+ font-family: 'Lato Bold', 'Lato Regular', Arial, sans-serif;
71
+ font-weight: 700;
72
+ }
73
+
74
+ .blocks-guide-hero h1 {
75
+ margin: 0 0 8px;
76
+ color: #153f49;
77
+ font-size: clamp(2.3rem, 4.6vw, 3.8rem);
78
+ line-height: 1.05;
79
+ letter-spacing: -0.035em;
80
+ }
81
+
82
+ .blocks-guide-introduction {
83
+ max-width: 720px;
84
+ margin: 0;
85
+ color: #306a77;
86
+ font-size: 1.08rem;
87
+ }
88
+
89
+ .blocks-guide-hero-summary {
90
+ position: relative;
91
+ display: grid;
92
+ width: 146px;
93
+ height: 124px;
94
+ grid-template-columns: repeat(2, 1fr);
95
+ gap: 9px;
96
+ padding: 12px;
97
+ border-radius: 24px;
98
+ background: rgba(255, 255, 255, 0.72);
99
+ transform: rotate(2deg);
100
+ }
101
+
102
+ .blocks-guide-summary-block {
103
+ position: relative;
104
+ display: grid;
105
+ place-items: center;
106
+ border-radius: 12px;
107
+ color: #fff;
108
+ font-family: 'Lato Bold', 'Lato Regular', Arial, sans-serif;
109
+ font-size: 1.1rem;
110
+ font-weight: 700;
111
+ box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.08);
112
+ }
113
+
114
+ .blocks-guide-summary-block:nth-child(1) {
115
+ background: #f1cf32;
27
116
  }
28
117
 
29
- #blue-block-category-header {
30
- background-color: #4A8CE3;
118
+ .blocks-guide-summary-block:nth-child(2) {
119
+ background: #438ee4;
31
120
  }
32
121
 
33
- #purple-block-category-header {
34
- background-color: #CD7CD1;
122
+ .blocks-guide-summary-block:nth-child(3) {
123
+ background: #c86bcf;
35
124
  }
36
125
 
37
- #green-block-category-header {
38
- background-color: #48CC7E;
126
+ .blocks-guide-summary-block:nth-child(4) {
127
+ background: #46bd78;
39
128
  }
40
129
 
41
- #orange-block-category-header {
42
- background-color: #FFB254;
130
+ .blocks-guide-tabs-shell {
131
+ position: sticky;
132
+ top: 0;
133
+ z-index: 20;
134
+ margin-top: 22px;
135
+ padding: 8px 0;
136
+ background: rgba(246, 244, 238, 0.94);
137
+ backdrop-filter: blur(10px);
43
138
  }
44
139
 
45
- #red-block-category-header {
46
- background-color: #EA2424;
140
+ .blocks-guide-tabs {
141
+ display: grid;
142
+ grid-template-columns: repeat(3, minmax(0, 1fr));
143
+ gap: 8px;
144
+ padding: 7px;
145
+ border: 1px solid #dfe5df;
146
+ border-radius: 18px;
147
+ background: #fff;
148
+ box-shadow: 0 8px 20px rgba(38, 69, 75, 0.06);
47
149
  }
48
150
 
49
- .block-category-header-line {
50
- margin-left: ${css_vh(15.95)};
51
- margin-right: ${css_vh(15.95)};
52
- height: ${css_vh(0.33)};
151
+ .blocks-guide-tab {
152
+ display: flex;
153
+ min-height: 54px;
154
+ align-items: center;
155
+ justify-content: space-between;
156
+ gap: 10px;
157
+ padding: 12px 16px;
158
+ border: 0;
159
+ border-radius: 12px;
160
+ background: transparent;
161
+ color: #53686d;
162
+ cursor: pointer;
163
+ font-family: 'Lato Bold', 'Lato Regular', Arial, sans-serif;
164
+ font-weight: 700;
165
+ text-align: left;
53
166
  }
54
167
 
55
- #yellow-block-category-header-line {
56
- background-color: #F4E025;
168
+ .blocks-guide-tab:hover {
169
+ background: #f0f7f6;
170
+ color: #17444e;
57
171
  }
58
172
 
59
- #blue-block-category-header-line {
60
- background-color: #4A8CE3;
173
+ .blocks-guide-tab[aria-selected="true"] {
174
+ background: #176f82;
175
+ color: #fff;
176
+ box-shadow: 0 5px 12px rgba(26, 119, 139, 0.24);
61
177
  }
62
178
 
63
- #purple-block-category-header-line {
64
- background-color: #CD7CD1;
179
+ .blocks-guide-tab:focus-visible {
180
+ outline: 3px solid #133c46;
181
+ outline-offset: 3px;
65
182
  }
66
183
 
67
- #green-block-category-header-line {
68
- background-color: #48CC7E;
184
+ .blocks-guide-tab-count {
185
+ min-width: 30px;
186
+ padding: 2px 8px;
187
+ border-radius: 999px;
188
+ background: #e8f1f2;
189
+ color: #3d6169;
190
+ font-size: 0.78rem;
191
+ text-align: center;
69
192
  }
70
193
 
71
- #orange-block-category-header-line {
72
- background-color: #FFB254;
194
+ .blocks-guide-tab[aria-selected="true"] .blocks-guide-tab-count {
195
+ background: #fff;
196
+ color: #176f82;
73
197
  }
74
198
 
75
- #red-block-category-header-line {
76
- background-color: #EA2424;
199
+ .blocks-guide-panel {
200
+ padding-top: 32px;
77
201
  }
78
202
 
79
- .block-wrapper {
80
- margin-top: ${css_vh(2.96)};
81
- margin-left: ${css_vh(15.95)};
82
- margin-right: ${css_vh(15.95)};
83
- height: ${css_vh(23.03)};
84
- color: #808080;
85
- margin-bottom: ${css_vh(3.29)};
203
+ .blocks-guide-panel[hidden] {
204
+ display: none;
86
205
  }
87
206
 
88
- .block-wrapper-left{
89
- float: left;
90
- width: 40%;
91
- padding-bottom: ${css_vh(1.64)};
207
+ .blocks-guide-mode-header {
208
+ display: grid;
209
+ grid-template-columns: minmax(0, 1fr) auto;
210
+ gap: 20px;
211
+ align-items: end;
212
+ padding: 0 8px 10px;
92
213
  }
93
214
 
94
- .block-wrapper-right {
95
- float: right;
96
- width: 40%;
97
- padding-bottom: ${css_vh(1.64)};
215
+ .blocks-guide-mode-header h2 {
216
+ margin: 0 0 5px;
217
+ color: #173f49;
218
+ font-size: 1.9rem;
219
+ line-height: 1.15;
98
220
  }
99
221
 
100
- .block-image-wrapper {
101
- float: left;
222
+ .blocks-guide-mode-header p {
223
+ max-width: 690px;
224
+ margin: 0;
225
+ color: #597078;
102
226
  }
103
227
 
104
- .block-title {
105
- font-size: ${css_vh(2.5)};
106
- border-bottom: 1px solid #BFBFBF;
107
- padding-bottom: ${css_vh(0.99)};
228
+ .blocks-guide-mode-total {
229
+ padding: 6px 11px;
230
+ border-radius: 999px;
231
+ background: #e6f2f2;
232
+ color: #23758a;
233
+ font-size: 0.82rem;
234
+ font-weight: 700;
235
+ white-space: nowrap;
108
236
  }
109
237
 
110
- .block-image {
111
- margin-top: ${css_vh(3.29)};
112
- margin-left: ${css_vh(1.64)};
113
- width: ${css_vh(12.34)};
238
+ .blocks-guide-category {
239
+ margin-top: 30px;
114
240
  }
115
241
 
116
- .block-image-repeat {
117
- margin-top: ${css_vh(3.29)};
118
- margin-left: ${css_vh(1.64)};
119
- width: ${css_vh(23.03)};
242
+ .blocks-guide-category-heading {
243
+ display: flex;
244
+ align-items: center;
245
+ gap: 10px;
246
+ margin: 0 8px 14px;
120
247
  }
121
248
 
122
- .block-description {
123
- float: right;
124
- margin-top: ${css_vh(3.29)};
125
- width: ${css_vh(34.54)};
126
- font-size: ${css_vh(2.30)};
127
- color: #6F6F6E;
128
- line-height: ${css_vh(3.62)};
249
+ .blocks-guide-category-dot {
250
+ width: 13px;
251
+ height: 13px;
252
+ border-radius: 4px;
253
+ background: var(--category-colour);
254
+ box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.1);
129
255
  }
130
256
 
131
- .block-description-repeat {
132
- float: right;
133
- margin-top: ${css_vh(3.29)};
134
- width: ${css_vh(23.85)};
135
- font-size: ${css_vh(2.30)};
136
- line-height: ${css_vh(3.62)};
257
+ .blocks-guide-category-title {
258
+ margin: 0;
259
+ color: #21444c;
260
+ font-size: 1.26rem;
261
+ }
262
+
263
+ .blocks-guide-category-count {
264
+ display: inline-block;
265
+ padding: 2px 7px;
266
+ border-radius: 999px;
267
+ background: #e8eeeb;
268
+ color: #52656a;
269
+ font-size: 0.82rem;
270
+ }
271
+
272
+ .blocks-guide-card-grid {
273
+ display: grid;
274
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
275
+ gap: 13px;
276
+ }
277
+
278
+ .block-guide-card {
279
+ display: grid;
280
+ min-height: 152px;
281
+ grid-template-columns: 88px minmax(0, 1fr);
282
+ gap: 16px;
283
+ align-items: start;
284
+ padding: 18px;
285
+ border: 1px solid #e0e4df;
286
+ border-radius: 17px;
287
+ background: rgba(255, 255, 255, 0.9);
288
+ box-shadow: 0 7px 18px rgba(35, 65, 71, 0.045);
289
+ }
290
+
291
+ .block-guide-preview {
292
+ --category-colour: #8ba1a6;
293
+ position: relative;
294
+ display: grid;
295
+ width: 88px;
296
+ min-height: 68px;
297
+ place-items: center;
298
+ padding: 9px;
299
+ border: 2px solid rgba(0, 0, 0, 0.08);
300
+ border-radius: 13px;
301
+ background: var(--category-colour);
302
+ box-shadow:
303
+ inset 0 -6px 0 rgba(0, 0, 0, 0.09),
304
+ 0 4px 8px rgba(31, 67, 75, 0.12);
305
+ }
306
+
307
+ .block-guide-preview::before {
308
+ content: '';
309
+ position: absolute;
310
+ top: -5px;
311
+ left: 17px;
312
+ width: 24px;
313
+ height: 7px;
314
+ border-radius: 6px 6px 2px 2px;
315
+ background: var(--category-colour);
316
+ }
317
+
318
+ .block-guide-icon {
319
+ display: block;
320
+ max-width: 58px;
321
+ max-height: 46px;
322
+ object-fit: contain;
323
+ filter: drop-shadow(0 1px 0 rgba(255, 255, 255, 0.24));
324
+ }
325
+
326
+ .block-guide-symbol {
327
+ display: grid;
328
+ min-width: 42px;
329
+ min-height: 42px;
330
+ place-items: center;
331
+ border-radius: 10px;
332
+ background: rgba(255, 255, 255, 0.88);
333
+ color: #465d62;
334
+ font-family: 'Lato Bold', 'Lato Regular', Arial, sans-serif;
335
+ font-size: 1.25rem;
336
+ font-weight: 700;
337
+ }
338
+
339
+ .block-guide-card h4,
340
+ .block-guide-card h5 {
341
+ margin: 1px 0 7px;
342
+ color: #183f49;
343
+ font-size: 1.08rem;
344
+ line-height: 1.25;
345
+ }
346
+
347
+ .block-guide-card p {
348
+ margin: 0;
349
+ color: #5a7076;
350
+ font-size: 0.93rem;
351
+ line-height: 1.44;
352
+ }
353
+
354
+ .block-guide-note {
355
+ display: inline-block;
356
+ margin-top: 10px;
357
+ padding: 4px 8px;
358
+ border-radius: 7px;
359
+ background: #fff3c7;
360
+ color: #6c5a20;
361
+ font-size: 0.74rem;
362
+ line-height: 1.35;
363
+ }
364
+
365
+ .blocks-guide-category-start {
366
+ --category-colour: #efd637;
367
+ }
368
+
369
+ .blocks-guide-category-motion {
370
+ --category-colour: #448de2;
371
+ }
372
+
373
+ .blocks-guide-category-looks {
374
+ --category-colour: #ca72d0;
375
+ }
376
+
377
+ .blocks-guide-category-sound {
378
+ --category-colour: #48c67d;
379
+ }
380
+
381
+ .blocks-guide-category-control {
382
+ --category-colour: #f3a24d;
383
+ }
384
+
385
+ .blocks-guide-category-end {
386
+ --category-colour: #dc4b45;
387
+ }
388
+
389
+ .blocks-guide-extension {
390
+ margin-top: 58px;
391
+ padding: 30px;
392
+ border: 1px solid #dedbd1;
393
+ border-radius: 24px;
394
+ background: #fffaf0;
395
+ }
396
+
397
+ .blocks-guide-extension > h2 {
398
+ margin: 0 0 5px;
399
+ color: #795d18;
400
+ font-size: 0.85rem;
401
+ letter-spacing: 0.1em;
402
+ text-transform: uppercase;
403
+ }
404
+
405
+ .blocks-guide-extension h3 {
406
+ margin: 0 0 7px;
407
+ color: #24434b;
408
+ font-size: 1.7rem;
409
+ }
410
+
411
+ .blocks-guide-extension-intro {
412
+ max-width: 760px;
413
+ margin: 0;
414
+ color: #64767a;
415
+ }
416
+
417
+ .blocks-guide-extension .blocks-guide-category:first-of-type {
418
+ margin-top: 26px;
419
+ }
420
+
421
+ @media (max-width: 720px) {
422
+ .blocks-guide-page {
423
+ width: min(100% - 24px, 620px);
424
+ padding-top: 14px;
425
+ }
426
+
427
+ .blocks-guide-hero {
428
+ grid-template-columns: 1fr;
429
+ padding: 28px 25px;
430
+ }
431
+
432
+ .blocks-guide-hero-summary {
433
+ display: none;
434
+ }
435
+
436
+ .blocks-guide-tabs {
437
+ display: flex;
438
+ overflow-x: auto;
439
+ scrollbar-width: thin;
440
+ }
441
+
442
+ .blocks-guide-tab {
443
+ min-width: 190px;
444
+ }
445
+
446
+ .blocks-guide-mode-header {
447
+ grid-template-columns: 1fr;
448
+ gap: 10px;
449
+ }
450
+
451
+ .blocks-guide-mode-total {
452
+ justify-self: start;
453
+ }
454
+
455
+ .blocks-guide-card-grid {
456
+ grid-template-columns: 1fr;
457
+ }
458
+
459
+ .blocks-guide-extension {
460
+ padding: 23px 15px;
461
+ }
462
+ }
463
+
464
+ @media (max-width: 420px) {
465
+ .block-guide-card {
466
+ grid-template-columns: 74px minmax(0, 1fr);
467
+ gap: 12px;
468
+ padding: 15px;
469
+ }
470
+
471
+ .block-guide-preview {
472
+ width: 74px;
473
+ }
474
+
475
+ .block-guide-icon {
476
+ max-width: 48px;
477
+ }
137
478
  }