From 5d75cdd4994fd5a8c1c0fe888c81b5d67e7d58c6 Mon Sep 17 00:00:00 2001 From: Andrew Cline Date: Wed, 3 Apr 2019 10:46:21 -0500 Subject: [PATCH 01/11] add focus to email on sign in component --- cypress/integration/App.test.js | 5 +++++ src/components/SignInCard.js | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/cypress/integration/App.test.js b/cypress/integration/App.test.js index 5b15fea..70a7f81 100644 --- a/cypress/integration/App.test.js +++ b/cypress/integration/App.test.js @@ -7,6 +7,11 @@ describe('App', () => { cy.get('h1') .should('have.text', 'Sign In') }) + + it('should focus the email input first', () => { + cy.focused() + .should('have.attr', 'id', 'email') + }) it('should have an email input', () => { cy.get('form') .find('input#email') diff --git a/src/components/SignInCard.js b/src/components/SignInCard.js index 07330ce..bae6ca1 100644 --- a/src/components/SignInCard.js +++ b/src/components/SignInCard.js @@ -1,11 +1,23 @@ -import React from 'react' +import React, { useState, useEffect } from 'react' import { Card, SubmitButton, Input, Label, A, H1 } from '../DefaultComponents' function SignInCard () { + const emailInput = React.createRef() + + const focus = useState(true) + + const setInitialFocus = () => { + emailInput.current.focus() + } + + useEffect(() => { + setInitialFocus() + }, [focus]) + return (

Sign In

- + From b1bd5af04a18a05943571025f6fb2bb0a73aab00 Mon Sep 17 00:00:00 2001 From: Andrew Cline Date: Thu, 4 Apr 2019 07:50:53 -0500 Subject: [PATCH 02/11] restructure folder content add SignInPage --- src/App.js | 24 ++++++++++++------------ src/pages/SignInPage.js | 13 +++++++++++++ src/{ => tests}/App.test.js | 2 +- 3 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 src/pages/SignInPage.js rename src/{ => tests}/App.test.js (89%) diff --git a/src/App.js b/src/App.js index 7db5842..04fea3c 100644 --- a/src/App.js +++ b/src/App.js @@ -1,16 +1,16 @@ -import React, { Component } from 'react'; -import './App.css'; -import SignInCard from './components/SignInCard'; -import { Page } from './DefaultComponents' +import React, { useState } from 'react' +import './App.css' +import SignInPage from './pages/SignInPage'; -class App extends Component { - render () { - return ( - - - - ) - } +function App () { + const [signedIn, setSignedIn] = useState(false) + + return ( +
+ {signedIn ?

Ready To Go

: } +
+ + ) } export default App diff --git a/src/pages/SignInPage.js b/src/pages/SignInPage.js new file mode 100644 index 0000000..dc1474c --- /dev/null +++ b/src/pages/SignInPage.js @@ -0,0 +1,13 @@ +import React from 'react' +import { Page } from '../DefaultComponents'; +import SignInCard from '../components/SignInCard'; + +function SignInPage () { + return ( + + + + ) +} + +export default SignInPage \ No newline at end of file diff --git a/src/App.test.js b/src/tests/App.test.js similarity index 89% rename from src/App.test.js rename to src/tests/App.test.js index a754b20..823bacb 100644 --- a/src/App.test.js +++ b/src/tests/App.test.js @@ -1,6 +1,6 @@ import React from 'react'; import ReactDOM from 'react-dom'; -import App from './App'; +import App from '../App'; it('renders without crashing', () => { const div = document.createElement('div'); From 33ed2b32285e3b952a14f812ffdcd547dd836f28 Mon Sep 17 00:00:00 2001 From: Andrew Cline Date: Thu, 4 Apr 2019 08:19:23 -0500 Subject: [PATCH 03/11] add routing and new pages for paths add react router add home page add sign in page add support files for all --- cypress/integration/HomePage.test.js | 7 + .../{App.test.js => SignInPage.test.js} | 6 +- cypress/integration/SignUpPage.test.js | 7 + package.json | 3 +- src/App.js | 14 +- src/pages/HomePage.js | 8 + src/pages/SignUpPage.js | 10 + yarn.lock | 172 +++++++++++++++++- 8 files changed, 211 insertions(+), 16 deletions(-) create mode 100644 cypress/integration/HomePage.test.js rename cypress/integration/{App.test.js => SignInPage.test.js} (88%) create mode 100644 cypress/integration/SignUpPage.test.js create mode 100644 src/pages/HomePage.js create mode 100644 src/pages/SignUpPage.js diff --git a/cypress/integration/HomePage.test.js b/cypress/integration/HomePage.test.js new file mode 100644 index 0000000..ef8907f --- /dev/null +++ b/cypress/integration/HomePage.test.js @@ -0,0 +1,7 @@ +describe('Home Page', () => { + it('routing works', () => { + cy.visit('/') + cy.get('h1') + .should('have.text', 'Welcome Sir') + }) +}) \ No newline at end of file diff --git a/cypress/integration/App.test.js b/cypress/integration/SignInPage.test.js similarity index 88% rename from cypress/integration/App.test.js rename to cypress/integration/SignInPage.test.js index 70a7f81..6a12f4e 100644 --- a/cypress/integration/App.test.js +++ b/cypress/integration/SignInPage.test.js @@ -1,6 +1,6 @@ -describe('App', () => { - it('successfully loads', () => { - cy.visit('/') +describe('Sign In Page', () => { + it('loads when you visit /signin', () => { + cy.visit('/signin') }) describe('Sign In Card', () => { it('should have a title', () => { diff --git a/cypress/integration/SignUpPage.test.js b/cypress/integration/SignUpPage.test.js new file mode 100644 index 0000000..9ec77b5 --- /dev/null +++ b/cypress/integration/SignUpPage.test.js @@ -0,0 +1,7 @@ +describe('Sign Up Page', () => { + it('routing works', () => { + cy.visit('/signup') + cy.get('h1') + .should('have.text', 'Sign Up Here!') + }) +}) \ No newline at end of file diff --git a/package.json b/package.json index cbaa8e5..288d097 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "eslint-plugin-cypress": "^2.2.1", "react": "^16.8.6", "react-dom": "^16.8.6", + "react-router-dom": "^5.0.0", "react-scripts": "2.1.8", "styled-components": "^4.2.0" }, @@ -28,4 +29,4 @@ "devDependencies": { "cypress": "^3.2.0" } -} \ No newline at end of file +} diff --git a/src/App.js b/src/App.js index 04fea3c..b46d7bb 100644 --- a/src/App.js +++ b/src/App.js @@ -1,15 +1,19 @@ import React, { useState } from 'react' import './App.css' -import SignInPage from './pages/SignInPage'; +import { BrowserRouter as Router, Route, Link } from "react-router-dom" +import SignInPage from './pages/SignInPage' +import SignUpPage from './pages/SignUpPage' +import HomePage from './pages/HomePage' function App () { const [signedIn, setSignedIn] = useState(false) return ( -
- {signedIn ?

Ready To Go

: } -
- + + + + + ) } diff --git a/src/pages/HomePage.js b/src/pages/HomePage.js new file mode 100644 index 0000000..ec97385 --- /dev/null +++ b/src/pages/HomePage.js @@ -0,0 +1,8 @@ +import React from 'react' +import { H1 } from '../DefaultComponents'; + +function HomePage () { + return (

Welcome Sir

) +} + +export default HomePage \ No newline at end of file diff --git a/src/pages/SignUpPage.js b/src/pages/SignUpPage.js new file mode 100644 index 0000000..2342361 --- /dev/null +++ b/src/pages/SignUpPage.js @@ -0,0 +1,10 @@ +import React from 'react' +import { H1 } from '../DefaultComponents' + +function SignUpPage () { + return ( +

Sign Up Here!

+ ) +} + +export default SignUpPage \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index d55b085..1aceb9c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -823,6 +823,13 @@ dependencies: regenerator-runtime "^0.12.0" +"@babel/runtime@^7.1.2": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.3.tgz#79888e452034223ad9609187a0ad1fe0d2ad4bdc" + integrity sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.1.0", "@babel/template@^7.2.2", "@babel/template@^7.4.0": version "7.4.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.0.tgz#12474e9c077bae585c5d835a95c0b0b790c25c8b" @@ -1464,7 +1471,7 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@~2.0.6: +asap@~2.0.3, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -2663,6 +2670,11 @@ core-js@3.0.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.0.tgz#a8dbfa978d29bfc263bfb66c556d0ca924c28957" integrity sha512-WBmxlgH2122EzEJ6GH8o9L/FeoUKxxxZ6q6VUxoTlsE4EvbTWKJb447eyVxTEuq0LpXjlq/kCB2qgBvsYRkLvQ== +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + core-js@^2.4.0, core-js@^2.5.0: version "2.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" @@ -2724,6 +2736,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-react-context@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3" + integrity sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag== + dependencies: + fbjs "^0.8.0" + gud "^1.0.0" + cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -3441,6 +3461,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -4013,6 +4040,19 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +fbjs@^0.8.0: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + fd-slicer@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" @@ -4498,6 +4538,11 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= +gud@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== + gzip-size@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" @@ -4657,6 +4702,18 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== +history@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/history/-/history-4.9.0.tgz#84587c2068039ead8af769e9d6a6860a14fa1bca" + integrity sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^2.2.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^0.4.0" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -4671,6 +4728,13 @@ hoek@4.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== +hoist-non-react-statics@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" + integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== + dependencies: + react-is "^16.7.0" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -4824,7 +4888,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5352,7 +5416,7 @@ is-root@2.0.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.0.0.tgz#838d1e82318144e5a6f77819d90207645acc7019" integrity sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg== -is-stream@^1.1.0: +is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -5391,6 +5455,11 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -5420,6 +5489,14 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -6293,7 +6370,7 @@ loglevel@^1.4.1: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -6724,6 +6801,14 @@ node-eta@^0.1.1: resolved "https://registry.yarnpkg.com/node-eta/-/node-eta-0.1.1.tgz#4066109b39371c761c72b7ebda9a9ea0a5de121f" integrity sha1-QGYQmzk3HHYccrfr2pqeoKXeEh8= +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-forge@0.7.5: version "0.7.5" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" @@ -7304,6 +7389,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= + dependencies: + isarray "0.0.1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -8125,6 +8217,13 @@ promise@8.0.2: dependencies: asap "~2.0.6" +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + prompts@^0.1.9: version "0.1.14" resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" @@ -8367,11 +8466,40 @@ react-error-overlay@^5.1.4: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.4.tgz#88dfb88857c18ceb3b9f95076f850d7121776991" integrity sha512-fp+U98OMZcnduQ+NSEiQa4s/XMsbp+5KlydmkbESOw4P69iWZ68ZMFM5a2BuE0FgqPBKApJyRuYHR95jM8lAmg== -react-is@^16.6.0, react-is@^16.8.1: +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: version "16.8.6" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== +react-router-dom@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.0.0.tgz#542a9b86af269a37f0b87218c4c25ea8dcf0c073" + integrity sha512-wSpja5g9kh5dIteZT3tUoggjnsa+TPFHSMrpHXMpFsaHhQkm/JNVGh2jiF9Dkh4+duj4MKCkwO6H08u6inZYgQ== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.0.0.tgz#349863f769ffc2fa10ee7331a4296e86bc12879d" + integrity sha512-6EQDakGdLG/it2x9EaCt9ZpEEPxnd0OCLBHQ1AcITAAx7nCnyvnzf76jKWG1s2/oJ7SSviUgfWHofdYljFexsA== + dependencies: + "@babel/runtime" "^7.1.2" + create-react-context "^0.2.2" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + react-scripts@2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-2.1.8.tgz#21195bb928b2c0462aa98b2d32edf7d034cff2a9" @@ -8537,6 +8665,11 @@ regenerator-runtime@^0.12.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== +regenerator-runtime@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + regenerator-transform@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb" @@ -8753,6 +8886,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-pathname@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" + integrity sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -9013,7 +9151,7 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= @@ -9710,6 +9848,16 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= +tiny-invariant@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.4.tgz#346b5415fd93cb696b0c4e8a96697ff590f92463" + integrity sha512-lMhRd/djQJ3MoaHEBrw8e2/uM4rs9YMNk0iOr8rHQ0QdbM7D4l0gFl3szKdeixrlyfm9Zqi4dxHCM2qVG8ND5g== + +tiny-warning@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.2.tgz#1dfae771ee1a04396bdfde27a3adcebc6b648b28" + integrity sha512-rru86D9CpQRLvsFG5XFdy0KdLAvjdQDyZCsRcuu60WtzFylDM3eAWSxEVz5kzL2Gp544XiUvPbVKtOA/txLi9Q== + tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -9859,6 +10007,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +ua-parser-js@^0.7.18: + version "0.7.19" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b" + integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ== + uglify-js@3.4.x: version "3.4.10" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" @@ -10076,6 +10229,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-equal@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" + integrity sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -10288,7 +10446,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: dependencies: iconv-lite "0.4.24" -whatwg-fetch@3.0.0: +whatwg-fetch@3.0.0, whatwg-fetch@>=0.10.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== From 954b032650ee6bf194a73a6d973e34f6e55875e1 Mon Sep 17 00:00:00 2001 From: Andrew Cline Date: Thu, 4 Apr 2019 12:25:06 -0500 Subject: [PATCH 04/11] add nav bar --- cypress.json | 4 +++- cypress/integration/NavBar.test.js | 8 ++++++++ src/App.js | 14 +++++++++----- src/DefaultComponents.js | 23 ++++++++++++++++++++++- src/components/NavBar.js | 23 +++++++++++++++++++++++ src/components/SignInCard.js | 4 ++-- src/index.css | 5 +++++ 7 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 cypress/integration/NavBar.test.js create mode 100644 src/components/NavBar.js diff --git a/cypress.json b/cypress.json index df10d7d..34302a4 100644 --- a/cypress.json +++ b/cypress.json @@ -1,4 +1,6 @@ { "baseUrl": "http://localhost:3000", - "projectId": "2mw49j" + "projectId": "2mw49j", + "viewportWidth": 1500, + "viewportHeight": 880 } \ No newline at end of file diff --git a/cypress/integration/NavBar.test.js b/cypress/integration/NavBar.test.js new file mode 100644 index 0000000..726c2fa --- /dev/null +++ b/cypress/integration/NavBar.test.js @@ -0,0 +1,8 @@ +describe('Nav Bar', () => { + it('should render', () => { + cy.visit('/signin') + cy.get('.NavBar') + .find('li') + .should('have.text', 'Sign In') + }) +}) \ No newline at end of file diff --git a/src/App.js b/src/App.js index b46d7bb..cd42cae 100644 --- a/src/App.js +++ b/src/App.js @@ -4,16 +4,20 @@ import { BrowserRouter as Router, Route, Link } from "react-router-dom" import SignInPage from './pages/SignInPage' import SignUpPage from './pages/SignUpPage' import HomePage from './pages/HomePage' +import NavBar from './components/NavBar'; function App () { const [signedIn, setSignedIn] = useState(false) return ( - - - - - + <> + + + + + + + ) } diff --git a/src/DefaultComponents.js b/src/DefaultComponents.js index 46b7894..bc44475 100644 --- a/src/DefaultComponents.js +++ b/src/DefaultComponents.js @@ -66,11 +66,32 @@ export const H1 = styled.h1` margin-bottom: 0px; ` +export const Nav = styled.nav` + font-family: 'Lato', sans-serif; + font-weight: 700; + font-size: 20px; + color: white; + background: #17202c; + padding: 1em; + box-shadow: 0px 2px 4px rgba(0,0,0,.3); +` + +export const NavUL = styled.ul` + display: flex; + list-style-type: none; +` + + + +export const NavLI = styled.li` + margin-left: auto; +` + export const Page = styled.div` display: flex; justify-content: center; align-items: center; - min-height: 100vh; + min-height: calc(100vh - 64px); width: 100vw; background: #3F4546; ` \ No newline at end of file diff --git a/src/components/NavBar.js b/src/components/NavBar.js new file mode 100644 index 0000000..324cfc2 --- /dev/null +++ b/src/components/NavBar.js @@ -0,0 +1,23 @@ +import React from 'react' +import { Nav, NavLI, NavUL } from '../DefaultComponents' + + +function NavBar ({ signedIn }) { + const SignedInItems = ( + Sign Out + ) + + const SignedOutItems = ( + Sign In + ) + + return ( + + ) +} + +export default NavBar \ No newline at end of file diff --git a/src/components/SignInCard.js b/src/components/SignInCard.js index bae6ca1..a34ad9b 100644 --- a/src/components/SignInCard.js +++ b/src/components/SignInCard.js @@ -17,9 +17,9 @@ function SignInCard () { return (

Sign In

- + - + Sign In Don't have an account? Sign Up Here diff --git a/src/index.css b/src/index.css index 94fa454..f3ac2d3 100644 --- a/src/index.css +++ b/src/index.css @@ -1,5 +1,10 @@ @import url("https://fonts.googleapis.com/css?family=Lato:300,400,700,700i"); +* { + margin: 0; + padding: 0; +} + body { margin: 0; padding: 0; From c959a8eceed378f2aaf0e0a6f887116df24e1bf5 Mon Sep 17 00:00:00 2001 From: Andrew Cline Date: Thu, 4 Apr 2019 12:38:37 -0500 Subject: [PATCH 05/11] make home page a real page --- src/DefaultComponents.js | 6 ++---- src/index.css | 1 + src/pages/HomePage.js | 8 ++++++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/DefaultComponents.js b/src/DefaultComponents.js index bc44475..d0d7ff3 100644 --- a/src/DefaultComponents.js +++ b/src/DefaultComponents.js @@ -81,8 +81,6 @@ export const NavUL = styled.ul` list-style-type: none; ` - - export const NavLI = styled.li` margin-left: auto; ` @@ -90,8 +88,8 @@ export const NavLI = styled.li` export const Page = styled.div` display: flex; justify-content: center; - align-items: center; + align-items: flex-start; min-height: calc(100vh - 64px); width: 100vw; - background: #3F4546; + padding: 3em; ` \ No newline at end of file diff --git a/src/index.css b/src/index.css index f3ac2d3..848345d 100644 --- a/src/index.css +++ b/src/index.css @@ -3,6 +3,7 @@ * { margin: 0; padding: 0; + box-sizing: border-box; } body { diff --git a/src/pages/HomePage.js b/src/pages/HomePage.js index ec97385..ca0a90e 100644 --- a/src/pages/HomePage.js +++ b/src/pages/HomePage.js @@ -1,8 +1,12 @@ import React from 'react' -import { H1 } from '../DefaultComponents'; +import { H1, Page } from '../DefaultComponents'; function HomePage () { - return (

Welcome Sir

) + return ( + +

Welcome Sir

+
+ ) } export default HomePage \ No newline at end of file From 0b7a786b21d90ac49de55278799e6f508807a138 Mon Sep 17 00:00:00 2001 From: Andrew Cline Date: Fri, 5 Apr 2019 07:34:37 -0500 Subject: [PATCH 06/11] add functionallity to sign in button --- cypress/integration/NavBar.test.js | 8 ++++++-- src/App.js | 12 +++++------- src/components/NavBar.js | 3 ++- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/cypress/integration/NavBar.test.js b/cypress/integration/NavBar.test.js index 726c2fa..9fdba29 100644 --- a/cypress/integration/NavBar.test.js +++ b/cypress/integration/NavBar.test.js @@ -1,8 +1,12 @@ describe('Nav Bar', () => { - it('should render', () => { - cy.visit('/signin') + it('should have a sign in button that will take you to sign in page', () => { + cy.visit('/') cy.get('.NavBar') .find('li') .should('have.text', 'Sign In') + .click() + + cy.url().should('contain', '/signin') + }) }) \ No newline at end of file diff --git a/src/App.js b/src/App.js index cd42cae..b88f190 100644 --- a/src/App.js +++ b/src/App.js @@ -10,14 +10,12 @@ function App () { const [signedIn, setSignedIn] = useState(false) return ( - <> + - - - - - - + + + + ) } diff --git a/src/components/NavBar.js b/src/components/NavBar.js index 324cfc2..605a9f9 100644 --- a/src/components/NavBar.js +++ b/src/components/NavBar.js @@ -1,5 +1,6 @@ import React from 'react' import { Nav, NavLI, NavUL } from '../DefaultComponents' +import { Link } from 'react-router-dom' function NavBar ({ signedIn }) { @@ -8,7 +9,7 @@ function NavBar ({ signedIn }) { ) const SignedOutItems = ( - Sign In + Sign In ) return ( From 2a4cf51db461bbf6e1df9e7e9d7be6bef0515bdc Mon Sep 17 00:00:00 2001 From: Andrew Cline Date: Fri, 5 Apr 2019 07:35:06 -0500 Subject: [PATCH 07/11] setup netlify to redirect --- _redirects | 1 + 1 file changed, 1 insertion(+) create mode 100644 _redirects diff --git a/_redirects b/_redirects new file mode 100644 index 0000000..50a4633 --- /dev/null +++ b/_redirects @@ -0,0 +1 @@ +/* /index.html 200 \ No newline at end of file From 7bcdb1793c0a65b64a8fed5720322703db5be192 Mon Sep 17 00:00:00 2001 From: Andrew Cline Date: Fri, 5 Apr 2019 07:43:52 -0500 Subject: [PATCH 08/11] move _redirects to public folder --- _redirects => public/_redirects | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _redirects => public/_redirects (100%) diff --git a/_redirects b/public/_redirects similarity index 100% rename from _redirects rename to public/_redirects From bb2b40f5027f076dc85b957b15a9d05ad8a175fe Mon Sep 17 00:00:00 2001 From: Andrew Cline Date: Fri, 5 Apr 2019 08:02:03 -0500 Subject: [PATCH 09/11] add style for NavLink --- src/App.js | 2 +- src/DefaultComponents.js | 6 ++++++ src/components/NavBar.js | 5 ++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/App.js b/src/App.js index b88f190..86f23b8 100644 --- a/src/App.js +++ b/src/App.js @@ -1,6 +1,6 @@ import React, { useState } from 'react' import './App.css' -import { BrowserRouter as Router, Route, Link } from "react-router-dom" +import { HashRouter as Router, Route } from "react-router-dom" import SignInPage from './pages/SignInPage' import SignUpPage from './pages/SignUpPage' import HomePage from './pages/HomePage' diff --git a/src/DefaultComponents.js b/src/DefaultComponents.js index d0d7ff3..676c5fc 100644 --- a/src/DefaultComponents.js +++ b/src/DefaultComponents.js @@ -1,4 +1,5 @@ import styled from 'styled-components' +import { Link } from 'react-router-dom' export const Button = styled.button` background: ${props => props.primary ? '#00FFA2' : '#D1D1D1'}; @@ -85,6 +86,11 @@ export const NavLI = styled.li` margin-left: auto; ` +export const NavLink = styled(Link)` + color: white; + text-decoration: none; +` + export const Page = styled.div` display: flex; justify-content: center; diff --git a/src/components/NavBar.js b/src/components/NavBar.js index 605a9f9..9db5471 100644 --- a/src/components/NavBar.js +++ b/src/components/NavBar.js @@ -1,6 +1,5 @@ import React from 'react' -import { Nav, NavLI, NavUL } from '../DefaultComponents' -import { Link } from 'react-router-dom' +import { Nav, NavLI, NavUL, NavLink } from '../DefaultComponents' function NavBar ({ signedIn }) { @@ -9,7 +8,7 @@ function NavBar ({ signedIn }) { ) const SignedOutItems = ( - Sign In + Sign In ) return ( From f5e620426d2dd38b994bbb05d6cd6544fe282196 Mon Sep 17 00:00:00 2001 From: Andrew Cline Date: Sun, 7 Apr 2019 11:28:05 -0500 Subject: [PATCH 10/11] add user route to app --- cypress/integration/NavBar.test.js | 13 ++++++++++--- src/App.js | 5 +++-- src/DefaultComponents.js | 4 +++- src/components/NavBar.js | 10 ++++++++-- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/cypress/integration/NavBar.test.js b/cypress/integration/NavBar.test.js index b430015..0ad5830 100644 --- a/cypress/integration/NavBar.test.js +++ b/cypress/integration/NavBar.test.js @@ -2,10 +2,17 @@ describe('Nav Bar', () => { it('should have a sign in button that will take you to sign in page', () => { cy.visit('/') cy.get('.NavBar') - .find('li') - .should('have.text', 'Sign In') + .contains('li', 'Sign In') .click() - cy.url().should('contain', '/signin') }) + + it('should have a private user page', () => { + cy.visit('/') + cy.get('.NavBar') + .contains('li', 'User') + .click() + + cy.url().should('contain', '/user') + }) }) \ No newline at end of file diff --git a/src/App.js b/src/App.js index 86f23b8..d6f4eb7 100644 --- a/src/App.js +++ b/src/App.js @@ -1,6 +1,6 @@ import React, { useState } from 'react' import './App.css' -import { HashRouter as Router, Route } from "react-router-dom" +import { BrowserRouter as Router, Route } from "react-router-dom" import SignInPage from './pages/SignInPage' import SignUpPage from './pages/SignUpPage' import HomePage from './pages/HomePage' @@ -8,10 +8,11 @@ import NavBar from './components/NavBar'; function App () { const [signedIn, setSignedIn] = useState(false) + const [user, setUser] = useState(undefined) return ( - + diff --git a/src/DefaultComponents.js b/src/DefaultComponents.js index 676c5fc..1568a75 100644 --- a/src/DefaultComponents.js +++ b/src/DefaultComponents.js @@ -68,6 +68,7 @@ export const H1 = styled.h1` ` export const Nav = styled.nav` + display: flex; font-family: 'Lato', sans-serif; font-weight: 700; font-size: 20px; @@ -79,11 +80,12 @@ export const Nav = styled.nav` export const NavUL = styled.ul` display: flex; + margin-left: auto; list-style-type: none; ` export const NavLI = styled.li` - margin-left: auto; + margin-left: 1em; ` export const NavLink = styled(Link)` diff --git a/src/components/NavBar.js b/src/components/NavBar.js index 9db5471..a1110de 100644 --- a/src/components/NavBar.js +++ b/src/components/NavBar.js @@ -4,11 +4,17 @@ import { Nav, NavLI, NavUL, NavLink } from '../DefaultComponents' function NavBar ({ signedIn }) { const SignedInItems = ( - Sign Out + <> + User + Sign Out + ) const SignedOutItems = ( - Sign In + <> + User + Sign In + ) return ( From cf7dca9d7e7e137d30fecd6f940f5c46029e1262 Mon Sep 17 00:00:00 2001 From: Andrew Cline Date: Sun, 7 Apr 2019 12:36:58 -0500 Subject: [PATCH 11/11] work on redirect on sign in submit --- cypress/integration/SignInPage.test.js | 7 +++++++ src/App.js | 9 +++++++-- src/components/PrivateRoute.js | 24 ++++++++++++++++++++++++ src/components/SignInCard.js | 4 ++-- src/pages/SignInPage.js | 22 ++++++++++++++++------ 5 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 src/components/PrivateRoute.js diff --git a/cypress/integration/SignInPage.test.js b/cypress/integration/SignInPage.test.js index 6a12f4e..b6269a5 100644 --- a/cypress/integration/SignInPage.test.js +++ b/cypress/integration/SignInPage.test.js @@ -35,5 +35,12 @@ describe('Sign In Page', () => { cy.get('a#signup') .should('have.attr', 'href') }) + + it('should redirect after successful sign in', () => { + cy.get('button.signin') + .click() + + cy.url().should('not.contain', '/signin').should('be', 'localhost:3000/') + }) }) }) \ No newline at end of file diff --git a/src/App.js b/src/App.js index d6f4eb7..c4c5e9b 100644 --- a/src/App.js +++ b/src/App.js @@ -14,8 +14,13 @@ function App () { - - + + }> + + ) } diff --git a/src/components/PrivateRoute.js b/src/components/PrivateRoute.js new file mode 100644 index 0000000..03a6ea0 --- /dev/null +++ b/src/components/PrivateRoute.js @@ -0,0 +1,24 @@ +import React from 'react' +import { Route, Redirect } from 'react-router-dom' + +function PrivateRoute ({ component: Component, AuthCondition, ...rest }) { + return ( + + AuthCondition ? ( + + ) : ( + + ) + } + /> + ) +} + +export default PrivateRoute \ No newline at end of file diff --git a/src/components/SignInCard.js b/src/components/SignInCard.js index a34ad9b..357ad88 100644 --- a/src/components/SignInCard.js +++ b/src/components/SignInCard.js @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react' import { Card, SubmitButton, Input, Label, A, H1 } from '../DefaultComponents' -function SignInCard () { +function SignInCard ({ handleSubmit }) { const emailInput = React.createRef() const focus = useState(true) @@ -21,7 +21,7 @@ function SignInCard () { - Sign In + Sign In Don't have an account? Sign Up Here
) diff --git a/src/pages/SignInPage.js b/src/pages/SignInPage.js index dc1474c..2dd1c0f 100644 --- a/src/pages/SignInPage.js +++ b/src/pages/SignInPage.js @@ -1,13 +1,23 @@ import React from 'react' import { Page } from '../DefaultComponents'; import SignInCard from '../components/SignInCard'; +import { Redirect } from 'react-router-dom' -function SignInPage () { - return ( - - - - ) +function SignInPage ({ signedIn, setSignedIn }) { + const handleSignIn = (evt) => { + evt.preventDefault() + setSignedIn(true) + } + + if (signedIn) { + return + } else { + return ( + + + + ) + } } export default SignInPage \ No newline at end of file