Skip to content

Commit 30475ca

Browse files
authored
chore(curriculum): add nutritional label workshop (freeCodeCamp#56715)
1 parent 0b8cfbf commit 30475ca

File tree

72 files changed

+9582
-2
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+9582
-2
lines changed

client/i18n/locales/english/intro.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1950,7 +1950,13 @@
19501950
"Test what you've learned in this quiz of using flexbox in CSS."
19511951
]
19521952
},
1953-
"vqut": { "title": "83", "intro": [] },
1953+
"workshop-nutritional-label": {
1954+
"title": "Build a Nutritional Label",
1955+
"intro": [
1956+
"Typography is the art of styling your text to be easily readable and suit its purpose.",
1957+
"In this workshop, you'll use typography to build a nutrition label webpage. You'll practice how to style text, adjust line height, and position your text using CSS."
1958+
]
1959+
},
19541960
"ujcf": { "title": "84", "intro": [] },
19551961
"lab-newspaper-article": {
19561962
"title": "Build a Newspaper Article",
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
title: Introduction to the Build a Nutritional Label
3+
block: workshop-nutritional-label
4+
superBlock: front-end-development
5+
---
6+
7+
## Introduction to the Build a Nutritional Label
8+
9+
Typography is the art of styling your text to be easily readable and suit its purpose.
10+
11+
In this workshop, you'll use typography to build a nutrition label webpage. You'll practice how to style text, adjust line height, and position your text using CSS.
Lines changed: 285 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,285 @@
1+
{
2+
"name": "Build a Nutritional Label",
3+
"blockType": "workshop",
4+
"isUpcomingChange": true,
5+
"usesMultifileEditor": true,
6+
"hasEditableBoundaries": true,
7+
"dashedName": "workshop-nutritional-label",
8+
"order": 83,
9+
"superBlock": "front-end-development",
10+
"challengeOrder": [
11+
{
12+
"id": "615f2abbe7d18d49a1e0e1c8",
13+
"title": "Step 1"
14+
},
15+
{
16+
"id": "615f2d4150fe0d4cbd0f2628",
17+
"title": "Step 2"
18+
},
19+
{
20+
"id": "615f34948891834dd77655a6",
21+
"title": "Step 3"
22+
},
23+
{
24+
"id": "615f34ecc1091b4fd5a8a484",
25+
"title": "Step 4"
26+
},
27+
{
28+
"id": "615f357957e370510f21ea16",
29+
"title": "Step 5"
30+
},
31+
{
32+
"id": "615f378014c2da526a109c81",
33+
"title": "Step 6"
34+
},
35+
{
36+
"id": "615f38279e5c3d53692ea441",
37+
"title": "Step 7"
38+
},
39+
{
40+
"id": "615f38cabc64e3556f98cc1a",
41+
"title": "Step 8"
42+
},
43+
{
44+
"id": "615f3949f58e12577dcefb00",
45+
"title": "Step 9"
46+
},
47+
{
48+
"id": "615f39d7da41b15851fa3fb9",
49+
"title": "Step 10"
50+
},
51+
{
52+
"id": "615f3b091162165948e1cb33",
53+
"title": "Step 11"
54+
},
55+
{
56+
"id": "615f3cafd794015aa9547a6d",
57+
"title": "Step 12"
58+
},
59+
{
60+
"id": "615f3d9e59db4b5b8e960762",
61+
"title": "Step 13"
62+
},
63+
{
64+
"id": "615f3e1b7233ee5c7595771f",
65+
"title": "Step 14"
66+
},
67+
{
68+
"id": "615f3e4af8008c5d494d3afe",
69+
"title": "Step 15"
70+
},
71+
{
72+
"id": "615f3ed16592445e57941aec",
73+
"title": "Step 16"
74+
},
75+
{
76+
"id": "615f405b89a7ec5f8e2d11f4",
77+
"title": "Step 17"
78+
},
79+
{
80+
"id": "615f40b01f680e608d360ed4",
81+
"title": "Step 18"
82+
},
83+
{
84+
"id": "615f4172e9eec061d6456221",
85+
"title": "Step 19"
86+
},
87+
{
88+
"id": "615f41c979787462e76dab90",
89+
"title": "Step 20"
90+
},
91+
{
92+
"id": "615f423cf65d5864132a0956",
93+
"title": "Step 21"
94+
},
95+
{
96+
"id": "615f42a021625f656101ef93",
97+
"title": "Step 22"
98+
},
99+
{
100+
"id": "615f4bfb9de4a16703b56eb6",
101+
"title": "Step 23"
102+
},
103+
{
104+
"id": "615f4ce9d877b668417c0c42",
105+
"title": "Step 24"
106+
},
107+
{
108+
"id": "615f4dde9d72e3694cb9ee3b",
109+
"title": "Step 25"
110+
},
111+
{
112+
"id": "615f4ec58334106a4170c2a8",
113+
"title": "Step 26"
114+
},
115+
{
116+
"id": "615f4f9e4a40566b776a8f38",
117+
"title": "Step 27"
118+
},
119+
{
120+
"id": "615f50473cc0196c6dd3892a",
121+
"title": "Step 28"
122+
},
123+
{
124+
"id": "615f51257a8a516d80b6c743",
125+
"title": "Step 29"
126+
},
127+
{
128+
"id": "615f51e4e5b24a6e80eccce1",
129+
"title": "Step 30"
130+
},
131+
{
132+
"id": "615f522dea4f776f64dc3e91",
133+
"title": "Step 31"
134+
},
135+
{
136+
"id": "6395d33ab5d91bf317107c48",
137+
"title": "Step 32"
138+
},
139+
{
140+
"id": "615f5486b8fd4b71633f69b0",
141+
"title": "Step 33"
142+
},
143+
{
144+
"id": "6396e33fe478dd264ebbf278",
145+
"title": "Step 34"
146+
},
147+
{
148+
"id": "615f575b50b91e72af079480",
149+
"title": "Step 35"
150+
},
151+
{
152+
"id": "615f5af373a68e744a3c5a76",
153+
"title": "Step 36"
154+
},
155+
{
156+
"id": "615f5fd85d0062761f288364",
157+
"title": "Step 37"
158+
},
159+
{
160+
"id": "615f61338c8ca176d6445574",
161+
"title": "Step 38"
162+
},
163+
{
164+
"id": "615f666ac5edea782feb7e75",
165+
"title": "Step 39"
166+
},
167+
{
168+
"id": "615f671b6d1919792745aa5d",
169+
"title": "Step 40"
170+
},
171+
{
172+
"id": "635bde33c91c80540eae239b",
173+
"title": "Step 41"
174+
},
175+
{
176+
"id": "615f6823d0815b7a991f2a75",
177+
"title": "Step 42"
178+
},
179+
{
180+
"id": "615f6b2d164f81809efd9bdc",
181+
"title": "Step 43"
182+
},
183+
{
184+
"id": "667d1bb875f5961913176069",
185+
"title": "Step 44"
186+
},
187+
{
188+
"id": "615f6cc778f7698258467596",
189+
"title": "Step 45"
190+
},
191+
{
192+
"id": "615f6fddaac1e083502d3e6a",
193+
"title": "Step 46"
194+
},
195+
{
196+
"id": "615f70077a4ff98424236c1e",
197+
"title": "Step 47"
198+
},
199+
{
200+
"id": "615f72a872354a850d4f533e",
201+
"title": "Step 48"
202+
},
203+
{
204+
"id": "615f74a71f1e498619e38ee8",
205+
"title": "Step 49"
206+
},
207+
{
208+
"id": "615f7ad94380408d971d14f6",
209+
"title": "Step 50"
210+
},
211+
{
212+
"id": "615f7bc680f7168ea01ebf99",
213+
"title": "Step 51"
214+
},
215+
{
216+
"id": "615f7c71eab8218f846e4503",
217+
"title": "Step 52"
218+
},
219+
{
220+
"id": "615f7d489a581590d1350288",
221+
"title": "Step 53"
222+
},
223+
{
224+
"id": "615f7de4487b64919bb4aa5e",
225+
"title": "Step 54"
226+
},
227+
{
228+
"id": "615f7e7281626a92bbd62da8",
229+
"title": "Step 55"
230+
},
231+
{
232+
"id": "615f7ecb09de9a938ef94756",
233+
"title": "Step 56"
234+
},
235+
{
236+
"id": "615f7fa959ab75948f96a0d6",
237+
"title": "Step 57"
238+
},
239+
{
240+
"id": "615f808d85793195b0f53be9",
241+
"title": "Step 58"
242+
},
243+
{
244+
"id": "615f829d07b18f96f6f6684b",
245+
"title": "Step 59"
246+
},
247+
{
248+
"id": "615f83ef928ec9982b785b6a",
249+
"title": "Step 60"
250+
},
251+
{
252+
"id": "615f84f246e8ba98e3cd97be",
253+
"title": "Step 61"
254+
},
255+
{
256+
"id": "615f887466db4ba14b5342cc",
257+
"title": "Step 62"
258+
},
259+
{
260+
"id": "615f89e055040ba294719d2f",
261+
"title": "Step 63"
262+
},
263+
{
264+
"id": "615f8bfe0f30a1a3c340356b",
265+
"title": "Step 64"
266+
},
267+
{
268+
"id": "615f8f1223601fa546e93f31",
269+
"title": "Step 65"
270+
},
271+
{
272+
"id": "615f905fbd1017a65ca224eb",
273+
"title": "Step 66"
274+
},
275+
{
276+
"id": "615f94786869e1a7fec54375",
277+
"title": "Step 67"
278+
},
279+
{
280+
"id": "615f951dff9317a900ef683f",
281+
"title": "Step 68"
282+
}
283+
],
284+
"helpCategory": "HTML-CSS"
285+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
id: 615f2abbe7d18d49a1e0e1c8
3+
title: Step 1
4+
challengeType: 0
5+
dashedName: step-1
6+
demoType: onLoad
7+
---
8+
9+
# --description--
10+
11+
You've been provided with a basic HTML boilerplate.
12+
13+
Create an `h1` element within your `body` element and give it the text `Nutrition Facts`.
14+
15+
# --hints--
16+
17+
You should add a new `h1` element.
18+
19+
```js
20+
assert.exists(document.querySelector('h1'));
21+
```
22+
23+
Your `h1` element should be within your `body` element.
24+
25+
```js
26+
assert(document.querySelector('h1')?.parentElement?.localName === 'body');
27+
```
28+
29+
Your `h1` element should have the text `Nutrition Facts`.
30+
31+
```js
32+
assert(document.querySelector('h1')?.innerText === 'Nutrition Facts');
33+
```
34+
35+
# --seed--
36+
37+
## --seed-contents--
38+
39+
```html
40+
--fcc-editable-region--
41+
<!DOCTYPE html>
42+
<html lang="en">
43+
44+
<head>
45+
<meta charset="UTF-8">
46+
<title>Nutrition Label</title>
47+
</head>
48+
49+
<body>
50+
51+
</body>
52+
</html>
53+
--fcc-editable-region--
54+
```
55+
56+
```css
57+
58+
```

0 commit comments

Comments
 (0)