diff --git a/.eslintcache b/.eslintcache index 650f66e..085f8c4 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\index.tsx":"1","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\reportWebVitals.ts":"2","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\App.tsx":"3","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Header.tsx":"4","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Home.tsx":"5","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Main.tsx":"6","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Contact.tsx":"7","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Resume.tsx":"8","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\ProjectGrid.tsx":"9","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\cusotmHooks.ts":"10"},{"size":560,"mtime":1609455390298,"results":"11","hashOfConfig":"12"},{"size":440,"mtime":1609445337674,"results":"13","hashOfConfig":"12"},{"size":262,"mtime":1609448057026,"results":"14","hashOfConfig":"12"},{"size":885,"mtime":1609448882867,"results":"15","hashOfConfig":"12"},{"size":402,"mtime":1609452953574,"results":"16","hashOfConfig":"12"},{"size":424,"mtime":1609448271170,"results":"17","hashOfConfig":"12"},{"size":142,"mtime":1609448138377,"results":"18","hashOfConfig":"12"},{"size":132,"mtime":1609448124025,"results":"19","hashOfConfig":"12"},{"size":6652,"mtime":1609462712897,"results":"20","hashOfConfig":"12"},{"size":1072,"mtime":1609462531624,"results":"21","hashOfConfig":"12"},{"filePath":"22","messages":"23","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},"lcbj9u",{"filePath":"25","messages":"26","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"27","messages":"28","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"29","messages":"30","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"31","usedDeprecatedRules":"24"},{"filePath":"32","messages":"33","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"34","messages":"35","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"36","messages":"37","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"38","messages":"39","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"40","messages":"41","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"42","messages":"43","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\index.tsx",[],["44","45"],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\reportWebVitals.ts",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\App.tsx",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Header.tsx",["46","47"],"import React from \"react\";\nimport \"./Header.scss\";\nimport {Button, Space, Typography} from \"antd\";\nimport {Link} from \"react-router-dom\";\n\nconst {Title} = Typography;\n\nexport const Header = () => {\n return (\n
\n \n

Jake Cover

\n \n\n \n \n

Home

\n \n\n \n

Contact

\n \n \n

Resume

\n \n \n

GitHub

\n
\n
\n
\n );\n};\n","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Home.tsx",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Main.tsx",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Contact.tsx",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Resume.tsx",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\ProjectGrid.tsx",["48","49"],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\cusotmHooks.ts",[],{"ruleId":"50","replacedBy":"51"},{"ruleId":"52","replacedBy":"53"},{"ruleId":"54","severity":1,"message":"55","line":3,"column":9,"nodeType":"56","messageId":"57","endLine":3,"endColumn":15},{"ruleId":"54","severity":1,"message":"58","line":6,"column":8,"nodeType":"56","messageId":"57","endLine":6,"endColumn":13},{"ruleId":"54","severity":1,"message":"59","line":19,"column":7,"nodeType":"56","messageId":"57","endLine":19,"endColumn":14},{"ruleId":"54","severity":1,"message":"60","line":76,"column":13,"nodeType":"56","messageId":"57","endLine":76,"endColumn":18},"no-native-reassign",["61"],"no-negated-in-lhs",["62"],"@typescript-eslint/no-unused-vars","'Button' is defined but never used.","Identifier","unusedVar","'Title' is assigned a value but never used.","'OneWide' is assigned a value but never used.","'msnry' is assigned a value but never used.","no-global-assign","no-unsafe-negation"] \ No newline at end of file +[{"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\index.tsx":"1","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\reportWebVitals.ts":"2","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\App.tsx":"3","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Header.tsx":"4","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Home.tsx":"5","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Main.tsx":"6","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Contact.tsx":"7","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Resume.tsx":"8","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\ProjectGrid.tsx":"9","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\cusotmHooks.ts":"10","C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Footer.tsx":"11"},{"size":560,"mtime":1609455390298,"results":"12","hashOfConfig":"13"},{"size":440,"mtime":1609445337674,"results":"14","hashOfConfig":"13"},{"size":325,"mtime":1609478255067,"results":"15","hashOfConfig":"13"},{"size":1253,"mtime":1609469803899,"results":"16","hashOfConfig":"13"},{"size":567,"mtime":1609471849263,"results":"17","hashOfConfig":"13"},{"size":424,"mtime":1609448271170,"results":"18","hashOfConfig":"13"},{"size":142,"mtime":1609448138377,"results":"19","hashOfConfig":"13"},{"size":132,"mtime":1609448124025,"results":"20","hashOfConfig":"13"},{"size":8449,"mtime":1609478060725,"results":"21","hashOfConfig":"13"},{"size":1072,"mtime":1609462531624,"results":"22","hashOfConfig":"13"},{"size":1236,"mtime":1609479233269,"results":"23","hashOfConfig":"13"},{"filePath":"24","messages":"25","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"26"},"lcbj9u",{"filePath":"27","messages":"28","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"26"},{"filePath":"29","messages":"30","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31","messages":"32","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33","messages":"34","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35","messages":"36","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"26"},{"filePath":"37","messages":"38","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"26"},{"filePath":"39","messages":"40","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"26"},{"filePath":"41","messages":"42","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"43","messages":"44","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"45","messages":"46","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\index.tsx",[],["47","48"],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\reportWebVitals.ts",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\App.tsx",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Header.tsx",["49"],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Home.tsx",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Main.tsx",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Contact.tsx",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Resume.tsx",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\ProjectGrid.tsx",["50"],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\cusotmHooks.ts",[],"C:\\Users\\jdc10\\Documents\\GitHub\\PersonalWebsite_Static\\src\\components\\Footer.tsx",[],{"ruleId":"51","replacedBy":"52"},{"ruleId":"53","replacedBy":"54"},{"ruleId":"55","severity":1,"message":"56","line":41,"column":9,"nodeType":"57","endLine":45,"endColumn":10},{"ruleId":"58","severity":1,"message":"59","line":157,"column":9,"nodeType":"60","messageId":"61","endLine":157,"endColumn":14},"no-native-reassign",["62"],"no-negated-in-lhs",["63"],"jsx-a11y/anchor-is-valid","The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/anchor-is-valid.md","JSXOpeningElement","@typescript-eslint/no-unused-vars","'msnry' is assigned a value but never used.","Identifier","unusedVar","no-global-assign","no-unsafe-negation"] \ No newline at end of file diff --git a/Old/index.html b/Old/index.html index 4174343..452f6ee 100644 --- a/Old/index.html +++ b/Old/index.html @@ -48,7 +48,7 @@
- CodeDay SD Logo + CodeDay SD Logo

CodeDay, an event by SRND, is a beginner-friendly 24 hour event for students that challenges @@ -58,7 +58,7 @@

- Redish Heart, SRND Logo + Redish Heart, SRND Logo

SRND is an educational nonprofit that works to provide CS education to high school and @@ -68,7 +68,7 @@

- Distest Logo + Distest Logo

Distest is a testing library for Discord bots that allows for full integration tests of your bot, @@ -77,7 +77,7 @@

- Red to Blue Gradient w/ White Download Icon + Red to Blue Gradient w/ White Download Icon

A Chrome extension to help you download beatsaber songs directly from ScoreSaber. No more searching @@ -86,7 +86,7 @@

- ForeSight Sports Logo0 + ForeSight Sports Logo0

Foresight Sports creates advanced augmented reality sports experiences. I created multiple games diff --git a/package-lock.json b/package-lock.json index a4d741e..ecc4f78 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1211,6 +1211,35 @@ } } }, + "@fortawesome/fontawesome-common-types": { + "version": "0.2.32", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.32.tgz", + "integrity": "sha512-ux2EDjKMpcdHBVLi/eWZynnPxs0BtFVXJkgHIxXRl+9ZFaHPvYamAfCzeeQFqHRjuJtX90wVnMRaMQAAlctz3w==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "1.2.32", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.32.tgz", + "integrity": "sha512-XjqyeLCsR/c/usUpdWcOdVtWFVjPbDFBTQkn2fQRrWhhUoxriQohO2RWDxLyUM8XpD+Zzg5xwJ8gqTYGDLeGaQ==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.32" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.1.tgz", + "integrity": "sha512-EFMuKtzRMNbvjab/SvJBaOOpaqJfdSap/Nl6hst7CgrJxwfORR1drdTV6q1Ib/JVzq4xObdTDcT6sqTaXMqfdg==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.32" + } + }, + "@fortawesome/react-fontawesome": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.14.tgz", + "integrity": "sha512-4wqNb0gRLVaBm/h+lGe8UfPPivcbuJ6ecI4hIgW0LjI7kzpYB9FkN0L9apbVzg+lsBdcTf0AlBtODjcSX5mmKA==", + "requires": { + "prop-types": "^15.7.2" + } + }, "@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", diff --git a/package.json b/package.json index 52315ec..e1be82b 100644 --- a/package.json +++ b/package.json @@ -3,26 +3,27 @@ "version": "0.1.0", "private": true, "dependencies": { + "@ant-design/icons": "^4.3.0", "@testing-library/jest-dom": "^5.11.6", "@testing-library/react": "^11.2.2", "@testing-library/user-event": "^12.6.0", "@types/jest": "^26.0.19", + "@types/masonry-layout": "^4.2.2", "@types/node": "^12.19.11", "@types/react": "^16.14.2", "@types/react-dom": "^16.9.10", "@types/react-router-dom": "^5.1.7", - "@types/masonry-layout": "^4.2.2", "antd": "^4.9.4", - "react-router-dom": "^5.2.0", + "include-media": "^1.4.9", + "masonry-layout": "^4.2.2", "node-sass": "^4.14.1", "prettier": "^2.2.1", "react": "^17.0.1", "react-dom": "^17.0.1", + "react-router-dom": "^5.2.0", "react-scripts": "4.0.1", - "include-media": "^1.4.9", "typescript": "^4.1.3", - "web-vitals": "^0.2.4", - "masonry-layout": "^4.2.2" + "web-vitals": "^0.2.4" }, "scripts": { "start": "react-scripts start", diff --git a/src/App.tsx b/src/App.tsx index f00cd5a..4bbf9a0 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,6 @@ import React from "react"; import "./App.scss"; +import { Footer } from "./components/Footer"; import { Header } from "./components/Header"; import { Main } from "./components/Main"; @@ -8,6 +9,7 @@ function App() {

+
); } diff --git a/src/components/Footer.scss b/src/components/Footer.scss new file mode 100644 index 0000000..58fdb4c --- /dev/null +++ b/src/components/Footer.scss @@ -0,0 +1,37 @@ +.site-footer { + background: darkgrey; + margin: 10px; + border-radius: 5px; + + h2 { + font-family: "Fira Code", monospace; + margin: 0; + } + + p { + font-family: "Montserrat", sans-serif; + } +} + +.footer-grid { + display: flex; + justify-content: space-evenly; + + .footer-links { + padding-left: 0; + margin: 0; + + columns: 100px 2; + + li { + list-style: none; + } + + a { + //color: black; + font-family: "Montserrat", sans-serif; + text-decoration: underline; + } + } + +} diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx new file mode 100644 index 0000000..1b21019 --- /dev/null +++ b/src/components/Footer.tsx @@ -0,0 +1,42 @@ +import "./Footer.scss" + +export const Footer = () => { + return ( +
+
+
+

+ Made with ☕ and ❤️ by Jake Cover, a CS student who really needs to find something + witty and interesting to put here soon. Feel free to reach out! +
+ Checklist Icon by Arthur Shlain from the Noun Project +

+
+
+

Links and Stuff

+ +
+
+
+
+ Copyright © 2020 All Rights Reserved by Jake Cover +
+
+ ); +}; diff --git a/src/components/Header.scss b/src/components/Header.scss index 8121657..01ff588 100644 --- a/src/components/Header.scss +++ b/src/components/Header.scss @@ -1,15 +1,6 @@ header { display: flex; flex-direction: row; - align-content: center; - - :nth-child(2) { - margin-left: auto; - } - - h2:last-of-type { - margin-right: 5px; - } margin: 10px; padding: 10px; @@ -22,7 +13,54 @@ header { margin: 0 0 0 5px; } - h2 { - margin: 0 + .headerLinks { + display: flex; + flex-direction: row; + align-content: center; + margin-left: auto; + + h2 { + margin: 0; + border-radius: 5px; + + &:hover { + background: #ddd; + } + + &.active { + background-color: #4CAF50; + color: white; + } + } + + h2:last-of-type { + margin-right: 5px; + } + + + /* Hide the link that should open and close the topnav on small screens */ + .icon { + display: none; + } + + @media screen and (max-width: 660px) { + h2 { + display: none; + } + + .icon { + margin-left: auto; + display: block; + } + } + } + + @media screen and (max-width: 660px) { + &.responsive { + background: #282c34; + h2 { + display: block; + } + } } } diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 62cbf7b..74b38de 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,32 +1,51 @@ import React from "react"; import "./Header.scss"; -import {Button, Space, Typography} from "antd"; -import {Link} from "react-router-dom"; +import { Space } from "antd"; +import { Link } from "react-router-dom"; +import {MenuOutlined} from "@ant-design/icons"; -const {Title} = Typography; export const Header = () => { - return ( -
- -

Jake Cover

- + function showHideHamburger() { + var x = document.getElementById("myHeader"); + // @ts-ignore + if (x.className === "header") { + // @ts-ignore + x.className += " responsive"; + } else { + // @ts-ignore + x.className = "header"; + } + } - - -

Home

- + return ( +
+ +

Jake Cover

+ - -

Contact

- - -

Resume

- - -

GitHub

-
- -
- ); + + +

Home

+ + + +

Contact

+ + +

Resume

+ + +

GitHub

+
+ showHideHamburger()} + > + + +
+
+ ); }; diff --git a/src/components/Home.tsx b/src/components/Home.tsx index 1cce8c4..054761e 100644 --- a/src/components/Home.tsx +++ b/src/components/Home.tsx @@ -6,7 +6,8 @@ export const Home = () => {

- Hi! I'm Julie, a CS student from the west coast! Take a look at some of my projects below! + Hi! I'm Jake, a CS student from the west coast! Take a look at some of my projects below!
+ This site is still under construction, so pardon the duplicate information and the horrendous colors. The final version should be up soon!

diff --git a/src/components/ProjectGrid.scss b/src/components/ProjectGrid.scss index 4ab77f4..3c7c3cf 100644 --- a/src/components/ProjectGrid.scss +++ b/src/components/ProjectGrid.scss @@ -20,13 +20,13 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar //padding: 10px; @include media("<=x-small") { - .GridSizer, .OneByOne, .FourByOne { + .GridSizer, .OneWide, .FourByOne { width: 100%; } } @include media(">x-small", "=small", "=medium", "=large", "=x-large") { - .GridSizer, .OneByOne { + .GridSizer, .OneWide { width: 300px; } .FourByOne { - width: 1200px; + width: 900px; } } +} + +.GridElement { + padding: 5px; + + .GridElementInternal { + padding: 9px; + border-radius: 5px; + background: lightcyan; + + box-shadow: 0 1px 2px rgba(0,0,0,0.15); + transition: box-shadow 0.3s ease-in-out; + } + + .GridElementInternal:hover { + box-shadow: 0 2px 5px rgba(0,0,0,0.3); + } + h2 { + font-family: "Fira Code", monospace; + font-weight: 400; + margin-bottom: 0px; + line-height: normal; + } + h3 { + line-height: normal; + color: darkgrey; + margin-bottom: 3px; + } + + p { + font-family: "Montserrat", sans-serif; + color: black; + margin-bottom: 0; + } } -.OneByOne { +.OneWide { display: flex; flex-direction: column; width: available; - padding: 10px; - img { width: 100%; - } - - p { - + margin-bottom: 5px; } } .FourByOne { - grid-column: span 2; - display: flex; - flex-direction: row; + .GridElementInternal { + display: flex; + align-items: center; - .image { - flex: 1; + .image { + flex: 1; - img { - width: 100%; - max-width: 100%; + img { + width: 100%; + max-width: 100%; + } } - } - p { - min-width: 20ch; - width: 30ch; + .description { + min-width: 20ch; + width: 30ch; + } + + @include media(">small") { + flex-direction: row; + + } + @include media("<=small") { + flex-direction: column; + .description { + width: 95%; + } + } } } + +.LinkIcon { + position: absolute; + right: 12px; + top: 12px; + font-size: 24px; + color: black; + + background: rgba(224,255,255, 0.7); + border-radius: 5px; +} diff --git a/src/components/ProjectGrid.tsx b/src/components/ProjectGrid.tsx index 784f101..f89af93 100644 --- a/src/components/ProjectGrid.tsx +++ b/src/components/ProjectGrid.tsx @@ -1,172 +1,256 @@ +/** + * TODO: + * - For things that can't be linked, use to signal that clicking will open a modal https://ant.design/components/modal/ + * in order to give a more complex writeup and some pictures + * - Tooltip for modal and linkable items, possibly which displays a modal with an example card with tooltips or explanations + * - Footer + * - Responsive top bar + * + */ + import "./ProjectGrid.scss"; import Masonry from "masonry-layout"; -import {useEffect} from "react"; +import { useEffect } from "react"; +import {LinkOutlined} from "@ant-design/icons"; +import CodeDaySD from "../images/SanDiego.svg"; +import Foresight from "../images/foresightsports.png"; +import Distest from "../images/distest.svg"; +import Scoresaver from "../images/scoresaver.svg"; + type GridElementImageProps = { - image_url: string; - image_alt: string; - title: string; - text: string; + image_url: string; + image_alt: string; + title: string; + text: string; + link?: string; + org?: string; }; type GridElementProps = { - image_url: string; - image_alt: string; - title: string; - text: string; + title: string; + text: string; + link?: string; + org?: string; }; -const OneWide = ({title, text}: GridElementProps) => { +const OneWide = ({ title, text, link, org }: GridElementProps) => { + if (link === undefined) { return ( -
-
-

{title}

-
-
-

{text}

-
+
+
+
+

{title}

+ {org &&

{org}

} +
+
+

{text}

+
+
); + } + return ( + +
+
+

{title}

+ {org &&

{org}

} + +
+
+

{text}

+
+
+
+ ); }; const OneWidePic = ({ - image_url, - image_alt, - title, - text, - }: GridElementImageProps) => { + image_url, + image_alt, + title, + text, + link, + org, +}: GridElementImageProps) => { + if (link === undefined) { return ( -
-
- {image_alt}/ -
-
-

{title}

-

{text}

-
+
+
+
+ {image_alt} +
+
+

{title}

+ {org &&

{org}

} + +

{text}

+
+
); + } + return ( + +
+
+ {image_alt} + +
+
+

{title}

+ {org &&

{org}

} +

{text}

+
+
+
+ ); }; const FourByOneGridElement = ({ - image_url, - image_alt, - title, - text, - }: GridElementImageProps) => { + image_url, + image_alt, + title, + text, + link, + org, +}: GridElementImageProps) => { + if (link === undefined) { return ( -
-
- {image_alt}/ -
-
-

{title}

- -

{text}

-
+
+
+
+ {image_alt} +
+
+

{title}

+ {org &&

{org}

} +

{text}

+
+
); + } + return ( + +
+
+ {image_alt} + +
+
+

{title}

+ {org &&

{org}

} +

{text}

+
+
+
+ ); }; export const ProjectGrid = () => { - useEffect(() => { - var elem = document.querySelector("#project-grid"); + useEffect(() => { + var elem = document.querySelector("#project-grid"); - // @ts-ignore - var msnry = new Masonry(elem, { - itemSelector: ".GridElement", - gutter: 5, - columnWidth: ".GridSizer", - percentPosition: true, - }); + // @ts-ignore + var msnry = new Masonry(elem, { + itemSelector: ".GridElement", + gutter: 0, + columnWidth: ".GridSizer", + percentPosition: true, }); + }); - return ( -
-
-
- - - - - - - - - - - -
-
- ); + return ( +
+
+
+ + + + + + + + + + +
+
+ ); }; diff --git a/src/images/SanDiego.svg b/src/images/SanDiego.svg new file mode 100644 index 0000000..5873cf9 --- /dev/null +++ b/src/images/SanDiego.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Old/images/codeday-notext-color.svg b/src/images/codeday-notext-color.svg similarity index 100% rename from Old/images/codeday-notext-color.svg rename to src/images/codeday-notext-color.svg diff --git a/Old/images/codedaysd.png b/src/images/codedaysd.png similarity index 100% rename from Old/images/codedaysd.png rename to src/images/codedaysd.png diff --git a/Old/images/distest.ai b/src/images/distest.ai similarity index 100% rename from Old/images/distest.ai rename to src/images/distest.ai diff --git a/Old/images/distest.svg b/src/images/distest.svg similarity index 100% rename from Old/images/distest.svg rename to src/images/distest.svg diff --git a/Old/images/foresightsports.png b/src/images/foresightsports.png similarity index 100% rename from Old/images/foresightsports.png rename to src/images/foresightsports.png diff --git a/Old/images/icon_128_cmpk.png b/src/images/icon_128_cmpk.png similarity index 100% rename from Old/images/icon_128_cmpk.png rename to src/images/icon_128_cmpk.png diff --git a/Old/images/personal_site_plan.png b/src/images/personal_site_plan.png similarity index 100% rename from Old/images/personal_site_plan.png rename to src/images/personal_site_plan.png diff --git a/Old/images/scoresaver.ai b/src/images/scoresaver.ai similarity index 100% rename from Old/images/scoresaver.ai rename to src/images/scoresaver.ai diff --git a/Old/images/scoresaver.svg b/src/images/scoresaver.svg similarity index 100% rename from Old/images/scoresaver.svg rename to src/images/scoresaver.svg