diff --git a/components/Herotitle.jsx b/components/Herotitle.jsx new file mode 100644 index 0000000..25e54f4 --- /dev/null +++ b/components/Herotitle.jsx @@ -0,0 +1,7 @@ +import styles from '../styles/Herotitle.module.css' + +export default function Herotitle() { + return ( + Pnh wordmark + ) + } \ No newline at end of file diff --git a/components/Matrix.jsx b/components/Matrix.jsx new file mode 100644 index 0000000..dd5b3e0 --- /dev/null +++ b/components/Matrix.jsx @@ -0,0 +1,53 @@ +import { useEffect } from 'react'; +import styles from '../styles/Matrix.module.css' + +export default function Matrix({ height, width }) { + useEffect(() => { + console.log(height, width); + const canvas = document.getElementById('waterfall'); + const ctx = canvas.getContext('2d'); + + const w = canvas.width = document.body.offsetWidth; + const h = canvas.height = document.body.offsetHeight; + const cols = Math.floor(w / 20) + 1; + const ypos = Array(cols).fill(0); + + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, w, h); + + function matrix() { + ctx.fillStyle = '#0001'; + ctx.fillRect(0, 0, w, h); + + ctx.fillStyle = '#0f0'; + ctx.font = '15pt monospace'; + let runningIndex = 0; + + ypos.forEach((y, ind) => { + const randVal = Math.random() + let text = ""; + if(randVal > 0.6) { + text = String.fromCharCode(Math.random() * 128); + } else { + const items = ["p", "n", "h"] + text = items[runningIndex]; + runningIndex++; + if(runningIndex >= 3) { + runningIndex = 0; + } + } + const x = ind * 20; + ctx.fillText(text, x, y); + if (y > 100 + Math.random() * 10000) ypos[ind] = 0; + else ypos[ind] = y + 20; + }); + } + + setInterval(matrix, 50); + }, []); + return ( + + + + ) + } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9eeca39..00eb98a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,9 @@ "eslint-config-next": "13.0.3", "next": "13.0.3", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "react-horizontal-scrolling-menu": "^3.2.3", + "react-type-animation": "^2.1.2" } }, "node_modules/@babel/runtime": { @@ -691,6 +693,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", + "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2358,11 +2365,32 @@ "react": "^18.2.0" } }, + "node_modules/react-horizontal-scrolling-menu": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-horizontal-scrolling-menu/-/react-horizontal-scrolling-menu-3.2.3.tgz", + "integrity": "sha512-23uR9+/1mYgvOxpR5tx99F8fQmRrPOO4NsHeZJsMLQtsksZZ4sGFCWxxUMZMgFaLROHM/oKj4y3IHyFyHsUGXA==", + "dependencies": { + "smooth-scroll-into-view-if-needed": "^1.1.32" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/react-type-animation": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/react-type-animation/-/react-type-animation-2.1.2.tgz", + "integrity": "sha512-6/t4Whl87sLR0c8kzvJngTrCV6OVy3jEeUZoe2svVu9VaYr951VD7OeUie1rIyeD8JfpBIqZGYrPFHZQ04XHrw==", + "peerDependencies": { + "prop-types": "^15.5.4", + "react": ">= 15.0.0", + "react-dom": ">= 15.0.0" + } + }, "node_modules/regenerator-runtime": { "version": "0.13.10", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", @@ -2485,6 +2513,14 @@ "loose-envify": "^1.1.0" } }, + "node_modules/scroll-into-view-if-needed": { + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz", + "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==", + "dependencies": { + "compute-scroll-into-view": "^1.0.17" + } + }, "node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -2539,6 +2575,14 @@ "node": ">=8" } }, + "node_modules/smooth-scroll-into-view-if-needed": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/smooth-scroll-into-view-if-needed/-/smooth-scroll-into-view-if-needed-1.1.33.tgz", + "integrity": "sha512-crS8NfAaoPrtVYOCMSAnO2vHRgUp22NiiDgEQ7YiaAy5xe2jmR19Jm+QdL8+97gO8ENd7PUyQIAQojJyIiyRHw==", + "dependencies": { + "scroll-into-view-if-needed": "^2.2.28" + } + }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -3245,6 +3289,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "compute-scroll-into-view": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", + "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4419,11 +4468,25 @@ "scheduler": "^0.23.0" } }, + "react-horizontal-scrolling-menu": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-horizontal-scrolling-menu/-/react-horizontal-scrolling-menu-3.2.3.tgz", + "integrity": "sha512-23uR9+/1mYgvOxpR5tx99F8fQmRrPOO4NsHeZJsMLQtsksZZ4sGFCWxxUMZMgFaLROHM/oKj4y3IHyFyHsUGXA==", + "requires": { + "smooth-scroll-into-view-if-needed": "^1.1.32" + } + }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "react-type-animation": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/react-type-animation/-/react-type-animation-2.1.2.tgz", + "integrity": "sha512-6/t4Whl87sLR0c8kzvJngTrCV6OVy3jEeUZoe2svVu9VaYr951VD7OeUie1rIyeD8JfpBIqZGYrPFHZQ04XHrw==", + "requires": {} + }, "regenerator-runtime": { "version": "0.13.10", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", @@ -4498,6 +4561,14 @@ "loose-envify": "^1.1.0" } }, + "scroll-into-view-if-needed": { + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz", + "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==", + "requires": { + "compute-scroll-into-view": "^1.0.17" + } + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -4534,6 +4605,14 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, + "smooth-scroll-into-view-if-needed": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/smooth-scroll-into-view-if-needed/-/smooth-scroll-into-view-if-needed-1.1.33.tgz", + "integrity": "sha512-crS8NfAaoPrtVYOCMSAnO2vHRgUp22NiiDgEQ7YiaAy5xe2jmR19Jm+QdL8+97gO8ENd7PUyQIAQojJyIiyRHw==", + "requires": { + "scroll-into-view-if-needed": "^2.2.28" + } + }, "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", diff --git a/package.json b/package.json index 2054ad6..542a9dd 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build", + "build": "next build -p 3001", "start": "next start", "lint": "next lint" }, @@ -13,6 +13,8 @@ "eslint-config-next": "13.0.3", "next": "13.0.3", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "react-horizontal-scrolling-menu": "^3.2.3", + "react-type-animation": "^2.1.2" } } diff --git a/pages/index.js b/pages/index.js index 5bf5574..d613ffc 100644 --- a/pages/index.js +++ b/pages/index.js @@ -1,71 +1,50 @@ import Head from 'next/head' import Image from 'next/image' import styles from '../styles/Home.module.css' +import Matrix from '../components/Matrix' +import Herotitle from '../components/Herotitle' +import { ScrollMenu, VisibilityContext } from 'react-horizontal-scrolling-menu'; +import { useContext, useEffect, useState } from 'react'; +import { TypeAnimation } from 'react-type-animation'; export default function Home() { - return ( -
- - Create Next App - - - -
-

- Welcome to Next.js! -

+ useEffect(() => { + ; + }, []); -

- Get started by editing{' '} - pages/index.js -

+ return ( +
+ + [Project-Name-Here] + + + -
- -

Documentation →

-

Find in-depth information about Next.js features and API.

-
- - -

Learn →

-

Learn about Next.js in an interactive course with quizzes!

-
- - -

Examples →

-

Discover and deploy boilerplate example Next.js projects.

-
- - -

Deploy →

-

- Instantly deploy your Next.js site to a public URL with Vercel. -

-
-
-
- - -
- ) +
+
+ + +
+
+
+ { + console.log('Done typing!'); // Place optional callbacks anywhere in the array + } + ]} + wrapper="div" + cursor={true} + repeat={0} + style={{ fontFamily: "silkscreen", fontSize: "larger" }} + className="typeHeader" + /> +
+
+
+ + ) } diff --git a/public/PNH_Icon.svg b/public/PNH_Icon.svg new file mode 100644 index 0000000..bf3fda2 --- /dev/null +++ b/public/PNH_Icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/PNH_Wordmark.svg b/public/PNH_Wordmark.svg new file mode 100644 index 0000000..c74e06a --- /dev/null +++ b/public/PNH_Wordmark.svg @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/IBM-Plex/IBMPlexMono-Bold.ttf b/public/fonts/IBM-Plex/IBMPlexMono-Bold.ttf new file mode 100644 index 0000000..2ad2fa1 Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-Bold.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-BoldItalic.ttf b/public/fonts/IBM-Plex/IBMPlexMono-BoldItalic.ttf new file mode 100644 index 0000000..29d9f35 Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-BoldItalic.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-ExtraLight.ttf b/public/fonts/IBM-Plex/IBMPlexMono-ExtraLight.ttf new file mode 100644 index 0000000..66ad6f1 Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-ExtraLight.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-ExtraLightItalic.ttf b/public/fonts/IBM-Plex/IBMPlexMono-ExtraLightItalic.ttf new file mode 100644 index 0000000..86a4e73 Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-ExtraLightItalic.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-Italic.ttf b/public/fonts/IBM-Plex/IBMPlexMono-Italic.ttf new file mode 100644 index 0000000..d17f56b Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-Italic.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-Light.ttf b/public/fonts/IBM-Plex/IBMPlexMono-Light.ttf new file mode 100644 index 0000000..88cbd9b Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-Light.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-LightItalic.ttf b/public/fonts/IBM-Plex/IBMPlexMono-LightItalic.ttf new file mode 100644 index 0000000..02b6524 Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-LightItalic.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-Medium.ttf b/public/fonts/IBM-Plex/IBMPlexMono-Medium.ttf new file mode 100644 index 0000000..3dea23c Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-Medium.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-MediumItalic.ttf b/public/fonts/IBM-Plex/IBMPlexMono-MediumItalic.ttf new file mode 100644 index 0000000..ee9dfe7 Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-MediumItalic.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-Regular.ttf b/public/fonts/IBM-Plex/IBMPlexMono-Regular.ttf new file mode 100644 index 0000000..93331e2 Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-Regular.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-SemiBold.ttf b/public/fonts/IBM-Plex/IBMPlexMono-SemiBold.ttf new file mode 100644 index 0000000..dcf56af Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-SemiBold.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-SemiBoldItalic.ttf b/public/fonts/IBM-Plex/IBMPlexMono-SemiBoldItalic.ttf new file mode 100644 index 0000000..0f77c11 Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-SemiBoldItalic.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-Thin.ttf b/public/fonts/IBM-Plex/IBMPlexMono-Thin.ttf new file mode 100644 index 0000000..16bcd55 Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-Thin.ttf differ diff --git a/public/fonts/IBM-Plex/IBMPlexMono-ThinItalic.ttf b/public/fonts/IBM-Plex/IBMPlexMono-ThinItalic.ttf new file mode 100644 index 0000000..d9c094c Binary files /dev/null and b/public/fonts/IBM-Plex/IBMPlexMono-ThinItalic.ttf differ diff --git a/public/fonts/Silkscreen-Bold.ttf b/public/fonts/Silkscreen-Bold.ttf new file mode 100644 index 0000000..df3b683 Binary files /dev/null and b/public/fonts/Silkscreen-Bold.ttf differ diff --git a/public/fonts/Silkscreen-Regular.ttf b/public/fonts/Silkscreen-Regular.ttf new file mode 100644 index 0000000..e087e17 Binary files /dev/null and b/public/fonts/Silkscreen-Regular.ttf differ diff --git a/styles/Herotitle.module.css b/styles/Herotitle.module.css new file mode 100644 index 0000000..c6b7c26 --- /dev/null +++ b/styles/Herotitle.module.css @@ -0,0 +1,14 @@ +.herotitle { + color: white; + width: 60%; + height: auto; + background-color: rgba(255, 0, 0, 0); + + position: absolute; + top:0; + bottom: 0; + left: 0; + right: 0; + + margin: auto; + } \ No newline at end of file diff --git a/styles/Home.module.css b/styles/Home.module.css index bd50f42..6f4f5a8 100644 --- a/styles/Home.module.css +++ b/styles/Home.module.css @@ -1,129 +1,17 @@ .container { - padding: 0 2rem; + padding: 0px; } -.main { - min-height: 100vh; - padding: 4rem 0; - flex: 1; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} -.footer { - display: flex; - flex: 1; - padding: 2rem 0; - border-top: 1px solid #eaeaea; - justify-content: center; - align-items: center; -} - -.footer a { - display: flex; - justify-content: center; - align-items: center; - flex-grow: 1; -} - -.title a { - color: #0070f3; - text-decoration: none; -} - -.title a:hover, -.title a:focus, -.title a:active { - text-decoration: underline; -} - -.title { - margin: 0; - line-height: 1.15; - font-size: 4rem; -} - -.title, -.description { - text-align: center; -} - -.description { - margin: 4rem 0; - line-height: 1.5; - font-size: 1.5rem; -} - -.code { - background: #fafafa; - border-radius: 5px; - padding: 0.75rem; - font-size: 1.1rem; - font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, - Bitstream Vera Sans Mono, Courier New, monospace; -} - -.grid { - display: flex; - align-items: center; - justify-content: center; - flex-wrap: wrap; - max-width: 800px; +.scrollingWrapperFlexbox { + height: 100vh; } .card { - margin: 1rem; - padding: 1.5rem; - text-align: left; - color: inherit; - text-decoration: none; - border: 1px solid #eaeaea; - border-radius: 10px; - transition: color 0.15s ease, border-color 0.15s ease; - max-width: 300px; + flex: 0 0 auto; } -.card:hover, -.card:focus, -.card:active { - color: #0070f3; - border-color: #0070f3; -} - -.card h2 { - margin: 0 0 1rem 0; - font-size: 1.5rem; -} - -.card p { - margin: 0; - font-size: 1.25rem; - line-height: 1.5; -} - -.logo { - height: 1em; - margin-left: 0.5rem; -} - -@media (max-width: 600px) { - .grid { - width: 100%; - flex-direction: column; - } -} - -@media (prefers-color-scheme: dark) { - .card, - .footer { - border-color: #222; - } - .code { - background: #111; - } - .logo img { - filter: invert(1); - } -} +.typeHeader { + font-family: silkscreen; + font-size: xx-large; +} \ No newline at end of file diff --git a/styles/Matrix.module.css b/styles/Matrix.module.css new file mode 100644 index 0000000..e69de29 diff --git a/styles/globals.css b/styles/globals.css index 4f18421..65ca26d 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -6,6 +6,22 @@ body { Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; } +@font-face { + font-family: silkscreen; + src: url(/fonts/Silkscreen-Regular.ttf); +} + +@font-face { + font-family: silkscreen-bold; + src: url(/fonts/Silkscreen-Bold.ttf); +} + +@font-face { + font-family: ibm-plex-regular; + src: url(/fonts/IBM-Plex/IBMPlexMono-Regular.ttf); +} + + a { color: inherit; text-decoration: none;