From 483b1fd0870314f82f238cd263750f3729fa1f21 Mon Sep 17 00:00:00 2001
From: Andrea
Date: Fri, 28 Apr 2023 19:28:55 +0200
Subject: [PATCH 01/62] Header
---
package-lock.json | 450 +++++++++++++++++++++++++++++++++++++--
package.json | 5 +-
public/index.html | 2 +-
src/App.js | 5 +-
src/components/Footer.js | 0
src/components/Header.js | 37 ++++
src/components/Skills.js | 0
src/components/Tech.js | 0
8 files changed, 478 insertions(+), 21 deletions(-)
create mode 100644 src/components/Footer.js
create mode 100644 src/components/Header.js
create mode 100644 src/components/Skills.js
create mode 100644 src/components/Tech.js
diff --git a/package-lock.json b/package-lock.json
index 79e93a77f..7fff2f910 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,7 @@
"version": "1.0.0",
"dependencies": {
"@babel/eslint-parser": "^7.18.9",
+ "@reduxjs/toolkit": "^1.9.5",
"eslint": "^8.21.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-plugin-import": "^2.26.0",
@@ -16,7 +17,9 @@
"eslint-plugin-react": "^7.30.1",
"eslint-plugin-react-hooks": "^4.6.0",
"react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "react-dom": "^18.2.0",
+ "react-redux": "^8.0.5",
+ "style-components": "^0.1.0"
},
"devDependencies": {
"eslint-plugin-flowtype": "^8.0.3",
@@ -2240,6 +2243,51 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@fortawesome/fontawesome-common-types": {
+ "version": "0.2.36",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz",
+ "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==",
+ "hasInstallScript": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/fontawesome-svg-core": {
+ "version": "1.2.36",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz",
+ "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "^0.2.36"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/free-solid-svg-icons": {
+ "version": "5.15.4",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz",
+ "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "^0.2.36"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/react-fontawesome": {
+ "version": "0.1.19",
+ "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.19.tgz",
+ "integrity": "sha512-Hyb+lB8T18cvLNX0S3llz7PcSOAJMLwiVKBuuzwM/nI5uoBw+gQjnf9il0fR1C3DKOI5Kc79pkJ4/xB0Uw9aFQ==",
+ "dependencies": {
+ "prop-types": "^15.8.1"
+ },
+ "peerDependencies": {
+ "@fortawesome/fontawesome-svg-core": "~1 || ~6",
+ "react": ">=16.x"
+ }
+ },
"node_modules/@humanwhocodes/config-array": {
"version": "0.10.4",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz",
@@ -3187,6 +3235,29 @@
}
}
},
+ "node_modules/@reduxjs/toolkit": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz",
+ "integrity": "sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==",
+ "dependencies": {
+ "immer": "^9.0.21",
+ "redux": "^4.2.1",
+ "redux-thunk": "^2.4.2",
+ "reselect": "^4.1.8"
+ },
+ "peerDependencies": {
+ "react": "^16.9.0 || ^17.0.0 || ^18",
+ "react-redux": "^7.2.1 || ^8.0.2"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-redux": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@rollup/plugin-babel": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
@@ -3684,6 +3755,15 @@
"@types/node": "*"
}
},
+ "node_modules/@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "dependencies": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"node_modules/@types/html-minifier-terser": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
@@ -3758,6 +3838,11 @@
"integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==",
"dev": true
},
+ "node_modules/@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ },
"node_modules/@types/q": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz",
@@ -3776,6 +3861,16 @@
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
"dev": true
},
+ "node_modules/@types/react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
"node_modules/@types/resolve": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
@@ -3791,6 +3886,11 @@
"integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==",
"dev": true
},
+ "node_modules/@types/scheduler": {
+ "version": "0.16.3",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
+ "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
+ },
"node_modules/@types/serve-index": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz",
@@ -3831,6 +3931,11 @@
"integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==",
"dev": true
},
+ "node_modules/@types/use-sync-external-store": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
+ "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
+ },
"node_modules/@types/ws": {
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
@@ -4693,6 +4798,14 @@
"node": ">=4"
}
},
+ "node_modules/axios": {
+ "version": "0.21.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
+ "dependencies": {
+ "follow-redirects": "^1.14.0"
+ }
+ },
"node_modules/axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
@@ -5391,6 +5504,11 @@
"integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
"dev": true
},
+ "node_modules/classnames": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+ "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
+ },
"node_modules/clean-css": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz",
@@ -6148,6 +6266,11 @@
"integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
"dev": true
},
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ },
"node_modules/damerau-levenshtein": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
@@ -6413,6 +6536,15 @@
"utila": "~0.4"
}
},
+ "node_modules/dom-helpers": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+ "dependencies": {
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
+ }
+ },
"node_modules/dom-serializer": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
@@ -7911,7 +8043,6 @@
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
- "dev": true,
"funding": [
{
"type": "individual",
@@ -8506,6 +8637,14 @@
"he": "bin/he"
}
},
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
"node_modules/hoopy": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
@@ -8791,10 +8930,9 @@
}
},
"node_modules/immer": {
- "version": "9.0.15",
- "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
- "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==",
- "dev": true,
+ "version": "9.0.21",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
+ "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/immer"
@@ -11691,8 +11829,7 @@
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
@@ -14379,6 +14516,49 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
+ "node_modules/react-redux": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz",
+ "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.1",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/use-sync-external-store": "^0.0.3",
+ "hoist-non-react-statics": "^3.3.2",
+ "react-is": "^18.0.0",
+ "use-sync-external-store": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8 || ^17.0 || ^18.0",
+ "@types/react-dom": "^16.8 || ^17.0 || ^18.0",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0",
+ "react-native": ">=0.59",
+ "redux": "^4"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ },
+ "redux": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-redux/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ },
"node_modules/react-refresh": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
@@ -14476,6 +14656,21 @@
"node": ">=10"
}
},
+ "node_modules/react-transition-group": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+ "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+ "dependencies": {
+ "@babel/runtime": "^7.5.5",
+ "dom-helpers": "^5.0.1",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.6.0",
+ "react-dom": ">=16.6.0"
+ }
+ },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -14535,6 +14730,22 @@
"node": "*"
}
},
+ "node_modules/redux": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
+ "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
+ "dependencies": {
+ "@babel/runtime": "^7.9.2"
+ }
+ },
+ "node_modules/redux-thunk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz",
+ "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==",
+ "peerDependencies": {
+ "redux": "^4"
+ }
+ },
"node_modules/regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -14690,6 +14901,11 @@
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
"dev": true
},
+ "node_modules/reselect": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz",
+ "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ=="
+ },
"node_modules/resolve": {
"version": "1.22.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
@@ -15603,6 +15819,24 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/style-components": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/style-components/-/style-components-0.1.0.tgz",
+ "integrity": "sha512-l1O+9/L/1ZZbjMtFdDqPZ5+9sLBmcqJrpNxWoLQRXdK3hh3iYsyahDmiqtPNPMX1JosSRxJVcTNo0ubiTBKrdA==",
+ "dependencies": {
+ "@fortawesome/fontawesome-svg-core": "^1.2.35",
+ "@fortawesome/free-solid-svg-icons": "^5.15.3",
+ "@fortawesome/react-fontawesome": "^0.1.14",
+ "axios": "^0.21.1",
+ "classnames": "^2.2.6",
+ "lodash": "^4.17.21",
+ "react-transition-group": "^4.4.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
"node_modules/style-loader": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
@@ -16355,6 +16589,14 @@
"requires-port": "^1.0.0"
}
},
+ "node_modules/use-sync-external-store": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -18852,6 +19094,35 @@
}
}
},
+ "@fortawesome/fontawesome-common-types": {
+ "version": "0.2.36",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz",
+ "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg=="
+ },
+ "@fortawesome/fontawesome-svg-core": {
+ "version": "1.2.36",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz",
+ "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==",
+ "requires": {
+ "@fortawesome/fontawesome-common-types": "^0.2.36"
+ }
+ },
+ "@fortawesome/free-solid-svg-icons": {
+ "version": "5.15.4",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz",
+ "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==",
+ "requires": {
+ "@fortawesome/fontawesome-common-types": "^0.2.36"
+ }
+ },
+ "@fortawesome/react-fontawesome": {
+ "version": "0.1.19",
+ "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.19.tgz",
+ "integrity": "sha512-Hyb+lB8T18cvLNX0S3llz7PcSOAJMLwiVKBuuzwM/nI5uoBw+gQjnf9il0fR1C3DKOI5Kc79pkJ4/xB0Uw9aFQ==",
+ "requires": {
+ "prop-types": "^15.8.1"
+ }
+ },
"@humanwhocodes/config-array": {
"version": "0.10.4",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz",
@@ -19551,6 +19822,17 @@
"source-map": "^0.7.3"
}
},
+ "@reduxjs/toolkit": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz",
+ "integrity": "sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==",
+ "requires": {
+ "immer": "^9.0.21",
+ "redux": "^4.2.1",
+ "redux-thunk": "^2.4.2",
+ "reselect": "^4.1.8"
+ }
+ },
"@rollup/plugin-babel": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
@@ -19918,6 +20200,15 @@
"@types/node": "*"
}
},
+ "@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "requires": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"@types/html-minifier-terser": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
@@ -19992,6 +20283,11 @@
"integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==",
"dev": true
},
+ "@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ },
"@types/q": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz",
@@ -20010,6 +20306,16 @@
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
"dev": true
},
+ "@types/react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==",
+ "requires": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
"@types/resolve": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
@@ -20025,6 +20331,11 @@
"integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==",
"dev": true
},
+ "@types/scheduler": {
+ "version": "0.16.3",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
+ "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
+ },
"@types/serve-index": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz",
@@ -20065,6 +20376,11 @@
"integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==",
"dev": true
},
+ "@types/use-sync-external-store": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
+ "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
+ },
"@types/ws": {
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
@@ -20694,6 +21010,14 @@
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz",
"integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w=="
},
+ "axios": {
+ "version": "0.21.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
+ "requires": {
+ "follow-redirects": "^1.14.0"
+ }
+ },
"axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
@@ -21231,6 +21555,11 @@
"integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
"dev": true
},
+ "classnames": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+ "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
+ },
"clean-css": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz",
@@ -21781,6 +22110,11 @@
}
}
},
+ "csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ },
"damerau-levenshtein": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
@@ -21984,6 +22318,15 @@
"utila": "~0.4"
}
},
+ "dom-helpers": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+ "requires": {
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
+ }
+ },
"dom-serializer": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
@@ -23099,8 +23442,7 @@
"follow-redirects": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
- "dev": true
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
},
"fork-ts-checker-webpack-plugin": {
"version": "6.5.2",
@@ -23505,6 +23847,14 @@
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ },
"hoopy": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
@@ -23723,10 +24073,9 @@
"integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ=="
},
"immer": {
- "version": "9.0.15",
- "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
- "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==",
- "dev": true
+ "version": "9.0.21",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
+ "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA=="
},
"import-fresh": {
"version": "3.3.0",
@@ -25863,8 +26212,7 @@
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash.debounce": {
"version": "4.0.8",
@@ -27675,6 +28023,26 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
+ "react-redux": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz",
+ "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==",
+ "requires": {
+ "@babel/runtime": "^7.12.1",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/use-sync-external-store": "^0.0.3",
+ "hoist-non-react-statics": "^3.3.2",
+ "react-is": "^18.0.0",
+ "use-sync-external-store": "^1.0.0"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ }
+ }
+ },
"react-refresh": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
@@ -27748,6 +28116,17 @@
}
}
},
+ "react-transition-group": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+ "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+ "requires": {
+ "@babel/runtime": "^7.5.5",
+ "dom-helpers": "^5.0.1",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2"
+ }
+ },
"read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -27797,6 +28176,20 @@
}
}
},
+ "redux": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
+ "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
+ "requires": {
+ "@babel/runtime": "^7.9.2"
+ }
+ },
+ "redux-thunk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz",
+ "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==",
+ "requires": {}
+ },
"regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -27921,6 +28314,11 @@
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
"dev": true
},
+ "reselect": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz",
+ "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ=="
+ },
"resolve": {
"version": "1.22.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
@@ -28610,6 +29008,20 @@
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
},
+ "style-components": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/style-components/-/style-components-0.1.0.tgz",
+ "integrity": "sha512-l1O+9/L/1ZZbjMtFdDqPZ5+9sLBmcqJrpNxWoLQRXdK3hh3iYsyahDmiqtPNPMX1JosSRxJVcTNo0ubiTBKrdA==",
+ "requires": {
+ "@fortawesome/fontawesome-svg-core": "^1.2.35",
+ "@fortawesome/free-solid-svg-icons": "^5.15.3",
+ "@fortawesome/react-fontawesome": "^0.1.14",
+ "axios": "^0.21.1",
+ "classnames": "^2.2.6",
+ "lodash": "^4.17.21",
+ "react-transition-group": "^4.4.1"
+ }
+ },
"style-loader": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
@@ -29171,6 +29583,12 @@
"requires-port": "^1.0.0"
}
},
+ "use-sync-external-store": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "requires": {}
+ },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
diff --git a/package.json b/package.json
index 7214c8fde..4b12861fb 100644
--- a/package.json
+++ b/package.json
@@ -4,6 +4,7 @@
"private": true,
"dependencies": {
"@babel/eslint-parser": "^7.18.9",
+ "@reduxjs/toolkit": "^1.9.5",
"eslint": "^8.21.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-plugin-import": "^2.26.0",
@@ -11,7 +12,9 @@
"eslint-plugin-react": "^7.30.1",
"eslint-plugin-react-hooks": "^4.6.0",
"react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "react-dom": "^18.2.0",
+ "react-redux": "^8.0.5",
+ "style-components": "^0.1.0"
},
"scripts": {
"start": "react-scripts start",
diff --git a/public/index.html b/public/index.html
index e6730aa66..5a1668fb2 100644
--- a/public/index.html
+++ b/public/index.html
@@ -13,7 +13,7 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
- Technigo React App
+ Andrea Hedström Portfolio
diff --git a/src/App.js b/src/App.js
index 781afcf72..41bad666e 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,9 +1,8 @@
import React from 'react'
+import { Header } from 'components/Header';
export const App = () => {
return (
-
- Find me in src/app.js!
-
+
)
}
diff --git a/src/components/Footer.js b/src/components/Footer.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/components/Header.js b/src/components/Header.js
new file mode 100644
index 000000000..e521ca4ef
--- /dev/null
+++ b/src/components/Header.js
@@ -0,0 +1,37 @@
+import React from 'react';
+import styled from 'style-components';
+
+export const Header = () => {
+ return (
+
+
+ Andrea Hedström
+
+ Front End Developer
+ + Digital communicator with UX-knowledge
+
+
+ Hej hej
+
+
+ )
+}
+
+const HeaderSection = styled.div`
+display: flex;
+flex-direction: column;
+`
+const ProfileImg = styled.img`
+
+`
+const Name = styled.div`
+font-size: 20px;
+`
+
+const Title = styled.div`
+
+`
+
+const Introduktion = styled.div`
+font-size: 18px;
+`
\ No newline at end of file
diff --git a/src/components/Skills.js b/src/components/Skills.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/components/Tech.js b/src/components/Tech.js
new file mode 100644
index 000000000..e69de29bb
From 106d0adeebf8da461e4fa919a49210eef6040b35 Mon Sep 17 00:00:00 2001
From: Andrea
Date: Fri, 28 Apr 2023 19:35:42 +0200
Subject: [PATCH 02/62] installed styled components
---
package-lock.json | 196 +++++++++++++++++++++++++++++++++++++--
package.json | 3 +-
src/App.js | 2 +-
src/components/Header.js | 10 +-
4 files changed, 198 insertions(+), 13 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 7fff2f910..7309be53a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,7 +19,8 @@
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-redux": "^8.0.5",
- "style-components": "^0.1.0"
+ "style-components": "^0.1.0",
+ "styled-components": "^5.3.10"
},
"devDependencies": {
"eslint-plugin-flowtype": "^8.0.3",
@@ -133,7 +134,6 @@
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
"integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.18.6"
},
@@ -2196,6 +2196,29 @@
"postcss-selector-parser": "^6.0.10"
}
},
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
+ "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
+ "dependencies": {
+ "@emotion/memoize": "^0.8.0"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
+ "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
+ },
+ "node_modules/@emotion/stylis": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
+ "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
+ },
"node_modules/@eslint/eslintrc": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz",
@@ -5043,6 +5066,26 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/babel-plugin-styled-components": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.1.tgz",
+ "integrity": "sha512-c8lJlszObVQPguHkI+akXv8+Jgb9Ccujx0EetL7oIvwU100LxO6XAGe45qry37wUL40a5U9f23SYrivro2XKhA==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.16.0",
+ "@babel/helper-module-imports": "^7.16.0",
+ "babel-plugin-syntax-jsx": "^6.18.0",
+ "lodash": "^4.17.21",
+ "picomatch": "^2.3.0"
+ },
+ "peerDependencies": {
+ "styled-components": ">= 2"
+ }
+ },
+ "node_modules/babel-plugin-syntax-jsx": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
+ "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw=="
+ },
"node_modules/babel-plugin-transform-react-remove-prop-types": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
@@ -5380,6 +5423,14 @@
"node": ">= 6"
}
},
+ "node_modules/camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/caniuse-api": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
@@ -5862,6 +5913,14 @@
"postcss": "^8.4"
}
},
+ "node_modules/css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/css-declaration-sorter": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz",
@@ -6070,6 +6129,16 @@
"integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
"dev": true
},
+ "node_modules/css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
+ "dependencies": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
"node_modules/css-tree": {
"version": "1.0.0-alpha.37",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
@@ -14075,8 +14144,7 @@
"node_modules/postcss-value-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
"node_modules/prelude-ls": {
"version": "1.2.1",
@@ -15426,6 +15494,11 @@
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
"dev": true
},
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -15853,6 +15926,35 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/styled-components": {
+ "version": "5.3.10",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.10.tgz",
+ "integrity": "sha512-3kSzSBN0TiCnGJM04UwO1HklIQQSXW7rCARUk+VyMR7clz8XVlA3jijtf5ypqoDIdNMKx3la4VvaPFR855SFcg==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/traverse": "^7.4.5",
+ "@emotion/is-prop-valid": "^1.1.0",
+ "@emotion/stylis": "^0.8.4",
+ "@emotion/unitless": "^0.7.4",
+ "babel-plugin-styled-components": ">= 1.12.0",
+ "css-to-react-native": "^3.0.0",
+ "hoist-non-react-statics": "^3.0.0",
+ "shallowequal": "^1.1.0",
+ "supports-color": "^5.5.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/styled-components"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0",
+ "react-dom": ">= 16.8.0",
+ "react-is": ">= 16.8.0"
+ }
+ },
"node_modules/stylehacks": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz",
@@ -17712,7 +17814,6 @@
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
"integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
- "dev": true,
"requires": {
"@babel/types": "^7.18.6"
}
@@ -19063,6 +19164,29 @@
"dev": true,
"requires": {}
},
+ "@emotion/is-prop-valid": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
+ "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
+ "requires": {
+ "@emotion/memoize": "^0.8.0"
+ }
+ },
+ "@emotion/memoize": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
+ "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
+ },
+ "@emotion/stylis": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
+ "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
+ },
+ "@emotion/unitless": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
+ },
"@eslint/eslintrc": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz",
@@ -21197,6 +21321,23 @@
"@babel/helper-define-polyfill-provider": "^0.3.3"
}
},
+ "babel-plugin-styled-components": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.1.tgz",
+ "integrity": "sha512-c8lJlszObVQPguHkI+akXv8+Jgb9Ccujx0EetL7oIvwU100LxO6XAGe45qry37wUL40a5U9f23SYrivro2XKhA==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.16.0",
+ "@babel/helper-module-imports": "^7.16.0",
+ "babel-plugin-syntax-jsx": "^6.18.0",
+ "lodash": "^4.17.21",
+ "picomatch": "^2.3.0"
+ }
+ },
+ "babel-plugin-syntax-jsx": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
+ "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw=="
+ },
"babel-plugin-transform-react-remove-prop-types": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
@@ -21465,6 +21606,11 @@
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
"dev": true
},
+ "camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ=="
+ },
"caniuse-api": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
@@ -21833,6 +21979,11 @@
"postcss-selector-parser": "^6.0.9"
}
},
+ "css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg=="
+ },
"css-declaration-sorter": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz",
@@ -21963,6 +22114,16 @@
"integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
"dev": true
},
+ "css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
+ "requires": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
"css-tree": {
"version": "1.0.0-alpha.37",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
@@ -27688,8 +27849,7 @@
"postcss-value-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
"prelude-ls": {
"version": "1.2.1",
@@ -28701,6 +28861,11 @@
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
"dev": true
},
+ "shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+ },
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -29029,6 +29194,23 @@
"dev": true,
"requires": {}
},
+ "styled-components": {
+ "version": "5.3.10",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.10.tgz",
+ "integrity": "sha512-3kSzSBN0TiCnGJM04UwO1HklIQQSXW7rCARUk+VyMR7clz8XVlA3jijtf5ypqoDIdNMKx3la4VvaPFR855SFcg==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/traverse": "^7.4.5",
+ "@emotion/is-prop-valid": "^1.1.0",
+ "@emotion/stylis": "^0.8.4",
+ "@emotion/unitless": "^0.7.4",
+ "babel-plugin-styled-components": ">= 1.12.0",
+ "css-to-react-native": "^3.0.0",
+ "hoist-non-react-statics": "^3.0.0",
+ "shallowequal": "^1.1.0",
+ "supports-color": "^5.5.0"
+ }
+ },
"stylehacks": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz",
diff --git a/package.json b/package.json
index 4b12861fb..4aaf09cd1 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,8 @@
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-redux": "^8.0.5",
- "style-components": "^0.1.0"
+ "style-components": "^0.1.0",
+ "styled-components": "^5.3.10"
},
"scripts": {
"start": "react-scripts start",
diff --git a/src/App.js b/src/App.js
index 41bad666e..fe75b83ec 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,5 +1,5 @@
import React from 'react'
-import { Header } from 'components/Header';
+import Header from 'components/Header';
export const App = () => {
return (
diff --git a/src/components/Header.js b/src/components/Header.js
index e521ca4ef..cab47a651 100644
--- a/src/components/Header.js
+++ b/src/components/Header.js
@@ -1,7 +1,7 @@
import React from 'react';
-import styled from 'style-components';
+import styled from 'styled-components';
-export const Header = () => {
+const Header = () => {
return (
@@ -29,9 +29,11 @@ font-size: 20px;
`
const Title = styled.div`
-
+font-size: 25px;
`
const Introduktion = styled.div`
font-size: 18px;
-`
\ No newline at end of file
+`
+
+export default Header;
\ No newline at end of file
From b660a57d2dc6a8c8215c759596376135e23147d3 Mon Sep 17 00:00:00 2001
From: Andrea
Date: Fri, 28 Apr 2023 19:42:40 +0200
Subject: [PATCH 03/62] added Tech-section
---
src/App.js | 6 +++++-
src/components/FeaturedProjects.js | 0
src/components/Tech.js | 30 ++++++++++++++++++++++++++++++
3 files changed, 35 insertions(+), 1 deletion(-)
create mode 100644 src/components/FeaturedProjects.js
diff --git a/src/App.js b/src/App.js
index fe75b83ec..0edaed079 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,8 +1,12 @@
import React from 'react'
import Header from 'components/Header';
+import Tech from 'components/Tech';
export const App = () => {
return (
-
+ <>
+
+
+ >
)
}
diff --git a/src/components/FeaturedProjects.js b/src/components/FeaturedProjects.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/components/Tech.js b/src/components/Tech.js
index e69de29bb..9ce8061db 100644
--- a/src/components/Tech.js
+++ b/src/components/Tech.js
@@ -0,0 +1,30 @@
+import React from 'react';
+import styled from 'styled-components';
+
+const Tech = () => {
+ return (
+
+
+
+
+ HTML, CSS, Flexbox, JavaScript, ES6, JSX,React, React Hooks, Redux, Node.js, Mongo DB, Web Accessibly, API:s,mob-programming, pair-programming, Github.
+
+
+
+ )
+}
+
+const TechSection = styled.div`
+display: flex;
+flex-direction: column;
+`
+
+const Header = styled.h1`
+font-size: 30px;
+`
+const TechText = styled.p`
+font-size: 18px;
+`
+export default Tech;
\ No newline at end of file
From e203bab669c650326a11fde210771fe41593fa3c Mon Sep 17 00:00:00 2001
From: Andrea
Date: Fri, 28 Apr 2023 20:08:15 +0200
Subject: [PATCH 04/62] added tech-skills
---
src/components/Skills.js | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/src/components/Skills.js b/src/components/Skills.js
index e69de29bb..42b0ae807 100644
--- a/src/components/Skills.js
+++ b/src/components/Skills.js
@@ -0,0 +1,27 @@
+import React from 'react';
+
+const Skills = () => {
+ return (
+
+
+
+ Code
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+export default Skills;
\ No newline at end of file
From 1e2e392f51c5403965f9ae372d906a1151f6598a Mon Sep 17 00:00:00 2001
From: Andrea
Date: Fri, 28 Apr 2023 20:44:13 +0200
Subject: [PATCH 05/62] skills
---
src/components/Skills.js | 51 ++++++++++++++++++++++++++++++----------
1 file changed, 39 insertions(+), 12 deletions(-)
diff --git a/src/components/Skills.js b/src/components/Skills.js
index 42b0ae807..96e17bce3 100644
--- a/src/components/Skills.js
+++ b/src/components/Skills.js
@@ -1,27 +1,54 @@
import React from 'react';
+import styled from 'styled-components';
const Skills = () => {
return (
-
-
+
+
+
- Code
-
-
+
+ - Code
+ - HTML5
+ - CSS3
+ - JavaScript
+ - React
+ - Styled Components
+
-
+
+ - Toolbox
+ - Visual Studio Code
+ - Figma
+ - Slack
+ - Canva
+ - Github
+
-
+
+ - More
+ - Design lead
+ - Branding
+
-
+ Upcoming
+ Node.js
-
+
+
)
}
-export default Skills;
\ No newline at end of file
+export default Skills;
+
+const SkillSection = styled.div`
+display: flex;
+flex-direction: column;
+align-items: center;
+justify-content: center;
+`
\ No newline at end of file
From 5ec74a869c6b238ba2ee4b4c9d035cc7542d2610 Mon Sep 17 00:00:00 2001
From: Andrea
Date: Fri, 28 Apr 2023 21:42:17 +0200
Subject: [PATCH 06/62] added Footer
---
src/App.js | 2 ++
src/components/Footer.js | 44 ++++++++++++++++++++++++++++++++++++++++
src/components/Skills.js | 20 ++++++++++++++++++
3 files changed, 66 insertions(+)
diff --git a/src/App.js b/src/App.js
index 0edaed079..7ba7939cd 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,12 +1,14 @@
import React from 'react'
import Header from 'components/Header';
import Tech from 'components/Tech';
+import Skills from 'components/Skills';
export const App = () => {
return (
<>
+
>
)
}
diff --git a/src/components/Footer.js b/src/components/Footer.js
index e69de29bb..970a78bad 100644
--- a/src/components/Footer.js
+++ b/src/components/Footer.js
@@ -0,0 +1,44 @@
+import React from 'react';
+import styled from 'styled-components';
+
+const Footer = () => {
+ return (
+
+
+
+ Andrea Hedström
+
+ Front End Developer
+ + Digital communicator with UX-knowledge
+
+
+ 0762 62 42 59
+ andrea.hedstrom@outlook.com
+
+
+
+ )
+}
+export default Footer;
+
+const FooterSection = styled.div`
+display: flex;
+flex-direction: flex-start;
+`
+const Header = styled.div`
+font-size: 20px;
+`
+const ProfileImg = styled.img`
+
+`
+const Name = styled.div`
+font-size: 20px;
+color: black;
+`
+const Title = styled.div`
+color: blue;
+`
+const Contact = styled.p`
+font-size: 18px;
+color: black;
+`
\ No newline at end of file
diff --git a/src/components/Skills.js b/src/components/Skills.js
index 96e17bce3..f97b587c5 100644
--- a/src/components/Skills.js
+++ b/src/components/Skills.js
@@ -51,4 +51,24 @@ display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
+`
+const Header = styled.h1`
+font-size: 25px;
+`
+const TechSkills = styled.div`
+font-size: 22px;
+`
+const Code = styled.span`
+background-color: blue;
+`
+const Toolbox = styled.span`
+background-color: pink;
+`
+
+const More = styled.span`
+background-color: red;
+`
+
+const Upcoming = styled.span`
+background-color: yellow;
`
\ No newline at end of file
From df5f446f8975ab51e3fa9801dac485ba2735c79c Mon Sep 17 00:00:00 2001
From: Andrea
Date: Fri, 28 Apr 2023 22:34:04 +0200
Subject: [PATCH 07/62] added styling
---
src/App.js | 2 ++
src/components/Footer.js | 2 +-
src/components/Header.js | 6 ++--
src/components/Skills.js | 68 +++++++++++++++++++++++-----------------
src/components/Tech.js | 34 +++++++++++---------
5 files changed, 65 insertions(+), 47 deletions(-)
diff --git a/src/App.js b/src/App.js
index 7ba7939cd..5b48ec9d5 100644
--- a/src/App.js
+++ b/src/App.js
@@ -2,6 +2,7 @@ import React from 'react'
import Header from 'components/Header';
import Tech from 'components/Tech';
import Skills from 'components/Skills';
+import Footer from 'components/Footer';
export const App = () => {
return (
@@ -9,6 +10,7 @@ export const App = () => {
+
>
)
}
diff --git a/src/components/Footer.js b/src/components/Footer.js
index 970a78bad..ce541ed37 100644
--- a/src/components/Footer.js
+++ b/src/components/Footer.js
@@ -26,7 +26,7 @@ display: flex;
flex-direction: flex-start;
`
const Header = styled.div`
-font-size: 20px;
+font-size: 58px;
`
const ProfileImg = styled.img`
diff --git a/src/components/Header.js b/src/components/Header.js
index cab47a651..6faff391a 100644
--- a/src/components/Header.js
+++ b/src/components/Header.js
@@ -25,15 +25,15 @@ const ProfileImg = styled.img`
`
const Name = styled.div`
-font-size: 20px;
+font-size: 28px;
`
const Title = styled.div`
-font-size: 25px;
+font-size: 32px;
`
const Introduktion = styled.div`
-font-size: 18px;
+font-size: 22px;
`
export default Header;
\ No newline at end of file
diff --git a/src/components/Skills.js b/src/components/Skills.js
index f97b587c5..460d42d0e 100644
--- a/src/components/Skills.js
+++ b/src/components/Skills.js
@@ -9,31 +9,25 @@ const Skills = () => {
-
- - Code
- - HTML5
- - CSS3
- - JavaScript
- - React
- - Styled Components
-
+ Code
+ HTML5
+ CSS3
+ JavaScript
+ React
+ Styled Components
-
- - Toolbox
- - Visual Studio Code
- - Figma
- - Slack
- - Canva
- - Github
-
+ Toolbox
+ Visual Studio Code
+ Figma
+ Slack
+ Canva
+ Github
-
- - More
- - Design lead
- - Branding
-
+ More
+ Design lead
+ Branding
Upcoming
@@ -47,10 +41,13 @@ const Skills = () => {
export default Skills;
const SkillSection = styled.div`
+background-color: rgb(237, 200, 201);
+height: 900px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
+list-style: none;
`
const Header = styled.h1`
font-size: 25px;
@@ -58,17 +55,30 @@ font-size: 25px;
const TechSkills = styled.div`
font-size: 22px;
`
-const Code = styled.span`
-background-color: blue;
+const Code = styled.div`
+span {
+ background-color: #cdcf7f;
+ color: white;
+}
`
-const Toolbox = styled.span`
-background-color: pink;
+const ToolBox = styled.div`
+span {
+ background-color: rgb(11, 11, 175);
+ color: white;
+}
`
-const More = styled.span`
-background-color: red;
+const More = styled.div`
+span {
+ background-color: rgb(124, 172, 193);
+ color: white
+}
+
`
-const Upcoming = styled.span`
-background-color: yellow;
+const Upcoming = styled.div`
+span {
+ background-color: rgb(216, 148, 167);
+ color:white;
+}
`
\ No newline at end of file
diff --git a/src/components/Tech.js b/src/components/Tech.js
index 9ce8061db..79669e987 100644
--- a/src/components/Tech.js
+++ b/src/components/Tech.js
@@ -1,30 +1,36 @@
+/* eslint-disable max-len */
import React from 'react';
import styled from 'styled-components';
const Tech = () => {
- return (
-
-
-
-
- HTML, CSS, Flexbox, JavaScript, ES6, JSX,React, React Hooks, Redux, Node.js, Mongo DB, Web Accessibly, API:s,mob-programming, pair-programming, Github.
-
-
-
- )
+ return (
+
+
+
+
+ HTML, CSS, Flexbox, JavaScript, ES6, JSX,React, React Hooks, Redux, Node.js, Mongo DB, Web Accessibly, API:s,mob-programming, pair-programming, Github.
+
+
+
+ )
}
const TechSection = styled.div`
display: flex;
flex-direction: column;
+justify-content: center;
+align-items: center;
+background-color: rgb(237, 200, 201);
+height: 430px;
`
const Header = styled.h1`
-font-size: 30px;
+font-size: 60px;
+color: rgb(3, 3, 194);
`
const TechText = styled.p`
-font-size: 18px;
+font-size: 22px;
`
export default Tech;
\ No newline at end of file
From d6684d2c627768af6fe2463a20478d69f6d3de62 Mon Sep 17 00:00:00 2001
From: Andrea
Date: Fri, 28 Apr 2023 23:19:43 +0200
Subject: [PATCH 08/62] added fontfamily Garamond
---
public/index.html | 2 ++
src/components/Footer.js | 2 +-
src/components/Header.js | 22 ++++++++++++++++++++--
src/components/Skills.js | 1 +
src/components/Tech.js | 1 +
5 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/public/index.html b/public/index.html
index 5a1668fb2..a9733694e 100644
--- a/public/index.html
+++ b/public/index.html
@@ -14,6 +14,8 @@
Learn how to configure a non-root public URL by running `npm run build`.
-->
Andrea Hedström Portfolio
+
+
diff --git a/src/components/Footer.js b/src/components/Footer.js
index ce541ed37..457193774 100644
--- a/src/components/Footer.js
+++ b/src/components/Footer.js
@@ -23,7 +23,7 @@ export default Footer;
const FooterSection = styled.div`
display: flex;
-flex-direction: flex-start;
+flex-direction: column;
`
const Header = styled.div`
font-size: 58px;
diff --git a/src/components/Header.js b/src/components/Header.js
index 6faff391a..ec163c9db 100644
--- a/src/components/Header.js
+++ b/src/components/Header.js
@@ -5,7 +5,7 @@ const Header = () => {
return (
- Andrea Hedström
+ Andrea Hedström
Front End Developer
+ Digital communicator with UX-knowledge
@@ -22,18 +22,36 @@ display: flex;
flex-direction: column;
`
const ProfileImg = styled.img`
-
+align-self: center;
+margin: 55px;
+width: 164px;
+height: 164px;
+object-fit: cover;
+border-radius: 100px;
`
const Name = styled.div`
+h1 {
font-size: 28px;
+color: black;
+}
`
const Title = styled.div`
+h1 {
font-size: 32px;
+color: #0b2dd4;
+}
+h2 {
+font-size: 24px;
+color: #D0D0D0
+}
`
const Introduktion = styled.div`
+p {
font-size: 22px;
+font-family: 'EB Garamond';
+}
`
export default Header;
\ No newline at end of file
diff --git a/src/components/Skills.js b/src/components/Skills.js
index 460d42d0e..01bb68984 100644
--- a/src/components/Skills.js
+++ b/src/components/Skills.js
@@ -54,6 +54,7 @@ font-size: 25px;
`
const TechSkills = styled.div`
font-size: 22px;
+font-family: 'EB Garamond';
`
const Code = styled.div`
span {
diff --git a/src/components/Tech.js b/src/components/Tech.js
index 79669e987..a2ba47368 100644
--- a/src/components/Tech.js
+++ b/src/components/Tech.js
@@ -31,6 +31,7 @@ font-size: 60px;
color: rgb(3, 3, 194);
`
const TechText = styled.p`
+font-family: 'EB Garamond';
font-size: 22px;
`
export default Tech;
\ No newline at end of file
From 4d10a27603101dae29ed4cd1ba2d213965355b86 Mon Sep 17 00:00:00 2001
From: Andrea
Date: Fri, 28 Apr 2023 23:28:30 +0200
Subject: [PATCH 09/62] margin-bottom at headersection
---
src/components/Footer.js | 7 +++++--
src/components/Header.js | 6 +++++-
src/images/andrea.JPG | Bin 0 -> 2152256 bytes
3 files changed, 10 insertions(+), 3 deletions(-)
create mode 100644 src/images/andrea.JPG
diff --git a/src/components/Footer.js b/src/components/Footer.js
index 457193774..747bcebac 100644
--- a/src/components/Footer.js
+++ b/src/components/Footer.js
@@ -5,7 +5,7 @@ const Footer = () => {
return (
-
+
Andrea Hedström
Front End Developer
@@ -29,7 +29,10 @@ const Header = styled.div`
font-size: 58px;
`
const ProfileImg = styled.img`
-
+width: 164px;
+height: 164px;
+object-fit: cover;
+border-radius: 100px;
`
const Name = styled.div`
font-size: 20px;
diff --git a/src/components/Header.js b/src/components/Header.js
index ec163c9db..138c4403a 100644
--- a/src/components/Header.js
+++ b/src/components/Header.js
@@ -4,7 +4,7 @@ import styled from 'styled-components';
const Header = () => {
return (
-
+
Andrea Hedström
Front End Developer
@@ -20,6 +20,7 @@ const Header = () => {
const HeaderSection = styled.div`
display: flex;
flex-direction: column;
+margin: 20px;
`
const ProfileImg = styled.img`
align-self: center;
@@ -34,17 +35,20 @@ h1 {
font-size: 28px;
color: black;
}
+margin-bottom: -40px;
`
const Title = styled.div`
h1 {
font-size: 32px;
color: #0b2dd4;
+margin-bottom: -20px;
}
h2 {
font-size: 24px;
color: #D0D0D0
}
+margin-bottom: -30px;
`
const Introduktion = styled.div`
diff --git a/src/images/andrea.JPG b/src/images/andrea.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..9c047aedc0e5960f66bb863baeaf1736fc94d2ab
GIT binary patch
literal 2152256
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
z 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 |