diff --git a/CSS/main (2015_08_02 02_28_36 UTC).css b/CSS/main (2015_08_02 02_28_36 UTC).css new file mode 100644 index 0000000..e8b7bdb --- /dev/null +++ b/CSS/main (2015_08_02 02_28_36 UTC).css @@ -0,0 +1,76 @@ +/** { + border: 1px solid red !important; +}*/ + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +@media only screen and (max-width: 500px) { + p { + display: none; + } +} + +.grid { + margin: 0 auto; + max-width: 1200px; + width: 100%; +} + +.row { + width: 100%; + display: flex; + flex-wrap: wrap; +} + +.col-j1 { + width: 8.33%; +} + +.col-j2 { + width: 16.66%; +} + +.col-j3 { + width: 25%; +} + +.col-j4 { + width: 33.33%; +} + +.col-j5 { + width: 41.66%; +} + +.col-j6 { + width: 50%; +} + +.col-j7 { + width: 58.33%; +} + +.col-j8 { + width: 66.66%; +} + +.col-j9 { + width: 75%; +} + +.col-j10 { + width: 83.33%; +} + +.col-j11 { + width: 91.66%; +} + +.col-j12 { + width: 100%; +} diff --git a/CSS/main (2015_08_02 18_04_11 UTC).css b/CSS/main (2015_08_02 18_04_11 UTC).css new file mode 100644 index 0000000..e8b7bdb --- /dev/null +++ b/CSS/main (2015_08_02 18_04_11 UTC).css @@ -0,0 +1,76 @@ +/** { + border: 1px solid red !important; +}*/ + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +@media only screen and (max-width: 500px) { + p { + display: none; + } +} + +.grid { + margin: 0 auto; + max-width: 1200px; + width: 100%; +} + +.row { + width: 100%; + display: flex; + flex-wrap: wrap; +} + +.col-j1 { + width: 8.33%; +} + +.col-j2 { + width: 16.66%; +} + +.col-j3 { + width: 25%; +} + +.col-j4 { + width: 33.33%; +} + +.col-j5 { + width: 41.66%; +} + +.col-j6 { + width: 50%; +} + +.col-j7 { + width: 58.33%; +} + +.col-j8 { + width: 66.66%; +} + +.col-j9 { + width: 75%; +} + +.col-j10 { + width: 83.33%; +} + +.col-j11 { + width: 91.66%; +} + +.col-j12 { + width: 100%; +} diff --git a/CSS/main.css b/CSS/main.css index e8b7bdb..a582059 100644 --- a/CSS/main.css +++ b/CSS/main.css @@ -1,76 +1,76 @@ -/** { - border: 1px solid red !important; -}*/ - -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -@media only screen and (max-width: 500px) { - p { - display: none; - } -} - -.grid { - margin: 0 auto; - max-width: 1200px; - width: 100%; -} - -.row { - width: 100%; - display: flex; - flex-wrap: wrap; -} - -.col-j1 { - width: 8.33%; -} - -.col-j2 { - width: 16.66%; -} - -.col-j3 { - width: 25%; -} - -.col-j4 { - width: 33.33%; -} - -.col-j5 { - width: 41.66%; -} - -.col-j6 { - width: 50%; -} - -.col-j7 { - width: 58.33%; -} - -.col-j8 { - width: 66.66%; -} - -.col-j9 { - width: 75%; -} - -.col-j10 { - width: 83.33%; -} - -.col-j11 { - width: 91.66%; -} - -.col-j12 { - width: 100%; -} +/** { + border: 1px solid red !important; +}*/ + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +@media only screen and (max-width: 500px) { + p { + display: none; + } +} + +.grid { + margin: 0 auto; + max-width: 1200px; + width: 100%; +} + +.row { + width: 100%; + display: flex; + flex-wrap: wrap; +} + +.col-j1 { + width: 8.33%; +} + +.col-j2 { + width: 16.66%; +} + +.col-j3 { + width: 25%; +} + +.col-j4 { + width: 33.33%; +} + +.col-j5 { + width: 41.66%; +} + +.col-j6 { + width: 50%; +} + +.col-j7 { + width: 58.33%; +} + +.col-j8 { + width: 66.66%; +} + +.col-j9 { + width: 75%; +} + +.col-j10 { + width: 83.33%; +} + +.col-j11 { + width: 91.66%; +} + +.col-j12 { + width: 100%; +} diff --git a/CSS/style (2015_08_02 02_28_36 UTC).css b/CSS/style (2015_08_02 02_28_36 UTC).css new file mode 100644 index 0000000..f1de230 --- /dev/null +++ b/CSS/style (2015_08_02 02_28_36 UTC).css @@ -0,0 +1,102 @@ +/* Stylesheet for Project 1 of Udacity FEND program */ +/* Author: James Fehr */ + +/* ELEMENTS */ + +* { + font-family: "Fira Sans"; +} + +nav a, +button { + min-width:48; + min-height:48; +} + +body { + background-color: #231f20; +} + +h1 { + font-size: 96px; + font-variant: small-caps; + font-weight: lighter; + font-family: "Fira Sans", verdana, sans-serif; + /*align: right; + text-align: right;*/ + padding: 0; + border: 0; + margin: 0; + color: #999; + word-wrap: none; +} + +h2 { + font-variant: small-caps; + font-size: 24px; + font-family: "Fira Sans", verdana, sans-serif; + /*align: right; + text-align: right;*/ + padding: 0; + border: 0; + margin: 0; + color: #999; + word-wrap: none; + vertical-align: middle; +} + +h3 { + font-variant: small-caps; + font-size: 20px; + align: center; + font-family: "Fira Sans", verdana, sans-serif; + text-align: center; + padding: 0 0 0; + line-height: 0.1; + color: #999; + word-wrap: none; +} + +img { + max-width: 100%; +} + +/* CLASSES */ +.divider { + width: 100%; + min-height: 5px; + background-color: #999; + align-self: center; + font-family: "Fira Sans", verdana, sans-serif; + font-weight: lighter; + font-size: 22px; +} + +.divider-f { + width: 100%; + min-height: 5px; + align: relative 50; + text-indent: 50; + color: #999; + font-family: "Fira Sans", verdana, sans-serif; + font-weight: lighter; + font-size: 22px; +} + + +.logo { + border-radius: 70px 40px; + border: 10px solid #999; + padding: 15px; + width: 135px; + height: 130px; + align: center; +} + +.banner { + width: 100%; +} +/* IDs */ +#feat-item { + padding: 8.33%; +} diff --git a/CSS/style (2015_08_02 18_04_11 UTC).css b/CSS/style (2015_08_02 18_04_11 UTC).css new file mode 100644 index 0000000..f1de230 --- /dev/null +++ b/CSS/style (2015_08_02 18_04_11 UTC).css @@ -0,0 +1,102 @@ +/* Stylesheet for Project 1 of Udacity FEND program */ +/* Author: James Fehr */ + +/* ELEMENTS */ + +* { + font-family: "Fira Sans"; +} + +nav a, +button { + min-width:48; + min-height:48; +} + +body { + background-color: #231f20; +} + +h1 { + font-size: 96px; + font-variant: small-caps; + font-weight: lighter; + font-family: "Fira Sans", verdana, sans-serif; + /*align: right; + text-align: right;*/ + padding: 0; + border: 0; + margin: 0; + color: #999; + word-wrap: none; +} + +h2 { + font-variant: small-caps; + font-size: 24px; + font-family: "Fira Sans", verdana, sans-serif; + /*align: right; + text-align: right;*/ + padding: 0; + border: 0; + margin: 0; + color: #999; + word-wrap: none; + vertical-align: middle; +} + +h3 { + font-variant: small-caps; + font-size: 20px; + align: center; + font-family: "Fira Sans", verdana, sans-serif; + text-align: center; + padding: 0 0 0; + line-height: 0.1; + color: #999; + word-wrap: none; +} + +img { + max-width: 100%; +} + +/* CLASSES */ +.divider { + width: 100%; + min-height: 5px; + background-color: #999; + align-self: center; + font-family: "Fira Sans", verdana, sans-serif; + font-weight: lighter; + font-size: 22px; +} + +.divider-f { + width: 100%; + min-height: 5px; + align: relative 50; + text-indent: 50; + color: #999; + font-family: "Fira Sans", verdana, sans-serif; + font-weight: lighter; + font-size: 22px; +} + + +.logo { + border-radius: 70px 40px; + border: 10px solid #999; + padding: 15px; + width: 135px; + height: 130px; + align: center; +} + +.banner { + width: 100%; +} +/* IDs */ +#feat-item { + padding: 8.33%; +} diff --git a/CSS/style.css b/CSS/style.css index eab5044..7833c40 100644 --- a/CSS/style.css +++ b/CSS/style.css @@ -1,143 +1,144 @@ -/* Stylesheet for Project 1 of Udacity FEND program */ -/* Author: James Fehr */ - -/* ELEMENTS */ - -* { - font-family: "Fira Sans"; - color: #33334d; -} - -nav a, -button { - min-width:48; - min-height:48; -} - -a { - text-decoration: none; -} - -body { - /*background-color: #231f20;*/ - background-color: #ffffff; -} - -h1 { - font-size: 96px; - font-variant: small-caps; - font-weight: 400; - font-family: "Fira Sans", verdana, sans-serif; - padding: 0; - border: 0; - margin: 0; - word-wrap: break-word; - overflow-wrap: break-word; - white-space: pre-wrap; -} -@media only screen and (max-width: 500px) { - h1 { - font-size: 4em; - } - h2 { - font-size: 2em; - } - h3 { - font-size: 2em; - } -} -h4{ - font-size: 1.25em; - font-family: "Fira Sans", verdana, sans-serif; - word-wrap: break-word; - overflow-wrap: break-word; - white-space: pre-wrap; - vertical-align: middle; - padding: 0; - border: 0; - margin: 0; - text-decoration: none; - font-style: normal; - font-weight: 400; -} -h2 { - font-variant: small-caps; - font-size: 24px; - font-family: "Fira Sans", verdana, sans-serif; - padding: 0; - border: 0; - margin: 0; - word-wrap: break-word; - overflow-wrap: break-word; - white-space: pre-wrap; - vertical-align: middle; -} - -h3 { - font-variant: small-caps; - font-size: 22px; - align: center; - font-family: "Fira Sans", verdana, sans-serif; - text-align: center; - padding: 0 0 0; - line-height: 0.1; - word-wrap: break-word; - overflow-wrap: break-word; - white-space: pre-wrap; - text-decoration: none; - font-weight: 400; -} - -img { - max-width: 100%; -} - -/* CLASSES */ -.divider { - width: 100%; - min-height: 5px; - background-color: #33334d; - align-self: center; - font-family: "Fira Sans", verdana, sans-serif; - font-weight: lighter; - font-size: 22px; -} - -.divider-f { - width: 100%; - min-height: 5px; - align: relative 50; - text-indent: 50; - color: #33334d; - font-family: "Fira Sans", verdana, sans-serif; - font-weight: 400; - font-size: 22px; -} - - -.logo { - border-radius: 70px 40px; - border: 10px solid #33334d; - padding: 15px; - width: 135px; - height: 130px; - align: center; -} - -.banner { - width: 100%; - height: 250px; - padding-top: 5px; - background-color: #33334d; - background-image: - -webkit-linear-gradient(left, #4976C9, #33334d); - background-image: - -o-linear-gradient(left, #4976C9, #33334d); - background-image: - linear-gradient(to right, #4976C9, #33334d); -} - -/* IDs */ -#feat-item { - padding: 8.33%; -} +/* Stylesheet for Project 1 of Udacity FEND program */ +/* Author: James Fehr */ + +/* ELEMENTS */ + +* { + font-family: "Fira Sans"; + color: #33334d; +} + +nav a, +button { + min-width:48; + min-height:48; +} + +a { + text-decoration: none; +} + +body { + /*background-color: #231f20;*/ + background-color: #ffffff; +} + +h1 { + font-size: 96px; + font-variant: small-caps; + font-weight: 400; + font-family: "Fira Sans", verdana, sans-serif; + padding: 0; + border: 0; + margin: 0; + word-wrap: break-word; + overflow-wrap: break-word; + white-space: pre-wrap; +} +@media only screen and (max-width: 500px) { + h1 { + font-size: 4em; + } + h2 { + font-size: 2em; + } + h3 { + font-size: 2em; + } +} +h4{ + font-size: 1.25em; + font-family: "Fira Sans", verdana, sans-serif; + word-wrap: break-word; + overflow-wrap: break-word; + white-space: pre-wrap; + vertical-align: middle; + padding: 0; + border: 0; + margin: 0; + text-decoration: none; + font-style: normal; + font-weight: 400; +} +h2 { + font-variant: small-caps; + font-size: 24px; + font-family: "Fira Sans", verdana, sans-serif; + padding: 0; + border: 0; + margin: 0; + word-wrap: break-word; + overflow-wrap: break-word; + white-space: pre-wrap; + vertical-align: middle; +} + +h3 { + font-variant: small-caps; + font-size: 22px; + align: center; + font-family: "Fira Sans", verdana, sans-serif; + text-align: center; + padding: 0 0 0; + line-height: 0.1; + word-wrap: break-word; + overflow-wrap: break-word; + white-space: pre-wrap; + text-decoration: none; + font-weight: 400; +} + +img { + max-width: 100%; +} + +/* CLASSES */ +.divider { + width: 100%; + min-height: 5px; + background-color: #33334d; + align-self: center; + font-family: "Fira Sans", verdana, sans-serif; + font-weight: lighter; + font-size: 22px; +} + +.divider-f { + width: 100%; + min-height: 5px; + align: relative 50; + text-indent: 50; + color: #33334d; + font-family: "Fira Sans", verdana, sans-serif; + font-weight: 400; + font-size: 22px; +} + + +.logo { + display:block; + border-radius: 70px 40px; + border: 10px solid #33334d; + padding: 15px; + width: 135px; + height: 130px; + align: center; +} + +.banner { + width: 100%; + height: 250px; + padding-top: 5px; + background-color: #33334d; + background-image: + -webkit-linear-gradient(left, #4976C9, #33334d); + background-image: + -o-linear-gradient(left, #4976C9, #33334d); + background-image: + linear-gradient(to right, #4976C9, #33334d); +} + +/* IDs */ +#feat-item { + padding: 8.33%; +} diff --git a/CSS/style.min.css b/CSS/style.min.css index fe54462..995b3ca 100644 --- a/CSS/style.min.css +++ b/CSS/style.min.css @@ -1 +1,121 @@ -*{font-family:"Fira Sans";color:#33334d}nav a,button{min-width:48;min-height:48}a{text-decoration:none}body{background-color:#fff}h1{font-size:96px;font-variant:small-caps;font-weight:400;font-family:"Fira Sans",verdana,sans-serif;padding:0;border:0;margin:0;word-wrap:break-word;overflow-wrap:break-word;white-space:pre-wrap}@media only screen and (max-width:500px){h1{font-size:4em}h2{font-size:2em}h3{font-size:2em}}h4{font-size:1.25em;font-family:"Fira Sans",verdana,sans-serif;word-wrap:break-word;overflow-wrap:break-word;white-space:pre-wrap;vertical-align:middle;padding:0;border:0;margin:0;text-decoration:none;font-style:normal;font-weight:400}h2{font-variant:small-caps;font-size:24px;font-family:"Fira Sans",verdana,sans-serif;padding:0;border:0;margin:0;word-wrap:break-word;overflow-wrap:break-word;white-space:pre-wrap;vertical-align:middle}h3{font-variant:small-caps;font-size:22px;align:center;font-family:"Fira Sans",verdana,sans-serif;text-align:center;padding:0;line-height:.1;word-wrap:break-word;overflow-wrap:break-word;white-space:pre-wrap;text-decoration:none;font-weight:400}img{max-width:100%}.divider{width:100%;min-height:5px;background-color:#33334d;align-self:center;font-family:"Fira Sans",verdana,sans-serif;font-weight:lighter;font-size:22px}.divider-f{width:100%;min-height:5px;align:relative 50;text-indent:50;color:#33334d;font-family:"Fira Sans",verdana,sans-serif;font-weight:400;font-size:22px}.logo{border-radius:70px 40px;border:10px solid #33334d;padding:15px;width:135px;height:130px;align:center}.banner{width:100%;height:250px;padding-top:5px;background-color:#33334d;background-image:-webkit-linear-gradient(left,#4976c9,#33334d);background-image:-o-linear-gradient(left,#4976c9,#33334d);background-image:linear-gradient(to right,#4976c9,#33334d)}#feat-item{padding:8.33%} \ No newline at end of file +* { + font-family:"Fira Sans"; + color:#33334d +} +nav a, +button { + min-width:48; + min-height:48 +} +a { + text-decoration:none +} +body { + background-color:#fff +} +h1 { + font-size:96px; + font-variant:small-caps; + font-weight:400; + font-family:"Fira Sans",verdana,sans-serif; + padding:0; + border:0; + margin:0; + word-wrap:break-word; + overflow-wrap:break-word; + white-space:pre-wrap +} +@media only screen and (max-width:500px) { + h1 { + font-size:4em + } + h2 { + font-size:2em + } + h3 { + font-size:2em + } +} +h4 { + font-size:1.25em; + font-family:"Fira Sans",verdana,sans-serif; + word-wrap:break-word; + overflow-wrap:break-word; + white-space:pre-wrap; + vertical-align:middle; + padding:0; + border:0; + margin:0; + text-decoration:none; + font-style:normal; + font-weight:400 +} +h2 { + font-variant:small-caps; + font-size:24px; + font-family:"Fira Sans",verdana,sans-serif; + padding:0; + border:0; + margin:0; + word-wrap:break-word; + overflow-wrap:break-word; + white-space:pre-wrap; + vertical-align:middle +} +h3 { + font-variant:small-caps; + font-size:22px; + align:center; + font-family:"Fira Sans",verdana,sans-serif; + text-align:center; + padding:0; + line-height:.1; + word-wrap:break-word; + overflow-wrap:break-word; + white-space:pre-wrap; + text-decoration:none; + font-weight:400 +} +img { + max-width:100% +} +.divider { + width:100%; + min-height:5px; + background-color:#33334d; + align-self:center; + font-family:"Fira Sans",verdana,sans-serif; + font-weight:lighter; + font-size:22px +} +.divider-f { + width:100%; + min-height:5px; + align:relative 50; + text-indent:50; + color:#33334d; + font-family:"Fira Sans",verdana,sans-serif; + font-weight:400; + font-size:22px +} +.logo { + display:inline; + border-radius:70px 40px; + border:10px solid #33334d; + padding:15px; + width:135px; + height:130px; + align:center +} +.banner { + width:100%; + height:250px; + padding-top:5px; + background-color:#33334d; + background-image:-webkit-linear-gradient(left,#4976c9,#33334d); + background-image:-o-linear-gradient(left,#4976c9,#33334d); + background-image:linear-gradient(to right,#4976c9,#33334d) +} +#feat-item { + padding:8.33% +} diff --git a/README.md b/README.md index a41573e..19e5c62 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,23 @@ -# Portfolio -**Portfolio of work** -The project is to mock up a portfolio in a grid based pattern. - -It has been *updated* with my own work to show off what I have done and provide easy access to projects as an ongoing -and organic entity. - -**Sept 19/15** -- Updated links to my own work after publishing the repositories on Github -- Added a picture of the Bugged game for Project 3 +# Portfolio + +**Portfolio of work** +The project is to mock up a portfolio in a grid based pattern. + +It has been *updated* with my own work to show off what I have done and provide easy access to projects as an ongoing +and organic entity. + +## **Sept 19/15** + +- Updated links to my own work after publishing the repositories on Github +- Added a picture of the Bugged game for Project 3 + +### May 31, 2025 + +- Converted Portfolio from Knockout.JS to React.JS +- Updated Education from Front-End Web Developer to General IT Developer +- Added hamburger menu with projects and contact options +- projects are setup using a toggle system, show/hide + +- update added About section describing certifications/diplomas + +- planned update is to sort the projects into languages used { eg: Python, HTML, Javascript, C#, VBasic } \ No newline at end of file diff --git a/img/AirBus.png b/img/AirBus.png new file mode 100644 index 0000000..cb8de3a Binary files /dev/null and b/img/AirBus.png differ diff --git a/img/BS3.png b/img/BS3.png new file mode 100644 index 0000000..a5a8817 Binary files /dev/null and b/img/BS3.png differ diff --git a/img/CalcV6.png b/img/CalcV6.png new file mode 100644 index 0000000..585b935 Binary files /dev/null and b/img/CalcV6.png differ diff --git a/img/Club.png b/img/Club.png new file mode 100644 index 0000000..ed6a523 Binary files /dev/null and b/img/Club.png differ diff --git a/img/SSPortfolioTop.jpg b/img/SSPortfolioTop.jpg new file mode 100644 index 0000000..ff4a246 Binary files /dev/null and b/img/SSPortfolioTop.jpg differ diff --git a/img/SSResumeTop.png b/img/SSResumeTop.png new file mode 100644 index 0000000..51c5e3f Binary files /dev/null and b/img/SSResumeTop.png differ diff --git a/img/Thumbs.db b/img/Thumbs.db new file mode 100644 index 0000000..a606573 Binary files /dev/null and b/img/Thumbs.db differ diff --git a/img/bkgrd_codingAbs.jpg b/img/bkgrd_codingAbs.jpg new file mode 100644 index 0000000..33caa86 Binary files /dev/null and b/img/bkgrd_codingAbs.jpg differ diff --git a/img/calcV2.png b/img/calcV2.png new file mode 100644 index 0000000..83a21ff Binary files /dev/null and b/img/calcV2.png differ diff --git a/img/code.png b/img/code.png new file mode 100644 index 0000000..05eba2e Binary files /dev/null and b/img/code.png differ diff --git a/img/j.png b/img/j.png new file mode 100644 index 0000000..8edbb77 Binary files /dev/null and b/img/j.png differ diff --git a/img/mail.png b/img/mail.png new file mode 100644 index 0000000..cf044bd Binary files /dev/null and b/img/mail.png differ diff --git a/img/moonCycles (2015_08_02 02_28_36 UTC).png b/img/moonCycles (2015_08_02 02_28_36 UTC).png new file mode 100644 index 0000000..ff5913a Binary files /dev/null and b/img/moonCycles (2015_08_02 02_28_36 UTC).png differ diff --git a/img/moonCycles.png b/img/moonCycles.png new file mode 100644 index 0000000..ff5913a Binary files /dev/null and b/img/moonCycles.png differ diff --git a/img/pvm6.png b/img/pvm6.png new file mode 100644 index 0000000..6550cd7 Binary files /dev/null and b/img/pvm6.png differ diff --git a/img/redcube (2015_08_02 02_28_36 UTC).png b/img/redcube (2015_08_02 02_28_36 UTC).png new file mode 100644 index 0000000..30600c4 Binary files /dev/null and b/img/redcube (2015_08_02 02_28_36 UTC).png differ diff --git a/img/redcube.png b/img/redcube.png new file mode 100644 index 0000000..30600c4 Binary files /dev/null and b/img/redcube.png differ diff --git a/img/switz.jpg b/img/switz.jpg new file mode 100644 index 0000000..445b8bd Binary files /dev/null and b/img/switz.jpg differ diff --git a/img/thumb 1.png b/img/thumb 1.png new file mode 100644 index 0000000..99baa01 Binary files /dev/null and b/img/thumb 1.png differ diff --git a/img/thumb 2.png b/img/thumb 2.png new file mode 100644 index 0000000..d47e8ff Binary files /dev/null and b/img/thumb 2.png differ diff --git a/img/thumb 3.png b/img/thumb 3.png new file mode 100644 index 0000000..5e287ec Binary files /dev/null and b/img/thumb 3.png differ diff --git a/img/water-1761027.jpg b/img/water-1761027.jpg new file mode 100644 index 0000000..59cf474 Binary files /dev/null and b/img/water-1761027.jpg differ diff --git a/index.html b/index.html index c3c152e..ae79552 100644 --- a/index.html +++ b/index.html @@ -1,66 +1,300 @@ + + + + + James Fehr + + + + + + + + - - - - - - - - - - - - James Fehr - - + + + +
+ +
+ + + + + + + -
- -
-
-

jf

+ function ProjectCard({ project }) { + return ( +
+ {project.name} +

{project.name}

+
+ Live + GitHub
-
-

james fehr

-

front end designer

+
+ ); + } + + function ProjectsGrid({ visible }) { + if (!visible) return null; + return ( +
+ {projects.map((project, idx) => ( + + ))} +
+ ); + } + + function AboutSection({ visible }) { + if (!visible) return null; + return ( +
+
    +
  • Udacity
  • +
      Front End Web Developer
    +
      Front End Nanodegree
    +
  • ITD Canada
  • +
      General IT Developer
    +
      Diploma in Computer Information Systems
    +
+
+ ); + } + + function HamburgerMenu({ onProjectsToggle, projectsVisible, onAboutToggle, aboutVisible }) { + const [open, setOpen] = React.useState(false); + + // Close menu on outside click + React.useEffect(() => { + function handleClick(e) { + if (!e.target.closest('.hamburger') && !e.target.closest('.menu-dropdown')) { + setOpen(false); + } + } + if (open) document.addEventListener('mousedown', handleClick); + return () => document.removeEventListener('mousedown', handleClick); + }, [open]); + + return ( +
+
setOpen(o => !o)} aria-label="Open menu" tabIndex={0}> +
+
+
+ -
- -
-
-
Featured Work - - -
- -
-
-
- - + ); + } + + function App() { + const [projectsVisible, setProjectsVisible] = React.useState(false); + const [aboutVisible, setAboutVisible] = React.useState(false); + + return ( + <> + setProjectsVisible(v => !v)} + projectsVisible={projectsVisible} + onAboutToggle={() => setAboutVisible(v => !v)} + aboutVisible={aboutVisible} + /> + + + + ); + } + + // Render hamburger menu, about, and project grid via App + ReactDOM.createRoot(document.getElementById('menu-root')).render(); + + + \ No newline at end of file diff --git a/js/script.js b/js/script.js deleted file mode 100644 index 561e06b..0000000 --- a/js/script.js +++ /dev/null @@ -1,25 +0,0 @@ -// Class for project grid -function Project(name, url, pic, git) { - var self = this; - self.name = name; - self.url = ko.observable(url); - self.pic = ko.observable(pic); - self.git = ko.observable(git); -} - -// ViewModel for the screen -function ProjectViewModel() { - var self = this; - - self.projects = ko.observableArray([ - new Project('Portfolio', 'http://turtle-head.github.io/Portfolio', 'img/portfolio-min.png', 'https://github.com/Turtle-Head/Portfolio'), - new Project('Bugged', 'http://turtle-head.github.io/Bugged/', 'img/bugged-min.png', 'https://github.com/Turtle-Head/Bugged'), - new Project('Killboard', 'http://turtle-head.github.io/Killboard/', 'img/ukcr-min.png', 'https://github.com/Turtle-Head/Killboard'), - new Project('Cat Clicker', 'http://turtle-head.github.io/CatClicker/', 'img/catClicker-min.png', 'https://github.com/Turtle-Head/CatClicker'), - new Project('skelsart.ca', 'http://skelsart.ca', 'img/skel-min.png', 'https://github.com/Turtle-Head/skelsart'), - new Project('Gelp', 'http://turtle-head.github.io/Project5/', 'img/gelp-min.png', 'https://github.com/Turtle-Head/Project5'), - new Project('Feed Reader', 'http://turtle-head.github.io/FeedReader-P6/', 'img/feedreader-min.png', 'https://github.com/Turtle-Head/FeedReader-P6') - ]); -} - -ko.applyBindings(new ProjectViewModel()); diff --git a/js/script.min.js b/js/script.min.js deleted file mode 100644 index f79666f..0000000 --- a/js/script.min.js +++ /dev/null @@ -1 +0,0 @@ -function Project(e,d,c,a){var b=this;b.name=e;b.url=ko.observable(d);b.pic=ko.observable(c);b.git=ko.observable(a)}function ProjectViewModel(){var a=this;a.projects=ko.observableArray([new Project("Portfolio","http://turtle-head.github.io/Portfolio","img/portfolio-min.png","https://github.com/Turtle-Head/Portfolio"),new Project("Bugged","http://turtle-head.github.io/Bugged/","img/bugged-min.png","https://github.com/Turtle-Head/Bugged"),new Project("Killboard","http://turtle-head.github.io/Killboard/","img/ukcr-min.png","https://github.com/Turtle-Head/Killboard"),new Project("Cat Clicker","http://turtle-head.github.io/CatClicker/","img/catClicker-min.png","https://github.com/Turtle-Head/CatClicker"),new Project("skelsart.ca","http://skelsart.ca","img/skel-min.png","https://github.com/Turtle-Head/skelsart"),new Project("Gelp","http://turtle-head.github.io/Project5/","img/gelp-min.png","https://github.com/Turtle-Head/Project5"),new Project("Feed Reader","http://turtle-head.github.io/FeedReader-P6/","img/feedreader-min.png","https://github.com/Turtle-Head/FeedReader-P6")])}ko.applyBindings(new ProjectViewModel()); \ No newline at end of file