diff --git a/.media/timeline.sketch b/.media/timeline.sketch
deleted file mode 100644
index 7e332d38..00000000
Binary files a/.media/timeline.sketch and /dev/null differ
diff --git a/_media/favicon.svg b/_media/favicon.svg
new file mode 100644
index 00000000..84743808
--- /dev/null
+++ b/_media/favicon.svg
@@ -0,0 +1,25 @@
+
+
\ No newline at end of file
diff --git a/_media/timeline.sketch b/_media/timeline.sketch
new file mode 100644
index 00000000..4953b5f0
Binary files /dev/null and b/_media/timeline.sketch differ
diff --git a/app/components/Meta/Meta.js b/app/components/Meta/Meta.js
new file mode 100644
index 00000000..9b1aa48d
--- /dev/null
+++ b/app/components/Meta/Meta.js
@@ -0,0 +1,47 @@
+import React, { Fragment } from 'react';
+import PropTypes from 'prop-types';
+import Parser from 'html-react-parser';
+import faviconData from '../../../faviconData.json';
+
+const faviconHtml = faviconData && faviconData.favicon.html_code;
+const Favicons = () => Parser(faviconHtml);
+
+const Meta = ({
+ url, type, title, description, image,
+}) => (
+
+
+
+ { title }
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+
+Meta.defaultProps = {
+ url: 'https://timeline.schoenwald.media',
+ type: 'website',
+ title: 'Timeline',
+ description: 'Overview of biblical Persons and events',
+ image: 'https://schoenwald.media/static/assets/images/favicon.png',
+};
+
+Meta.propTypes = {
+ url: PropTypes.string,
+ type: PropTypes.string,
+ title: PropTypes.string,
+ description: PropTypes.string,
+ image: PropTypes.string,
+};
+
+export default Meta;
diff --git a/app/css/theme.css b/app/css/theme.css
index 92063df1..1e94c522 100644
--- a/app/css/theme.css
+++ b/app/css/theme.css
@@ -59,6 +59,8 @@
--color-purple: #c9c;
--color-brown: #635f5e;
+ --color-theme: var(--color-green-darker);
+
--text-color: #2d2d2d;
--link-color: var(--color-green);
--link-color-hover: var(--text-color);
diff --git a/faviconData.json b/faviconData.json
new file mode 100644
index 00000000..28a4e3ad
--- /dev/null
+++ b/faviconData.json
@@ -0,0 +1 @@
+{"result":{"status":"success"},"favicon":{"package_url":"https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/favicon_package_v0.16.zip","files_urls":["https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/android-chrome-192x192.png","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/android-chrome-256x256.png","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/apple-touch-icon.png","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/browserconfig.xml","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/favicon-16x16.png","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/favicon-32x32.png","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/favicon.ico","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/mstile-144x144.png","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/mstile-150x150.png","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/mstile-310x150.png","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/mstile-310x310.png","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/mstile-70x70.png","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/safari-pinned-tab.svg","https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/package_files/site.webmanifest"],"html_code":"\n\n\n\n\n\n\n\n\n","compression":"false","overlapping_markups":["link[rel=\"apple-touch-icon\"]","link[rel=\"shortcut\"]","link[rel=\"shortcut icon\"]","link[rel=\"icon\",sizes=\"16x16\"]","link[rel=\"icon\",sizes=\"32x32\"]","meta[name=\"msapplication-TileColor\"]","meta[name=\"msapplication-TileImage\"]","meta[name=\"msapplication-config\"]","link[rel=\"manifest\"]","meta[name=\"theme-color\"]","link[rel=\"mask-icon\"]"]},"files_location":{"type":"path","path":"/static/assets/images/favicons"},"preview_picture_url":"https://realfavicongenerator.net/files/6acad0216b05c2fc38bdc7405a27e6a42fed8d0c/favicon_preview.png","version":"0.16"}
\ No newline at end of file
diff --git a/faviconDescription.json b/faviconDescription.json
new file mode 100644
index 00000000..2cb937fb
--- /dev/null
+++ b/faviconDescription.json
@@ -0,0 +1,58 @@
+{
+ "masterPicture": "static/assets/images/favicon.png",
+ "iconsPath": "/static/assets/images/favicons",
+ "design": {
+ "ios": {
+ "pictureAspect": "backgroundAndMargin",
+ "backgroundColor": "#ffffff",
+ "margin": "14%",
+ "assets": {
+ "ios6AndPriorIcons": false,
+ "ios7AndLaterIcons": false,
+ "precomposedIcons": false,
+ "declareOnlyDefaultIcon": true
+ }
+ },
+ "desktopBrowser": {},
+ "windows": {
+ "pictureAspect": "noChange",
+ "backgroundColor": "#41ad95",
+ "onConflict": "override",
+ "assets": {
+ "windows80Ie10Tile": false,
+ "windows10Ie11EdgeTiles": {
+ "small": false,
+ "medium": true,
+ "big": false,
+ "rectangle": false
+ }
+ }
+ },
+ "androidChrome": {
+ "pictureAspect": "noChange",
+ "themeColor": "#41ad95",
+ "manifest": {
+ "name": "Timeline",
+ "display": "standalone",
+ "orientation": "notSet",
+ "onConflict": "override",
+ "declared": true
+ },
+ "assets": {
+ "legacyIcon": false,
+ "lowResolutionIcons": false
+ }
+ },
+ "safariPinnedTab": {
+ "pictureAspect": "silhouette",
+ "themeColor": "#5bbad5"
+ }
+ },
+ "settings": {
+ "scalingAlgorithm": "Mitchell",
+ "errorOnImageTooSmall": false,
+ "readmeFile": false,
+ "htmlCodeFile": false,
+ "usePathAsIs": false
+ }
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 783c27b8..b23ae1b6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1788,6 +1788,16 @@
"resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
"integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q=="
},
+ "binary": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
+ "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
+ "dev": true,
+ "requires": {
+ "buffers": "~0.1.1",
+ "chainsaw": "~0.1.0"
+ }
+ },
"binary-extensions": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
@@ -1944,6 +1954,12 @@
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk="
},
+ "buffers": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
+ "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
+ "dev": true
+ },
"builtin-modules": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
@@ -2068,6 +2084,23 @@
"resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz",
"integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw=="
},
+ "chainsaw": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
+ "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
+ "dev": true,
+ "requires": {
+ "traverse": ">=0.3.0 <0.4"
+ },
+ "dependencies": {
+ "traverse": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
+ "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
+ "dev": true
+ }
+ }
+ },
"chalk": {
"version": "1.1.3",
"resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
@@ -2248,6 +2281,33 @@
"restore-cursor": "^2.0.0"
}
},
+ "cli-real-favicon": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/cli-real-favicon/-/cli-real-favicon-0.0.6.tgz",
+ "integrity": "sha1-KAWy/jiGpQjfXGqgUFLeh88eZfU=",
+ "dev": true,
+ "requires": {
+ "bluebird": "3.*",
+ "commander": "^2.9.0",
+ "glob": "6.*",
+ "rfg-api": "^0.1.3"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
"cli-truncate": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
@@ -2706,6 +2766,16 @@
"sha.js": "^2.4.8"
}
},
+ "create-react-class": {
+ "version": "15.6.3",
+ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz",
+ "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==",
+ "requires": {
+ "fbjs": "^0.8.9",
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ },
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
@@ -2741,6 +2811,17 @@
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
"integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4="
},
+ "css": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
+ "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "source-map": "^0.6.1",
+ "source-map-resolve": "^0.5.2",
+ "urix": "^0.1.0"
+ }
+ },
"css-color-function": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.3.tgz",
@@ -3959,9 +4040,9 @@
}
},
"eslint-plugin-jsx-a11y": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.1.tgz",
- "integrity": "sha512-JsxNKqa3TwmPypeXNnI75FntkUktGzI1wSa1LgNZdSOMI+B4sxnr1lSF8m8lPiz4mKiC+14ysZQM4scewUrP7A==",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz",
+ "integrity": "sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw==",
"requires": {
"aria-query": "^3.0.0",
"array-includes": "^3.0.3",
@@ -5138,6 +5219,18 @@
}
}
},
+ "fstream": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
+ }
+ },
"ftp": {
"version": "0.3.10",
"resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz",
@@ -5594,11 +5687,53 @@
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
},
+ "html-dom-parser": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-0.1.3.tgz",
+ "integrity": "sha512-kGhjJDkfiA2/3y0gc2Bi+rseJWJSKz4CioS4EM+vN80fw863f1hn3G+7EaP0/benxceky4a8TzEeW6+dDjUh7A==",
+ "requires": {
+ "domhandler": "2.3.0",
+ "htmlparser2": "3.9.1"
+ },
+ "dependencies": {
+ "domhandler": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
+ "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "htmlparser2": {
+ "version": "3.9.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.1.tgz",
+ "integrity": "sha1-Yht6WLyazQA/evCiyaAKpnyFBdI=",
+ "requires": {
+ "domelementtype": "^1.3.0",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ }
+ }
+ },
"html-entities": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
"integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8="
},
+ "html-react-parser": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-0.4.7.tgz",
+ "integrity": "sha512-h3EUYXqKXts68/ynQwH5ws57vg2P94VzvzpwVRwYgWjW+uEtkXDjOO8q/7UmfcGX4DFHJ69UlQJa1RoRXCTaPg==",
+ "requires": {
+ "html-dom-parser": "0.1.3",
+ "react-dom-core": "0.0.3",
+ "style-to-object": "0.2.2"
+ }
+ },
"html-tags": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz",
@@ -7281,6 +7416,42 @@
"resolved": "https://registry.npmjs.org/marked/-/marked-0.5.1.tgz",
"integrity": "sha512-iUkBZegCZou4AdwbKTwSW/lNDcz5OuRSl3qdcl31Ia0B2QPG0Jn+tKblh/9/eP9/6+4h27vpoh8wel/vQOV0vw=="
},
+ "match-stream": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz",
+ "integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=",
+ "dev": true,
+ "requires": {
+ "buffers": "~0.1.1",
+ "readable-stream": "~1.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
"math-random": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
@@ -7394,6 +7565,18 @@
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz",
"integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg=="
},
+ "metaparser": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/metaparser/-/metaparser-1.0.7.tgz",
+ "integrity": "sha1-wGmaZoageovOGsBrYulGLC5mqso=",
+ "dev": true,
+ "requires": {
+ "async": "*",
+ "cheerio": "*",
+ "mkdirp": "*",
+ "underscore": "*"
+ }
+ },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -7644,6 +7827,12 @@
}
}
},
+ "natives": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.5.tgz",
+ "integrity": "sha512-1pJ+02gl2KJgCPFtpZGtuD4lGSJnIZvvFHCQTOeDRMSXjfu2GmYWuhI8NFMA4W2I5NNFRbfy/YCiVt4CgNpP8A==",
+ "dev": true
+ },
"natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -8023,6 +8212,33 @@
"semver": "^5.3.0"
}
},
+ "node-rest-client": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/node-rest-client/-/node-rest-client-1.8.0.tgz",
+ "integrity": "sha1-jTxWa4F+JzlMtyc3g6Qcrv4+WVU=",
+ "dev": true,
+ "requires": {
+ "debug": "~2.2.0",
+ "xml2js": ">=0.2.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "dev": true,
+ "requires": {
+ "ms": "0.7.1"
+ }
+ },
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+ "dev": true
+ }
+ }
+ },
"nomnom": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz",
@@ -8314,6 +8530,12 @@
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
+ "over": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz",
+ "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=",
+ "dev": true
+ },
"p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
@@ -9391,6 +9613,44 @@
"randombytes": "^2.0.1"
}
},
+ "pullstream": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz",
+ "integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=",
+ "dev": true,
+ "requires": {
+ "over": ">= 0.0.5 < 1",
+ "readable-stream": "~1.0.31",
+ "setimmediate": ">= 1.0.2 < 2",
+ "slice-stream": ">= 1.0.0 < 2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -9565,6 +9825,30 @@
"schedule": "^0.5.0"
}
},
+ "react-dom-core": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/react-dom-core/-/react-dom-core-0.0.3.tgz",
+ "integrity": "sha512-pMMNOU4Hhe/LmkGWMVOpQmPnKQo+bGaWY3Y0+OjXmsQVB5LJ3sr4hVCM/7MpcRGeEMcfaRaoHyiLhufzk/BL4w==",
+ "requires": {
+ "fbjs": "*",
+ "object-assign": "*",
+ "react": "15"
+ },
+ "dependencies": {
+ "react": {
+ "version": "15.6.2",
+ "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz",
+ "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=",
+ "requires": {
+ "create-react-class": "^15.6.0",
+ "fbjs": "^0.8.9",
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.0",
+ "prop-types": "^15.5.10"
+ }
+ }
+ }
+ },
"react-error-overlay": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-4.0.0.tgz",
@@ -9957,6 +10241,19 @@
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
},
+ "rfg-api": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/rfg-api/-/rfg-api-0.1.7.tgz",
+ "integrity": "sha1-E99D1k2v0okrsNuaZCJHWARiV2E=",
+ "dev": true,
+ "requires": {
+ "fstream": "^1.0.2",
+ "metaparser": "^1.0.7",
+ "mkdirp": "^0.5.0",
+ "node-rest-client": "^1.4.1",
+ "unzip": "^0.1.11"
+ }
+ },
"rgb": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz",
@@ -10244,6 +10541,41 @@
"is-fullwidth-code-point": "^2.0.0"
}
},
+ "slice-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz",
+ "integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~1.0.31"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
"smart-buffer": {
"version": "1.1.15",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz",
@@ -11051,6 +11383,14 @@
"resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
"integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI="
},
+ "style-to-object": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.2.2.tgz",
+ "integrity": "sha512-GcbtvfsqyKmIPpHeOHZ5Rmwsx2MDJct4W9apmTGcbPTbpA2FcgTFl2Z43Hm4Qb61MWGPNK8Chki7ITiY7lLOow==",
+ "requires": {
+ "css": "2.2.4"
+ }
+ },
"styled-components": {
"version": "3.4.9",
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-3.4.9.tgz",
@@ -13230,6 +13570,67 @@
}
}
},
+ "unzip": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/unzip/-/unzip-0.1.11.tgz",
+ "integrity": "sha1-iXScY7BY19kNYZ+GuYqhU107l/A=",
+ "dev": true,
+ "requires": {
+ "binary": ">= 0.3.0 < 1",
+ "fstream": ">= 0.1.30 < 1",
+ "match-stream": ">= 0.0.2 < 1",
+ "pullstream": ">= 0.4.1 < 1",
+ "readable-stream": "~1.0.31",
+ "setimmediate": ">= 1.0.1 < 2"
+ },
+ "dependencies": {
+ "fstream": {
+ "version": "0.1.31",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz",
+ "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "~3.0.2",
+ "inherits": "~2.0.0",
+ "mkdirp": "0.5",
+ "rimraf": "2"
+ }
+ },
+ "graceful-fs": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
+ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
+ "dev": true,
+ "requires": {
+ "natives": "^1.1.0"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
"upath": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
diff --git a/package.json b/package.json
index 01976a85..374fbdb7 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,8 @@
"lint:sc": "stylelint \"**/*.js\" --formatter verbose --config .stylelintrc-sc",
"lint:js": "eslint \"**/*.js\"",
"lint:js:fix": "eslint \"**/*.js\" --fix",
- "lint:html": "htmlhint out"
+ "lint:html": "htmlhint out",
+ "favicons-generate": "real-favicon generate faviconDescription.json faviconData.json static/assets/images/favicons"
},
"lint-staged": {
"**/*.js": [
@@ -48,6 +49,7 @@
"enzyme": "3.6.0",
"eslint": "5.6.0",
"eslint-config-schoenwaldnils": "1.0.2",
+ "html-react-parser": "0.4.7",
"htmlhint": "0.10.1",
"husky": "1.0.0",
"isomorphic-fetch": "2.2.1",
@@ -84,5 +86,8 @@
"hooks": {
"pre-commit": "lint-staged"
}
+ },
+ "devDependencies": {
+ "cli-real-favicon": "0.0.6"
}
}
diff --git a/pages/_document.js b/pages/_document.js
index aa28a927..7570ffee 100644
--- a/pages/_document.js
+++ b/pages/_document.js
@@ -1,6 +1,7 @@
import React from 'react';
import Document, { Head, Main, NextScript } from 'next/document';
import { ServerStyleSheet } from 'styled-components';
+import Meta from '../app/components/Meta/Meta';
export default class MyDocument extends Document {
static getInitialProps({ renderPage }) {
@@ -17,6 +18,7 @@ export default class MyDocument extends Document {
+
{this.props.styleTags}
diff --git a/scripts/contentful.js b/scripts/contentful.js
index d905bd91..d8495814 100644
--- a/scripts/contentful.js
+++ b/scripts/contentful.js
@@ -10,13 +10,11 @@ export async function getEntries(type) {
const entries = [];
let order;
let select = 'sys.id';
- let isPerson = false;
switch (type) {
case 'person':
order = 'fields.startYear';
select = 'sys.id,fields.name';
- isPerson = true;
break;
case 'time':
order = 'fields.startYear';
@@ -39,7 +37,7 @@ export async function getEntries(type) {
id: item.sys.id,
};
- if (isPerson) {
+ if (type === 'person') {
entry = {
id: item.sys.id,
url: `/personen/${paramCase(item.fields.name)}`,
diff --git a/scripts/deploy.sh b/scripts/deploy.sh
deleted file mode 100644
index 30de6611..00000000
--- a/scripts/deploy.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-set -e # Exit with nonzero exit code if anything fails
-
-# Save some useful information
-REPO=`git config remote.origin.url`
-SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:}
-SHA=`git rev-parse --verify HEAD`
-
-
-if [ "$TRAVIS" = "true" ]
-then
- git config --global user.name "$COMMIT_AUTHOR_NAME"
- git config --global user.email "$COMMIT_AUTHOR_EMAIL"
-fi
-
-# Get the deploy key by using Travis's stored variables to decrypt deploy_key.enc
-
-ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key"
-ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv"
-ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR}
-ENCRYPTED_IV=${!ENCRYPTED_IV_VAR}
-openssl aes-256-cbc -K $ENCRYPTED_KEY -iv $ENCRYPTED_IV -in deploy_key.enc -out deploy_key -d
-chmod 600 deploy_key
-eval `ssh-agent -s`
-ssh-add deploy_key
-
-sudo touch out/.nojekyll
-sudo cp CNAME out/
-
-ls -a out
-
-./node_modules/.bin/gh-pages --repo $SSH_REPO --dist out --dotfiles
diff --git a/static/assets/images/favicon.png b/static/assets/images/favicon.png
new file mode 100644
index 00000000..fbe29254
Binary files /dev/null and b/static/assets/images/favicon.png differ
diff --git a/static/assets/images/favicons/android-chrome-192x192.png b/static/assets/images/favicons/android-chrome-192x192.png
new file mode 100644
index 00000000..a4c8a427
Binary files /dev/null and b/static/assets/images/favicons/android-chrome-192x192.png differ
diff --git a/static/assets/images/favicons/android-chrome-256x256.png b/static/assets/images/favicons/android-chrome-256x256.png
new file mode 100644
index 00000000..03c1dc91
Binary files /dev/null and b/static/assets/images/favicons/android-chrome-256x256.png differ
diff --git a/static/assets/images/favicons/apple-touch-icon.png b/static/assets/images/favicons/apple-touch-icon.png
new file mode 100644
index 00000000..3326a6dc
Binary files /dev/null and b/static/assets/images/favicons/apple-touch-icon.png differ
diff --git a/static/assets/images/favicons/browserconfig.xml b/static/assets/images/favicons/browserconfig.xml
new file mode 100644
index 00000000..fd98cfb0
--- /dev/null
+++ b/static/assets/images/favicons/browserconfig.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ #41ad95
+
+
+
diff --git a/static/assets/images/favicons/favicon-16x16.png b/static/assets/images/favicons/favicon-16x16.png
new file mode 100644
index 00000000..8eeb6a2f
Binary files /dev/null and b/static/assets/images/favicons/favicon-16x16.png differ
diff --git a/static/assets/images/favicons/favicon-32x32.png b/static/assets/images/favicons/favicon-32x32.png
new file mode 100644
index 00000000..20538909
Binary files /dev/null and b/static/assets/images/favicons/favicon-32x32.png differ
diff --git a/static/assets/images/favicons/favicon.ico b/static/assets/images/favicons/favicon.ico
new file mode 100644
index 00000000..8b9fc491
Binary files /dev/null and b/static/assets/images/favicons/favicon.ico differ
diff --git a/static/assets/images/favicons/mstile-144x144.png b/static/assets/images/favicons/mstile-144x144.png
new file mode 100644
index 00000000..cea32ed5
Binary files /dev/null and b/static/assets/images/favicons/mstile-144x144.png differ
diff --git a/static/assets/images/favicons/mstile-150x150.png b/static/assets/images/favicons/mstile-150x150.png
new file mode 100644
index 00000000..a8eaaf7c
Binary files /dev/null and b/static/assets/images/favicons/mstile-150x150.png differ
diff --git a/static/assets/images/favicons/mstile-310x150.png b/static/assets/images/favicons/mstile-310x150.png
new file mode 100644
index 00000000..ec56c1c2
Binary files /dev/null and b/static/assets/images/favicons/mstile-310x150.png differ
diff --git a/static/assets/images/favicons/mstile-310x310.png b/static/assets/images/favicons/mstile-310x310.png
new file mode 100644
index 00000000..35df14fb
Binary files /dev/null and b/static/assets/images/favicons/mstile-310x310.png differ
diff --git a/static/assets/images/favicons/mstile-70x70.png b/static/assets/images/favicons/mstile-70x70.png
new file mode 100644
index 00000000..e7cba5c6
Binary files /dev/null and b/static/assets/images/favicons/mstile-70x70.png differ
diff --git a/static/assets/images/favicons/safari-pinned-tab.svg b/static/assets/images/favicons/safari-pinned-tab.svg
new file mode 100644
index 00000000..4b00ef1c
--- /dev/null
+++ b/static/assets/images/favicons/safari-pinned-tab.svg
@@ -0,0 +1,17 @@
+
+
+
diff --git a/static/assets/images/favicons/site.webmanifest b/static/assets/images/favicons/site.webmanifest
new file mode 100644
index 00000000..a9ca2d92
--- /dev/null
+++ b/static/assets/images/favicons/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "Timeline",
+ "short_name": "Timeline",
+ "icons": [
+ {
+ "src": "/static/assets/images/favicons/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/static/assets/images/favicons/android-chrome-256x256.png",
+ "sizes": "256x256",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#41ad95",
+ "background_color": "#41ad95",
+ "display": "standalone"
+}
diff --git a/static/site.webmanifest b/static/site.webmanifest
new file mode 100644
index 00000000..d56680b1
--- /dev/null
+++ b/static/site.webmanifest
@@ -0,0 +1,21 @@
+{
+ "name": "Sch\u00f6nwald",
+ "short_name": "Sch\u00f6nwald",
+ "start_url": "/",
+ "theme_color": "#ba3e48",
+ "background_color": "#424242",
+ "display": "browser",
+ "icons": [
+ {
+ "src": "/static/assets/images/favicons/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/static/assets/images/favicons/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "splash_pages": null
+}