pxt-core 8.2.6 → 8.2.9

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 (59) hide show
  1. package/built/cli.js +1 -0
  2. package/built/pxt-common.json +1 -1
  3. package/built/pxt.js +69 -26
  4. package/built/pxtblockly.js +37 -9
  5. package/built/pxtblocks.d.ts +1 -0
  6. package/built/pxtblocks.js +37 -9
  7. package/built/pxtcompiler.js +3 -3
  8. package/built/pxteditor.js +5 -0
  9. package/built/pxtlib.js +26 -7
  10. package/built/pxtpy.d.ts +1 -0
  11. package/built/pxtpy.js +39 -16
  12. package/built/pxtrunner.js +13 -0
  13. package/built/target.js +1 -1
  14. package/built/web/blockly.css +1 -1
  15. package/built/web/main.js +1 -1
  16. package/built/web/pxtapp.js +1 -1
  17. package/built/web/pxtblockly.js +1 -1
  18. package/built/web/pxtblocks.js +1 -1
  19. package/built/web/pxtcompiler.js +1 -1
  20. package/built/web/pxteditor.js +1 -1
  21. package/built/web/pxtembed.js +2 -2
  22. package/built/web/pxtlib.js +1 -1
  23. package/built/web/pxtpy.js +1 -1
  24. package/built/web/pxtrunner.js +1 -1
  25. package/built/web/pxtworker.js +1 -1
  26. package/built/web/react-common-authcode.css +98 -0
  27. package/built/web/react-common-skillmap.css +1 -1
  28. package/built/web/rtlblockly.css +1 -1
  29. package/built/web/rtlreact-common-skillmap.css +1 -1
  30. package/built/web/rtlsemantic.css +1 -1
  31. package/built/web/semantic.css +1 -1
  32. package/built/web/skillmap/css/main.3684f34d.chunk.css +1 -0
  33. package/built/web/skillmap/js/2.26325281.chunk.js +2 -0
  34. package/built/web/skillmap/js/main.d94a2bd9.chunk.js +1 -0
  35. package/localtypings/pxtarget.d.ts +16 -0
  36. package/localtypings/react.d.ts +5 -0
  37. package/package.json +1 -1
  38. package/react-common/components/controls/Checkbox.tsx +1 -1
  39. package/react-common/components/palette/ColorPickerField.tsx +65 -0
  40. package/react-common/components/palette/PaletteEditor.tsx +66 -0
  41. package/react-common/components/palette/PalettePicker.tsx +52 -0
  42. package/react-common/components/palette/PaletteSwatch.tsx +27 -0
  43. package/react-common/components/palette/Palettes.ts +289 -0
  44. package/react-common/components/profile/SignInModal.tsx +100 -0
  45. package/react-common/components/profile/UserPane.tsx +17 -9
  46. package/react-common/styles/palette/ColorPickerField.less +21 -0
  47. package/react-common/styles/palette/PalettePicker.less +10 -0
  48. package/react-common/styles/palette/PaletteSwatch.less +27 -0
  49. package/react-common/styles/palette/palette.less +3 -0
  50. package/react-common/styles/profile/profile.less +64 -1
  51. package/react-common/styles/react-common.less +1 -0
  52. package/theme/blockly-core.less +1 -1
  53. package/theme/common.less +13 -2
  54. package/theme/image-editor/bottomBar.less +1 -1
  55. package/theme/tutorial-sidebar.less +2 -2
  56. package/webapp/public/skillmap.html +2 -2
  57. package/built/web/skillmap/css/main.c5811548.chunk.css +0 -1
  58. package/built/web/skillmap/js/2.26b9a6f6.chunk.js +0 -2
  59. package/built/web/skillmap/js/main.98eed582.chunk.js +0 -1
@@ -0,0 +1,27 @@
1
+ import * as React from "react";
2
+ import { Palette } from "./Palettes";
3
+
4
+ export interface PaletteSwatchProps {
5
+ palette: Palette;
6
+ }
7
+
8
+ export const PaletteSwatch = (props: PaletteSwatchProps) => {
9
+ const { palette } = props;
10
+
11
+
12
+ return <div className="common-palette-swatch">
13
+ <div className="common-palette-swatch-name">
14
+ {palette.name}
15
+ </div>
16
+ <div className="common-palette-color-list">
17
+ {palette.colors.map((color, index) => <PaletteColor key={index} color={color} />)}
18
+ </div>
19
+ </div>
20
+ }
21
+
22
+ interface PaletteColorProps {
23
+ color: string;
24
+ }
25
+
26
+ const PaletteColor = (props: PaletteColorProps) =>
27
+ <div className="common-palette-color" style={{backgroundColor: props.color}} />
@@ -0,0 +1,289 @@
1
+ export interface Palette {
2
+ name: string;
3
+ id: string;
4
+ colors: string[];
5
+ }
6
+
7
+ export const Adafruit: Palette = {
8
+ id: "Adafruit",
9
+ name: lf("Adafruit"),
10
+ colors: [
11
+ "#000000",
12
+ "#FFFFFF",
13
+ "#FF0000",
14
+ "#FF007D",
15
+ "#FF7a00",
16
+ "#e5FF00",
17
+ "#2D9F00",
18
+ "#00FF72",
19
+ "#0034FF",
20
+ "#17ABFF",
21
+ "#C600FF",
22
+ "#636363",
23
+ "#7400DB",
24
+ "#00EFFF",
25
+ "#DF2929",
26
+ "#000000",
27
+ ]
28
+ }
29
+
30
+ // https://lospec.com/palette-list/vanilla-milkshake missing #e9f59d
31
+ export const Pastel: Palette = {
32
+ id: "Pastel",
33
+ name: lf("Pastel"),
34
+ colors: [
35
+ "#000000",
36
+ "#fff7e4",
37
+ "#f98284",
38
+ "#feaae4",
39
+ "#ffc384",
40
+ "#fff7a0",
41
+ "#87a889",
42
+ "#b0eb93",
43
+ "#b0a9e4",
44
+ "#accce4",
45
+ "#b3e3da",
46
+ "#d9c8bf",
47
+ "#6c5671",
48
+ "#ffe6c6",
49
+ "#dea38b",
50
+ "#28282e",
51
+ ]
52
+ }
53
+
54
+
55
+ export const Matte: Palette = {
56
+ id: "Matte",
57
+ name: lf("Matte"),
58
+ colors: [
59
+ "#000000",
60
+ "#FFF1E8",
61
+ "#FF004D",
62
+ "#FF77A8",
63
+ "#FFA300",
64
+ "#FFEC27",
65
+ "#008751",
66
+ "#00E436",
67
+ "#29ADFF",
68
+ "#C2C3C7",
69
+ "#7E2553",
70
+ "#83769C",
71
+ "#5F574F",
72
+ "#FFCCAA",
73
+ "#AB5236",
74
+ "#1D2B53",
75
+ ]
76
+ }
77
+
78
+
79
+ export const Grayscale: Palette = {
80
+ id: "Grayscale",
81
+ name: lf("Grayscale"),
82
+ colors: [
83
+ "#000000",
84
+ "#FFFFFF",
85
+ "#EDEDED",
86
+ "#DBDBDB",
87
+ "#C8C8C8",
88
+ "#B6B6B6",
89
+ "#A4A4A4",
90
+ "#929292",
91
+ "#808080",
92
+ "#6D6D6D",
93
+ "#5B5B5B",
94
+ "#494949",
95
+ "#373737",
96
+ "#242424",
97
+ "#121212",
98
+ "#000000",
99
+ ]
100
+ }
101
+
102
+
103
+ // https://lospec.com/palette-list/poke14 with #b56edd added for purple
104
+ export const Poke: Palette = {
105
+ id: "Poke",
106
+ name: lf("Poke"),
107
+ colors: [
108
+ "#000000",
109
+ "#ffffff",
110
+ "#d45362",
111
+ "#e8958b",
112
+ "#cc8945",
113
+ "#f5dc8c",
114
+ "#417d53",
115
+ "#5dd48f",
116
+ "#5162c2",
117
+ "#6cadeb",
118
+ "#b56edd",
119
+ "#8f3f29",
120
+ "#612431",
121
+ "#c0fac2",
122
+ "#24325e",
123
+ "#1b1221",
124
+ ]
125
+ }
126
+
127
+
128
+ // https://lospec.com/palette-list/warioware-diy
129
+ export const DIY: Palette = {
130
+ id: "DIY",
131
+ name: lf("DIY"),
132
+ colors: [
133
+ "#000000",
134
+ "#f8f8f8",
135
+ "#f80000",
136
+ "#FF93C4",
137
+ "#f8a830",
138
+ "#f8f858",
139
+ "#089050",
140
+ "#70d038",
141
+ "#2868c0",
142
+ "#10c0c8",
143
+ "#c868e8",
144
+ "#c0c0c0",
145
+ "#787878",
146
+ "#f8d898",
147
+ "#c04800",
148
+ "#000000",
149
+ ]
150
+ }
151
+
152
+
153
+ // https://lospec.com/palette-list/still-life
154
+ export const StillLife: Palette = {
155
+ id: "StillLife",
156
+ name: lf("Still Life"),
157
+ colors: [
158
+ "#000000",
159
+ "#a8e4d4",
160
+ "#d13b27",
161
+ "#e07f8a",
162
+ "#cc8218",
163
+ "#b3e868",
164
+ "#5d853a",
165
+ "#68c127",
166
+ "#286fb8",
167
+ "#9b8bff",
168
+ "#3f2811",
169
+ "#513155",
170
+ "#122615",
171
+ "#c7b581",
172
+ "#7a2222",
173
+ "#000000",
174
+ ]
175
+ }
176
+
177
+
178
+ // https://lospec.com/palette-list/steam-lords, missing 0xa0b9ba
179
+ export const SteamPunk: Palette = {
180
+ id: "SteamPunk",
181
+ name: lf("Steam Punk"),
182
+ colors: [
183
+ "#000000",
184
+ "#c0d1cc",
185
+ "#603b3a",
186
+ "#170e19",
187
+ "#775c4f",
188
+ "#77744f",
189
+ "#4f7754",
190
+ "#a19f7c",
191
+ "#4f5277",
192
+ "#65738c",
193
+ "#3a604a",
194
+ "#213b25",
195
+ "#433a60",
196
+ "#7c94a1",
197
+ "#3b2137",
198
+ "#2f213b",
199
+ ]
200
+ }
201
+
202
+ // https://lospec.com/palette-list/sweetie-16, missing 0x73eff7
203
+ export const Sweet: Palette = {
204
+ id: "Sweet",
205
+ name: lf("Sweet"),
206
+ colors: [
207
+ "#000000",
208
+ "#f4f4f4",
209
+ "#b13e53",
210
+ "#a7f070",
211
+ "#ef7d57",
212
+ "#ffcd75",
213
+ "#257179",
214
+ "#38b764",
215
+ "#29366f",
216
+ "#3b5dc9",
217
+ "#41a6f6",
218
+ "#566c86",
219
+ "#333c57",
220
+ "#94b0c2",
221
+ "#5d275d",
222
+ "#1a1c2c",
223
+ ]
224
+ }
225
+
226
+
227
+ // https://lospec.com/palette-list/na16, missing 0x70377f
228
+ export const Adventure: Palette = {
229
+ id: "Adventure",
230
+ name: lf("Adventure"),
231
+ colors: [
232
+ "#000000",
233
+ "#f5edba",
234
+ "#9d303b",
235
+ "#d26471",
236
+ "#e4943a",
237
+ "#c0c741",
238
+ "#647d34",
239
+ "#34859d",
240
+ "#17434b",
241
+ "#7ec4c1",
242
+ "#584563",
243
+ "#8c8fae",
244
+ "#3e2137",
245
+ "#d79b7d",
246
+ "#9a6348",
247
+ "#1f0e1c",
248
+ ]
249
+ }
250
+
251
+
252
+ //% fixedInstance whenUsed block="arcade"
253
+ export const Arcade: Palette = {
254
+ id: "Arcade",
255
+ name: lf("Arcade"),
256
+ colors: [
257
+ "#000000",
258
+ "#FFFFFF",
259
+ "#FF2121",
260
+ "#FF93C4",
261
+ "#FF8135",
262
+ "#FFF609",
263
+ "#249CA3",
264
+ "#78DC52",
265
+ "#003FAD",
266
+ "#87F2FF",
267
+ "#8E2EC4",
268
+ "#A4839F",
269
+ "#5C406c",
270
+ "#E5CDC4",
271
+ "#91463d",
272
+ "#000000",
273
+ ]
274
+ }
275
+
276
+
277
+ export const AllPalettes = [
278
+ Arcade,
279
+ Matte,
280
+ Pastel,
281
+ Sweet,
282
+ Poke,
283
+ Adventure,
284
+ DIY,
285
+ Adafruit,
286
+ StillLife,
287
+ SteamPunk,
288
+ Grayscale,
289
+ ]
@@ -0,0 +1,100 @@
1
+ /// <reference path="../types.d.ts" />
2
+
3
+ import * as React from "react";
4
+ import { Checkbox } from "../controls/Checkbox";
5
+ import { Button } from "../controls/Button";
6
+ import { Link } from "../controls/Link";
7
+ import { Modal } from "../controls/Modal";
8
+
9
+ export interface SignInModalProps {
10
+ onSignIn: (provider: pxt.AppCloudProvider, rememberMe: boolean) => Promise<void>;
11
+ onClose: () => void;
12
+ appMessage?: string;
13
+ resolvePath?: (path: string) => string;
14
+ mode?: "signin" | "signup";
15
+ }
16
+
17
+ export const SignInModal = (props: SignInModalProps) => {
18
+ const { onSignIn, onClose, appMessage } = props;
19
+ const resolvePath = props.resolvePath ?? (path => path);
20
+
21
+ const [rememberMe, setRememberMe] = React.useState(false);
22
+ const [mode, setMode] = React.useState(props.mode ?? "signin");
23
+
24
+ const titleText = React.useMemo(() => (mode === "signin" ? lf("Sign in") : lf("Sign up")), [mode]);
25
+ const headerText = React.useMemo(
26
+ () =>
27
+ mode === "signin"
28
+ ? lf("Sign in to save your progress and access your work anytime, anywhere.")
29
+ : lf("Join now to save your progress and access your work anytime, anywhere."),
30
+ [mode]
31
+ );
32
+ const footerFragment = React.useMemo(
33
+ () =>
34
+ mode === "signin" ? (
35
+ <div className='switch'>
36
+ <span>{lf("Don't have an account?")}</span>
37
+ <Button className="link-button" onClick={() => setMode("signup")} title={lf("Sign up")} label={lf("Sign up")}/>
38
+ </div>
39
+ ) : (
40
+ <div className='switch'>
41
+ <span>{lf("Have an account?")}</span>
42
+ <Button className="link-button" onClick={() => setMode("signin")} title={lf("Sign in")} label={lf("Sign in")}/>
43
+ </div>
44
+ ),
45
+ [mode]
46
+ );
47
+
48
+ return (
49
+ <Modal title={titleText} onClose={onClose}>
50
+ <div className='signin-form'>
51
+ <div className='signin-header'>
52
+ {appMessage ? appMessage : undefined} {headerText}
53
+ </div>
54
+ <div className='signin-body'>
55
+ <div className='providers'>
56
+ {pxt.auth.identityProviders().map((provider, index) => {
57
+ const title =
58
+ mode === "signin"
59
+ ? lf("Continue with {0}", provider.name)
60
+ : lf("Sign up with {0}", provider.name);
61
+ return (
62
+ <Button
63
+ key={index}
64
+ className='teal inverted provider'
65
+ onClick={() => onSignIn(provider, rememberMe)}
66
+ title={title}
67
+ ariaLabel={title}
68
+ label={
69
+ <div className='label'>
70
+ <div>
71
+ <img className='logo' src={resolvePath(provider.icon)} />
72
+ </div>
73
+ <div className='title'>{title}</div>
74
+ </div>
75
+ }
76
+ />
77
+ );
78
+ })}
79
+ <div className='rememberme'>
80
+ <Checkbox
81
+ id='rememberme'
82
+ label={lf("Remember me")}
83
+ isChecked={rememberMe}
84
+ onChange={setRememberMe}
85
+ ></Checkbox>
86
+ </div>
87
+ </div>
88
+ </div>
89
+ <div className='signin-footer'>
90
+ {footerFragment}
91
+ <div className='learn'>
92
+ <Link href='/identity/sign-in' target='_blank'>
93
+ {lf("Learn more")}
94
+ </Link>
95
+ </div>
96
+ </div>
97
+ </div>
98
+ </Modal>
99
+ );
100
+ };
@@ -1,3 +1,6 @@
1
+ /// <reference path="../types.d.ts" />
2
+ /// <reference path="../../../localtypings/react.d.ts" />
3
+
1
4
  import * as React from "react";
2
5
  import { fireClickOnEnter, CheckboxStatus } from "../util";
3
6
  import { UserNotification } from "./UserNotification";
@@ -17,7 +20,9 @@ export interface UserPaneProps {
17
20
  export const UserPane = (props: UserPaneProps) => {
18
21
  const { profile, onSignOutClick, onDeleteProfileClick, onEmailCheckClick, notification, emailChecked } = props;
19
22
 
20
- const { username, displayName, picture } = profile.idp;
23
+ const { username, displayName, picture, pictureUrl } = profile.idp;
24
+
25
+ const picUrl = pictureUrl ?? picture?.dataUrl;
21
26
 
22
27
  const emailLabel = <>
23
28
  {emailChecked === CheckboxStatus.Waiting ? <div className="common-spinner" /> : undefined}
@@ -27,8 +32,11 @@ export const UserPane = (props: UserPaneProps) => {
27
32
 
28
33
  return <div className="profile-user-pane">
29
34
  <div className="profile-portrait">
30
- { picture?.dataUrl ?
31
- <img src={picture?.dataUrl} alt={pxt.U.lf("Profile Picture")} />
35
+ { picUrl ?
36
+ // Google user picture URL must have referrer policy set to no-referrer
37
+ <div>
38
+ <img src={picUrl} alt={pxt.U.lf("Profile Picture")} referrerPolicy="no-referrer" />
39
+ </div>
32
40
  : <div className="profile-initials-portrait">
33
41
  {pxt.auth.userInitials(profile)}
34
42
  </div>
@@ -54,12 +62,12 @@ export const UserPane = (props: UserPaneProps) => {
54
62
  label={emailLabel}/>
55
63
  </div>
56
64
  <div className="profile-actions">
57
- <a role="button"
58
- tabIndex={0}
59
- onKeyPress={fireClickOnEnter}
60
- onClick={onDeleteProfileClick}>
61
- {lf("Delete Profile")}
62
- </a>
65
+ <Button
66
+ className="link-button"
67
+ title={lf("Delete Profile")}
68
+ label={lf("Delete Profile")}
69
+ onClick={onDeleteProfileClick}
70
+ />
63
71
  <Button
64
72
  className="sign-out"
65
73
  leftIcon="fas fa-sign-out-alt"
@@ -0,0 +1,21 @@
1
+ .common-color-picker-field {
2
+ display: grid;
3
+ grid-template-columns: 3fr 6fr 1fr 1fr;
4
+ align-items: center;
5
+ padding: 0.1rem 0rem;
6
+ }
7
+
8
+ .common-color-inputs {
9
+ display: flex;
10
+ flex-direction: row;
11
+ align-items: center;
12
+
13
+ &>:first-child {
14
+ margin-right: 0.5rem;
15
+ }
16
+
17
+ &>:last-child {
18
+ flex-grow: 1;
19
+ margin-right: 0.5rem;
20
+ }
21
+ }
@@ -0,0 +1,10 @@
1
+ .common-palette-picker {
2
+ display: flex;
3
+ flex-direction: row;
4
+ align-items: center;
5
+ }
6
+
7
+ .common-palette-editor {
8
+ max-height: 35rem;
9
+ overflow-y: auto;
10
+ }
@@ -0,0 +1,27 @@
1
+ .common-palette-swatch {
2
+ display: flex;
3
+ flex-direction: row;
4
+ }
5
+
6
+ .common-palette-color-list {
7
+ display: flex;
8
+ flex-direction: row;
9
+ }
10
+
11
+ .common-palette-color {
12
+ width: 1rem;
13
+ height: 1rem;
14
+ }
15
+
16
+ .common-palette-swatch-name {
17
+ flex-grow: 1;
18
+ padding-right: 0.5rem;
19
+ }
20
+
21
+ .common-palette-picker > .common-dropdown > .common-button .common-button-label .common-palette-color-list {
22
+ display: none;
23
+ }
24
+
25
+ .common-palette-picker > .common-dropdown > .common-button .common-button-flex {
26
+ display: flex;
27
+ }
@@ -0,0 +1,3 @@
1
+ @import "./PalettePicker.less";
2
+ @import "./PaletteSwatch.less";
3
+ @import "./ColorPickerField.less";
@@ -349,4 +349,67 @@
349
349
  grid-template-columns: repeat(3, 1fr);
350
350
  grid-auto-rows: 12rem;
351
351
  }
352
- }
352
+ }
353
+
354
+
355
+ /****************************************************
356
+ * Sign In Modal *
357
+ ****************************************************/
358
+
359
+ .signin-form {
360
+ margin: 0 1rem;
361
+
362
+ .signin-header {
363
+ margin: 0 0 1rem 0;
364
+ display: flex;
365
+ flex-direction: column;
366
+ gap: 0.5rem;
367
+ }
368
+
369
+ .signin-body {
370
+ display: flex;
371
+ justify-content: center;
372
+
373
+ .providers {
374
+ display: flex;
375
+ flex-direction: column;
376
+ gap: 1rem;
377
+ align-items: center;
378
+ margin: 0 0 1rem 0;
379
+
380
+ .provider {
381
+ width: 100%;
382
+ margin: 0;
383
+ padding: 0.8rem 2.5rem;
384
+
385
+ .label {
386
+ display: flex;
387
+ flex-direction: row;
388
+ gap: 1rem;
389
+
390
+ .logo {
391
+ width: 1.25rem;
392
+ }
393
+
394
+ .title {
395
+ align-self: center;
396
+ }
397
+ }
398
+ }
399
+ }
400
+ }
401
+
402
+ .signin-footer {
403
+ .switch {
404
+ display: flex;
405
+ gap: 0.5rem;
406
+ justify-content: center;
407
+ }
408
+
409
+ .learn {
410
+ font-size: smaller;
411
+ width: 100%;
412
+ text-align: right;
413
+ }
414
+ }
415
+ }
@@ -1,5 +1,6 @@
1
1
  @import "profile/profile.less";
2
2
  @import "share/share.less";
3
+ @import "palette/palette.less";
3
4
  @import "extensions/ExtensionCard.less";
4
5
  @import "controls/Button.less";
5
6
  @import "controls/Card.less";
@@ -90,7 +90,7 @@ body.blocklyMinimalBody {
90
90
  font-style: italic;
91
91
  }
92
92
 
93
- .blocklyEditableText>text.semanticIcon {
93
+ .blocklyEditableText>text.semanticIcon, .blocklyNonEditableText>text.semanticIcon {
94
94
  fill: #fff;
95
95
  font-family: "Icons";
96
96
  font-size: 19px;
package/theme/common.less CHANGED
@@ -204,7 +204,6 @@ pre {
204
204
 
205
205
  .invisibleScrollbar::-webkit-scrollbar {
206
206
  background: transparent !important;
207
- width: @customScrollbarWidth; // TODO: remove this when the sim breakpoint is fixed
208
207
  }
209
208
  .invisibleScrollbar::-webkit-scrollbar-thumb {
210
209
  display: none !important;
@@ -909,7 +908,7 @@ Field editors
909
908
  .common-modal > {
910
909
  .common-modal-header {
911
910
  height: @mainMenuHeight;
912
- background-color: @blue;
911
+ background-color: @mainMenuInvertedBackground;
913
912
  z-index: 202;
914
913
  display: flex;
915
914
  padding-left: 0rem;
@@ -2501,3 +2500,15 @@ select.ui.dropdown {
2501
2500
  background-color: #F5BC5F;
2502
2501
  }
2503
2502
  }
2503
+
2504
+
2505
+ /** Project settings */
2506
+
2507
+ .palette-picker-field {
2508
+ display: flex;
2509
+ align-items: center;
2510
+ }
2511
+
2512
+ .palette-picker-label {
2513
+ margin-right: 0.5rem;
2514
+ }
@@ -53,6 +53,7 @@
53
53
 
54
54
  .image-editor-change-name {
55
55
  position: relative;
56
+ width: 20rem;
56
57
  }
57
58
 
58
59
  .image-editor-change-name .image-editor-input {
@@ -67,7 +68,6 @@
67
68
  max-width: 100%;
68
69
  width: 100%;
69
70
  height: 100%;
70
- min-width: 20rem;
71
71
 
72
72
  transition: border-bottom 0.2s;
73
73
  }
@@ -62,7 +62,7 @@
62
62
  border-top: 2px dashed @tutorialSecondaryColor;
63
63
  }
64
64
 
65
- .lang-blocks .ui.segment.raised, .ui.segment.raised.codewidget {
65
+ .lang-block .ui.segment.raised, .lang-blocks .ui.segment.raised, .ui.segment.raised.codewidget {
66
66
  overflow-x: auto;
67
67
 
68
68
  code, code.hljs {
@@ -830,4 +830,4 @@
830
830
  .tutorial-title {
831
831
  max-width: 100%;
832
832
  }
833
- }
833
+ }