diff --git a/components/PortfolioEntry.jsx b/components/PortfolioEntry.jsx new file mode 100644 index 0000000..cfc1676 --- /dev/null +++ b/components/PortfolioEntry.jsx @@ -0,0 +1,52 @@ +/** + * + * + * Imports + * ------------------------------------------------------------------------------ + * + */ +/** ********************* React/Next Imports */ +import React from "react"; +import TextShuffler from "./actions/TextShuffler"; +/** ~ End React/Next Imports *************** */ + +/** ********************* Functions and Other Page Imports */ +/** ~ End Functions and Other Page Imports *************** */ + +/** + * + * + * Main Component { Functional } + * ------------------------------------------------------------------------------ + * @param {Object} props - React component props including { children } + * + */ +/** ********************* Page Main Component */ +export default function PortfolioEntry({ title, description, url, image }) { + // ## Get Contexts + // ----------------------- + + // ## Javascript Variables + // ----------------------- + + // ## React Hooks { useState, useEffect, useRef, etc ... } + // ----------------------- + + // ## Function Return + return ( +
+

+ + + + +
+ Visit Site +
+
+ ); + // ----------------------- +}; +/** ~ End Page Main Component *************** */ + +// export default Header; diff --git a/components/portfolioEntries.json b/components/portfolioEntries.json new file mode 100644 index 0000000..70531ac --- /dev/null +++ b/components/portfolioEntries.json @@ -0,0 +1,8 @@ +[ + { + "title": "Next 7 Web Engine", + "description": "Next 7 is an all-in-one web engine featuring a web page builder and a content management system", + "url": "https://next7.io", + "image": "/images/next7screenshot.png" + } +] diff --git a/layouts/general_layout/GeneralHeader.jsx b/layouts/general_layout/GeneralHeader.jsx index de951cf..798c5ce 100644 --- a/layouts/general_layout/GeneralHeader.jsx +++ b/layouts/general_layout/GeneralHeader.jsx @@ -7,6 +7,7 @@ const GeneralHeader = () => { diff --git a/pages/contact.jsx b/pages/contact.jsx index 61f7fc4..0264715 100644 --- a/pages/contact.jsx +++ b/pages/contact.jsx @@ -20,13 +20,13 @@ const contact = () => { -
{ submitContactForm(e, setSuccess) }}> + { submitContactForm(e, setSuccess) } }> - {success === "Success" &&
Success!!!
} - {success === "Failed" &&
Failed
} + { success === "Success" &&
Success!!!
} + { success === "Failed" &&
Failed
}
) diff --git a/pages/work.jsx b/pages/work.jsx new file mode 100644 index 0000000..424fe06 --- /dev/null +++ b/pages/work.jsx @@ -0,0 +1,29 @@ +import React from 'react' +import Head from 'next/head' +import TextShuffler from '../components/actions/TextShuffler' +import GeneralLayout from '../layouts/general_layout/GeneralLayout' +import PortfolioEntry from '../components/PortfolioEntry' + +const about = () => { + const portfolioEntries = require("../components/portfolioEntries.json"); + + return ( + + + My Work | Tben + + +

+ + + + +
+ { portfolioEntries.map(entry => ) } + +
+
+ ) +} + +export default about diff --git a/public/images/next7screenshot.png b/public/images/next7screenshot.png new file mode 100644 index 0000000..858ceae Binary files /dev/null and b/public/images/next7screenshot.png differ diff --git a/styles/main.css b/styles/main.css index eeb77c1..35ff042 100644 --- a/styles/main.css +++ b/styles/main.css @@ -243,6 +243,26 @@ nav a:hover { height: 100%; } +/*############################################# -- Portfolio page */ +.portfolio-entries-block { + display: flex; + align-items: flex-start; + gap: 40px; + flex-wrap: wrap; +} + +.portfolio-entry-block { + max-width: 700px; + border: 1px solid rgba(255, 255, 255, 0.3); + padding: 20px; +} + +.portfolio-entry-block img { + width: 100%; + height: 300px; + object-fit: contain; + object-position: left top; +} /*############################################# -- Contact Forms */ form { margin-top: 40px;