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 && ( +
+
{title}
+ +
{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.title}
    +

    {x.role}

    +
    + + ({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 => ( +
    +
    {x.key}
    +
    +
    +
    +
    +
    + ); + + const Languages = () => + data.languages.enable && ( +
    + +
    {data.languages.items.map(LanguageItem)}
    +
    + ); + + const EducationItem = x => ( +
    +
    +
    +
    {x.name}
    +

    {x.major}

    +
    +
    + {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 }) => ( +
    +
    {key}
    +
    {value}
    +
    + ); + + const Extras = () => + data.extras.enable && ( +
    + + {data.extras.items.map(ExtraItem)} +
    + ); + + return ( +
    +
    +
    +
    + Profile Photograph +
    + + + + + + +
    +
    + + + + + +
    +
    +
    + ); +}; + +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}

    );