Merge remote-tracking branch 'upstream/develop' into develop

This commit is contained in:
gianantoniopini
2021-01-04 09:46:35 +01:00
26 changed files with 565 additions and 5186 deletions

View File

@ -1,33 +0,0 @@
name: Build and Deploy
on:
push:
branches:
- master
jobs:
build:
name: Build and Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@master
- name: Install Dependencies
run: npm install
- name: Build
run: npm run build
env:
FIREBASE_APIKEY: ${{ secrets.FIREBASE_APIKEY }}
FIREBASE_APPID: ${{ secrets.FIREBASE_APPID }}
FIREBASE_AUTHDOMAIN: ${{ secrets.FIREBASE_AUTHDOMAIN }}
FIREBASE_DATABASEURL: ${{ secrets.FIREBASE_DATABASEURL }}
FIREBASE_MEASUREMENTID: ${{ secrets.FIREBASE_MEASUREMENTID }}
FIREBASE_MESSAGINGSENDERID: ${{ secrets.FIREBASE_MESSAGINGSENDERID }}
FIREBASE_PROJECTID: ${{ secrets.FIREBASE_PROJECTID }}
FIREBASE_STORAGEBUCKET: ${{ secrets.FIREBASE_STORAGEBUCKET }}
- name: Deploy to Firebase
uses: w9jds/firebase-action@master
with:
args: deploy --only hosting
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

View File

@ -601,9 +601,9 @@
"optional": true "optional": true
}, },
"date-and-time": { "date-and-time": {
"version": "0.14.1", "version": "0.14.2",
"resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.14.1.tgz", "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.14.2.tgz",
"integrity": "sha512-M4RggEH5OF2ZuCOxgOU67R6Z9ohjKbxGvAQz48vj53wLmL0bAgumkBvycR32f30pK+Og9pIR+RFDyChbaE4oLA==", "integrity": "sha512-EFTCh9zRSEpGPmJaexg7HTuzZHh6cnJj1ui7IGCFNXzd2QdpsNh05Db5TF3xzJm30YN+A8/6xHSuRcQqoc3kFA==",
"optional": true "optional": true
}, },
"debug": { "debug": {

View File

@ -6,7 +6,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.4.3', version: '2.5.1',
}, },
plugins: [ plugins: [
'gatsby-plugin-react-helmet', 'gatsby-plugin-react-helmet',

5523
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,13 @@
"scripts": { "scripts": {
"lint": "eslint .", "lint": "eslint .",
"lint:fix": "eslint --fix .", "lint:fix": "eslint --fix .",
"prebuild": "npm run test",
"build": "gatsby build", "build": "gatsby build",
"develop": "gatsby develop", "develop": "gatsby develop",
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\"", "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\"",
"start": "npm run develop", "start": "npm run develop",
"serve": "gatsby serve", "serve": "gatsby serve",
"clean": "gatsby clean", "clean": "gatsby clean",
"test": "jest" "test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\" && exit 1"
}, },
"dependencies": { "dependencies": {
"@material-ui/core": "^4.11.2", "@material-ui/core": "^4.11.2",
@ -23,36 +22,36 @@
"array-move": "^3.0.1", "array-move": "^3.0.1",
"autoprefixer": "^10.1.0", "autoprefixer": "^10.1.0",
"classnames": "^2.2.6", "classnames": "^2.2.6",
"dayjs": "^1.9.7", "dayjs": "^1.9.8",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"downloadjs": "^1.4.7", "downloadjs": "^1.4.7",
"firebase": "^8.2.1", "firebase": "^8.2.1",
"formik": "^2.2.6", "formik": "^2.2.6",
"gatsby": "^2.29.1", "gatsby": "^2.29.3",
"gatsby-image": "^2.8.0", "gatsby-image": "^2.8.0",
"gatsby-plugin-create-client-paths": "^2.7.0", "gatsby-plugin-create-client-paths": "^2.7.0",
"gatsby-plugin-firebase": "^0.2.0-beta.4", "gatsby-plugin-firebase": "^0.2.0-beta.4",
"gatsby-plugin-manifest": "^2.9.0", "gatsby-plugin-manifest": "^2.9.1",
"gatsby-plugin-material-ui": "^2.1.10", "gatsby-plugin-material-ui": "^2.1.10",
"gatsby-plugin-offline": "^3.7.0", "gatsby-plugin-offline": "^3.7.1",
"gatsby-plugin-postcss": "^3.4.0", "gatsby-plugin-postcss": "^3.4.0",
"gatsby-plugin-react-helmet": "^3.7.0", "gatsby-plugin-react-helmet": "^3.7.0",
"gatsby-plugin-sharp": "^2.11.1", "gatsby-plugin-sharp": "^2.11.2",
"gatsby-plugin-sitemap": "^2.9.0", "gatsby-plugin-sitemap": "^2.9.0",
"gatsby-plugin-webfonts": "^1.1.3", "gatsby-plugin-webfonts": "^1.1.3",
"gatsby-source-filesystem": "^2.8.0", "gatsby-source-filesystem": "^2.8.1",
"gatsby-source-gravatar": "^1.0.0", "gatsby-source-gravatar": "^1.0.0",
"gatsby-transformer-remark": "^2.13.0", "gatsby-transformer-remark": "^2.13.1",
"gatsby-transformer-sharp": "^2.9.0", "gatsby-transformer-sharp": "^2.9.0",
"i18next": "^19.8.4", "i18next": "^19.8.4",
"lodash": "^4.17.20", "lodash": "^4.17.20",
"nanoevents": "^5.1.10", "nanoevents": "^5.1.10",
"postcss": "^8.2.1", "postcss": "^8.2.2",
"react": "^17.0.1", "react": "^17.0.1",
"react-beautiful-dnd": "^13.0.0", "react-beautiful-dnd": "^13.0.0",
"react-dom": "^17.0.1", "react-dom": "^17.0.1",
"react-helmet": "^6.1.0", "react-helmet": "^6.1.0",
"react-i18next": "^11.8.4", "react-i18next": "^11.8.5",
"react-icons": "^4.1.0", "react-icons": "^4.1.0",
"react-markdown": "^5.0.3", "react-markdown": "^5.0.3",
"react-scroll": "^1.8.1", "react-scroll": "^1.8.1",
@ -62,20 +61,14 @@
"yup": "^0.32.8" "yup": "^0.32.8"
}, },
"devDependencies": { "devDependencies": {
"@testing-library/jest-dom": "^5.11.6", "eslint": "^7.17.0",
"@testing-library/react": "^11.2.2",
"babel-jest": "^26.6.3",
"babel-preset-gatsby": "^0.9.0",
"eslint": "^7.16.0",
"eslint-config-airbnb": "^18.2.1", "eslint-config-airbnb": "^18.2.1",
"eslint-config-prettier": "^7.1.0", "eslint-config-prettier": "^7.1.0",
"eslint-loader": "^4.0.2", "eslint-loader": "^4.0.2",
"eslint-plugin-jsx-a11y": "^6.4.1", "eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-prettier": "^3.3.0", "eslint-plugin-prettier": "^3.3.0",
"eslint-plugin-react": "^7.21.5", "eslint-plugin-react": "^7.22.0",
"gatsby-plugin-eslint": "^2.0.8", "gatsby-plugin-eslint": "^2.0.8",
"identity-obj-proxy": "^3.0.0",
"jest": "^26.6.3",
"prettier": "2.2.1", "prettier": "2.2.1",
"stylelint": "^13.8.0", "stylelint": "^13.8.0",
"stylelint-config-standard": "^20.0.0", "stylelint-config-standard": "^20.0.0",

View File

@ -10,6 +10,7 @@ import Fonts from './sections/Fonts';
import Layout from './sections/Layout'; import Layout from './sections/Layout';
import Settings from './sections/Settings'; import Settings from './sections/Settings';
import Templates from './sections/Templates'; import Templates from './sections/Templates';
import FontSize from './sections/FontSize';
const getComponent = (id) => { const getComponent = (id) => {
switch (id) { switch (id) {
@ -27,6 +28,8 @@ const getComponent = (id) => {
return Settings; return Settings;
case 'about': case 'about':
return About; return About;
case 'font-size':
return FontSize;
default: default:
throw new Error(); throw new Error();
} }

View File

@ -0,0 +1,68 @@
/* eslint-disable jsx-a11y/control-has-associated-label */
import React, { memo, useEffect, useState } from 'react';
import { useDispatch, useSelector } from '../../../../contexts/ResumeContext';
import fontSizeOptions from '../../../../data/fontSizeOptions';
import Heading from '../../../shared/Heading';
const FontSizes = ({ id }) => {
// precompute some stuff for the logarithmic slider
const logMax = 2.5;
const logDefault = 1;
const logMin = 0.6;
const steps = 20;
const logRange = logMax / logMin;
const logStepSize = logRange ** (1 / steps);
const min = 0;
const max = min + steps - 1;
const scaleDefault = Math.log(logDefault / logMin) / Math.log(logStepSize);
const dispatch = useDispatch();
const fontSize = useSelector('metadata.fontSize');
const [fontScale, setFontScale] = useState(fontSize || scaleDefault);
// translate a linearly scaled value from the slider into a scale factor
const scale = (value) => logStepSize ** (value - min) * logMin;
useEffect(() => {
/* loop through the css variables we need to set and set them to the default
for that variable multiplied by the scale factor */
for (const [key, sizeDefault] of Object.entries(fontSizeOptions)) {
document.documentElement.style.setProperty(
key,
`${scale(fontScale) * sizeDefault}rem`,
);
}
}, [fontScale]);
const onChange = (event) => {
const { value } = event.target;
setFontScale(value);
dispatch({
type: 'on_input',
payload: {
path: 'metadata.fontSize',
value,
},
});
};
return (
<section>
<Heading id={id} />
<input
step={1}
min={min}
max={max}
type="range"
onChange={onChange}
defaultValue={fontScale}
className="rounded-lg overflow-hidden appearance-none bg-gray-400 h-4 w-full"
/>
</section>
);
};
export default memo(FontSizes);

View File

@ -138,6 +138,7 @@
"text": "#212121" "text": "#212121"
}, },
"font": "Open Sans", "font": "Open Sans",
"fontSize": 12,
"language": "en", "language": "en",
"layout": { "layout": {
"castform": [ "castform": [

View File

@ -0,0 +1,18 @@
const fontSizeOptions = {
'--text-xs-size': 0.75,
'--text-sm-size': 0.875,
'--text-lg-size': 1.125,
'--text-xl-size': 1.25,
'--text-2xl-size': 1.5,
'--text-3xl-size': 1.875,
'--text-4xl-size': 2.25,
'--text-xs-line-height': 1,
'--text-sm-line-height': 1.25,
'--text-lg-line-height': 1.75,
'--text-xl-line-height': 1.75,
'--text-2xl-line-height': 2,
'--text-3xl-line-height': 2.25,
'--text-4xl-line-height': 2.5,
};
export default fontSizeOptions;

View File

@ -74,6 +74,7 @@
"language": "en", "language": "en",
"template": "onyx", "template": "onyx",
"font": "Montserrat", "font": "Montserrat",
"fontSize": 12,
"layout": { "layout": {
"onyx": [ "onyx": [
["objective", "work", "education", "projects"], ["objective", "work", "education", "projects"],

View File

@ -6,6 +6,7 @@ import {
MdInfo, MdInfo,
MdSettings, MdSettings,
MdStyle, MdStyle,
MdFormatSize,
} from 'react-icons/md'; } from 'react-icons/md';
export default [ export default [
@ -25,6 +26,10 @@ export default [
id: 'fonts', id: 'fonts',
icon: MdFontDownload, icon: MdFontDownload,
}, },
{
id: 'font-size',
icon: MdFormatSize,
},
{ {
id: 'actions', id: 'actions',
icon: MdImportExport, icon: MdImportExport,

View File

@ -87,6 +87,7 @@
"templates": "Templates", "templates": "Templates",
"layout": "Layout", "layout": "Layout",
"colors": "Colors", "colors": "Colors",
"font-size": "Font Size",
"fonts": "Fonts", "fonts": "Fonts",
"actions": "Actions", "actions": "Actions",
"settings": "Settings", "settings": "Settings",

View File

@ -9,7 +9,7 @@
"required": "vereist", "required": "vereist",
"website": "Website", "website": "Website",
"date": "Datum", "date": "Datum",
"present": "Aanwezig", "present": "Heden",
"position": "Functie", "position": "Functie",
"startDate": "Startdatum", "startDate": "Startdatum",
"endDate": "Einddatum", "endDate": "Einddatum",

View File

@ -55,6 +55,13 @@ section {
padding-left: 1.5em; padding-left: 1.5em;
} }
input[type="range"]::-webkit-slider-thumb {
cursor: ew-resize;
box-shadow: -405px 0 0 400px #605e5c;
@apply w-4 h-4 bg-white rounded-full appearance-none;
}
@page { @page {
margin: 0; margin: 0;
} }

View File

@ -1,3 +1,31 @@
@tailwind base; @tailwind base;
@tailwind components; @tailwind components;
@tailwind utilities; @tailwind utilities;
#page .text-xs {
font-size: var(--text-xs-size);
line-height: var(--text-xs-line-height);
}
#page .text-sm {
font-size: var(--text-sm-size);
line-height: var(--text-sm-line-height);
}
#page .text-lg {
font-size: var(--text-lg-size);
line-height: var(--text-lg-line-height);
}
#page .text-xl {
font-size: var(--text-xl-size);
line-height: var(--text-xl-line-height);
}
#page .text-2xl {
font-size: var(--text-2xl-size);
line-height: var(--text-2xl-line-height);
}
#page .text-3xl {
font-size: var(--text-3xl-size);
line-height: var(--text-3xl-line-height);
}
#page .text-4xl {
font-size: var(--text-4xl-size);
line-height: var(--text-4xl-line-height);
}

View File

@ -7,7 +7,7 @@ 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">
<h6 className="font-semibold">{item.title}</h6> <h6 className="font-semibold text-sm">{item.title}</h6>
<span className="text-xs">{item.awarder}</span> <span className="text-xs">{item.awarder}</span>
</div> </div>
{item.date && ( {item.date && (

View File

@ -7,7 +7,7 @@ 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">
<h6 className="font-semibold">{item.title}</h6> <h6 className="font-semibold text-sm">{item.title}</h6>
<span className="text-xs">{item.issuer}</span> <span className="text-xs">{item.issuer}</span>
</div> </div>
{item.date && ( {item.date && (

View File

@ -10,7 +10,7 @@ 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">
<h6 className="font-semibold">{item.institution}</h6> <h6 className="font-semibold text-sm">{item.institution}</h6>
<span className="text-xs"> <span className="text-xs">
<strong>{item.degree}</strong> {item.field} <strong>{item.degree}</strong> {item.field}
</span> </span>

View File

@ -4,7 +4,7 @@ import { safetyCheck } from '../../../utils';
const HobbyA = (x) => ( const HobbyA = (x) => (
<div key={x.id}> <div key={x.id}>
<h6 className="font-semibold">{x.name}</h6> <h6 className="font-semibold text-sm">{x.name}</h6>
</div> </div>
); );

View File

@ -4,7 +4,7 @@ import { safetyCheck } from '../../../utils';
const LanguageItem = (x) => ( const LanguageItem = (x) => (
<div key={x.id} className="flex flex-col"> <div key={x.id} className="flex flex-col">
<h6 className="font-semibold">{x.name}</h6> <h6 className="font-semibold text-sm">{x.name}</h6>
<span className="text-xs">{x.fluency}</span> <span className="text-xs">{x.fluency}</span>
</div> </div>
); );

View File

@ -4,7 +4,7 @@ import { safetyCheck } from '../../../utils';
const LanguageItem = (x) => ( const LanguageItem = (x) => (
<div key={x.id} className="flex flex-col"> <div key={x.id} className="flex flex-col">
<h6 className="font-semibold">{x.name}</h6> <h6 className="font-semibold text-sm">{x.name}</h6>
<span className="text-xs">{x.fluency}</span> <span className="text-xs">{x.fluency}</span>
</div> </div>
); );

View File

@ -10,7 +10,7 @@ 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">
<h6 className="font-semibold">{item.title}</h6> <h6 className="font-semibold text-sm">{item.title}</h6>
{item.link && ( {item.link && (
<a href={item.link} className="text-xs"> <a href={item.link} className="text-xs">
{item.link} {item.link}

View File

@ -5,7 +5,7 @@ import { safetyCheck } from '../../../utils';
const ReferenceItem = (x) => ( const ReferenceItem = (x) => (
<div key={x.id} className="flex flex-col"> <div key={x.id} className="flex flex-col">
<h6 className="font-semibold">{x.name}</h6> <h6 className="font-semibold text-sm">{x.name}</h6>
<span className="text-xs">{x.position}</span> <span className="text-xs">{x.position}</span>
<span className="text-xs">{x.phone}</span> <span className="text-xs">{x.phone}</span>
<span className="text-xs">{x.email}</span> <span className="text-xs">{x.email}</span>

View File

@ -5,7 +5,7 @@ import { safetyCheck } from '../../../utils';
const ReferenceItem = (x) => ( const ReferenceItem = (x) => (
<div key={x.id} className="flex flex-col"> <div key={x.id} className="flex flex-col">
<h6 className="font-semibold">{x.name}</h6> <h6 className="font-semibold text-sm">{x.name}</h6>
<span className="text-xs">{x.position}</span> <span className="text-xs">{x.position}</span>
<span className="text-xs">{x.phone}</span> <span className="text-xs">{x.phone}</span>
<span className="text-xs">{x.email}</span> <span className="text-xs">{x.email}</span>

View File

@ -4,7 +4,7 @@ import { safetyCheck } from '../../../utils';
const SkillItem = (x) => ( const SkillItem = (x) => (
<div key={x.id} className="flex flex-col"> <div key={x.id} className="flex flex-col">
<h6 className="font-semibold">{x.name}</h6> <h6 className="font-semibold text-sm">{x.name}</h6>
<span className="text-xs">{x.level}</span> <span className="text-xs">{x.level}</span>
</div> </div>
); );

View File

@ -10,7 +10,7 @@ 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">
<h6 className="font-semibold">{item.company}</h6> <h6 className="font-semibold text-sm">{item.company}</h6>
<span className="text-xs">{item.position}</span> <span className="text-xs">{item.position}</span>
</div> </div>
{item.startDate && ( {item.startDate && (