@ -13,14 +13,13 @@ import Masonry from "masonry-layout";
import ImagesLoaded from "imagesloaded" ;
import ImagesLoaded from "imagesloaded" ;
import { useEffect } from "react" ;
import { useEffect } from "react" ;
import { LinkOutlined } from "@ant-design/icons" ;
import { LinkOutlined } from "@ant-design/icons" ;
import CodeDaySD from "../images/SanDiego.svg" ;
import CodeDaySD from "../images/SanDiego.svg" ;
import Foresight from "../images/foresightsports.png" ;
import Foresight from "../images/foresightsports.png" ;
import Distest from "../images/distest.svg" ;
import Distest from "../images/distest.svg" ;
import Scoresaver from "../images/scoresaver.svg" ;
import Scoresaver from "../images/scoresaver.svg" ;
import Hashicorp from "../images/HashiCorp_Logo_no_text.png" ;
import Hashicorp from "../images/HashiCorp_Logo_no_text.png" ;
type GridElementImageProps = {
type GridElementImageProps = {
image_url : string ;
image_url : string ;
image_alt : string ;
image_alt : string ;
@ -37,7 +36,7 @@ type GridElementProps = {
org? : string ;
org? : string ;
} ;
} ;
const OneWide = ( { title , text , link , org } : GridElementProps ) = > {
function OneWide ( { title , text , link , org } : GridElementProps ) {
if ( link === undefined ) {
if ( link === undefined ) {
return (
return (
< div className = { "OneWide GridElement" } >
< div className = { "OneWide GridElement" } >
@ -69,14 +68,7 @@ const OneWide = ({ title, text, link, org }: GridElementProps) => {
) ;
) ;
} ;
} ;
const OneWidePic = ( {
function OneWidePic ( { image_url , image_alt , title , text , link , org } : GridElementImageProps ) {
image_url ,
image_alt ,
title ,
text ,
link ,
org ,
} : GridElementImageProps ) = > {
if ( link === undefined ) {
if ( link === undefined ) {
return (
return (
< div className = { "OneWide Pic GridElement" } >
< div className = { "OneWide Pic GridElement" } >
@ -95,11 +87,16 @@ const OneWidePic = ({
) ;
) ;
}
}
return (
return (
< a className = { "OneWide Pic GridElement Link" } href = { link } target = { "_blank" } rel = { "noreferrer" } >
< a
className = { "OneWide Pic GridElement Link" }
href = { link }
target = { "_blank" }
rel = { "noreferrer" }
>
< div className = { "GridElementInternal" } >
< div className = { "GridElementInternal" } >
< div className = { "image" } >
< div className = { "image" } >
< img src = { image_url } alt = { image_alt } / >
< img src = { image_url } alt = { image_alt } / >
< LinkOutlined className = { "LinkIcon" } / >
< LinkOutlined className = { "LinkIcon" } / >
< / div >
< / div >
< div className = { "description" } >
< div className = { "description" } >
< h2 > { title } < / h2 >
< h2 > { title } < / h2 >
@ -109,16 +106,9 @@ const OneWidePic = ({
< / div >
< / div >
< / a >
< / a >
) ;
) ;
} ;
}
const FourByOneGridElement = ( {
function FourByOneGridElement ( { image_url , image_alt , title , text , link , org } : GridElementImageProps ) {
image_url ,
image_alt ,
title ,
text ,
link ,
org ,
} : GridElementImageProps ) = > {
if ( link === undefined ) {
if ( link === undefined ) {
return (
return (
< div className = { "FourByOne GridElement" } >
< div className = { "FourByOne GridElement" } >
@ -136,11 +126,16 @@ const FourByOneGridElement = ({
) ;
) ;
}
}
return (
return (
< a className = { "FourByOne GridElement Link" } href = { link } target = { "_blank" } rel = { "noreferrer" } >
< a
className = { "FourByOne GridElement Link" }
href = { link }
target = { "_blank" }
rel = { "noreferrer" }
>
< div className = { "GridElementInternal" } >
< div className = { "GridElementInternal" } >
< div className = { "image" } >
< div className = { "image" } >
< img src = { image_url } alt = { image_alt } / >
< img src = { image_url } alt = { image_alt } / >
< LinkOutlined className = { "LinkIcon" } / >
< LinkOutlined className = { "LinkIcon" } / >
< / div >
< / div >
< div className = { "description" } >
< div className = { "description" } >
< h2 > { title } < / h2 >
< h2 > { title } < / h2 >
@ -150,9 +145,9 @@ const FourByOneGridElement = ({
< / div >
< / div >
< / a >
< / a >
) ;
) ;
} ;
}
export const ProjectGrid = ( ) = > {
export function ProjectGrid() {
useEffect ( ( ) = > {
useEffect ( ( ) = > {
var elem = document . querySelector ( "#project-grid" ) ;
var elem = document . querySelector ( "#project-grid" ) ;
@ -165,8 +160,8 @@ export const ProjectGrid = () => {
} ) ;
} ) ;
ImagesLoaded ( elem ) . on ( "progress" , ( ) = > {
ImagesLoaded ( elem ) . on ( "progress" , ( ) = > {
msnry. layout ? . ( ) ;
setTimeout( ( ) = > msnry. layout ? . ( ) , 200 ) ;
} )
} ) ;
}
}
} ) ;
} ) ;
@ -176,16 +171,18 @@ export const ProjectGrid = () => {
< div id = { "project-header" } >
< div id = { "project-header" } >
< h2 > & lt ; / & g t ; M y P r o j e c t s < / h 2 >
< h2 > & lt ; / & g t ; M y P r o j e c t s < / h 2 >
< p >
< p >
A gallery of some of my most interesting projects . Look for < LinkOutlined / > , click those projects for more information !
A gallery of some of my most interesting projects . Look for { " " }
< LinkOutlined / > , click those projects for more information !
< / p >
< / p >
< / div >
< / div >
< div id = { "project-grid" } >
< div id = { "project-grid" } >
< div className = { "GridSizer" } / >
< div className = { "GridSizer" } / >
< OneWide
< OneWide
title = { "ElaticMatch" }
title = { "ElaticMatch" }
org = { "CodeDay" }
org = { "CodeDay" }
text = { "A set of tools, including a custom suggestion and weighting system, as well as a custom matching algorithm that I wrote and used to match around 350 students to the best-fitting mentors in the CodeDay Labs summer internship program in 2020." }
text = {
"A set of tools, including a custom suggestion and weighting system, as well as a custom matching algorithm that I wrote and used to match around 350 students to the best-fitting mentors in the CodeDay Labs summer internship program in 2020."
}
link = { "https://github.com/codeday/labs-elastic-match" }
link = { "https://github.com/codeday/labs-elastic-match" }
/ >
/ >
< OneWide
< OneWide
@ -202,7 +199,9 @@ export const ProjectGrid = () => {
text = {
text = {
"An extension for the alternate discord client BetterDiscord that changes the functionality of copying emoji to copy the actual emoji characters rather than their names from the discord client."
"An extension for the alternate discord client BetterDiscord that changes the functionality of copying emoji to copy the actual emoji characters rather than their names from the discord client."
}
}
link = { "https://github.com/JakeCover/BetterDiscordExtensions/tree/main/plugins/CopyMoji" }
link = {
"https://github.com/JakeCover/BetterDiscordExtensions/tree/main/plugins/CopyMoji"
}
/ >
/ >
< OneWidePic
< OneWidePic
image_url = { CodeDaySD }
image_url = { CodeDaySD }
@ -269,4 +268,4 @@ export const ProjectGrid = () => {
< / div >
< / div >
< / div >
< / div >
) ;
) ;
} ;
}