diff --git a/public/index.html b/public/index.html
index f791a688..2ce3959f 100644
--- a/public/index.html
+++ b/public/index.html
@@ -26,7 +26,7 @@
Reactive Resume
-
+
diff --git a/src/assets/dummy/data.json b/src/assets/dummy/data.json
index dc525b4d..648dde50 100644
--- a/src/assets/dummy/data.json
+++ b/src/assets/dummy/data.json
@@ -1 +1,231 @@
-{"data":{"profile":{"heading":"Profile","photo":"https://i.imgur.com/Icr472Z.jpg","firstName":"Nancy","lastName":"Jackson","subtitle":"Customer Sales Representative","address":{"line1":"3879 Gateway Avenue","line2":"Bakersfield,","line3":"California, USA"},"phone":"+1 661-808-4188","website":"nancyontheweb.com","email":"nancyjack43@gmail.com"},"objective":{"enable":true,"heading":"Professional Objective","body":"To obtain a job within my chosen field that will challenge me and allow me to use my education, skills and past experiences in a way that is mutually beneficial to both myself and my employer and allow for future growth and advancement."},"work":{"enable":true,"heading":"Work Experience","items":[{"id":"a208ec03-76e3-4428-ac5b-e17c3de4ac18","title":"On Point Electronics, NYC, NY","role":"Customer Service Representative","start":"Jan 2013","end":"July 2018","description":"- Organized customer information and account data for business planning and customer service purposes.\n- Created excel spreadsheets to track customer data and perform intense reconciliation process.\n- Received 97% positive customer survey results.\n- Speed on calls was 10% above team average. \n**Key Achievement:** Designed and executed an automatized system for following up with customers, increasing customer retention by 22%."},{"id":"bd8649f2-42d1-4424-acaf-a02c08c3322c","title":"Excelsior Communications, NYC, NY","role":"Customer Service Representative","start":"Oct 2009","end":"Dec 2012","description":"- Worked as a full time customer service rep in a high volume call center.\n- Received \"Associate of the Month\" award six times.\n- Chosen as an example for other associates in trainings. \n**Key Achievement:** Received Customer Appreciation bonus in three of four years."},{"id":"dde47711-a7a6-424f-9751-73483a0ef4ed","title":"Pizza Hut, Newark, NJ","role":"Waitress","start":"Aug 2005","end":"Sep 2009","description":"- Worked passionately in customer service in a high volume restaurant.\n- Completed the FAST customer service training class.\n- Maintained a high tip average thanks to consistent customer satisfaction."}]},"education":{"enable":true,"heading":"Education","items":[{"id":"624f32ab-2d78-4052-86ad-1354fd41d754","name":"The City College of New York, NYC, NY","major":"MS in Computer Science","start":"Sep 2001","end":"Aug 2002","grade":"","description":""},{"id":"71a9852f-ed14-4281-bff2-4db9a2275978","name":"University of California, Berkeley, CA","major":"BS in Computer Science","start":"Sep 1997","end":"Aug 2001","grade":"","description":""}]},"awards":{"enable":true,"heading":"Honors & Awards","items":[{"id":"121f0976-18cb-4e46-921d-0e156b6bf7fb","title":"Cast Member of a Musical - Oklahoma","subtitle":"Winter, 2007","description":""},{"id":"e5f27346-72ad-4d4f-bab3-726a111e4932","title":"Class Representative to ASB","subtitle":"Fall, 2008","description":""},{"id":"f71ba9bc-8c14-46b5-99dd-e1333e9aceb9","title":"Most Improved - Varsity Soccer","subtitle":"Fall, 2007","description":""}]},"certifications":{"enable":true,"heading":"Certifications","items":[{"id":"e5170d99-b21d-4131-a7dc-26a4670037f5","title":"CCNP","subtitle":"Cisco Systems","description":""},{"id":"788e4042-9ecb-40c5-849d-7688b4e23888","title":"VCP6-DCV","subtitle":"VMWare","description":""},{"id":"97a1a8d9-3c03-47fb-93ab-e84f864ffe17","title":"DCUCI Exam","subtitle":"","description":""}]},"skills":{"enable":true,"heading":"Skills","items":["Customer Service Expertise","High-Volume Call Center","Team Leader/Problem Solver","Call Center Management","Teambuilding & Training","Continuous Improvement"]},"languages":{"enable":true,"heading":"Languages","items":[{"id":"9d34cfcb-c9f0-4d25-ab27-cf81652dd1d0","key":"English (US)","value":5},{"id":"3511a86b-7ea9-44ac-8144-6acc7f3bd54f","key":"Spanish","value":4},{"id":"d1e17542-f7cc-473a-aa0e-978765907454","key":"French","value":4},{"id":"b1e8442a-7059-4c6f-8a9c-415383133b0e","key":"German","value":3}]},"references":{"enable":true,"heading":"References","items":[{"id":"ba3662e6-29cb-4a03-9766-b3618d1621f3","name":"Lorraine Beasley","position":"Head of HR, Carson Logistics","phone":"+1 661-808-4188","email":"l.beasley@carsonlogistics.com","description":""},{"id":"62fd3293-0e93-4242-882b-ae19b7865fef","name":"Mikhail Nabakov","position":"Assistant Manager, Bullseye","phone":"+1 661-808-4188","email":"mikhail@bullseyemart.nyc","description":""},{"id":"eaab2e32-8591-497c-8676-d122cf3a4798","name":"Katherine Rose","position":"CEO , DownToPlay","phone":"+1 661-808-4188","email":"k.rose@downtoplay.xyz","description":""}]},"extras":{"enable":true,"heading":"Additional Information","items":[{"id":"3834a270-2c01-4105-b670-80863c955347","key":"Skype","value":"@NancyJack5436"},{"id":"b0c4fd85-cfda-421e-bd31-008b9aad1dfe","key":"Hometown","value":"New Jersey, NY"},{"id":"7f0a4971-9770-4ca7-b135-2b0ccd867879","key":"Hobbies","value":"Playing Soccer & Guitar"},{"id":"e17552a2-e7e9-4605-8145-795e2b62c30e","key":"Valid Work Visas","value":"US, UK, EU"}]}},"theme":{"layout":"Pikachu","font":{"family":"Montserrat"},"colors":{"background":"#ffffff","primary":"#212121","accent":"#f44336"}}}
\ No newline at end of file
+{
+ "data": {
+ "profile": {
+ "heading": "Profile",
+ "photo": "https://i.imgur.com/Icr472Z.jpg",
+ "firstName": "Nancy",
+ "lastName": "Jackson",
+ "subtitle": "Customer Sales Representative",
+ "address": {
+ "line1": "3879 Gateway Avenue",
+ "line2": "Bakersfield,",
+ "line3": "California, USA"
+ },
+ "phone": "+1 661-808-4188",
+ "website": "nancyontheweb.com",
+ "email": "nancyjack43@gmail.com"
+ },
+ "objective": {
+ "enable": true,
+ "heading": "Professional Objective",
+ "body": "To obtain a job within my chosen field that will challenge me and allow me to use my education, skills and past experiences in a way that is mutually beneficial to both myself and my employer and allow for future growth and advancement."
+ },
+ "work": {
+ "enable": true,
+ "heading": "Work Experience",
+ "items": [
+ {
+ "id": "a208ec03-76e3-4428-ac5b-e17c3de4ac18",
+ "title": "On Point Electronics, NYC, NY",
+ "role": "Customer Service Representative",
+ "start": "Jan 2013",
+ "end": "July 2018",
+ "description": "- Organized customer information and account data for business planning and customer service purposes.\n- Created excel spreadsheets to track customer data and perform intense reconciliation process.\n- Received 97% positive customer survey results.\n- Speed on calls was 10% above team average. \n**Key Achievement:** Designed and executed an automatized system for following up with customers, increasing customer retention by 22%."
+ },
+ {
+ "id": "bd8649f2-42d1-4424-acaf-a02c08c3322c",
+ "title": "Excelsior Communications, NYC, NY",
+ "role": "Customer Service Representative",
+ "start": "Oct 2009",
+ "end": "Dec 2012",
+ "description": "- Worked as a full time customer service rep in a high volume call center.\n- Received \"Associate of the Month\" award six times.\n- Chosen as an example for other associates in trainings. \n**Key Achievement:** Received Customer Appreciation bonus in three of four years."
+ },
+ {
+ "id": "dde47711-a7a6-424f-9751-73483a0ef4ed",
+ "title": "Pizza Hut, Newark, NJ",
+ "role": "Waitress",
+ "start": "Aug 2005",
+ "end": "Sep 2009",
+ "description": "- Worked passionately in customer service in a high volume restaurant.\n- Completed the FAST customer service training class.\n- Maintained a high tip average thanks to consistent customer satisfaction."
+ }
+ ]
+ },
+ "education": {
+ "enable": true,
+ "heading": "Education",
+ "items": [
+ {
+ "id": "624f32ab-2d78-4052-86ad-1354fd41d754",
+ "name": "The City College of New York, NYC, NY",
+ "major": "MS in Computer Science",
+ "start": "Sep 2001",
+ "end": "Aug 2002",
+ "grade": "",
+ "description": ""
+ },
+ {
+ "id": "71a9852f-ed14-4281-bff2-4db9a2275978",
+ "name": "University of California, Berkeley, CA",
+ "major": "BS in Computer Science",
+ "start": "Sep 1997",
+ "end": "Aug 2001",
+ "grade": "",
+ "description": ""
+ }
+ ]
+ },
+ "awards": {
+ "enable": true,
+ "heading": "Honors & Awards",
+ "items": [
+ {
+ "id": "121f0976-18cb-4e46-921d-0e156b6bf7fb",
+ "title": "Cast Member of a Musical - Oklahoma",
+ "subtitle": "Winter, 2007",
+ "description": ""
+ },
+ {
+ "id": "e5f27346-72ad-4d4f-bab3-726a111e4932",
+ "title": "Class Representative to ASB",
+ "subtitle": "Fall, 2008",
+ "description": ""
+ },
+ {
+ "id": "f71ba9bc-8c14-46b5-99dd-e1333e9aceb9",
+ "title": "Most Improved - Varsity Soccer",
+ "subtitle": "Fall, 2007",
+ "description": ""
+ }
+ ]
+ },
+ "certifications": {
+ "enable": true,
+ "heading": "Certifications",
+ "items": [
+ {
+ "id": "e5170d99-b21d-4131-a7dc-26a4670037f5",
+ "title": "CCNP",
+ "subtitle": "Cisco Systems",
+ "description": ""
+ },
+ {
+ "id": "788e4042-9ecb-40c5-849d-7688b4e23888",
+ "title": "VCP6-DCV",
+ "subtitle": "VMWare",
+ "description": ""
+ },
+ {
+ "id": "97a1a8d9-3c03-47fb-93ab-e84f864ffe17",
+ "title": "DCUCI Exam",
+ "subtitle": "",
+ "description": ""
+ }
+ ]
+ },
+ "skills": {
+ "enable": true,
+ "heading": "Skills",
+ "items": [
+ "Customer Service Expertise",
+ "High-Volume Call Center",
+ "Team Leader/Problem Solver",
+ "Call Center Management",
+ "Teambuilding & Training",
+ "Continuous Improvement"
+ ]
+ },
+ "languages": {
+ "enable": true,
+ "heading": "Languages",
+ "items": [
+ {
+ "id": "9d34cfcb-c9f0-4d25-ab27-cf81652dd1d0",
+ "key": "English (US)",
+ "value": 5
+ },
+ {
+ "id": "3511a86b-7ea9-44ac-8144-6acc7f3bd54f",
+ "key": "Spanish",
+ "value": 4
+ },
+ {
+ "id": "d1e17542-f7cc-473a-aa0e-978765907454",
+ "key": "French",
+ "value": 4
+ },
+ {
+ "id": "b1e8442a-7059-4c6f-8a9c-415383133b0e",
+ "key": "German",
+ "value": 3
+ }
+ ]
+ },
+ "references": {
+ "enable": true,
+ "heading": "References",
+ "items": [
+ {
+ "id": "ba3662e6-29cb-4a03-9766-b3618d1621f3",
+ "name": "Lorraine Beasley",
+ "position": "Head of HR, Carson Logistics",
+ "phone": "+1 661-808-4188",
+ "email": "l.beasley@carsonlogistics.com",
+ "description": ""
+ },
+ {
+ "id": "62fd3293-0e93-4242-882b-ae19b7865fef",
+ "name": "Mikhail Nabakov",
+ "position": "Assistant Manager, Bullseye",
+ "phone": "+1 661-808-4188",
+ "email": "mikhail@bullseyemart.nyc",
+ "description": ""
+ },
+ {
+ "id": "eaab2e32-8591-497c-8676-d122cf3a4798",
+ "name": "Katherine Rose",
+ "position": "CEO , DownToPlay",
+ "phone": "+1 661-808-4188",
+ "email": "k.rose@downtoplay.xyz",
+ "description": ""
+ }
+ ]
+ },
+ "extras": {
+ "enable": true,
+ "heading": "Additional Information",
+ "items": [
+ {
+ "id": "3834a270-2c01-4105-b670-80863c955347",
+ "key": "Skype",
+ "value": "@NancyJack5436"
+ },
+ {
+ "id": "b0c4fd85-cfda-421e-bd31-008b9aad1dfe",
+ "key": "Hometown",
+ "value": "New Jersey, NY"
+ },
+ {
+ "id": "7f0a4971-9770-4ca7-b135-2b0ccd867879",
+ "key": "Hobbies",
+ "value": "Playing Soccer & Guitar"
+ },
+ {
+ "id": "e17552a2-e7e9-4605-8145-795e2b62c30e",
+ "key": "Valid Work Visas",
+ "value": "US, UK, EU"
+ }
+ ]
+ }
+ },
+ "theme": {
+ "layout": "Pikachu",
+ "font": {
+ "family": "Montserrat"
+ },
+ "colors": {
+ "background": "#ffffff",
+ "primary": "#212121",
+ "accent": "#f44336"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/components/App/App.js b/src/components/App/App.js
index cd4e5e15..3ec26b9e 100644
--- a/src/components/App/App.js
+++ b/src/components/App/App.js
@@ -7,8 +7,9 @@ import AppContext from '../../context/AppContext';
// Resume Templates
import Onyx from '../../templates/onyx';
-import Pikachu from '../../templates/pikachu/Pikachu';
-import Gengar from '../../templates/gengar/Gengar';
+import Pikachu from '../../templates/pikachu';
+import Gengar from '../../templates/gengar';
+import Castform from '../../templates/castform';
const App = () => {
const context = useContext(AppContext);
@@ -28,6 +29,8 @@ const App = () => {
return ;
case 'Gengar':
return ;
+ case 'Castform':
+ return ;
default:
return null;
}
diff --git a/src/components/RightSidebar/tabs/Templates.js b/src/components/RightSidebar/tabs/Templates.js
index 33899f18..e703d9c3 100644
--- a/src/components/RightSidebar/tabs/Templates.js
+++ b/src/components/RightSidebar/tabs/Templates.js
@@ -2,6 +2,7 @@ import React from 'react';
import Onyx, { Image as OnyxPreview } from '../../../templates/onyx';
import Pikachu, { Image as PikachuPreview } from '../../../templates/pikachu';
import Gengar, { Image as GengarPreview } from '../../../templates/gengar';
+import Castform, { Image as CastformPreview } from '../../../templates/castform';
const templates = [
{
@@ -19,6 +20,11 @@ const templates = [
component: Gengar,
preview: GengarPreview,
},
+ {
+ name: 'Castform',
+ component: Castform,
+ preview: CastformPreview,
+ },
];
const TemplatesTab = ({ theme, onChange }) => {
diff --git a/src/index.css b/src/index.css
index 20ff01ce..47f28afe 100644
--- a/src/index.css
+++ b/src/index.css
@@ -17,7 +17,7 @@ body {
font-family: 'Montserrat', sans-serif;
}
-li {
+ul {
list-style: disc;
list-style-position: inside !important;
}
@@ -66,8 +66,8 @@ li {
#page {
width: 21cm;
height: 29.7cm;
- zoom: 0.8;
padding: 2.5em;
+ zoom: 0.8;
overflow: scroll;
background-color: white;
}
@@ -94,9 +94,9 @@ li {
}
#page {
+ width: 21cm;
+ height: 29.7cm;
background-color: white;
- margin: 0;
- padding: 0;
box-shadow: none;
position: absolute;
left: 0;
diff --git a/src/templates/castform/Castform.js b/src/templates/castform/Castform.js
new file mode 100644
index 00000000..b83e2bc6
--- /dev/null
+++ b/src/templates/castform/Castform.js
@@ -0,0 +1,274 @@
+import React, { useContext } from 'react';
+import ReactMarkdown from 'react-markdown';
+
+import AppContext from '../../context/AppContext';
+
+const Castform = () => {
+ const context = useContext(AppContext);
+ const { state } = context;
+ const { data, theme } = state;
+
+ const PersonalInformation = () => (
+
+
+ {data.profile.firstName} {data.profile.lastName}
+
+ {data.profile.subtitle}
+
+ );
+
+ const Heading = ({ title, light = false }) => (
+
+
{title}
+
+ );
+
+ const Address = () => (
+
+
Address
+
{data.profile.address.line1}
+
{data.profile.address.line2}
+
{data.profile.address.line3}
+
+ );
+
+ const ContactItem = ({ title, value, link = '#' }) =>
+ value && (
+
+ );
+
+ const ContactInformation = () => (
+
+ );
+
+ const SkillItem = x => (
+
+ {x}
+
+ );
+
+ const Skills = () =>
+ data.skills.enable && (
+
+
+
{data.skills.items.map(SkillItem)}
+
+ );
+
+ const Objective = () =>
+ data.objective.enable && {data.objective.body}
;
+
+ const WorkItem = x => (
+
+
+
+
+ ({x.start} - {x.end})
+
+
+
+
+ );
+
+ const Work = () =>
+ data.work.enable && (
+
+
+ {data.work.items.map(WorkItem)}
+
+ );
+
+ const ReferenceItem = x => (
+
+
{x.name}
+ {x.position}
+ {x.phone}
+ {x.email}
+
+
+ );
+
+ const References = () =>
+ data.references.enable && (
+
+
+
+ {data.references.items.map(ReferenceItem)}
+
+
+ );
+
+ const LanguageItem = x => (
+
+ );
+
+ const Languages = () =>
+ data.languages.enable && (
+
+
+
{data.languages.items.map(LanguageItem)}
+
+ );
+
+ const EducationItem = x => (
+
+
+
+
+ {x.grade}
+
+ ({x.start} - {x.end})
+
+
+
+
+
+ );
+
+ const Education = () =>
+ data.education.enable && (
+
+
+ {data.education.items.map(EducationItem)}
+
+ );
+
+ const AwardItem = x => (
+
+
{x.title}
+
{x.subtitle}
+
+
+ );
+
+ const Awards = () =>
+ data.awards.enable && (
+
+
+ {data.awards.items.map(AwardItem)}
+
+ );
+
+ const CertificationItem = x => (
+
+
{x.title}
+
{x.subtitle}
+
+
+ );
+
+ const Certifications = () =>
+ data.certifications.enable && (
+
+
+ {data.certifications.items.map(CertificationItem)}
+
+ );
+
+ const ExtraItem = ({ key, value }) => (
+
+ );
+
+ const Extras = () =>
+ data.extras.enable && (
+
+
+ {data.extras.items.map(ExtraItem)}
+
+ );
+
+ return (
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Castform;
diff --git a/src/templates/castform/index.js b/src/templates/castform/index.js
new file mode 100644
index 00000000..634db741
--- /dev/null
+++ b/src/templates/castform/index.js
@@ -0,0 +1,5 @@
+import Castform from './Castform';
+import image from './preview.png';
+
+export const Image = image;
+export default Castform;
diff --git a/src/templates/castform/preview.png b/src/templates/castform/preview.png
new file mode 100644
index 00000000..7d0445e6
Binary files /dev/null and b/src/templates/castform/preview.png differ
diff --git a/src/templates/gengar/Gengar.js b/src/templates/gengar/Gengar.js
index 12051cf9..3dace8fd 100644
--- a/src/templates/gengar/Gengar.js
+++ b/src/templates/gengar/Gengar.js
@@ -25,8 +25,8 @@ const Gengar = () => {
const FullName = () => (
-
{data.profile.firstName}
- {data.profile.lastName}
+ {data.profile.firstName}
+ {data.profile.lastName}
);