From 8ac22c1f5c93a9952318486008e73b20ebe79c66 Mon Sep 17 00:00:00 2001 From: Wade Hammes Date: Sat, 21 Dec 2024 13:19:14 -0500 Subject: [PATCH] Chore: add Bluesky (#833) --- package.json | 1 + pnpm-lock.yaml | 8 +++ public/favicon.webp | Bin 2102 -> 0 bytes public/robots.txt | 3 -- src/app/favicon.ico | Bin 0 -> 1150 bytes src/app/layout.tsx | 28 +++++----- src/app/manifest.ts | 21 ++++++++ src/app/opengraph-image.alt.txt | 1 + src/app/opengraph-image.png | Bin 0 -> 16579 bytes src/app/page.tsx | 50 +++++------------- src/app/robots.ts | 11 ++++ src/components/Bio/Bio.component.tsx | 8 +++ .../HomePage/HomePage.component.tsx | 40 ++++++++++++++ src/components/Typography.tsx | 3 +- src/styles/cssVariables.ts | 2 +- src/styles/global.ts | 3 +- 16 files changed, 120 insertions(+), 59 deletions(-) delete mode 100644 public/favicon.webp delete mode 100644 public/robots.txt create mode 100644 src/app/favicon.ico create mode 100644 src/app/manifest.ts create mode 100644 src/app/opengraph-image.alt.txt create mode 100644 src/app/opengraph-image.png create mode 100644 src/app/robots.ts create mode 100644 src/components/HomePage/HomePage.component.tsx diff --git a/package.json b/package.json index aa496a7..eae7dd1 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@jest/types": "^29.6.3", "@svgr/webpack": "^8.1.0", "@testing-library/react": "^16.1.0", + "classnames": "^2.5.1", "gsap": "^3.12.5", "html-react-parser": "^5.2.1", "next": "^15.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d4b0a4..4d9aa3d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: '@testing-library/react': specifier: ^16.1.0 version: 16.1.0(@testing-library/dom@10.3.1)(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: + specifier: ^2.5.1 + version: 2.5.1 gsap: specifier: ^3.12.5 version: 3.12.5 @@ -1806,6 +1809,9 @@ packages: cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -5542,6 +5548,8 @@ snapshots: cjs-module-lexer@1.2.3: {} + classnames@2.5.1: {} + client-only@0.0.1: {} cliui@8.0.1: diff --git a/public/favicon.webp b/public/favicon.webp deleted file mode 100644 index 128969535f33df32114e2e4bf9ece7402c1ac299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2102 zcmV-62+8+SNk&F42mk2mk;tFTe{B2}Nz&Kiy+r~Ks9y4Z4+XveJ07X$0 zy+{QBs1Lb6n;d3RegFx2Nj{emh3%7~-@XCpD9Q%JVIXar#lPPHA6U67f+K8DEd#f08{G=xX5NVJ4F&|-{CKYn)r~w9LL%6}C?^3wi)=x@u^NBq zY^+T?JMg*G<&uPT@IoJSm!yG9Xvr6Vowalk%Nb%VDsqR$1lezpeFJ{C$MZQmy)Pc` zE+qnIFAnT3MF5nvRLYX684_@xFsT8D?L3>kpFY2{*KP!c=%sDvV86sAte7&FIPeJ) z6OtRSlIE%GkdCPv_e;62-E(1>C*`lYC$7au$afWc3&JhD4=b%`cAb;>i>dOd=#zO`$@PI`C zxTUGX080e`)6gPFpGY(;rVUtI^Puo-@z$sjLyd@1Q;P%%B0)(RL_7q=2Z6lq>@ln` z;_-9Ghg<8OsT<+tvQd6vT;#7LA{q<;_;k5cRe)MV5D^dqaTPfRwaGa8Sh($m$#EDP z2rB~QsnLZ>f~0=bUPBNM-i!At3_6))+WMww<3p)mb>rIc5oqXQ1$C}e()O+lBuHv9 zO1c{Xa&;A0M~0qijTIFe8osBw;u)kf@Obd}Ai?9Qe2oMP5%vtotV@vv(TD@D_^lb~ z_qwe&sXQrVARq#RTqRdAAZC$V`FhBK29Y3MWPrzeyj1PYhX7$np(w7t9UgC+{=%m^6lpsyLRt@X^B>b< z+Rm>!vEkv<`o}MZjTp;b%q+#J5mTLhB4-s@Qvni+XCKsf==MBSs3hp;>VKaW({e$@ zF&0m~DWerDdu3MSeIy^DW6q7-*t&z<8A3?Et97Do==hqpPWvAn79kgv?W4D1^Ic-L zl`+QXur$f7Cc~dCea0<=TM`3^^Qgz;hun~B+izSw{H)VSRm}WHheg;$6}w>VTe0T+ zgE88A+a9rCk2*~t>;L42mMw?H2*eIPNW##T6P@c@uiQ8GPyrx!K>eS)vGv@8qjyfs?}EApgQ%NI4hyX= zD_I3F|G4OtWiOVo6Z`B@$$vX088^0U0&sa?$O(6I>#>JNuAG?P2GB=B^Cu1qEv_n9 z0MMI#3S)M}82^d?WLYN@XNas}+R{@jKdS&H#)&neN(I2An6^ikUQ9{DkZo+omdKPa+}XE_ z6w7vELSoBk|GsYJG?N4%X0F+x3K0+}yAw&60H-mOP-To0Ln; zjD)(rs~Tp@+_kWdq)>LC(U8Krvg|+(&**BYLIv_FWL+f_Tw=B?J;kz9unVral0POT zqh%Mv{jK>~==RAgNB{qIZ;d%C*cF!S*rWs*?Jpg6tJ7F#5pjK_EN9MRS6H-eM0GaZV|VB7&zc)WLK85(gPtmb?Pc-m|&>C zqNPbJ4#r{wEm>)zm1=vJmXMA-&>8M0Af5*Szmrm6ZakQ~wyPF>we zbQv2qeLp^Ud^OhU{I&!|5sS>?K$S-e)YQUV!ZTqJr)J38b-m{{u7-N}5s*qjf4M5V!SO}<7a29NWg$^wA5_>WJ z1Il0nB)-Okz3z0kcIpgyG2jdg__gq&fxMf?2y_Y-S_m9OgfxIt11$m=aB4+qjQ>RT z@+iy*cTk8;0iaGXASI;%1uM!d6l1S6HT*@S3H{Un0KYpmLbN2O%}=ek-$M6g_aZ3p zx(o~Ws{Ni?Sm8b)8Qal-!wp}xZNqn+35HO2Npke2fV0-o`h_Pl8nBm;E4J$)16JQY goGqfNP}T^1z6f6q>u2#Sp6qz&kGdLL(*Y>}0CjTsr~m)} diff --git a/public/robots.txt b/public/robots.txt deleted file mode 100644 index d114006..0000000 --- a/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -User-agent: * -Allow: / -Sitemap: https://wadehammes.com/sitemap.xml \ No newline at end of file diff --git a/src/app/favicon.ico b/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..905709720ac68b57ee483d37b6e763aad62f3932 GIT binary patch literal 1150 zcmb7^YfO_@7{_0eecKn4CHp`J6vw6X{n(l z!V2Y9peUt4FIb>bkPcMDL0`xcW3s)kn+^qW*_Q0XmL-t?4k-JuFU!u!bDo^%5LX8%d`;Mp7& zej44_|M1&AoEl5OQJ)GYrjj^Et&+DINbjxt@aG@D;NE=)>Md%R``*UG~AF4KH_l@OD@^F%uUlO+}vohVZQ&6&yjt_6e;qW)RxGs~LZ#1qmB0_bG=--Usv`c|6JTyM{s_@B}8i)Nc z*ncw)d!{uw7)asT%qq6t6!n4;F-i$vn~Y=;Ml!C^I5DEar#>}4o`}JLsW|K<+IQ}1 zu$N5^eAOgjYR#h6ineIzyCf*QD#baw`~@RQqz$WZY*dXSH)3#bG8X%8Yw+&OcBIT{ zS9h^HncAkvpsKcLC(|ijE4m^d$haCGeI0`jNX_rfXs~;B z`&u%qbtcSfgY=yes>~u56kEkikzLIexU_t(X9u6{eS^;&dy`M|$MeUh68O~VME=m- dB>w%`cs6-X!z9jY1tbTh+p_r+{C~f${TsKRafJW? literal 0 HcmV?d00001 diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 94cfdca..2aba1cf 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,11 +1,19 @@ "use client"; import isValidProp from "@emotion/is-prop-valid"; +import { Space_Mono } from "next/font/google"; import StyledComponentsRegistry from "src/lib/registry"; import { CSSRootVariables } from "src/styles/cssVariables"; import { GlobalStyles } from "src/styles/global"; import { StyleSheetManager } from "styled-components"; +const spaceMono = Space_Mono({ + subsets: ["latin"], + weight: ["400", "700"], + display: "swap", + variable: "--font-mono", +}); + export default function RootLayout({ // Layouts must accept a children prop. // This will be populated with nested layouts or pages @@ -14,21 +22,11 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( - - - Wade Hammes - - - - - - + diff --git a/src/app/manifest.ts b/src/app/manifest.ts new file mode 100644 index 0000000..1f2f07c --- /dev/null +++ b/src/app/manifest.ts @@ -0,0 +1,21 @@ +import type { MetadataRoute } from "next"; + +export default function manifest(): MetadataRoute.Manifest { + return { + name: "Wade Hammes", + short_name: "Wade Hammes", + description: + "Wade is a software engineer for Rhythm Energy, helping build the best customer experience in retail renewable energy, and a co-founder of Provisioner, a full-service creative agency helping to grow brands.", + start_url: "/", + display: "standalone", + background_color: "#171717", + theme_color: "#171717", + icons: [ + { + src: "/favicon.ico", + sizes: "any", + type: "image/x-icon", + }, + ], + }; +} diff --git a/src/app/opengraph-image.alt.txt b/src/app/opengraph-image.alt.txt new file mode 100644 index 0000000..6e95209 --- /dev/null +++ b/src/app/opengraph-image.alt.txt @@ -0,0 +1 @@ +Wade Hammes - Software Engineer \ No newline at end of file diff --git a/src/app/opengraph-image.png b/src/app/opengraph-image.png new file mode 100644 index 0000000000000000000000000000000000000000..2e5b95795e077adfe83e7dd18a02b4837fa83e8b GIT binary patch literal 16579 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 literal 0 HcmV?d00001 diff --git a/src/app/page.tsx b/src/app/page.tsx index 6c56573..c11c28d 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,42 +1,18 @@ -"use client"; +import type { Metadata } from "next"; +import { HomePage } from "src/components/HomePage/HomePage.component"; -import { type FC, type ReactElement, useEffect, useState } from "react"; -import { useInView } from "react-intersection-observer"; -import { Bio } from "src/components/Bio/Bio.component"; -import { Footer, FooterActions } from "src/components/Layout"; -import { PageContainer } from "src/components/PageContainer/Page.component"; -import { SpiralsActions } from "src/components/Spirals/SpiralsActions"; -import { SpiralsSVG } from "src/components/Spirals/SpiralsSVG.component"; -import { isBrowser } from "src/utils/helpers"; +export function generateMetadata(): Metadata { + return { + metadataBase: new URL("https://wadehammes.com/"), + creator: "Wade Hammes", + publisher: "Wade Hammes", + description: + "Wade Hammes is a software engineer for Rhythm Energy, helping build the best customer experience in retail renewable energy, and a co-founder of Provisioner, a full-service creative agency helping to grow brands.", + }; +} -const Home: FC = (): ReactElement => { - const [key, updateKey] = useState(new Date()); - const [clientReady, setClientReady] = useState(false); - const { inView, ref } = useInView({ - triggerOnce: true, - initialInView: true, - fallbackInView: true, - }); - - useEffect(() => { - if (isBrowser() && inView) { - setClientReady(true); - } - }, [inView]); - - return ( - <> - -
- - - - -
-
- {clientReady && } - - ); +const Home = () => { + return ; }; export default Home; diff --git a/src/app/robots.ts b/src/app/robots.ts new file mode 100644 index 0000000..7cc37cd --- /dev/null +++ b/src/app/robots.ts @@ -0,0 +1,11 @@ +import type { MetadataRoute } from "next"; + +export default function robots(): MetadataRoute.Robots { + return { + rules: { + userAgent: "*", + allow: "/", + }, + sitemap: "https://www.wadehammes.com/sitemap-index.xml", + }; +} diff --git a/src/components/Bio/Bio.component.tsx b/src/components/Bio/Bio.component.tsx index a9e5052..cb00a5f 100644 --- a/src/components/Bio/Bio.component.tsx +++ b/src/components/Bio/Bio.component.tsx @@ -32,6 +32,14 @@ export const Bio = () => ( Instagram + ,{" "} + + Bluesky + , and{" "} all other links diff --git a/src/components/HomePage/HomePage.component.tsx b/src/components/HomePage/HomePage.component.tsx new file mode 100644 index 0000000..6094472 --- /dev/null +++ b/src/components/HomePage/HomePage.component.tsx @@ -0,0 +1,40 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { useInView } from "react-intersection-observer"; +import { Bio } from "src/components/Bio/Bio.component"; +import { Footer, FooterActions } from "src/components/Layout"; +import PageContainer from "src/components/PageContainer/Page.component"; +import SpiralsActions from "src/components/Spirals/SpiralsActions"; +import SpiralsSVG from "src/components/Spirals/SpiralsSVG.component"; +import { isBrowser } from "src/helpers/helpers"; + +export const HomePage = () => { + const [key, updateKey] = useState(new Date()); + const [clientReady, setClientReady] = useState(false); + const { inView, ref } = useInView({ + triggerOnce: true, + initialInView: true, + fallbackInView: true, + }); + + useEffect(() => { + if (isBrowser() && inView) { + setClientReady(true); + } + }, [inView]); + + return ( + <> + +
+ + + + +
+
+ {clientReady && } + + ); +}; diff --git a/src/components/Typography.tsx b/src/components/Typography.tsx index 955718e..79a018f 100644 --- a/src/components/Typography.tsx +++ b/src/components/Typography.tsx @@ -4,8 +4,7 @@ import styled from "styled-components"; export const H1 = styled.h1` font-size: 2rem; - font-family: "Suez One", serif; - font-weight: ${FontWeight.Bold}; + font-weight: 700; padding-bottom: 1.5rem; line-height: 1.1; diff --git a/src/styles/cssVariables.ts b/src/styles/cssVariables.ts index cfe05c6..3b70704 100644 --- a/src/styles/cssVariables.ts +++ b/src/styles/cssVariables.ts @@ -11,7 +11,7 @@ export const CSSRootVariables = createGlobalStyle` --colors-green: hsla(145,55%,58%,1); --colors-red: hsla(350,95%,58%,0.83); --colors-purple: hsla(229,94%,76%,0.915); - --colors-trueBlack: #000000; + --colors-trueBlack: #171717; --colors-alphaBlack: rgba(0, 0, 0, 0.25); --sizing-mobilePadding: 2em; --sizing-desktopPadding: 5em; diff --git a/src/styles/global.ts b/src/styles/global.ts index d7e34d7..d575e96 100644 --- a/src/styles/global.ts +++ b/src/styles/global.ts @@ -32,7 +32,7 @@ export const GlobalStyles = createGlobalStyle` body { background: var(--color-bg); color: var(--color-text); - font-family: 'Space Mono', monospace; + font-family: var(--font-mono); font-size: 14px; transition: background 0.2s ease-in-out; @@ -42,6 +42,7 @@ export const GlobalStyles = createGlobalStyle` } body { line-height: 1; + font-family: var(--font-mono); } img { max-width: 100%;