diff --git a/Gruntfile.js b/Gruntfile.js index a150448..689c7f9 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,46 +1,47 @@ module.exports = function(grunt) { - grunt.loadNpmTasks('grunt-exec'); - require('load-grunt-tasks')(grunt); - grunt.initConfig({ - babel: { - options: { - sourceMap: true, - presets: ['es2015'] - }, - dist: { - files: { - 'public/js/gen/javascript.js': 'public/js/javascript.js' - } - } - }, - exec: { - less: 'node --harmony-async-await src/app.js less', - wait: 'node --harmony-async-await src/app.js wait' - }, - bgShell: { - _defaults: { - bg: true - }, - express: { - cmd: 'npm run server' - } - }, - watch: { - app: { - files: [ - 'src/**/*.js', - 'resumes/**/*.mustache', - 'resumes/**/*.less', - 'less/**/*.less' - ], - tasks: ['exec:less', 'babel', 'bgShell:express', 'exec:wait'], - options: { - nospawn: false, - livereload: true - } - } + grunt.loadNpmTasks('grunt-exec'); + require('load-grunt-tasks')(grunt); + grunt.initConfig({ + babel: { + options: { + sourceMap: true, + presets: ['es2015'] + }, + dist: { + files: { + 'public/js/gen/javascript.js': 'public/js/javascript.js' } - }); + } + }, + exec: { + less: 'node --harmony-async-await src/app.js less', + wait: 'node --harmony-async-await src/app.js wait' + }, + bgShell: { + _defaults: { + bg: true + }, + express: { + cmd: 'npm run server' + } + }, + watch: { + app: { + files: [ + 'public/js/javascript.js', + 'src/**/*.js', + 'resumes/**/*.mustache', + 'resumes/**/*.less', + 'less/**/*.less' + ], + tasks: ['exec:less', 'babel', 'bgShell:express', 'exec:wait'], + options: { + nospawn: false, + livereload: true + } + } + } + }); - grunt.registerTask('default', ['babel', 'exec:less', 'bgShell:express', 'exec:wait', 'watch']); + grunt.registerTask('default', ['babel', 'exec:less', 'bgShell:express', 'exec:wait', 'watch']); }; diff --git a/README.md b/README.md index 429a288..e9c96fc 100755 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ A collection of multiple beautiful resumes build with LESS and Mustache Template - @@ -57,4 +56,4 @@ With `npm run pdf` the resumes can be exported. You will find all resumes as PDF ## Configuration and Contribution Please read [the guide](/docs/Docs.md) on how to configure page size, stylings and adding your own templates. -Feel free to create your own templates or help in fixing issues. +Feel free to create your own templates or help in fixing issues. diff --git a/pdf/resume-grey-boxes.pdf b/pdf/resume-grey-boxes.pdf index 6c6a02b..eba6349 100755 Binary files a/pdf/resume-grey-boxes.pdf and b/pdf/resume-grey-boxes.pdf differ diff --git a/pdf/resume-left-right.pdf b/pdf/resume-left-right.pdf index e462a68..b58bba8 100755 Binary files a/pdf/resume-left-right.pdf and b/pdf/resume-left-right.pdf differ diff --git a/pdf/resume-material-blue.pdf b/pdf/resume-material-blue.pdf index b549201..f1bf0e0 100755 Binary files a/pdf/resume-material-blue.pdf and b/pdf/resume-material-blue.pdf differ diff --git a/pdf/resume-material-dark.pdf b/pdf/resume-material-dark.pdf index 2fe5e76..15594a0 100644 Binary files a/pdf/resume-material-dark.pdf and b/pdf/resume-material-dark.pdf differ diff --git a/pdf/resume-oblique.pdf b/pdf/resume-oblique.pdf index 4325d7c..33f5e01 100755 Binary files a/pdf/resume-oblique.pdf and b/pdf/resume-oblique.pdf differ diff --git a/pdf/resume-side-bar.pdf b/pdf/resume-side-bar.pdf index e12755a..bb66829 100755 Binary files a/pdf/resume-side-bar.pdf and b/pdf/resume-side-bar.pdf differ diff --git a/pdf/resume-spotify.pdf b/pdf/resume-spotify.pdf index 4fb34a6..9334e1f 100755 Binary files a/pdf/resume-spotify.pdf and b/pdf/resume-spotify.pdf differ diff --git a/public/js/gen/javascript.js b/public/js/gen/javascript.js index ab47485..9b9739b 100755 --- a/public/js/gen/javascript.js +++ b/public/js/gen/javascript.js @@ -182,10 +182,10 @@ var isElectron = function isElectron() { * fixes resume */ var fixResume = function fixResume() { - console.log('aaaaaaa'); if (!isResume()) return; checkFont(); - if (isElectron()) fixBoxShadows(); + //if (isElectron()) + fixBoxShadows(); }; fixResume(); diff --git a/public/js/gen/javascript.js.map b/public/js/gen/javascript.js.map index 0ad9829..dd8cb21 100755 --- a/public/js/gen/javascript.js.map +++ b/public/js/gen/javascript.js.map @@ -1 +1 @@ -{"version":3,"sources":["../javascript.js"],"names":["getAllDOMElements","document","getElementsByTagName","getResumeDOMElement","page","children","getPageDOMElement","autoFontEnabled","resume","hasAttribute","contentIsGreaterThanPage","pageHeight","offsetHeight","resumeHeight","getFontSizeOfElement","style","window","getComputedStyle","element","getPropertyValue","parseFloat","calcNewFontSizes","elements","map","el","hasBoxShadow","getAbsolutePositionOfElement","top","getBoundingClientRect","left","getBorderRadiusOfElement","addNewBoxShadow","position","boxShadow","div","createElement","height","width","offsetWidth","borderRadius","webkitPrintColorAdjust","webkitFilter","appendChild","getElementsWithShadows","ar","slice","call","filter","shadow","fixBoxShadows","elementsWithShadow","forEach","isResume","checkFont","fixFont","elementsAr","newFontSizes","i","fontSize","isElectron","process","type","fixResume","console","log"],"mappings":"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","file":"javascript.js","sourcesContent":["/**\n * gets all DOM-elements on page\n * @return {HTMLElement[]} DOM-elements\n */\nconst getAllDOMElements = () => {\n return document.getElementsByTagName('*');\n};\n\n/**\n * gets DOM-element of #resumeX\n * @param {HTMLElement} page\n * @return {HTMLElement}\n */\nconst getResumeDOMElement = page => {\n return page.children[0];\n};\n\n/**\n * returns DOM-element of \n * @return {HTMLElement}\n */\nconst getPageDOMElement = () => {\n return document.getElementsByTagName('page')[0];\n};\n\n/**\n * checks whether auto-font adjustment is enabled for resume\n * @param {HTMLElement} resume\n * @return {boolean}\n */\nconst autoFontEnabled = resume => {\n return resume.hasAttribute('autofont');\n};\n\n/**\n * checks whether content is greater than page\n * @param {HTMLElement} resume\n * @param {HTMLElement} page\n * @return {boolean} false if content fits to page\n */\nconst contentIsGreaterThanPage = (resume, page) => {\n const pageHeight = page.offsetHeight;\n const resumeHeight = resume.offsetHeight;\n if (pageHeight < resumeHeight) return true;\n else return false;\n};\n\n/**\n * gets font size of DOM-elemnt\n * @param {HTMLElement} element\n * @return {number} font size of element\n */\nconst getFontSizeOfElement = element => {\n const style = window.getComputedStyle(element, null).getPropertyValue('font-size');\n return parseFloat(style);\n};\n\n/**\n * calculates new font size of all DOM-elements\n * @param {HTMLElement[]}\n */\nconst calcNewFontSizes = elements => {\n return elements\n .map(el => getFontSizeOfElement(el) * 0.99);\n};\n\n\n/**\n * checks if DOM-element has box-shadow\n * @param {HTMLElement} element\n * @return {string} '' if no shadow, otherwise shadow e.g. 'rgba(0, 0, 0, 0.137255) 0px 2px 2px 0px'\n */\nconst hasBoxShadow = element => {\n const style = window\n .getComputedStyle(element, null)\n .getPropertyValue('box-shadow');\n if (style != 'none') return style;\n else return '';\n};\n\n/**\n * gets absolute position of element\n * @param {HTMLElement} element\n * @return {{}}\n */\nconst getAbsolutePositionOfElement = element => {\n return {\n top: element.getBoundingClientRect().top,\n left: element.getBoundingClientRect().left\n };\n};\n\n/**\n * gets border radius of element\n * @param {HTMLElement} element\n * @return {string} e.g. '50%'\n */\nconst getBorderRadiusOfElement = element => {\n return window\n .getComputedStyle(element, null)\n .getPropertyValue('border-radius');\n};\n\n/**\n * adds new box shadow\n * @param {HTMLElement} element\n * @param {{}} position e.g. { left: 10, top: 100}\n * @param {string} boxShadow e.g. 'rgba(0, 0, 0, 0.137255) 0px 2px 2px 0px'\n */\nconst addNewBoxShadow = (element, position, boxShadow) => {\n let div = document.createElement('div');\n div.style.height = element.offsetHeight;\n div.style.width = element.offsetWidth;\n div.style.borderRadius = getBorderRadiusOfElement(element);\n div.style.position = 'absolute';\n div.style.boxShadow = boxShadow;\n div.style.webkitPrintColorAdjust = 'exact';\n div.style.webkitFilter = 'opacity(1)';\n div.style.top = position.top;\n div.style.left = position.left;\n document.getElementsByTagName('body')[0].appendChild(div);\n};\n\n/**\n * gets all elements with shadows\n * @param {HTMLElement[]} elements on page\n * @return {HTMLElement[]} elements with shadows\n */\nconst getElementsWithShadows = elements => {\n const ar = [].slice.call(elements);\n return ar\n .filter(el => hasBoxShadow(el) != '')\n .map(el => {\n return {\n element: el,\n shadow: hasBoxShadow(el)\n };\n });\n};\n\n/**\n * fixes shadows, since normal box-shadow cannot be printed in chrome,\n * see: http://stackoverflow.com/questions/13975198/text-shadow-and-box-shadow-while-printing-chrome\n */\nconst fixBoxShadows = () => {\n const elements = getAllDOMElements();\n const elementsWithShadow = getElementsWithShadows(elements);\n elementsWithShadow.forEach(element => {\n const position = getAbsolutePositionOfElement(element.element);\n element.element.style.boxShadow = 'none';\n addNewBoxShadow(element.element, position, element.shadow);\n });\n};\n\n/**\n * checks if the page contains a resume\n * @return {Boolean} true if page contains resume\n */\nconst isResume = () => {\n if (document.getElementsByTagName('page')[0]) return true;\n else return false;\n};\n\n/**\n * checks whether font needs to be fixed, and if fixes it\n */\nconst checkFont = () => {\n const page = getPageDOMElement();\n const resume = getResumeDOMElement(page);\n const fixFont = function(resume, page) {\n const elements = getAllDOMElements();\n const elementsAr = [].slice.call(elements);\n const newFontSizes = calcNewFontSizes(elementsAr);\n elementsAr.forEach((el, i) => el.style.fontSize = newFontSizes[i] + 'px');\n if (contentIsGreaterThanPage(resume, page)) fixFont(resume, page);\n };\n if (\n autoFontEnabled(resume) &&\n contentIsGreaterThanPage(resume, page)\n ) fixFont(resume, page);\n};\n\nconst isElectron = () => {\n return window && window.process && window.process.type;\n}\n\n/**\n * fixes resume\n */\nconst fixResume = () => {\n console.log('aaaaaaa');\n if (!isResume()) return;\n checkFont();\n if (isElectron()) fixBoxShadows();\n};\n\nfixResume();\n"]} \ No newline at end of file +{"version":3,"sources":["../javascript.js"],"names":["getAllDOMElements","document","getElementsByTagName","getResumeDOMElement","page","children","getPageDOMElement","autoFontEnabled","resume","hasAttribute","contentIsGreaterThanPage","pageHeight","offsetHeight","resumeHeight","getFontSizeOfElement","style","window","getComputedStyle","element","getPropertyValue","parseFloat","calcNewFontSizes","elements","map","el","hasBoxShadow","getAbsolutePositionOfElement","top","getBoundingClientRect","left","getBorderRadiusOfElement","addNewBoxShadow","position","boxShadow","div","createElement","height","width","offsetWidth","borderRadius","webkitPrintColorAdjust","webkitFilter","appendChild","getElementsWithShadows","ar","slice","call","filter","shadow","fixBoxShadows","elementsWithShadow","forEach","isResume","checkFont","fixFont","elementsAr","newFontSizes","i","fontSize","isElectron","process","type","fixResume"],"mappings":"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","file":"javascript.js","sourcesContent":["/**\n * gets all DOM-elements on page\n * @return {HTMLElement[]} DOM-elements\n */\nconst getAllDOMElements = () => {\n return document.getElementsByTagName('*');\n};\n\n/**\n * gets DOM-element of #resumeX\n * @param {HTMLElement} page\n * @return {HTMLElement}\n */\nconst getResumeDOMElement = page => {\n return page.children[0];\n};\n\n/**\n * returns DOM-element of \n * @return {HTMLElement}\n */\nconst getPageDOMElement = () => {\n return document.getElementsByTagName('page')[0];\n};\n\n/**\n * checks whether auto-font adjustment is enabled for resume\n * @param {HTMLElement} resume\n * @return {boolean}\n */\nconst autoFontEnabled = resume => {\n return resume.hasAttribute('autofont');\n};\n\n/**\n * checks whether content is greater than page\n * @param {HTMLElement} resume\n * @param {HTMLElement} page\n * @return {boolean} false if content fits to page\n */\nconst contentIsGreaterThanPage = (resume, page) => {\n const pageHeight = page.offsetHeight;\n const resumeHeight = resume.offsetHeight;\n if (pageHeight < resumeHeight) return true;\n else return false;\n};\n\n/**\n * gets font size of DOM-elemnt\n * @param {HTMLElement} element\n * @return {number} font size of element\n */\nconst getFontSizeOfElement = element => {\n const style = window.getComputedStyle(element, null).getPropertyValue('font-size');\n return parseFloat(style);\n};\n\n/**\n * calculates new font size of all DOM-elements\n * @param {HTMLElement[]}\n */\nconst calcNewFontSizes = elements => {\n return elements\n .map(el => getFontSizeOfElement(el) * 0.99);\n};\n\n\n/**\n * checks if DOM-element has box-shadow\n * @param {HTMLElement} element\n * @return {string} '' if no shadow, otherwise shadow e.g. 'rgba(0, 0, 0, 0.137255) 0px 2px 2px 0px'\n */\nconst hasBoxShadow = element => {\n const style = window\n .getComputedStyle(element, null)\n .getPropertyValue('box-shadow');\n if (style != 'none') return style;\n else return '';\n};\n\n/**\n * gets absolute position of element\n * @param {HTMLElement} element\n * @return {{}}\n */\nconst getAbsolutePositionOfElement = element => {\n return {\n top: element.getBoundingClientRect().top,\n left: element.getBoundingClientRect().left\n };\n};\n\n/**\n * gets border radius of element\n * @param {HTMLElement} element\n * @return {string} e.g. '50%'\n */\nconst getBorderRadiusOfElement = element => {\n return window\n .getComputedStyle(element, null)\n .getPropertyValue('border-radius');\n};\n\n/**\n * adds new box shadow\n * @param {HTMLElement} element\n * @param {{}} position e.g. { left: 10, top: 100}\n * @param {string} boxShadow e.g. 'rgba(0, 0, 0, 0.137255) 0px 2px 2px 0px'\n */\nconst addNewBoxShadow = (element, position, boxShadow) => {\n let div = document.createElement('div');\n div.style.height = element.offsetHeight;\n div.style.width = element.offsetWidth;\n div.style.borderRadius = getBorderRadiusOfElement(element);\n div.style.position = 'absolute';\n div.style.boxShadow = boxShadow;\n div.style.webkitPrintColorAdjust = 'exact';\n div.style.webkitFilter = 'opacity(1)';\n div.style.top = position.top;\n div.style.left = position.left;\n document.getElementsByTagName('body')[0].appendChild(div);\n};\n\n/**\n * gets all elements with shadows\n * @param {HTMLElement[]} elements on page\n * @return {HTMLElement[]} elements with shadows\n */\nconst getElementsWithShadows = elements => {\n const ar = [].slice.call(elements);\n return ar\n .filter(el => hasBoxShadow(el) != '')\n .map(el => {\n return {\n element: el,\n shadow: hasBoxShadow(el)\n };\n });\n};\n\n/**\n * fixes shadows, since normal box-shadow cannot be printed in chrome,\n * see: http://stackoverflow.com/questions/13975198/text-shadow-and-box-shadow-while-printing-chrome\n */\nconst fixBoxShadows = () => {\n const elements = getAllDOMElements();\n const elementsWithShadow = getElementsWithShadows(elements);\n elementsWithShadow.forEach(element => {\n const position = getAbsolutePositionOfElement(element.element);\n element.element.style.boxShadow = 'none';\n addNewBoxShadow(element.element, position, element.shadow);\n });\n};\n\n/**\n * checks if the page contains a resume\n * @return {Boolean} true if page contains resume\n */\nconst isResume = () => {\n if (document.getElementsByTagName('page')[0]) return true;\n else return false;\n};\n\n/**\n * checks whether font needs to be fixed, and if fixes it\n */\nconst checkFont = () => {\n const page = getPageDOMElement();\n const resume = getResumeDOMElement(page);\n const fixFont = function(resume, page) {\n const elements = getAllDOMElements();\n const elementsAr = [].slice.call(elements);\n const newFontSizes = calcNewFontSizes(elementsAr);\n elementsAr.forEach((el, i) => el.style.fontSize = newFontSizes[i] + 'px');\n if (contentIsGreaterThanPage(resume, page)) fixFont(resume, page);\n };\n if (\n autoFontEnabled(resume) &&\n contentIsGreaterThanPage(resume, page)\n ) fixFont(resume, page);\n};\n\nconst isElectron = () => {\n return window && window.process && window.process.type;\n}\n\n/**\n * fixes resume\n */\nconst fixResume = () => {\n if (!isResume()) return;\n checkFont();\n //if (isElectron())\n fixBoxShadows();\n};\n\nfixResume();\n"]} \ No newline at end of file diff --git a/public/js/javascript.js b/public/js/javascript.js index 6e8899c..4a650a3 100755 --- a/public/js/javascript.js +++ b/public/js/javascript.js @@ -188,10 +188,10 @@ const isElectron = () => { * fixes resume */ const fixResume = () => { - console.log('aaaaaaa'); if (!isResume()) return; checkFont(); - if (isElectron()) fixBoxShadows(); + //if (isElectron()) + fixBoxShadows(); }; fixResume(); diff --git a/public/preview/resume-material-dark.png b/public/preview/resume-material-dark.png index f03fe66..57b794e 100644 Binary files a/public/preview/resume-material-dark.png and b/public/preview/resume-material-dark.png differ diff --git a/public/preview/resume-spotify.png b/public/preview/resume-spotify.png deleted file mode 100755 index 11b0e38..0000000 Binary files a/public/preview/resume-spotify.png and /dev/null differ diff --git a/public/styles/resume-material-dark.min.css b/public/styles/resume-material-dark.min.css index 6f140cd..5c784ff 100644 --- a/public/styles/resume-material-dark.min.css +++ b/public/styles/resume-material-dark.min.css @@ -1 +1 @@ -body{font-family:Roboto!important}a{cursor:pointer}.description-personal{margin-let:20px;margin-top:20px;padding-right:40px;text-align:justify;font-family:Roboto}.title{right:25px;padding-left:20px;padding-top:20px;bottom:25px}.title h2{text-transform:uppercase;display:block;font-size:1.17em;-webkit-margin-before:1em;-webkit-margin-after:1em;-webkit-margin-start:0;-webkit-margin-end:0;color:#fff;padding-top:0;margin-top:0;letter-spacing:10px;font-weight:400;color:rgba(0,0,0,.7)}.title div{margin-top:-5px;margin:0;padding:0;line-height:15pt;font-weight:300;letter-spacing:2px;color:#fff;display:block;font-size:.67em;-webkit-margin-before:2.33em;-webkit-margin-start:0;-webkit-margin-end:0;padding-top:0;margin-top:0;color:#16151c;text-transform:uppercase;font-weight:500;letter-spacing:3px;font-size:10pt;opacity:.8;color:rgba(63,61,60,.71)}.section-headline{text-transform:uppercase;font-weight:500;letter-spacing:3px;font-size:10pt;opacity:.8;margin-left:20px;margin-top:40px;margin-bottom:20px;color:#3f3d3c}#material-blue{font-family:Roboto,sans-serif!important;background-color:#ccc;font-size:15px;line-height:1.5;color:#767270;letter-spacing:.072em;font-weight:400}#material-blue .c{clear:both}#material-blue li,#material-blue ul{margin:0;padding:0;list-style-type:none}#material-blue li{padding-top:9px}#material-blue p{margin-top:0;margin-bottom:25px;font-family:Roboto,sans-serif;font-weight:300;font-size:10pt;line-height:17pt}#material-blue .m_box{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}#material-blue .fa,#material-blue .material-icons{display:inline-block;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:26px}#material-blue h1,#material-blue h2,#material-blue h3,#material-blue h4,#material-blue h5,#material-blue h6{font-weight:400;margin:0}#material-blue h2{font-size:22pt;line-height:37pt;margin:0;font-weight:500}#material-blue h4{font-size:12pt;line-height:20pt;opacity:1}#material-blue .rightCol{width:63.5%;height:100%;float:right;display:flex;flex-direction:column}#material-blue .rightCol .block{width:90%;position:relative;background-color:#fff;padding:20px;margin-top:5px;margin-bottom:5px;display:inline-block}#material-blue .rightCol .block .headline{font-weight:300;display:block;font-size:15px;color:rgba(0,0,0,.870588)}#material-blue .rightCol .block .subheadline{color:rgba(0,0,0,.541176);display:block;font-size:14px;font-weight:300}#material-blue .rightCol .block .info{font-size:14px;color:rgba(0,0,0,.870588);margin-bottom:0;padding-top:20px}#material-blue .rightCol .block .icon{width:16%;float:left;margin-left:0}#material-blue .rightCol .block .icon .fa,#material-blue .rightCol .block .icon .material-icons{text-align:center;display:block;font-size:30pt}#material-blue .rightCol .block .content{width:80%;position:absolute;height:96%;left:17%;padding-right:3%;text-align:left;display:flex;flex-direction:column}#material-blue .rightCol .block .content .item{border-bottom:1px solid #bdbdbd;flex:1;width:97%;display:flex;justify-content:center;flex-direction:column;text-align:left;padding-top:0}#material-blue .rightCol .block .content .item span{color:#d8ab94;margin-top:0;font-size:10pt;line-height:16pt}#material-blue .rightCol .block .content .item p{margin-top:5px}#material-blue .rightCol .block .content .item:last-of-type{border-bottom-style:none}#material-blue .rightCol .block .content .item:last-of-type{border-bottom-style:none}#material-blue .leftCol{width:35%;height:100%;float:left;padding:0;text-align:left;color:#fff;background-color:#16151c;overflow:hidden;display:block;color:rgba(255,255,255,.59)}#material-blue .leftCol .section-headline{color:rgba(255,255,255,.54)}#material-blue .leftCol a{color:rgba(255,255,255,.59);text-decoration:none}#material-blue .leftCol .heading{background-color:#fff;background-repeat:no-repeat;background-size:cover;background-position:center;position:relative;width:100%;height:277px}#material-blue .leftCol .item{width:100%;margin-top:13px;float:left}#material-blue .leftCol .item .icon{width:20%;float:left}#material-blue .leftCol .item .fa,#material-blue .leftCol .item .material-icons{display:inherit;text-align:center}#material-blue .leftCol .item .text{float:right;width:69%;padding-right:10%;padding-top:0;display:block;font-size:15px;font-weight:300}#material-blue .leftCol .item .text li{padding-top:0;display:block;font-size:15px;font-weight:300}#material-blue .leftCol .item span{font-weight:300}#material-blue .leftCol .item .skill{clear:both;width:97%;padding-top:4px}#material-blue .leftCol .item .skill .left{float:left;width:10%;padding-top:3px}#material-blue .leftCol .item .skill .left i:nth-child(2){float:left;padding-top:4px}#material-blue .leftCol .item .skill .right{float:right;width:93%}#material-blue .leftCol .item .skill .right .progress{float:left;position:relative;height:2px;display:block;width:95%;background-color:rgba(255,255,255,.19);border-radius:2px;margin:.5rem 0 1rem;overflow:visible;margin-bottom:10px}#material-blue .leftCol .item .skill .right .progress .determinate{background-color:#78909c;position:absolute;top:0;bottom:0}#material-blue .leftCol .item .skill .right .progress .determinate .fa,#material-blue .leftCol .item .skill .right .progress .determinate .material-icons{font-size:13px;position:absolute;top:-4px;right:-2px;margin-left:50%;color:#fff}#material-blue .leftCol .item.last .text{border-bottom-style:none;padding-bottom:0}#material-blue #myselfpic{background-image:url(/person.jpg);color:#000}#material-blue #githubIcon{width:25px;padding-left:17px} \ No newline at end of file +body{font-family:Roboto!important}a{cursor:pointer}.description-personal{margin-let:20px;margin-top:20px;padding-right:40px;text-align:justify;font-family:Roboto}.title{right:25px;padding-left:20px;padding-top:20px;bottom:25px}.title h2{text-transform:uppercase;display:block;font-size:1.17em;-webkit-margin-before:1em;-webkit-margin-after:1em;-webkit-margin-start:0;-webkit-margin-end:0;color:#fff;padding-top:0;margin-top:0;letter-spacing:10px;font-weight:400;color:rgba(0,0,0,.7)}.title div{margin-top:-5px;margin:0;padding:0;line-height:15pt;font-weight:300;letter-spacing:2px;color:#fff;display:block;font-size:.67em;-webkit-margin-before:2.33em;-webkit-margin-start:0;-webkit-margin-end:0;padding-top:0;margin-top:0;color:#16151c;text-transform:uppercase;font-weight:500;letter-spacing:3px;font-size:10pt;opacity:.8;color:rgba(63,61,60,.71)}.section-headline{text-transform:uppercase;font-weight:500;letter-spacing:3px;font-size:10pt;opacity:.8;margin-left:20px;margin-top:40px;margin-bottom:20px;color:#3f3d3c}#material-blue{font-family:Roboto,sans-serif!important;background-color:#ccc;font-size:15px;line-height:1.5;color:#767270;letter-spacing:.072em;font-weight:400}#material-blue .c{clear:both}#material-blue li,#material-blue ul{margin:0;padding:0;list-style-type:none}#material-blue li{padding-top:9px}#material-blue p{margin-top:0;margin-bottom:25px;font-family:Roboto,sans-serif;font-weight:300;font-size:10pt;line-height:17pt}#material-blue .m_box{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}#material-blue .fa,#material-blue .material-icons{display:inline-block;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:26px}#material-blue h1,#material-blue h2,#material-blue h3,#material-blue h4,#material-blue h5,#material-blue h6{font-weight:400;margin:0}#material-blue h2{font-size:22pt;line-height:37pt;margin:0;font-weight:500}#material-blue h4{font-size:12pt;line-height:20pt;opacity:1}#material-blue .rightCol{width:63.5%;height:100%;float:right;display:flex;flex-direction:column}#material-blue .rightCol .block{width:90%;position:relative;background-color:#fff;padding:20px;margin-top:5px;margin-bottom:5px;display:inline-block;box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}#material-blue .rightCol .block .headline{font-weight:300;display:block;font-size:15px;color:rgba(0,0,0,.870588)}#material-blue .rightCol .block .subheadline{color:rgba(0,0,0,.541176);display:block;font-size:14px;font-weight:300}#material-blue .rightCol .block .info{font-size:14px;color:rgba(0,0,0,.870588);margin-bottom:0;padding-top:20px}#material-blue .rightCol .block .icon{width:16%;float:left;margin-left:0}#material-blue .rightCol .block .icon .fa,#material-blue .rightCol .block .icon .material-icons{text-align:center;display:block;font-size:30pt}#material-blue .rightCol .block .content{width:80%;position:absolute;height:96%;left:17%;padding-right:3%;text-align:left;display:flex;flex-direction:column}#material-blue .rightCol .block .content .item{border-bottom:1px solid #bdbdbd;flex:1;width:97%;display:flex;justify-content:center;flex-direction:column;text-align:left;padding-top:0}#material-blue .rightCol .block .content .item span{color:#d8ab94;margin-top:0;font-size:10pt;line-height:16pt}#material-blue .rightCol .block .content .item p{margin-top:5px}#material-blue .rightCol .block .content .item:last-of-type{border-bottom-style:none}#material-blue .rightCol .block .content .item:last-of-type{border-bottom-style:none}#material-blue .leftCol{width:35%;height:100%;float:left;padding:0;text-align:left;color:#fff;background-color:#16151c;overflow:hidden;display:block;color:rgba(255,255,255,.59)}#material-blue .leftCol .section-headline{color:rgba(255,255,255,.54)}#material-blue .leftCol a{color:rgba(255,255,255,.59);text-decoration:none}#material-blue .leftCol .heading{background-color:#fff;background-repeat:no-repeat;background-size:cover;background-position:center;position:relative;width:100%;height:277px}#material-blue .leftCol .item{width:100%;margin-top:13px;float:left}#material-blue .leftCol .item .icon{width:20%;float:left}#material-blue .leftCol .item .fa,#material-blue .leftCol .item .material-icons{display:inherit;text-align:center}#material-blue .leftCol .item .text{float:right;width:69%;padding-right:10%;padding-top:0;display:block;font-size:15px;font-weight:300}#material-blue .leftCol .item .text li{padding-top:0;display:block;font-size:15px;font-weight:300}#material-blue .leftCol .item span{font-weight:300}#material-blue .leftCol .item .skill{clear:both;width:97%;padding-top:4px}#material-blue .leftCol .item .skill .left{float:left;width:10%;padding-top:3px}#material-blue .leftCol .item .skill .left i:nth-child(2){float:left;padding-top:4px}#material-blue .leftCol .item .skill .right{float:right;width:93%}#material-blue .leftCol .item .skill .right .progress{float:left;position:relative;height:2px;display:block;width:95%;background-color:rgba(255,255,255,.19);border-radius:2px;margin:.5rem 0 1rem;overflow:visible;margin-bottom:10px}#material-blue .leftCol .item .skill .right .progress .determinate{background-color:#78909c;position:absolute;top:0;bottom:0}#material-blue .leftCol .item .skill .right .progress .determinate .fa,#material-blue .leftCol .item .skill .right .progress .determinate .material-icons{font-size:13px;position:absolute;top:-4px;right:-2px;margin-left:50%;color:#fff}#material-blue .leftCol .item.last .text{border-bottom-style:none;padding-bottom:0}#material-blue #myselfpic{background-image:url(/person.jpg);color:#000}#material-blue #githubIcon{width:25px;padding-left:17px} \ No newline at end of file diff --git a/resumes/resume-material-dark/style.less b/resumes/resume-material-dark/style.less index 3bb4360..c888dfe 100644 --- a/resumes/resume-material-dark/style.less +++ b/resumes/resume-material-dark/style.less @@ -166,6 +166,7 @@ a { margin-top: 5px; margin-bottom: 5px; display: inline-block; + box-shadow: 0 2px 5px 0 rgba(0,0,0,.16), 0 2px 10px 0 rgba(0,0,0,.12); .headline { font-weight: 300; diff --git a/resumes/resume-spotify/index.mustache b/resumes/resume-spotify/index.mustache deleted file mode 100755 index 8ccdb32..0000000 --- a/resumes/resume-spotify/index.mustache +++ /dev/null @@ -1,100 +0,0 @@ - -
-
-
-
-
-
{{person.name.first}} {{person.name.last}}
-
{{person.position}}
-
-
-
- -

Skills

-
- {{#person.skills}} -
- {{name}} -
-
-
-
-
-
-
- {{/person.skills}} -
- - {{person.skillDescription}} -
-
-
-
-

Experience

- - {{#person.experience}} -
-
- {{company}} - - {{position}} -
-
- {{timeperiod}} -
-
- - {{description}} -
-
- {{/person.experience}} - -
-
- -

Education

- - {{#person.education}} -
-
- {{degree}} -
-
- {{description}} -
-
- {{/person.education}} -
- -
-

Contact

- - - - - - - - - - - - - - - - - - - - - - - - - - -
{{person.contact.email}}
{{person.contact.phone}}
{{person.contact.street}}
{{person.contact.city}}
{{person.contact.website}}
https://github.com/{{person.contact.github}}
-
-
-
-
diff --git a/resumes/resume-spotify/style.less b/resumes/resume-spotify/style.less deleted file mode 100755 index 97084bb..0000000 --- a/resumes/resume-spotify/style.less +++ /dev/null @@ -1,171 +0,0 @@ -@green: #1cb251; -@background: #171717; -@grey: #282828; -@grey2: #9a9a9a; -@grey3: #767676; -@circle: #c6c6c6; -@fontSize: 20px; -@contactIconFontSize: 30px; - -.resume6 { - background: @background; - font-family: 'TypoPRO Montserrat'; - font-weight: 300; -} - -#resume6 { - padding-bottom: 50px; - color: white; - - h3 { - background: @green; - margin: 0; - text-align: center; - font-weight: 300; - text-transform: uppercase; - letter-spacing: 9px; - padding-top: 20px; - padding-bottom: 20px; - border-radius: 35px; - } - - .left-col { - float: left; - width: 38%; - padding: 3%; - - .person-box { - width: 100%; - background: @grey; - - .img { - height: 300px; - width: 100%; - background: url('/person.jpg'); - background-size: cover; - background-position: center; - } - - .content { - padding: 7%; - - .person-name { - width: 100%; - margin-bottom: 10px; - font-size: @fontSize; - } - - .person-position { - color: @grey3; - width: 100%; - } - } - } - - .skill { - margin-bottom: 35px; - width: 90%; - margin-left: auto; - margin-right: auto; - - .skill-name { - color: @grey2; - } - } - - .skills-other { - color: rgba(154,154,154,.8); - } - - .skills-block { - h3 { - margin-top: 30px; - margin-bottom: 20px; - } - - .skill-bar { - width: 100%; - background: @grey; - height: 10px; - border-radius: 20px; - position: relative; - overflow: hidden; - margin-top: 10px; - - .level { - width: 99%; - position: absolute; - background: @grey2; - height: 10px; - } - } - - .skill-circle { - position: relative; - width: 100%; - margin-top: -15px; - transform: translateX(-15px); - - .circle { - background: @circle; - height: 20px; - width: 20px; - border-radius: 50%; - position: absolute; - } - } - } - } - - .right-col { - width: 53%; - float: left; - padding-top: 3%; - padding-right: 3%; - - .education, - .experience { - margin-bottom: 20px; - - .education-block, - .experience-block { - font-size: @fontSize; - padding: 20px; - border-bottom: 1px #262626 solid; - color: rgba(154, 154, 154, 0.8); - - &:last-child { - border-bottom: none; - } - - .row:first-child { - color: @grey2; - } - } - } - - .contact { - table { - color: @grey2; - padding: 20px; - font-size: @fontSize; - font-weight: 300; - - a, - a:focus, - a:hover, - a:visited { - color: @grey2; - text-decoration: none; - } - - i.fa { - color: rgba(154, 154, 154, 0.8); - font-size: @contactIconFontSize; - margin-right: 20px; - margin-top: 2px; - } - } - } - } -}