Skip to content

Commit 55917ed

Browse files
committed
added @reach/router
1 parent 8ae76ff commit 55917ed

File tree

5 files changed

+142
-21
lines changed

5 files changed

+142
-21
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"version": "0.1.0",
44
"private": true,
55
"dependencies": {
6+
"@reach/router": "^1.2.1",
67
"@testing-library/jest-dom": "^4.2.4",
78
"@testing-library/react": "^9.3.2",
89
"@testing-library/user-event": "^7.1.2",

src/App.js

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import React from 'react'
2+
import { Router } from '@reach/router'
3+
import { Practice } from './components/Practice'
24
import './normalize.css'
35
import './App.css'
4-
import { CardPreview } from './components/CardPreview'
6+
57
import { getCards } from './services/cardService'
6-
import { CardForm } from './components/CardForm'
8+
import { CardList } from './components/CardList'
79

810
function App() {
911
const [cards, setCards] = React.useState([])
@@ -33,18 +35,16 @@ function App() {
3335
<h2>Retention through repitition</h2>
3436
</header>
3537
<main>
36-
<h3>Your Cards</h3>
37-
<div className="gridContainer">
38-
<CardForm onSave={handleAdd} />
39-
{cards.map(card => (
40-
<CardPreview
41-
key={card.id}
42-
{...card}
43-
onUpdate={handleUpdate}
44-
onRemove={handleRemove}
45-
/>
46-
))}
47-
</div>
38+
<Router>
39+
<CardList
40+
path="/"
41+
cards={cards}
42+
onAdd={handleAdd}
43+
onUpdate={handleUpdate}
44+
onRemove={handleRemove}
45+
/>
46+
<Practice path="/practice" />
47+
</Router>
4848
</main>
4949
</div>
5050
</div>

src/components/CardList.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import React from 'react'
2+
import { Link } from '@reach/router'
3+
import { CardForm } from './CardForm'
4+
import { CardPreview } from './CardPreview'
5+
6+
export function CardList({ cards, onAdd, onRemove, onUpdate }) {
7+
return (
8+
<div>
9+
<h3>Your Cards</h3>
10+
<div className="practiceCTA">
11+
<Link to="/practice">practice deck</Link>
12+
</div>
13+
<div className="gridContainer">
14+
<CardForm onSave={onAdd} />
15+
{cards.map(card => (
16+
<CardPreview
17+
key={card.id}
18+
{...card}
19+
onUpdate={onUpdate}
20+
onRemove={onRemove}
21+
/>
22+
))}
23+
</div>
24+
</div>
25+
)
26+
}

src/components/Practice.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import React from 'react'
2+
3+
export function Practice() {
4+
return <div>practice here</div>
5+
}

yarn.lock

+96-7
Original file line numberDiff line numberDiff line change
@@ -1079,6 +1079,17 @@
10791079
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
10801080
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
10811081

1082+
"@reach/router@^1.2.1":
1083+
version "1.2.1"
1084+
resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.2.1.tgz#34ae3541a5ac44fa7796e5506a5d7274a162be4e"
1085+
integrity sha512-kTaX08X4g27tzIFQGRukaHmNbtMYDS3LEWIS8+l6OayGIw6Oyo1HIF/JzeuR2FoF9z6oV+x/wJSVSq4v8tcUGQ==
1086+
dependencies:
1087+
create-react-context "^0.2.1"
1088+
invariant "^2.2.3"
1089+
prop-types "^15.6.1"
1090+
react-lifecycles-compat "^3.0.4"
1091+
warning "^3.0.0"
1092+
10821093
"@sheerun/mutationobserver-shim@^0.3.2":
10831094
version "0.3.2"
10841095
resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b"
@@ -1831,7 +1842,7 @@ arrify@^1.0.1:
18311842
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
18321843
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
18331844

1834-
asap@~2.0.6:
1845+
asap@~2.0.3, asap@~2.0.6:
18351846
version "2.0.6"
18361847
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
18371848
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
@@ -2870,6 +2881,11 @@ core-js-pure@^3.0.0:
28702881
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.4.7.tgz#c998e1892da9949200c7452cbd33c0df95be9f54"
28712882
integrity sha512-Am3uRS8WCdTFA3lP7LtKR0PxgqYzjAMGKXaZKSNSC/8sqU0Wfq8R/YzoRs2rqtOVEunfgH+0q3O0BKOg0AvjPw==
28722883

2884+
core-js@^1.0.0:
2885+
version "1.2.7"
2886+
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
2887+
integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
2888+
28732889
core-js@^2.4.0:
28742890
version "2.6.10"
28752891
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f"
@@ -2937,6 +2953,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
29372953
safe-buffer "^5.0.1"
29382954
sha.js "^2.4.8"
29392955

2956+
create-react-context@^0.2.1:
2957+
version "0.2.3"
2958+
resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3"
2959+
integrity sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==
2960+
dependencies:
2961+
fbjs "^0.8.0"
2962+
gud "^1.0.0"
2963+
29402964
cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5:
29412965
version "6.0.5"
29422966
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@@ -3583,6 +3607,13 @@ encodeurl@~1.0.2:
35833607
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
35843608
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
35853609

3610+
encoding@^0.1.11:
3611+
version "0.1.12"
3612+
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
3613+
integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=
3614+
dependencies:
3615+
iconv-lite "~0.4.13"
3616+
35863617
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
35873618
version "1.4.4"
35883619
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
@@ -4125,6 +4156,19 @@ fb-watchman@^2.0.0:
41254156
dependencies:
41264157
bser "^2.0.0"
41274158

4159+
fbjs@^0.8.0:
4160+
version "0.8.17"
4161+
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
4162+
integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=
4163+
dependencies:
4164+
core-js "^1.0.0"
4165+
isomorphic-fetch "^2.1.1"
4166+
loose-envify "^1.0.0"
4167+
object-assign "^4.1.0"
4168+
promise "^7.1.1"
4169+
setimmediate "^1.0.5"
4170+
ua-parser-js "^0.7.18"
4171+
41284172
figgy-pudding@^3.5.1:
41294173
version "3.5.1"
41304174
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
@@ -4569,6 +4613,11 @@ growly@^1.3.0:
45694613
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
45704614
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
45714615

4616+
gud@^1.0.0:
4617+
version "1.0.0"
4618+
resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0"
4619+
integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==
4620+
45724621
gzip-size@5.1.1:
45734622
version "5.1.1"
45744623
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
@@ -4860,7 +4909,7 @@ https-browserify@^1.0.0:
48604909
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
48614910
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
48624911

4863-
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
4912+
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
48644913
version "0.4.24"
48654914
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
48664915
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -5045,7 +5094,7 @@ internal-ip@^4.3.0:
50455094
default-gateway "^4.2.0"
50465095
ipaddr.js "^1.9.0"
50475096

5048-
invariant@^2.2.2, invariant@^2.2.4:
5097+
invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4:
50495098
version "2.2.4"
50505099
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
50515100
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
@@ -5317,7 +5366,7 @@ is-root@2.1.0:
53175366
resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
53185367
integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==
53195368

5320-
is-stream@^1.1.0:
5369+
is-stream@^1.0.1, is-stream@^1.1.0:
53215370
version "1.1.0"
53225371
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
53235372
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
@@ -5378,6 +5427,14 @@ isobject@^3.0.0, isobject@^3.0.1:
53785427
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
53795428
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
53805429

5430+
isomorphic-fetch@^2.1.1:
5431+
version "2.2.1"
5432+
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
5433+
integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=
5434+
dependencies:
5435+
node-fetch "^1.0.1"
5436+
whatwg-fetch ">=0.10.0"
5437+
53815438
isstream@~0.1.2:
53825439
version "0.1.2"
53835440
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -6635,6 +6692,14 @@ no-case@^2.2.0:
66356692
dependencies:
66366693
lower-case "^1.1.1"
66376694

6695+
node-fetch@^1.0.1:
6696+
version "1.7.3"
6697+
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
6698+
integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
6699+
dependencies:
6700+
encoding "^0.1.11"
6701+
is-stream "^1.0.1"
6702+
66386703
node-forge@0.9.0:
66396704
version "0.9.0"
66406705
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579"
@@ -8118,6 +8183,13 @@ promise-inflight@^1.0.1:
81188183
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
81198184
integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
81208185

8186+
promise@^7.1.1:
8187+
version "7.3.1"
8188+
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
8189+
integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
8190+
dependencies:
8191+
asap "~2.0.3"
8192+
81218193
promise@^8.0.3:
81228194
version "8.0.3"
81238195
resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.3.tgz#f592e099c6cddc000d538ee7283bb190452b0bf6"
@@ -8133,7 +8205,7 @@ prompts@^2.0.1:
81338205
kleur "^3.0.3"
81348206
sisteransi "^1.0.3"
81358207

8136-
prop-types@^15.6.2, prop-types@^15.7.2:
8208+
prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2:
81378209
version "15.7.2"
81388210
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
81398211
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@@ -8359,6 +8431,11 @@ react-is@^16.8.1, react-is@^16.8.4:
83598431
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
83608432
integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
83618433

8434+
react-lifecycles-compat@^3.0.4:
8435+
version "3.0.4"
8436+
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
8437+
integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
8438+
83628439
react-scripts@3.3.0:
83638440
version "3.3.0"
83648441
resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.3.0.tgz#f26a21f208f20bd04770f43e50b5bbc151920c2a"
@@ -9024,7 +9101,7 @@ set-value@^2.0.0, set-value@^2.0.1:
90249101
is-plain-object "^2.0.3"
90259102
split-string "^3.0.1"
90269103

9027-
setimmediate@^1.0.4:
9104+
setimmediate@^1.0.4, setimmediate@^1.0.5:
90289105
version "1.0.5"
90299106
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
90309107
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
@@ -9857,6 +9934,11 @@ typedarray@^0.0.6:
98579934
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
98589935
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
98599936

9937+
ua-parser-js@^0.7.18:
9938+
version "0.7.20"
9939+
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098"
9940+
integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==
9941+
98609942
uglify-js@3.4.x:
98619943
version "3.4.10"
98629944
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f"
@@ -10112,6 +10194,13 @@ walker@^1.0.7, walker@~1.0.5:
1011210194
dependencies:
1011310195
makeerror "1.0.x"
1011410196

10197+
warning@^3.0.0:
10198+
version "3.0.0"
10199+
resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
10200+
integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=
10201+
dependencies:
10202+
loose-envify "^1.0.0"
10203+
1011510204
watchpack@^1.6.0:
1011610205
version "1.6.0"
1011710206
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
@@ -10259,7 +10348,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5:
1025910348
dependencies:
1026010349
iconv-lite "0.4.24"
1026110350

10262-
whatwg-fetch@^3.0.0:
10351+
whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0:
1026310352
version "3.0.0"
1026410353
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"
1026510354
integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==

0 commit comments

Comments
 (0)