mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-18 18:51:32 +10:00
Merge branch 'develop' into l10n_develop
This commit is contained in:
@ -51,6 +51,7 @@ For those of you familiar with the Crowdin Platform, you could do that too and j
|
|||||||
- Finnish (Suomalainen) (by Ari Pikkarainen)
|
- Finnish (Suomalainen) (by Ari Pikkarainen)
|
||||||
- French (Français) (by [MeisterLLD](https://github.com/MeisterLLD))
|
- French (Français) (by [MeisterLLD](https://github.com/MeisterLLD))
|
||||||
- German (Deutsche) (by [Kryptand](https://crowdin.com/profile/Kryptand))
|
- German (Deutsche) (by [Kryptand](https://crowdin.com/profile/Kryptand))
|
||||||
|
- Japanese (日本人) (by [a-thug](https://crowdin.com/profile/a-thug))
|
||||||
- Kannada (ಕನ್ನಡ)
|
- Kannada (ಕನ್ನಡ)
|
||||||
- Portuguese (Brazilian) (by [Felipe CG](https://github.com/felcg))
|
- Portuguese (Brazilian) (by [Felipe CG](https://github.com/felcg))
|
||||||
- Spanish (Español) (by [jrgonzalezrios](https://github.com/jrgonzalezrios))
|
- Spanish (Español) (by [jrgonzalezrios](https://github.com/jrgonzalezrios))
|
||||||
|
|||||||
@ -9,6 +9,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"users": {
|
"users": {
|
||||||
|
".indexOn": "isAnonymous",
|
||||||
"$uid": {
|
"$uid": {
|
||||||
".read": "$uid === auth.uid",
|
".read": "$uid === auth.uid",
|
||||||
".write": "$uid === auth.uid"
|
".write": "$uid === auth.uid"
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import 'firebase/analytics';
|
|||||||
import 'firebase/auth';
|
import 'firebase/auth';
|
||||||
import 'firebase/database';
|
import 'firebase/database';
|
||||||
import 'firebase/functions';
|
import 'firebase/functions';
|
||||||
import 'firebase/storage';
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { DatabaseProvider } from './src/contexts/DatabaseContext';
|
import { DatabaseProvider } from './src/contexts/DatabaseContext';
|
||||||
import { ModalProvider } from './src/contexts/ModalContext';
|
import { ModalProvider } from './src/contexts/ModalContext';
|
||||||
|
|||||||
@ -5,7 +5,7 @@ module.exports = {
|
|||||||
title: 'Reactive Resume',
|
title: 'Reactive Resume',
|
||||||
siteUrl: 'https://rxresu.me',
|
siteUrl: 'https://rxresu.me',
|
||||||
description: 'A free and open source resume builder.',
|
description: 'A free and open source resume builder.',
|
||||||
version: '2.1.0',
|
version: '2.1.1',
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
'gatsby-plugin-react-helmet',
|
'gatsby-plugin-react-helmet',
|
||||||
@ -34,7 +34,7 @@ module.exports = {
|
|||||||
display: 'standalone',
|
display: 'standalone',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'gatsby-plugin-offline',
|
'gatsby-plugin-remove-serviceworker',
|
||||||
{
|
{
|
||||||
resolve: 'gatsby-plugin-prefetch-google-fonts',
|
resolve: 'gatsby-plugin-prefetch-google-fonts',
|
||||||
options: {
|
options: {
|
||||||
|
|||||||
@ -2,4 +2,3 @@ import 'firebase/analytics';
|
|||||||
import 'firebase/auth';
|
import 'firebase/auth';
|
||||||
import 'firebase/database';
|
import 'firebase/database';
|
||||||
import 'firebase/functions';
|
import 'firebase/functions';
|
||||||
import 'firebase/storage';
|
|
||||||
|
|||||||
319
package-lock.json
generated
319
package-lock.json
generated
@ -3146,14 +3146,6 @@
|
|||||||
"resolve": "^1.12.0"
|
"resolve": "^1.12.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"babel-extract-comments": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==",
|
|
||||||
"requires": {
|
|
||||||
"babylon": "^6.18.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"babel-loader": {
|
"babel-loader": {
|
||||||
"version": "8.1.0",
|
"version": "8.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz",
|
||||||
@ -3242,20 +3234,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.9.15.tgz",
|
"resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.9.15.tgz",
|
||||||
"integrity": "sha512-cGNEEOO32kKcI+ZZBcCIliPOvyd7/Dp8zyJ/ZD1lXKuH1frzdbWG2nbxm+iil8OIxWaeHfxf083IHvb868TY9A=="
|
"integrity": "sha512-cGNEEOO32kKcI+ZZBcCIliPOvyd7/Dp8zyJ/ZD1lXKuH1frzdbWG2nbxm+iil8OIxWaeHfxf083IHvb868TY9A=="
|
||||||
},
|
},
|
||||||
"babel-plugin-syntax-object-rest-spread": {
|
|
||||||
"version": "6.13.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
|
|
||||||
"integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U="
|
|
||||||
},
|
|
||||||
"babel-plugin-transform-object-rest-spread": {
|
|
||||||
"version": "6.26.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
|
|
||||||
"integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
|
|
||||||
"requires": {
|
|
||||||
"babel-plugin-syntax-object-rest-spread": "^6.8.0",
|
|
||||||
"babel-runtime": "^6.26.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"babel-plugin-transform-react-remove-prop-types": {
|
"babel-plugin-transform-react-remove-prop-types": {
|
||||||
"version": "0.4.24",
|
"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",
|
"resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
|
||||||
@ -3303,11 +3281,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"babylon": {
|
|
||||||
"version": "6.18.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
|
|
||||||
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
|
|
||||||
},
|
|
||||||
"backo2": {
|
"backo2": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
|
||||||
@ -4403,43 +4376,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
|
||||||
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
|
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
|
||||||
},
|
},
|
||||||
"cheerio": {
|
|
||||||
"version": "1.0.0-rc.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz",
|
|
||||||
"integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==",
|
|
||||||
"requires": {
|
|
||||||
"css-select": "~1.2.0",
|
|
||||||
"dom-serializer": "~0.1.1",
|
|
||||||
"entities": "~1.1.1",
|
|
||||||
"htmlparser2": "^3.9.1",
|
|
||||||
"lodash": "^4.15.0",
|
|
||||||
"parse5": "^3.0.1"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"dom-serializer": {
|
|
||||||
"version": "0.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
|
|
||||||
"integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==",
|
|
||||||
"requires": {
|
|
||||||
"domelementtype": "^1.3.0",
|
|
||||||
"entities": "^1.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"entities": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
|
|
||||||
},
|
|
||||||
"parse5": {
|
|
||||||
"version": "3.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
|
|
||||||
"integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
|
|
||||||
"requires": {
|
|
||||||
"@types/node": "*"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"chokidar": {
|
"chokidar": {
|
||||||
"version": "3.4.0",
|
"version": "3.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz",
|
||||||
@ -7171,9 +7107,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"eslint-plugin-react": {
|
"eslint-plugin-react": {
|
||||||
"version": "7.20.3",
|
"version": "7.20.4",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.3.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.4.tgz",
|
||||||
"integrity": "sha512-txbo090buDeyV0ugF3YMWrzLIUqpYTsWSDZV9xLSmExE1P/Kmgg9++PD931r+KEWS66O1c9R4srLVVHmeHpoAg==",
|
"integrity": "sha512-y4DOQ0LrzuDQFEAnYFGjJMRHQQqfTco02qiWI00eGQYikHTzC15S5aRHGWSffnThv8sBpsmFBLky3K5keniAJg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"array-includes": "^3.1.1",
|
"array-includes": "^3.1.1",
|
||||||
"array.prototype.flatmap": "^1.2.3",
|
"array.prototype.flatmap": "^1.2.3",
|
||||||
@ -8691,20 +8627,6 @@
|
|||||||
"postcss": "^7.0.17"
|
"postcss": "^7.0.17"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gatsby-plugin-offline": {
|
|
||||||
"version": "3.2.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/gatsby-plugin-offline/-/gatsby-plugin-offline-3.2.21.tgz",
|
|
||||||
"integrity": "sha512-MvkWmieiXIlm70xawJgIQFUnGlMUWhrRk6jGoVCiiZ8xrViiluZONttCm/tiDdiZTFOwvOPN7RQj/zB+50grMg==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/runtime": "^7.10.3",
|
|
||||||
"cheerio": "^1.0.0-rc.3",
|
|
||||||
"gatsby-core-utils": "^1.3.14",
|
|
||||||
"glob": "^7.1.6",
|
|
||||||
"idb-keyval": "^3.2.0",
|
|
||||||
"lodash": "^4.17.15",
|
|
||||||
"workbox-build": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gatsby-plugin-page-creator": {
|
"gatsby-plugin-page-creator": {
|
||||||
"version": "2.3.19",
|
"version": "2.3.19",
|
||||||
"resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.3.19.tgz",
|
"resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.3.19.tgz",
|
||||||
@ -8840,6 +8762,11 @@
|
|||||||
"@babel/runtime": "^7.10.3"
|
"@babel/runtime": "^7.10.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"gatsby-plugin-remove-serviceworker": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/gatsby-plugin-remove-serviceworker/-/gatsby-plugin-remove-serviceworker-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-n7QzvIvXZuFOHTcRxKxvBR4d/3w="
|
||||||
|
},
|
||||||
"gatsby-plugin-sharp": {
|
"gatsby-plugin-sharp": {
|
||||||
"version": "2.6.22",
|
"version": "2.6.22",
|
||||||
"resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-2.6.22.tgz",
|
"resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-2.6.22.tgz",
|
||||||
@ -9583,11 +9510,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
||||||
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
|
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
|
||||||
},
|
},
|
||||||
"get-own-enumerable-property-symbols": {
|
|
||||||
"version": "3.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
|
|
||||||
"integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g=="
|
|
||||||
},
|
|
||||||
"get-port": {
|
"get-port": {
|
||||||
"version": "3.2.0",
|
"version": "3.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
|
||||||
@ -10622,11 +10544,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz",
|
||||||
"integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw=="
|
"integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw=="
|
||||||
},
|
},
|
||||||
"idb-keyval": {
|
|
||||||
"version": "3.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-3.2.0.tgz",
|
|
||||||
"integrity": "sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ=="
|
|
||||||
},
|
|
||||||
"ieee754": {
|
"ieee754": {
|
||||||
"version": "1.1.13",
|
"version": "1.1.13",
|
||||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
|
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
|
||||||
@ -11716,11 +11633,6 @@
|
|||||||
"has-symbols": "^1.0.1"
|
"has-symbols": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-regexp": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
|
|
||||||
"integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk="
|
|
||||||
},
|
|
||||||
"is-relative": {
|
"is-relative": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
|
||||||
@ -12396,11 +12308,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz",
|
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz",
|
||||||
"integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ=="
|
"integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ=="
|
||||||
},
|
},
|
||||||
"lodash._reinterpolate": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
|
|
||||||
"integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
|
|
||||||
},
|
|
||||||
"lodash.camelcase": {
|
"lodash.camelcase": {
|
||||||
"version": "4.3.0",
|
"version": "4.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
|
||||||
@ -12451,23 +12358,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
||||||
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
|
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
|
||||||
},
|
},
|
||||||
"lodash.template": {
|
|
||||||
"version": "4.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
|
|
||||||
"integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
|
|
||||||
"requires": {
|
|
||||||
"lodash._reinterpolate": "^3.0.0",
|
|
||||||
"lodash.templatesettings": "^4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lodash.templatesettings": {
|
|
||||||
"version": "4.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
|
|
||||||
"integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
|
|
||||||
"requires": {
|
|
||||||
"lodash._reinterpolate": "^3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lodash.throttle": {
|
"lodash.throttle": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
|
||||||
@ -18291,23 +18181,6 @@
|
|||||||
"is-hexadecimal": "^1.0.0"
|
"is-hexadecimal": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stringify-object": {
|
|
||||||
"version": "3.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
|
|
||||||
"integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
|
|
||||||
"requires": {
|
|
||||||
"get-own-enumerable-property-symbols": "^3.0.0",
|
|
||||||
"is-obj": "^1.0.1",
|
|
||||||
"is-regexp": "^1.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"is-obj": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
|
|
||||||
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"strip-ansi": {
|
"strip-ansi": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||||
@ -18333,15 +18206,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
|
||||||
"integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI="
|
"integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI="
|
||||||
},
|
},
|
||||||
"strip-comments": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==",
|
|
||||||
"requires": {
|
|
||||||
"babel-extract-comments": "^1.0.0",
|
|
||||||
"babel-plugin-transform-object-rest-spread": "^6.26.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"strip-dirs": {
|
"strip-dirs": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
|
||||||
@ -19817,9 +19681,9 @@
|
|||||||
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
|
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
"version": "8.2.0",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz",
|
||||||
"integrity": "sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q=="
|
"integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ=="
|
||||||
},
|
},
|
||||||
"v8-compile-cache": {
|
"v8-compile-cache": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
@ -20502,157 +20366,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
|
||||||
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
|
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
|
||||||
},
|
},
|
||||||
"workbox-background-sync": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-core": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-broadcast-update": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-core": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-build": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/runtime": "^7.3.4",
|
|
||||||
"@hapi/joi": "^15.0.0",
|
|
||||||
"common-tags": "^1.8.0",
|
|
||||||
"fs-extra": "^4.0.2",
|
|
||||||
"glob": "^7.1.3",
|
|
||||||
"lodash.template": "^4.4.0",
|
|
||||||
"pretty-bytes": "^5.1.0",
|
|
||||||
"stringify-object": "^3.3.0",
|
|
||||||
"strip-comments": "^1.0.2",
|
|
||||||
"workbox-background-sync": "^4.3.1",
|
|
||||||
"workbox-broadcast-update": "^4.3.1",
|
|
||||||
"workbox-cacheable-response": "^4.3.1",
|
|
||||||
"workbox-core": "^4.3.1",
|
|
||||||
"workbox-expiration": "^4.3.1",
|
|
||||||
"workbox-google-analytics": "^4.3.1",
|
|
||||||
"workbox-navigation-preload": "^4.3.1",
|
|
||||||
"workbox-precaching": "^4.3.1",
|
|
||||||
"workbox-range-requests": "^4.3.1",
|
|
||||||
"workbox-routing": "^4.3.1",
|
|
||||||
"workbox-strategies": "^4.3.1",
|
|
||||||
"workbox-streams": "^4.3.1",
|
|
||||||
"workbox-sw": "^4.3.1",
|
|
||||||
"workbox-window": "^4.3.1"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"fs-extra": {
|
|
||||||
"version": "4.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
|
|
||||||
"integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
|
|
||||||
"requires": {
|
|
||||||
"graceful-fs": "^4.1.2",
|
|
||||||
"jsonfile": "^4.0.0",
|
|
||||||
"universalify": "^0.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-cacheable-response": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-core": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-core": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg=="
|
|
||||||
},
|
|
||||||
"workbox-expiration": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-core": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-google-analytics": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-background-sync": "^4.3.1",
|
|
||||||
"workbox-core": "^4.3.1",
|
|
||||||
"workbox-routing": "^4.3.1",
|
|
||||||
"workbox-strategies": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-navigation-preload": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-core": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-precaching": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-core": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-range-requests": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-core": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-routing": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-core": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-strategies": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-core": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-streams": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-core": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"workbox-sw": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w=="
|
|
||||||
},
|
|
||||||
"workbox-window": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz",
|
|
||||||
"integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==",
|
|
||||||
"requires": {
|
|
||||||
"workbox-core": "^4.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"worker-farm": {
|
"worker-farm": {
|
||||||
"version": "1.7.0",
|
"version": "1.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
|
||||||
@ -20971,16 +20684,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"yup": {
|
"yup": {
|
||||||
"version": "0.29.1",
|
"version": "0.29.2",
|
||||||
"resolved": "https://registry.npmjs.org/yup/-/yup-0.29.1.tgz",
|
"resolved": "https://registry.npmjs.org/yup/-/yup-0.29.2.tgz",
|
||||||
"integrity": "sha512-U7mPIbgfQWI6M3hZCJdGFrr+U0laG28FxMAKIgNvgl7OtyYuUoc4uy9qCWYHZjh49b8T7Ug8NNDdiMIEytcXrQ==",
|
"integrity": "sha512-FbAAeopli+TnpZ8Lzv2M72wltLw58iWBT7wW8FuAPFPb3CelXmSKCXQbV1o4keywpIK1BZ0ULTLv2s3w1CfOwA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.9.6",
|
"@babel/runtime": "^7.10.5",
|
||||||
"fn-name": "~3.0.0",
|
"fn-name": "~3.0.0",
|
||||||
"lodash": "^4.17.15",
|
"lodash": "^4.17.15",
|
||||||
"lodash-es": "^4.17.11",
|
"lodash-es": "^4.17.11",
|
||||||
"property-expr": "^2.0.2",
|
"property-expr": "^2.0.2",
|
||||||
"synchronous-promise": "^2.0.10",
|
"synchronous-promise": "^2.0.13",
|
||||||
"toposort": "^2.0.2"
|
"toposort": "^2.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -33,10 +33,10 @@
|
|||||||
"gatsby-plugin-firebase": "^0.2.0-beta.4",
|
"gatsby-plugin-firebase": "^0.2.0-beta.4",
|
||||||
"gatsby-plugin-manifest": "^2.4.21",
|
"gatsby-plugin-manifest": "^2.4.21",
|
||||||
"gatsby-plugin-material-ui": "^2.1.9",
|
"gatsby-plugin-material-ui": "^2.1.9",
|
||||||
"gatsby-plugin-offline": "^3.2.21",
|
|
||||||
"gatsby-plugin-postcss": "^2.3.11",
|
"gatsby-plugin-postcss": "^2.3.11",
|
||||||
"gatsby-plugin-prefetch-google-fonts": "^1.4.3",
|
"gatsby-plugin-prefetch-google-fonts": "^1.4.3",
|
||||||
"gatsby-plugin-react-helmet": "^3.3.10",
|
"gatsby-plugin-react-helmet": "^3.3.10",
|
||||||
|
"gatsby-plugin-remove-serviceworker": "^1.0.0",
|
||||||
"gatsby-plugin-sharp": "^2.6.22",
|
"gatsby-plugin-sharp": "^2.6.22",
|
||||||
"gatsby-plugin-sitemap": "^2.4.11",
|
"gatsby-plugin-sitemap": "^2.4.11",
|
||||||
"gatsby-source-filesystem": "^2.3.23",
|
"gatsby-source-filesystem": "^2.3.23",
|
||||||
@ -56,8 +56,8 @@
|
|||||||
"react-scroll": "^1.8.0",
|
"react-scroll": "^1.8.0",
|
||||||
"react-toastify": "^6.0.8",
|
"react-toastify": "^6.0.8",
|
||||||
"short-unique-id": "^3.0.4",
|
"short-unique-id": "^3.0.4",
|
||||||
"uuid": "^8.2.0",
|
"uuid": "^8.3.0",
|
||||||
"yup": "^0.29.1"
|
"yup": "^0.29.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^9.8.5",
|
"autoprefixer": "^9.8.5",
|
||||||
@ -67,7 +67,7 @@
|
|||||||
"eslint-loader": "^4.0.2",
|
"eslint-loader": "^4.0.2",
|
||||||
"eslint-plugin-jsx-a11y": "^6.3.1",
|
"eslint-plugin-jsx-a11y": "^6.3.1",
|
||||||
"eslint-plugin-prettier": "^3.1.4",
|
"eslint-plugin-prettier": "^3.1.4",
|
||||||
"eslint-plugin-react": "^7.20.3",
|
"eslint-plugin-react": "^7.20.4",
|
||||||
"gatsby-plugin-eslint": "^2.0.8",
|
"gatsby-plugin-eslint": "^2.0.8",
|
||||||
"prettier": "2.0.5",
|
"prettier": "2.0.5",
|
||||||
"tailwindcss": "^1.5.2"
|
"tailwindcss": "^1.5.2"
|
||||||
|
|||||||
@ -85,7 +85,7 @@ const ResumeProvider = ({ children }) => {
|
|||||||
return newState;
|
return newState;
|
||||||
|
|
||||||
case 'change_language':
|
case 'change_language':
|
||||||
newState = clone(state);
|
newState = set(clone(state), 'metadata.language', payload);
|
||||||
items = get(
|
items = get(
|
||||||
i18next.getDataByLanguage(payload),
|
i18next.getDataByLanguage(payload),
|
||||||
'translation.builder.sections',
|
'translation.builder.sections',
|
||||||
@ -94,6 +94,7 @@ const ResumeProvider = ({ children }) => {
|
|||||||
has(newState, `${key}.heading`) &&
|
has(newState, `${key}.heading`) &&
|
||||||
set(newState, `${key}.heading`, items[key]);
|
set(newState, `${key}.heading`, items[key]);
|
||||||
});
|
});
|
||||||
|
debouncedUpdateResume(newState);
|
||||||
return newState;
|
return newState;
|
||||||
|
|
||||||
case 'reset_layout':
|
case 'reset_layout':
|
||||||
|
|||||||
@ -27,6 +27,10 @@ const languages = [
|
|||||||
code: 'de',
|
code: 'de',
|
||||||
name: 'German (Deutsche)',
|
name: 'German (Deutsche)',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
code: 'ja',
|
||||||
|
name: 'Japanese (日本人)',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
code: 'kn',
|
code: 'kn',
|
||||||
name: 'Kannada (ಕನ್ನಡ)',
|
name: 'Kannada (ಕನ್ನಡ)',
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import en from './en.json';
|
|||||||
import es from './es.json';
|
import es from './es.json';
|
||||||
import fi from './fi.json';
|
import fi from './fi.json';
|
||||||
import fr from './fr.json';
|
import fr from './fr.json';
|
||||||
|
import ja from './ja.json';
|
||||||
import kn from './kn.json';
|
import kn from './kn.json';
|
||||||
import nl from './nl.json';
|
import nl from './nl.json';
|
||||||
import ptBr from './pt-br.json';
|
import ptBr from './pt-br.json';
|
||||||
@ -16,6 +17,7 @@ export default {
|
|||||||
es: { translation: es },
|
es: { translation: es },
|
||||||
fi: { translation: fi },
|
fi: { translation: fi },
|
||||||
fr: { translation: fr },
|
fr: { translation: fr },
|
||||||
|
ja: { translation: ja },
|
||||||
kn: { translation: kn },
|
kn: { translation: kn },
|
||||||
nl: { translation: nl },
|
nl: { translation: nl },
|
||||||
ptBr: { translation: ptBr },
|
ptBr: { translation: ptBr },
|
||||||
|
|||||||
@ -77,7 +77,7 @@ const Home = () => {
|
|||||||
<strong>Well, this is the exception</strong>. Your data is your own,
|
<strong>Well, this is the exception</strong>. Your data is your own,
|
||||||
as stated in the ridiculously simple{' '}
|
as stated in the ridiculously simple{' '}
|
||||||
<Link to="/faq">Privacy Policy</Link>, I don't do anything with
|
<Link to="/faq">Privacy Policy</Link>, I don't do anything with
|
||||||
the data, it just exists on a database for the convinient features
|
the data, it just exists on a database for the convenient features
|
||||||
provided by Reactive Resume.
|
provided by Reactive Resume.
|
||||||
</Feature>
|
</Feature>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,11 +1,9 @@
|
|||||||
import dayjs from 'dayjs';
|
|
||||||
import React, { memo, useContext } from 'react';
|
import React, { memo, useContext } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
|
||||||
import ReactMarkdown from 'react-markdown';
|
import ReactMarkdown from 'react-markdown';
|
||||||
import PageContext from '../../../contexts/PageContext';
|
import PageContext from '../../../contexts/PageContext';
|
||||||
import { safetyCheck } from '../../../utils';
|
import { formatDate, safetyCheck } from '../../../utils';
|
||||||
|
|
||||||
const AwardItem = ({ item, i18n }) => (
|
const AwardItem = ({ item, language }) => (
|
||||||
<div>
|
<div>
|
||||||
<div className="flex justify-between items-center">
|
<div className="flex justify-between items-center">
|
||||||
<div className="flex flex-col text-left mr-2">
|
<div className="flex flex-col text-left mr-2">
|
||||||
@ -14,9 +12,7 @@ const AwardItem = ({ item, i18n }) => (
|
|||||||
</div>
|
</div>
|
||||||
{item.date && (
|
{item.date && (
|
||||||
<h6 className="text-xs font-medium text-right">
|
<h6 className="text-xs font-medium text-right">
|
||||||
{dayjs(item.date)
|
{formatDate({ date: item.date, language })}
|
||||||
.locale(i18n.language.substr(0, 2))
|
|
||||||
.format('MMMM YYYY')}
|
|
||||||
</h6>
|
</h6>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@ -27,7 +23,6 @@ const AwardItem = ({ item, i18n }) => (
|
|||||||
);
|
);
|
||||||
|
|
||||||
const AwardsA = () => {
|
const AwardsA = () => {
|
||||||
const { i18n } = useTranslation();
|
|
||||||
const { data, heading: Heading } = useContext(PageContext);
|
const { data, heading: Heading } = useContext(PageContext);
|
||||||
|
|
||||||
return safetyCheck(data.awards) ? (
|
return safetyCheck(data.awards) ? (
|
||||||
@ -35,7 +30,7 @@ const AwardsA = () => {
|
|||||||
<Heading>{data.awards.heading}</Heading>
|
<Heading>{data.awards.heading}</Heading>
|
||||||
<div className="grid gap-4">
|
<div className="grid gap-4">
|
||||||
{data.awards.items.map((x) => (
|
{data.awards.items.map((x) => (
|
||||||
<AwardItem key={x.id} item={x} i18n={i18n} />
|
<AwardItem key={x.id} item={x} language={data.metadata.language} />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,11 +1,9 @@
|
|||||||
import dayjs from 'dayjs';
|
|
||||||
import React, { memo, useContext } from 'react';
|
import React, { memo, useContext } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
|
||||||
import ReactMarkdown from 'react-markdown';
|
import ReactMarkdown from 'react-markdown';
|
||||||
import PageContext from '../../../contexts/PageContext';
|
import PageContext from '../../../contexts/PageContext';
|
||||||
import { safetyCheck } from '../../../utils';
|
import { formatDate, safetyCheck } from '../../../utils';
|
||||||
|
|
||||||
const CertificationItem = ({ item, i18n }) => (
|
const CertificationItem = ({ item, language }) => (
|
||||||
<div>
|
<div>
|
||||||
<div className="flex justify-between items-center">
|
<div className="flex justify-between items-center">
|
||||||
<div className="flex flex-col text-left mr-2">
|
<div className="flex flex-col text-left mr-2">
|
||||||
@ -14,9 +12,7 @@ const CertificationItem = ({ item, i18n }) => (
|
|||||||
</div>
|
</div>
|
||||||
{item.date && (
|
{item.date && (
|
||||||
<h6 className="text-xs font-medium text-right">
|
<h6 className="text-xs font-medium text-right">
|
||||||
{dayjs(item.date)
|
{formatDate({ date: item.date, language })}
|
||||||
.locale(i18n.language.substr(0, 2))
|
|
||||||
.format('MMMM YYYY')}
|
|
||||||
</h6>
|
</h6>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@ -27,7 +23,6 @@ const CertificationItem = ({ item, i18n }) => (
|
|||||||
);
|
);
|
||||||
|
|
||||||
const CertificationsA = () => {
|
const CertificationsA = () => {
|
||||||
const { i18n } = useTranslation();
|
|
||||||
const { data, heading: Heading } = useContext(PageContext);
|
const { data, heading: Heading } = useContext(PageContext);
|
||||||
|
|
||||||
return safetyCheck(data.certifications) ? (
|
return safetyCheck(data.certifications) ? (
|
||||||
@ -35,7 +30,11 @@ const CertificationsA = () => {
|
|||||||
<Heading>{data.certifications.heading}</Heading>
|
<Heading>{data.certifications.heading}</Heading>
|
||||||
<div className="grid gap-4">
|
<div className="grid gap-4">
|
||||||
{data.certifications.items.map((x) => (
|
{data.certifications.items.map((x) => (
|
||||||
<CertificationItem key={x.id} item={x} i18n={i18n} />
|
<CertificationItem
|
||||||
|
key={x.id}
|
||||||
|
item={x}
|
||||||
|
language={data.metadata.language}
|
||||||
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -40,7 +40,7 @@ const ContactA = () => {
|
|||||||
<ContactItem
|
<ContactItem
|
||||||
icon="website"
|
icon="website"
|
||||||
value={data.profile.website}
|
value={data.profile.website}
|
||||||
link={`http://${data.profile.website}`}
|
link={data.profile.website}
|
||||||
/>
|
/>
|
||||||
<ContactItem
|
<ContactItem
|
||||||
icon="email"
|
icon="email"
|
||||||
|
|||||||
@ -40,7 +40,7 @@ const ContactA = () => {
|
|||||||
<ContactItem
|
<ContactItem
|
||||||
icon="website"
|
icon="website"
|
||||||
value={data.profile.website}
|
value={data.profile.website}
|
||||||
link={`http://${data.profile.website}`}
|
link={data.profile.website}
|
||||||
/>
|
/>
|
||||||
<ContactItem
|
<ContactItem
|
||||||
icon="email"
|
icon="email"
|
||||||
|
|||||||
@ -47,7 +47,7 @@ const ContactC = () => {
|
|||||||
<ContactItem
|
<ContactItem
|
||||||
label="website"
|
label="website"
|
||||||
value={data.profile.website}
|
value={data.profile.website}
|
||||||
link={`http://${data.profile.website}`}
|
link={data.profile.website}
|
||||||
/>
|
/>
|
||||||
<ContactItem
|
<ContactItem
|
||||||
label="email"
|
label="email"
|
||||||
|
|||||||
@ -65,7 +65,7 @@ const ContactD = () => {
|
|||||||
<ContactItem
|
<ContactItem
|
||||||
label="website"
|
label="website"
|
||||||
value={data.profile.website}
|
value={data.profile.website}
|
||||||
link={`http://${data.profile.website}`}
|
link={data.profile.website}
|
||||||
/>
|
/>
|
||||||
<ContactItem
|
<ContactItem
|
||||||
label="email"
|
label="email"
|
||||||
|
|||||||
@ -47,7 +47,7 @@ const ContactE = () => {
|
|||||||
<ContactItem
|
<ContactItem
|
||||||
label="website"
|
label="website"
|
||||||
value={data.profile.website}
|
value={data.profile.website}
|
||||||
link={`http://${data.profile.website}`}
|
link={data.profile.website}
|
||||||
/>
|
/>
|
||||||
<ContactItem
|
<ContactItem
|
||||||
label="email"
|
label="email"
|
||||||
|
|||||||
@ -1,10 +1,9 @@
|
|||||||
import React, { memo, useContext } from 'react';
|
import React, { memo, useContext } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
|
||||||
import ReactMarkdown from 'react-markdown';
|
import ReactMarkdown from 'react-markdown';
|
||||||
import PageContext from '../../../contexts/PageContext';
|
import PageContext from '../../../contexts/PageContext';
|
||||||
import { formatDateRange, safetyCheck } from '../../../utils';
|
import { formatDateRange, safetyCheck } from '../../../utils';
|
||||||
|
|
||||||
const EducationItem = ({ item, i18n }) => (
|
const EducationItem = ({ item, language }) => (
|
||||||
<div>
|
<div>
|
||||||
<div className="flex justify-between items-center">
|
<div className="flex justify-between items-center">
|
||||||
<div className="flex flex-col text-left mr-2">
|
<div className="flex flex-col text-left mr-2">
|
||||||
@ -20,7 +19,7 @@ const EducationItem = ({ item, i18n }) => (
|
|||||||
{formatDateRange({
|
{formatDateRange({
|
||||||
startDate: item.startDate,
|
startDate: item.startDate,
|
||||||
endDate: item.endDate,
|
endDate: item.endDate,
|
||||||
language: i18n.language,
|
language,
|
||||||
})}
|
})}
|
||||||
)
|
)
|
||||||
</h6>
|
</h6>
|
||||||
@ -35,7 +34,6 @@ const EducationItem = ({ item, i18n }) => (
|
|||||||
);
|
);
|
||||||
|
|
||||||
const EducationA = () => {
|
const EducationA = () => {
|
||||||
const { i18n } = useTranslation();
|
|
||||||
const { data, heading: Heading } = useContext(PageContext);
|
const { data, heading: Heading } = useContext(PageContext);
|
||||||
|
|
||||||
return safetyCheck(data.education) ? (
|
return safetyCheck(data.education) ? (
|
||||||
@ -43,7 +41,11 @@ const EducationA = () => {
|
|||||||
<Heading>{data.education.heading}</Heading>
|
<Heading>{data.education.heading}</Heading>
|
||||||
<div className="grid gap-4">
|
<div className="grid gap-4">
|
||||||
{data.education.items.map((x) => (
|
{data.education.items.map((x) => (
|
||||||
<EducationItem key={x.id} item={x} i18n={i18n} />
|
<EducationItem
|
||||||
|
key={x.id}
|
||||||
|
item={x}
|
||||||
|
language={data.metadata.language}
|
||||||
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,11 +1,9 @@
|
|||||||
import dayjs from 'dayjs';
|
|
||||||
import React, { memo, useContext } from 'react';
|
import React, { memo, useContext } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
|
||||||
import ReactMarkdown from 'react-markdown';
|
import ReactMarkdown from 'react-markdown';
|
||||||
import PageContext from '../../../contexts/PageContext';
|
import PageContext from '../../../contexts/PageContext';
|
||||||
import { safetyCheck } from '../../../utils';
|
import { formatDate, safetyCheck } from '../../../utils';
|
||||||
|
|
||||||
const ProjectItem = ({ item, i18n }) => (
|
const ProjectItem = ({ item, language }) => (
|
||||||
<div>
|
<div>
|
||||||
<div className="flex justify-between items-center">
|
<div className="flex justify-between items-center">
|
||||||
<div className="flex flex-col text-left mr-2">
|
<div className="flex flex-col text-left mr-2">
|
||||||
@ -18,9 +16,7 @@ const ProjectItem = ({ item, i18n }) => (
|
|||||||
</div>
|
</div>
|
||||||
{item.date && (
|
{item.date && (
|
||||||
<h6 className="text-xs font-medium text-right">
|
<h6 className="text-xs font-medium text-right">
|
||||||
{dayjs(item.date)
|
{formatDate({ date: item.date, language })}
|
||||||
.locale(i18n.language.substr(0, 2))
|
|
||||||
.format('MMMM YYYY')}
|
|
||||||
</h6>
|
</h6>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@ -31,7 +27,6 @@ const ProjectItem = ({ item, i18n }) => (
|
|||||||
);
|
);
|
||||||
|
|
||||||
const ProjectsA = () => {
|
const ProjectsA = () => {
|
||||||
const { i18n } = useTranslation();
|
|
||||||
const { data, heading: Heading } = useContext(PageContext);
|
const { data, heading: Heading } = useContext(PageContext);
|
||||||
|
|
||||||
return safetyCheck(data.projects) ? (
|
return safetyCheck(data.projects) ? (
|
||||||
@ -39,7 +34,7 @@ const ProjectsA = () => {
|
|||||||
<Heading>{data.projects.heading}</Heading>
|
<Heading>{data.projects.heading}</Heading>
|
||||||
<div className="grid gap-4">
|
<div className="grid gap-4">
|
||||||
{data.projects.items.map((x) => (
|
{data.projects.items.map((x) => (
|
||||||
<ProjectItem key={x.id} item={x} i18n={i18n} />
|
<ProjectItem key={x.id} item={x} language={data.metadata.language} />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,10 +1,9 @@
|
|||||||
import React, { memo, useContext } from 'react';
|
import React, { memo, useContext } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
|
||||||
import ReactMarkdown from 'react-markdown';
|
import ReactMarkdown from 'react-markdown';
|
||||||
import PageContext from '../../../contexts/PageContext';
|
import PageContext from '../../../contexts/PageContext';
|
||||||
import { formatDateRange, safetyCheck } from '../../../utils';
|
import { formatDateRange, safetyCheck } from '../../../utils';
|
||||||
|
|
||||||
const WorkItem = ({ item, i18n }) => (
|
const WorkItem = ({ item, language }) => (
|
||||||
<div>
|
<div>
|
||||||
<div className="flex justify-between items-center">
|
<div className="flex justify-between items-center">
|
||||||
<div className="flex flex-col text-left mr-2">
|
<div className="flex flex-col text-left mr-2">
|
||||||
@ -17,7 +16,7 @@ const WorkItem = ({ item, i18n }) => (
|
|||||||
{formatDateRange({
|
{formatDateRange({
|
||||||
startDate: item.startDate,
|
startDate: item.startDate,
|
||||||
endDate: item.endDate,
|
endDate: item.endDate,
|
||||||
language: i18n.language,
|
language,
|
||||||
})}
|
})}
|
||||||
)
|
)
|
||||||
</h6>
|
</h6>
|
||||||
@ -30,7 +29,6 @@ const WorkItem = ({ item, i18n }) => (
|
|||||||
);
|
);
|
||||||
|
|
||||||
const WorkA = () => {
|
const WorkA = () => {
|
||||||
const { i18n } = useTranslation();
|
|
||||||
const { data, heading: Heading } = useContext(PageContext);
|
const { data, heading: Heading } = useContext(PageContext);
|
||||||
|
|
||||||
return safetyCheck(data.work) ? (
|
return safetyCheck(data.work) ? (
|
||||||
@ -38,7 +36,7 @@ const WorkA = () => {
|
|||||||
<Heading>{data.work.heading}</Heading>
|
<Heading>{data.work.heading}</Heading>
|
||||||
<div className="grid gap-4">
|
<div className="grid gap-4">
|
||||||
{data.work.items.map((x) => (
|
{data.work.items.map((x) => (
|
||||||
<WorkItem key={x.id} item={x} i18n={i18n} />
|
<WorkItem key={x.id} item={x} language={data.metadata.language} />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import 'dayjs/locale/en';
|
|||||||
import 'dayjs/locale/es';
|
import 'dayjs/locale/es';
|
||||||
import 'dayjs/locale/fi';
|
import 'dayjs/locale/fi';
|
||||||
import 'dayjs/locale/fr';
|
import 'dayjs/locale/fr';
|
||||||
|
import 'dayjs/locale/ja';
|
||||||
import 'dayjs/locale/kn';
|
import 'dayjs/locale/kn';
|
||||||
import 'dayjs/locale/nl';
|
import 'dayjs/locale/nl';
|
||||||
import 'dayjs/locale/pt';
|
import 'dayjs/locale/pt';
|
||||||
|
|||||||
@ -22,7 +22,11 @@ export const isFileImage = (file) => {
|
|||||||
return file && acceptedImageTypes.includes(file.type);
|
return file && acceptedImageTypes.includes(file.type);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const formatDateRange = ({ startDate, endDate, language }) => {
|
export const formatDate = ({ date, language = 'en' }) => {
|
||||||
|
return dayjs(date).locale(language.substr(0, 2)).format('MMMM YYYY');
|
||||||
|
};
|
||||||
|
|
||||||
|
export const formatDateRange = ({ startDate, endDate, language = 'en' }) => {
|
||||||
const start = `${dayjs(startDate)
|
const start = `${dayjs(startDate)
|
||||||
.locale(language.substr(0, 2))
|
.locale(language.substr(0, 2))
|
||||||
.format('MMMM YYYY')}`;
|
.format('MMMM YYYY')}`;
|
||||||
|
|||||||
Reference in New Issue
Block a user