diff --git a/.env b/.env new file mode 100644 index 000000000..7d910f148 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +SKIP_PREFLIGHT_CHECK=true \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 47b084a03..00e4b082b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12521,14 +12521,13 @@ } }, "react": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", - "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.13.6" + "prop-types": "^15.6.2" } }, "react-app-polyfill": { @@ -12673,14 +12672,14 @@ } }, "react-dom": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", - "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.13.6" + "scheduler": "^0.19.1" } }, "react-error-overlay": { @@ -13763,9 +13762,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "scheduler": { - "version": "0.13.6", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", - "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" diff --git a/package.json b/package.json index 1c2e51d9b..58c5db01c 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,8 @@ "version": "0.1.0", "private": true, "dependencies": { - "react": "^16.8.2", - "react-dom": "^16.8.2", + "react": "^16.13.1", + "react-dom": "^16.13.1", "react-scripts": "2.1.5" }, "scripts": { diff --git a/src/App.js b/src/App.js index e7ca67f20..f938a4a72 100755 --- a/src/App.js +++ b/src/App.js @@ -1,14 +1,71 @@ -import React, { Component } from 'react'; +import React, { Component } from "react"; +import IdCard from "./components/IdCard"; +import Greetings from "./components/Greetings"; +import Random from "./components/Random"; +import BoxColor from "./components/BoxColor"; +import CreditCard from "./components/CreditCard"; class App extends Component { render() { return (

IdCard

- {/* TODO: Use the IdCard component */} - + +

Greetings

- {/* TODO: Use the Greetings component */} + Ludwig + François +

Random

+ + +

BoxColor

+ + +

CreditCard

+ + +
); } diff --git a/src/components/BoxColor.css b/src/components/BoxColor.css new file mode 100644 index 000000000..dbd5b3923 --- /dev/null +++ b/src/components/BoxColor.css @@ -0,0 +1,7 @@ +.BoxColor { + display: flex; + border-style: solid; + align-items: center; + margin: 5px; + justify-content: center; +} diff --git a/src/components/BoxColor.js b/src/components/BoxColor.js new file mode 100644 index 000000000..cc5a32e50 --- /dev/null +++ b/src/components/BoxColor.js @@ -0,0 +1,16 @@ +import React from "react"; +import "./BoxColor.css"; + +// option 1 +const BoxColor = props => { + // const { r, g, b } = props; + const rgb = `rgb(${props.r},${props.g},${props.b})`; + + return ( +
+ rgb({props.r},{props.g},{props.b}) +
+ ); +}; + +export default BoxColor; diff --git a/src/components/CreditCard.css b/src/components/CreditCard.css new file mode 100644 index 000000000..000affcc0 --- /dev/null +++ b/src/components/CreditCard.css @@ -0,0 +1,12 @@ +.CreditCard { + display: flex; + border-style: solid; + align-items: center; + margin: 5px; + justify-content: space-between; +} + +.CreditCard-pic { + border-radius: 8px; + max-width: 10%; +} diff --git a/src/components/CreditCard.js b/src/components/CreditCard.js new file mode 100644 index 000000000..94643e3dc --- /dev/null +++ b/src/components/CreditCard.js @@ -0,0 +1,41 @@ +import React from "react"; +import "./CreditCard.css"; + +// option 1 +const CreditCard = props => { + const { + type, + number, + expirationMonth, + expirationYear, + bank, + owner, + bgColor, + color + } = props; + return ( +
+
+

•••• •••• •••• {number.slice(12, 16)}

+
+
+ {expirationMonth < 10 ? `0${expirationMonth}` : `${expirationMonth}`} + {expirationYear.toString().slice(2, 4)} +
+
{bank}
+
{owner}
+
+ +
+
+ ); +}; + +export default CreditCard; diff --git a/src/components/Greetings.css b/src/components/Greetings.css new file mode 100644 index 000000000..f7a6adac2 --- /dev/null +++ b/src/components/Greetings.css @@ -0,0 +1,6 @@ +.Greetings { + display: flex; + border-style: solid; + align-items: center; + margin: 5px; +} diff --git a/src/components/Greetings.js b/src/components/Greetings.js new file mode 100644 index 000000000..bc0dc25cf --- /dev/null +++ b/src/components/Greetings.js @@ -0,0 +1,17 @@ +import React, { Component } from "react"; +import "./Greetings.css"; + +// option 1 +const Greetings = props => { + return ( +
+ {props.lang === "de" ? ( +

Hallo {props.children}

+ ) : ( +

Bonjour {props.children}

+ )} +
+ ); +}; + +export default Greetings; diff --git a/src/components/IdCard.css b/src/components/IdCard.css new file mode 100644 index 000000000..d7aae6e66 --- /dev/null +++ b/src/components/IdCard.css @@ -0,0 +1,11 @@ +.IdCard { + display: flex; + border-style: solid; + align-items: center; + margin: 5px; +} + +.IdCard-pic { + margin-left: 10px; + margin-right: 10px; +} diff --git a/src/components/IdCard.js b/src/components/IdCard.js new file mode 100644 index 000000000..1d3ba0eb0 --- /dev/null +++ b/src/components/IdCard.js @@ -0,0 +1,34 @@ +import React, { Component } from "react"; +import "./IdCard.css"; + +// option 1 +const IdCard = props => { + return ( +
+
+ +
+
+

{props.lastName}

+

{props.firstName}

+

{props.gender}

+

{props.height}

+

{props.birth.toString()}

+
+
+ ); +}; + +// option 2 +// function IdCard(props) { +// return

Hello, {props.lastName}

; +// } + +// option 3 +// class IdCard extends React.Component { +// render() { +// return

Hello, {this.props.lastName}

; +// } +// } + +export default IdCard; diff --git a/src/components/Random.css b/src/components/Random.css new file mode 100644 index 000000000..657eadfb3 --- /dev/null +++ b/src/components/Random.css @@ -0,0 +1,6 @@ +.Random { + display: flex; + border-style: solid; + align-items: center; + margin: 5px; +} diff --git a/src/components/Random.js b/src/components/Random.js new file mode 100644 index 000000000..3383f456b --- /dev/null +++ b/src/components/Random.js @@ -0,0 +1,17 @@ +import React, { Component } from "react"; +import "./Random.css"; + +function rand(min, max) { + return Math.floor(min + (max - min + 1) * Math.random()); +} +// option 1 +const Random = props => { + return ( +
+ Random value between {props.min} and {props.max} =>{" "} + {rand(props.min, props.max)} +
+ ); +}; + +export default Random;