diff --git a/gatsby-browser.js b/gatsby-browser.js
index 8f75b786..828aea0c 100644
--- a/gatsby-browser.js
+++ b/gatsby-browser.js
@@ -1,11 +1,11 @@
import { createMuiTheme, MuiThemeProvider } from '@material-ui/core';
+import 'animate.css';
import 'firebase/analytics';
import 'firebase/auth';
import 'firebase/database';
import 'firebase/storage';
import React from 'react';
import { DatabaseProvider } from './src/contexts/DatabaseContext';
-import { MetadataProvider } from './src/contexts/MetadataContext';
import { ModalProvider } from './src/contexts/ModalContext';
import { ResumeProvider } from './src/contexts/ResumeContext';
import { StorageProvider } from './src/contexts/StorageContext';
@@ -32,9 +32,7 @@ export const wrapRootElement = ({ element }) => (
-
- {element}
-
+ {element}
diff --git a/package-lock.json b/package-lock.json
index fdb5ef51..fa762c1f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2700,6 +2700,11 @@
"resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM="
},
+ "animate.css": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.0.tgz",
+ "integrity": "sha512-0aVcfWDeU9ykV6vjn1P67ZSs01jxoUQZCGaYbkk0SIIelIG8kUdLrIkua1+VabHfTtsSivDRMMn0ILPvZum2gw=="
+ },
"ansi-align": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
@@ -8225,9 +8230,9 @@
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
},
"gatsby": {
- "version": "2.24.0",
- "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-2.24.0.tgz",
- "integrity": "sha512-l/9ueKdnHNB3+nbzZRaj2mYWJMAay7PwMN+M0VfdIgA2K6d/lz3xI8W5BRNmNJyuk8itykB64r7NFNxsnTChRw==",
+ "version": "2.24.1",
+ "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-2.24.1.tgz",
+ "integrity": "sha512-aqFfx+Vj3kBhS17tgL1LrkMzip2Xctd3lCj+pogCGV9GCkg6wOqW2uOEqWeoiCNq09sPuwv3GNB8sbEFoQ/2DA==",
"requires": {
"@babel/code-frame": "^7.10.3",
"@babel/core": "^7.10.3",
@@ -8543,11 +8548,6 @@
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg=="
},
- "is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
- },
"lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -8556,49 +8556,11 @@
"yallist": "^3.0.2"
}
},
- "mini-css-extract-plugin": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz",
- "integrity": "sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw==",
- "requires": {
- "loader-utils": "^1.1.0",
- "normalize-url": "1.9.1",
- "schema-utils": "^1.0.0",
- "webpack-sources": "^1.1.0"
- }
- },
"node-fetch": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
- "normalize-url": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
- "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
- "requires": {
- "object-assign": "^4.0.1",
- "prepend-http": "^1.0.0",
- "query-string": "^4.1.0",
- "sort-keys": "^1.0.0"
- },
- "dependencies": {
- "query-string": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
- "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
- "requires": {
- "object-assign": "^4.1.0",
- "strict-uri-encode": "^1.0.0"
- }
- }
- }
- },
- "prepend-http": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
- "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw="
- },
"regexpp": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
@@ -8612,29 +8574,11 @@
"glob": "^7.1.3"
}
},
- "schema-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
- }
- },
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
},
- "sort-keys": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
- "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
- "requires": {
- "is-plain-obj": "^1.0.0"
- }
- },
"source-map": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
@@ -12667,10 +12611,9 @@
}
},
"mini-css-extract-plugin": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz",
- "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==",
- "dev": true,
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz",
+ "integrity": "sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw==",
"requires": {
"loader-utils": "^1.1.0",
"normalize-url": "1.9.1",
@@ -12681,14 +12624,12 @@
"is-plain-obj": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
- "dev": true
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
},
"normalize-url": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
"integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
- "dev": true,
"requires": {
"object-assign": "^4.0.1",
"prepend-http": "^1.0.0",
@@ -12699,14 +12640,12 @@
"prepend-http": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
- "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
- "dev": true
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw="
},
"query-string": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
"integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
- "dev": true,
"requires": {
"object-assign": "^4.1.0",
"strict-uri-encode": "^1.0.0"
@@ -12716,7 +12655,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
"integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "dev": true,
"requires": {
"ajv": "^6.1.0",
"ajv-errors": "^1.0.0",
@@ -12727,7 +12665,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
"integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
- "dev": true,
"requires": {
"is-plain-obj": "^1.0.0"
}
diff --git a/package.json b/package.json
index cc7e6ffa..6f0bd3d5 100644
--- a/package.json
+++ b/package.json
@@ -18,12 +18,13 @@
"dependencies": {
"@material-ui/core": "^4.11.0",
"@reach/router": "^1.3.4",
+ "animate.css": "^4.1.0",
"array-move": "^2.2.2",
"classnames": "^2.2.6",
"dotenv": "^8.2.0",
"firebase": "^7.15.5",
"formik": "^2.1.4",
- "gatsby": "^2.24.0",
+ "gatsby": "^2.24.1",
"gatsby-image": "^2.4.13",
"gatsby-plugin-create-client-paths": "^2.3.10",
"gatsby-plugin-firebase": "^0.2.0-beta.4",
diff --git a/src/components/builder/center/Artboard.js b/src/components/builder/center/Artboard.js
index 71a4d21f..3480dd2b 100644
--- a/src/components/builder/center/Artboard.js
+++ b/src/components/builder/center/Artboard.js
@@ -1,14 +1,13 @@
import React, { memo } from 'react';
import { Helmet } from 'react-helmet';
-import { useSelector as useMetadataSelector } from '../../../contexts/MetadataContext';
-import { useSelector as useResumeSelector } from '../../../contexts/ResumeContext';
+import { useSelector } from '../../../contexts/ResumeContext';
import Onyx from '../../../templates/Onyx';
import styles from './Artboard.module.css';
const Artboard = () => {
- const { template, layout, colors } = useMetadataSelector((store) => store);
- const state = useResumeSelector((store) => store);
- const { id, name } = state;
+ const state = useSelector();
+ const { id, name, metadata } = state;
+ const { template } = metadata;
return (
@@ -18,9 +17,7 @@ const Artboard = () => {
- {template === 'Onyx' && (
-
- )}
+ {template === 'onyx' && }
);
diff --git a/src/components/builder/left/LeftNavbar.js b/src/components/builder/left/LeftNavbar.js
index 7b396fd4..1194e393 100644
--- a/src/components/builder/left/LeftNavbar.js
+++ b/src/components/builder/left/LeftNavbar.js
@@ -14,7 +14,7 @@ const LeftNavbar = () => (
-
+
{sections.map((x) => (
{
const path = `${id}.items`;
diff --git a/src/components/builder/sections/Certifications.js b/src/components/builder/left/sections/Certifications.js
similarity index 82%
rename from src/components/builder/sections/Certifications.js
rename to src/components/builder/left/sections/Certifications.js
index f8284085..ce3bbff1 100644
--- a/src/components/builder/sections/Certifications.js
+++ b/src/components/builder/left/sections/Certifications.js
@@ -1,6 +1,6 @@
import React, { memo } from 'react';
-import Heading from '../../shared/Heading';
-import List from '../lists/List';
+import Heading from '../../../shared/Heading';
+import List from '../../lists/List';
const Certifications = ({ id, name, event }) => {
const path = `${id}.items`;
diff --git a/src/components/builder/sections/Education.js b/src/components/builder/left/sections/Education.js
similarity index 81%
rename from src/components/builder/sections/Education.js
rename to src/components/builder/left/sections/Education.js
index 2ab0e329..535ca3c3 100644
--- a/src/components/builder/sections/Education.js
+++ b/src/components/builder/left/sections/Education.js
@@ -1,6 +1,6 @@
import React, { memo } from 'react';
-import Heading from '../../shared/Heading';
-import List from '../lists/List';
+import Heading from '../../../shared/Heading';
+import List from '../../lists/List';
const Education = ({ id, name, event }) => {
const path = `${id}.items`;
diff --git a/src/components/builder/sections/Hobbies.js b/src/components/builder/left/sections/Hobbies.js
similarity index 77%
rename from src/components/builder/sections/Hobbies.js
rename to src/components/builder/left/sections/Hobbies.js
index b3d9352e..10f2675e 100644
--- a/src/components/builder/sections/Hobbies.js
+++ b/src/components/builder/left/sections/Hobbies.js
@@ -1,6 +1,6 @@
import React, { memo } from 'react';
-import Heading from '../../shared/Heading';
-import List from '../lists/List';
+import Heading from '../../../shared/Heading';
+import List from '../../lists/List';
const Hobbies = ({ id, name, event }) => {
const path = `${id}.items`;
diff --git a/src/components/builder/sections/Languages.js b/src/components/builder/left/sections/Languages.js
similarity index 78%
rename from src/components/builder/sections/Languages.js
rename to src/components/builder/left/sections/Languages.js
index 9777b28c..8b02e505 100644
--- a/src/components/builder/sections/Languages.js
+++ b/src/components/builder/left/sections/Languages.js
@@ -1,6 +1,6 @@
import React, { memo } from 'react';
-import Heading from '../../shared/Heading';
-import List from '../lists/List';
+import Heading from '../../../shared/Heading';
+import List from '../../lists/List';
const Languages = ({ id, name, event }) => {
const path = `${id}.items`;
diff --git a/src/components/builder/sections/Objective.js b/src/components/builder/left/sections/Objective.js
similarity index 73%
rename from src/components/builder/sections/Objective.js
rename to src/components/builder/left/sections/Objective.js
index af92699c..f42ae5d5 100644
--- a/src/components/builder/sections/Objective.js
+++ b/src/components/builder/left/sections/Objective.js
@@ -1,6 +1,6 @@
import React, { memo } from 'react';
-import Heading from '../../shared/Heading';
-import Input from '../../shared/Input';
+import Heading from '../../../shared/Heading';
+import Input from '../../../shared/Input';
const Objective = () => {
return (
diff --git a/src/components/builder/sections/Profile.js b/src/components/builder/left/sections/Profile.js
similarity index 89%
rename from src/components/builder/sections/Profile.js
rename to src/components/builder/left/sections/Profile.js
index d61ff3b9..93682815 100644
--- a/src/components/builder/sections/Profile.js
+++ b/src/components/builder/left/sections/Profile.js
@@ -1,7 +1,7 @@
import React, { memo } from 'react';
-import Heading from '../../shared/Heading';
-import Input from '../../shared/Input';
-import PhotoUpload from '../../shared/PhotoUpload';
+import Heading from '../../../shared/Heading';
+import Input from '../../../shared/Input';
+import PhotoUpload from '../../../shared/PhotoUpload';
const Profile = () => {
return (
diff --git a/src/components/builder/sections/References.js b/src/components/builder/left/sections/References.js
similarity index 81%
rename from src/components/builder/sections/References.js
rename to src/components/builder/left/sections/References.js
index 533d98ee..dcaa98fa 100644
--- a/src/components/builder/sections/References.js
+++ b/src/components/builder/left/sections/References.js
@@ -1,6 +1,6 @@
import React, { memo } from 'react';
-import Heading from '../../shared/Heading';
-import List from '../lists/List';
+import Heading from '../../../shared/Heading';
+import List from '../../lists/List';
const References = ({ id, name, event }) => {
const path = `${id}.items`;
diff --git a/src/components/builder/sections/Skills.js b/src/components/builder/left/sections/Skills.js
similarity index 78%
rename from src/components/builder/sections/Skills.js
rename to src/components/builder/left/sections/Skills.js
index 1ed5b58f..66851955 100644
--- a/src/components/builder/sections/Skills.js
+++ b/src/components/builder/left/sections/Skills.js
@@ -1,6 +1,6 @@
import React, { memo } from 'react';
-import Heading from '../../shared/Heading';
-import List from '../lists/List';
+import Heading from '../../../shared/Heading';
+import List from '../../lists/List';
const Skills = ({ id, name, event }) => {
const path = `${id}.items`;
diff --git a/src/components/builder/sections/Social.js b/src/components/builder/left/sections/Social.js
similarity index 80%
rename from src/components/builder/sections/Social.js
rename to src/components/builder/left/sections/Social.js
index 5ddf11fa..271caee5 100644
--- a/src/components/builder/sections/Social.js
+++ b/src/components/builder/left/sections/Social.js
@@ -1,6 +1,6 @@
import React, { memo } from 'react';
-import Heading from '../../shared/Heading';
-import List from '../lists/List';
+import Heading from '../../../shared/Heading';
+import List from '../../lists/List';
const Social = ({ id, name, event }) => {
const path = `${id}.items`;
diff --git a/src/components/builder/sections/Work.js b/src/components/builder/left/sections/Work.js
similarity index 80%
rename from src/components/builder/sections/Work.js
rename to src/components/builder/left/sections/Work.js
index a7c9c89d..11637c35 100644
--- a/src/components/builder/sections/Work.js
+++ b/src/components/builder/left/sections/Work.js
@@ -1,6 +1,6 @@
import React, { memo } from 'react';
-import Heading from '../../shared/Heading';
-import List from '../lists/List';
+import Heading from '../../../shared/Heading';
+import List from '../../lists/List';
const Work = ({ id, name, event }) => {
const path = `${id}.items`;
diff --git a/src/components/builder/lists/List.js b/src/components/builder/lists/List.js
index 9ec8be33..24f92c3b 100644
--- a/src/components/builder/lists/List.js
+++ b/src/components/builder/lists/List.js
@@ -20,7 +20,7 @@ const List = ({
hasDate,
event,
}) => {
- const items = useSelector((state) => get(state, path, []));
+ const items = useSelector(path, []);
const { emitter } = useContext(ModalContext);
const handleAdd = () => emitter.emit(event);
diff --git a/src/components/builder/lists/ListItem.js b/src/components/builder/lists/ListItem.js
index 058dd010..33976585 100644
--- a/src/components/builder/lists/ListItem.js
+++ b/src/components/builder/lists/ListItem.js
@@ -82,7 +82,7 @@ const ListItem = ({
size="18px"
aria-haspopup="true"
onClick={handleClick}
- className="cursor-pointer"
+ className="cursor-context-menu"
/>