diff --git a/package-lock.json b/package-lock.json
index 87828aab..0754ec2e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -51,6 +51,7 @@
"react-markdown": "^6.0.2",
"react-scroll": "^1.8.2",
"react-toastify": "^7.0.4",
+ "remark-gfm": "^1.0.0",
"short-unique-id": "^4.3.3",
"uuid": "^8.3.2",
"yup": "^0.32.9"
diff --git a/package.json b/package.json
index b87a214c..ba6376c7 100644
--- a/package.json
+++ b/package.json
@@ -60,6 +60,7 @@
"react-markdown": "^6.0.2",
"react-scroll": "^1.8.2",
"react-toastify": "^7.0.4",
+ "remark-gfm": "^1.0.0",
"short-unique-id": "^4.3.3",
"uuid": "^8.3.2",
"yup": "^0.32.9"
diff --git a/src/components/shared/Markdown.js b/src/components/shared/Markdown.js
new file mode 100644
index 00000000..895540a1
--- /dev/null
+++ b/src/components/shared/Markdown.js
@@ -0,0 +1,16 @@
+import React, { memo } from 'react';
+import ReactMarkdown from 'react-markdown';
+import gfm from 'remark-gfm';
+import cx from 'classnames';
+
+const Markdown = ({ children, className, ...props }) => (
+
+ {children}
+
+);
+
+export default memo(Markdown);
diff --git a/src/pages/app/dashboard.js b/src/pages/app/dashboard.js
index cde51d5d..5e781aa6 100644
--- a/src/pages/app/dashboard.js
+++ b/src/pages/app/dashboard.js
@@ -10,7 +10,7 @@ import TopNavbar from '../../components/dashboard/TopNavbar';
const Dashboard = ({ user }) => {
const { t } = useTranslation();
const [resumes, setResumes] = useState([]);
- const [loading, setLoading] = useState(true);
+ const [loading, setLoading] = useState(false);
useEffect(() => {
const resumesRef = 'resumes';
diff --git a/src/styles/global.css b/src/styles/global.css
index f18504f9..2745b4f1 100644
--- a/src/styles/global.css
+++ b/src/styles/global.css
@@ -55,6 +55,52 @@ section {
padding-left: 1.5em;
}
+.markdown table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ display: block;
+ overflow: auto;
+ word-break: normal;
+ word-break: keep-all;
+}
+
+.markdown table th {
+ font-weight: bold;
+}
+
+.markdown table th,
+.markdown table td {
+ padding: 6px 13px;
+ border: 1px solid #ddd;
+}
+
+.markdown table tr {
+ background-color: #fff;
+ border-top: 1px solid #ccc;
+}
+
+.markdown table tr .odd {
+ background-color: #f8f8f8;
+}
+
+.markdown table tr .fail {
+ background-color: #f9f2f4;
+ color: #c7254e;
+ font-weight: bold;
+}
+
+.markdown table tr .pass {
+ background-color: #dff0d8;
+ color: #468847;
+ font-weight: bold;
+}
+
+.markdown table tr .warn {
+ background-color: #fcf8e3;
+ color: #ec971f;
+ font-weight: bold;
+}
+
input[type="range"]::-webkit-slider-thumb {
cursor: ew-resize;
box-shadow: -405px 0 0 400px #605e5c;
diff --git a/src/templates/Pikachu.js b/src/templates/Pikachu.js
index f9b1984c..1398d1ab 100644
--- a/src/templates/Pikachu.js
+++ b/src/templates/Pikachu.js
@@ -1,5 +1,5 @@
import React from 'react';
-import ReactMarkdown from 'react-markdown';
+import Markdown from '../components/shared/Markdown';
import AwardsA from './blocks/Awards/AwardsA';
import CertificationsA from './blocks/Certifications/CertificationsA';
import ContactA from './blocks/Contact/ContactA';
@@ -77,9 +77,9 @@ const Pikachu = ({ data }) => {
style={{ borderColor: data.metadata.colors.background }}
/>
-
+
{data.objective.body}
-
+
)}
diff --git a/src/templates/blocks/Awards/AwardsA.js b/src/templates/blocks/Awards/AwardsA.js
index 033cec1d..acd97a67 100644
--- a/src/templates/blocks/Awards/AwardsA.js
+++ b/src/templates/blocks/Awards/AwardsA.js
@@ -1,5 +1,5 @@
import React, { memo, useContext } from 'react';
-import ReactMarkdown from 'react-markdown';
+import Markdown from '../../../components/shared/Markdown';
import { formatDate, isItemVisible, safetyCheck } from '../../../utils';
import PageContext from '../../../contexts/PageContext';
@@ -17,9 +17,7 @@ const AwardItem = ({ item, language }) => (
)}
{item.summary && (
-
- {item.summary}
-
+ {item.summary}
)}
);
diff --git a/src/templates/blocks/Certifications/CertificationsA.js b/src/templates/blocks/Certifications/CertificationsA.js
index d0f976bd..c830906d 100644
--- a/src/templates/blocks/Certifications/CertificationsA.js
+++ b/src/templates/blocks/Certifications/CertificationsA.js
@@ -1,5 +1,5 @@
import React, { memo, useContext } from 'react';
-import ReactMarkdown from 'react-markdown';
+import Markdown from '../../../components/shared/Markdown';
import { formatDate, isItemVisible, safetyCheck } from '../../../utils';
import PageContext from '../../../contexts/PageContext';
@@ -17,9 +17,7 @@ const CertificationItem = ({ item, language }) => (
)}
{item.summary && (
-
- {item.summary}
-
+ {item.summary}
)}
);
diff --git a/src/templates/blocks/Education/EducationA.js b/src/templates/blocks/Education/EducationA.js
index e425769d..fbc37c70 100644
--- a/src/templates/blocks/Education/EducationA.js
+++ b/src/templates/blocks/Education/EducationA.js
@@ -1,6 +1,6 @@
import { useTranslation } from 'react-i18next';
import React, { memo, useContext } from 'react';
-import ReactMarkdown from 'react-markdown';
+import Markdown from '../../../components/shared/Markdown';
import PageContext from '../../../contexts/PageContext';
import { formatDateRange, isItemVisible, safetyCheck } from '../../../utils';
@@ -34,9 +34,7 @@ const EducationItem = ({ item, language }) => {
{item.summary && (
-
- {item.summary}
-
+ {item.summary}
)}
);
diff --git a/src/templates/blocks/Objective/ObjectiveA.js b/src/templates/blocks/Objective/ObjectiveA.js
index f806572f..c5f39554 100644
--- a/src/templates/blocks/Objective/ObjectiveA.js
+++ b/src/templates/blocks/Objective/ObjectiveA.js
@@ -1,5 +1,5 @@
import React, { memo, useContext } from 'react';
-import ReactMarkdown from 'react-markdown';
+import Markdown from '../../../components/shared/Markdown';
import { safetyCheck } from '../../../utils';
import PageContext from '../../../contexts/PageContext';
@@ -10,9 +10,7 @@ const ObjectiveA = () => {
safetyCheck(data.objective, 'body') && (
{data.objective.heading}
-
- {data.objective.body}
-
+ {data.objective.body}
)
);
diff --git a/src/templates/blocks/Projects/ProjectsA.js b/src/templates/blocks/Projects/ProjectsA.js
index feb035c5..9f3da086 100644
--- a/src/templates/blocks/Projects/ProjectsA.js
+++ b/src/templates/blocks/Projects/ProjectsA.js
@@ -1,6 +1,6 @@
import { useTranslation } from 'react-i18next';
import React, { memo, useContext } from 'react';
-import ReactMarkdown from 'react-markdown';
+import Markdown from '../../../components/shared/Markdown';
import PageContext from '../../../contexts/PageContext';
import { formatDateRange, isItemVisible, safetyCheck } from '../../../utils';
@@ -33,9 +33,7 @@ const ProjectItem = ({ item, language }) => {
)}
{item.summary && (
-
- {item.summary}
-
+ {item.summary}
)}
);
diff --git a/src/templates/blocks/References/ReferencesA.js b/src/templates/blocks/References/ReferencesA.js
index bdb24a5d..8eaed4d1 100644
--- a/src/templates/blocks/References/ReferencesA.js
+++ b/src/templates/blocks/References/ReferencesA.js
@@ -1,5 +1,5 @@
import React, { memo, useContext } from 'react';
-import ReactMarkdown from 'react-markdown';
+import Markdown from '../../../components/shared/Markdown';
import { isItemVisible, safetyCheck } from '../../../utils';
import PageContext from '../../../contexts/PageContext';
@@ -10,7 +10,7 @@ const ReferenceItem = ({ id, name, position, phone, email, summary }) => (
{phone}
{email}
{summary && (
- {summary}
+ {summary}
)}
);
diff --git a/src/templates/blocks/References/ReferencesB.js b/src/templates/blocks/References/ReferencesB.js
index 99b7581d..c26b47cd 100644
--- a/src/templates/blocks/References/ReferencesB.js
+++ b/src/templates/blocks/References/ReferencesB.js
@@ -1,5 +1,5 @@
import React, { memo, useContext } from 'react';
-import ReactMarkdown from 'react-markdown';
+import Markdown from '../../../components/shared/Markdown';
import { isItemVisible, safetyCheck } from '../../../utils';
import PageContext from '../../../contexts/PageContext';
@@ -10,7 +10,7 @@ const ReferenceItem = ({ id, name, position, phone, email, summary }) => (
{phone}
{email}
{summary && (
- {summary}
+ {summary}
)}
);
diff --git a/src/templates/blocks/Work/WorkA.js b/src/templates/blocks/Work/WorkA.js
index f8ed1e44..2d8bd632 100644
--- a/src/templates/blocks/Work/WorkA.js
+++ b/src/templates/blocks/Work/WorkA.js
@@ -1,6 +1,6 @@
import { useTranslation } from 'react-i18next';
import React, { memo, useContext } from 'react';
-import ReactMarkdown from 'react-markdown';
+import Markdown from '../../../components/shared/Markdown';
import PageContext from '../../../contexts/PageContext';
import { formatDateRange, isItemVisible, safetyCheck } from '../../../utils';
@@ -29,9 +29,7 @@ const WorkItem = ({ item, language }) => {
)}
{item.summary && (
-
- {item.summary}
-
+ {item.summary}
)}
);