From fd972382eb05ff479fc21cbd8f73fd2fc3edb36a Mon Sep 17 00:00:00 2001
From: Harris Greenstein
Date: Thu, 14 Dec 2023 23:49:49 -0500
Subject: [PATCH] Adding share links for blog with 'Font-Awesome'
---
client/package-lock.json | 61 ++++++++++++
client/package.json | 4 +
client/src/components/Blog/Blog.jsx | 144 +++++++++++++++++++--------
client/src/components/Blog/blog.scss | 28 ++++++
4 files changed, 198 insertions(+), 39 deletions(-)
diff --git a/client/package-lock.json b/client/package-lock.json
index 8047936..d5d8c28 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -9,6 +9,10 @@
"version": "0.0.0",
"dependencies": {
"@emailjs/browser": "^3.11.0",
+ "@fortawesome/fontawesome-svg-core": "^6.5.1",
+ "@fortawesome/free-brands-svg-icons": "^6.5.1",
+ "@fortawesome/free-solid-svg-icons": "^6.5.1",
+ "@fortawesome/react-fontawesome": "^0.2.0",
"@popperjs/core": "^2.11.8",
"axios": "^1.6.1",
"bootstrap": "^5.3.2",
@@ -846,6 +850,63 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/@fortawesome/fontawesome-common-types": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.1.tgz",
+ "integrity": "sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==",
+ "hasInstallScript": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/fontawesome-svg-core": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.1.tgz",
+ "integrity": "sha512-MfRCYlQPXoLlpem+egxjfkEuP9UQswTrlCOsknus/NcMoblTH2g0jPrapbcIb04KGA7E2GZxbAccGZfWoYgsrQ==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "6.5.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/free-brands-svg-icons": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.1.tgz",
+ "integrity": "sha512-093l7DAkx0aEtBq66Sf19MgoZewv1zeY9/4C7vSKPO4qMwEsW/2VYTUTpBtLwfb9T2R73tXaRDPmE4UqLCYHfg==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "6.5.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/free-solid-svg-icons": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.1.tgz",
+ "integrity": "sha512-S1PPfU3mIJa59biTtXJz1oI0+KAXW6bkAb31XKhxdxtuXDiUIFsih4JR1v5BbxY7hVHsD1RKq+jRkVRaf773NQ==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "6.5.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/react-fontawesome": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz",
+ "integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==",
+ "dependencies": {
+ "prop-types": "^15.8.1"
+ },
+ "peerDependencies": {
+ "@fortawesome/fontawesome-svg-core": "~1 || ~6",
+ "react": ">=16.3"
+ }
+ },
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.13",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
diff --git a/client/package.json b/client/package.json
index 3da5363..5d529af 100644
--- a/client/package.json
+++ b/client/package.json
@@ -14,6 +14,10 @@
},
"dependencies": {
"@emailjs/browser": "^3.11.0",
+ "@fortawesome/fontawesome-svg-core": "^6.5.1",
+ "@fortawesome/free-brands-svg-icons": "^6.5.1",
+ "@fortawesome/free-solid-svg-icons": "^6.5.1",
+ "@fortawesome/react-fontawesome": "^0.2.0",
"@popperjs/core": "^2.11.8",
"axios": "^1.6.1",
"bootstrap": "^5.3.2",
diff --git a/client/src/components/Blog/Blog.jsx b/client/src/components/Blog/Blog.jsx
index 491f3bc..044459d 100644
--- a/client/src/components/Blog/Blog.jsx
+++ b/client/src/components/Blog/Blog.jsx
@@ -5,7 +5,27 @@ import TestGraph from './assets/average_test_scores_by_age.png';
import OutputComparison from './assets/Output Comparison Nova Mode.png';
import CoverPhoto from './assets/dalleCoverPhoto.png';
import { DiscussionEmbed } from 'disqus-react';
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import {
+ faFacebookF,
+ faTwitter,
+ faLinkedinIn,
+} from '@fortawesome/free-brands-svg-icons';
+import { faEnvelope, faLink } from '@fortawesome/free-solid-svg-icons';
function Blog() {
+ function copyToClipboard() {
+ navigator.clipboard
+ .writeText(
+ 'https://harrisgreenstein.com/blog/how_will_coders_co_program_with_ai'
+ )
+ .then(() => {
+ alert('Link copied to clipboard!');
+ })
+ .catch((err) => {
+ console.error('Error in copying text: ', err);
+ });
+ }
+
return (
-
+
Photo generated by Dalle 3 given full text of the article
asked to describe the relationship between A.I. and coders
in the future
@@ -681,24 +706,29 @@ function Blog() {
axes. For example, the grid below shows the maximum special
positions in a 3x3 grid, 3 with all 1s on the diagonal.
-
+
Success with
Intuitive Pseudo Code
@@ -977,21 +1007,21 @@ function Blog() {
The
Outcome: A Fully Functional Graph
-
+
+ Share This Article:
+
+
About The Author:
@@ -1078,11 +1144,11 @@ function Blog() {
Footer
diff --git a/client/src/components/Blog/blog.scss b/client/src/components/Blog/blog.scss
index 5870c39..365cc65 100644
--- a/client/src/components/Blog/blog.scss
+++ b/client/src/components/Blog/blog.scss
@@ -98,6 +98,34 @@
text-decoration: none;
color: inherit;
}
+.share-icons {
+ display: flex;
+ justify-content: flex-start;
+ gap: 20px;
+ margin-top: 20px;
+}
+
+.share-icons a, .share-icons button {
+ border: none;
+ background: none;
+}
+
+.share-icons img {
+ width: 50px;
+ height: 30px;
+ cursor: pointer;
+}
+
+.share-icons button {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.share-icons > button > svg{
+
+ color: var(--bs-link-color);
+}
+
.blog-container {
p {
code {