diff --git a/README.md b/README.md
index 70a7a99..dba5272 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-# Astro Headless WordPress Tailwind Starter
+# AndrewKepson.com
\ No newline at end of file
diff --git a/astro.config.mjs b/astro.config.mjs
index 77e10a1..da43a91 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -1,10 +1,23 @@
import { defineConfig } from "astro/config";
import tailwind from "@astrojs/tailwind";
+import react from "@astrojs/react";
+
export default defineConfig({
- integrations: [tailwind()],
- trailingSlash: "never",
- site: "https://site.com",
- // prefetch: true,
- compressHTML: true,
-});
+ integrations: [tailwind(), react()],
+ trailingSlash: "always",
+ site: "https://andrewkepson.com",
+ image: {
+ domains: ["headless.andrewkepson.com"]
+ },
+ // prefetch: true,
+ compressHTML: true,
+ experimental: {
+ contentLayer: true,
+ },
+ redirects: {
+ "/blog/create-headless-wordpress-source-gatsby-wordpress-api/":
+ "/blog/headless-wordpress/create-headless-wordpress-source-gatsby-wordpress-api/",
+ "/blog/how-and-why-nike-is-using-blockchain/": "/blog/blockchain/how-and-why-nike-is-using-blockchain/",
+ },
+});
\ No newline at end of file
diff --git a/package.json b/package.json
index a9ffdea..064645e 100644
--- a/package.json
+++ b/package.json
@@ -1,24 +1,54 @@
{
- "name": "astro-headless-wordpress-tailwind-starter",
- "type": "module",
- "version": "0.0.1",
- "scripts": {
- "dev": "astro dev",
- "start": "astro dev",
- "build": "astro build",
- "preview": "astro preview",
- "astro": "astro"
- },
- "dependencies": {
- "@astrojs/tailwind": "^5.1.0",
- "astro": "^4.15.4",
- "dotenv": "^16.4.5",
- "prettier": "^3.3.3",
- "prettier-plugin-astro": "^0.13.0",
- "prettier-plugin-tailwindcss": "^0.5.14",
- "tailwindcss": "^3.4.10"
- },
- "devDependencies": {
- "@tailwindcss/typography": "^0.5.15"
- }
-}
\ No newline at end of file
+ "name": "andrew-kepson",
+ "type": "module",
+ "version": "0.0.1",
+ "scripts": {
+ "dev": "astro dev",
+ "start": "astro dev",
+ "build": "astro build",
+ "preview": "astro preview",
+ "astro": "astro"
+ },
+ "dependencies": {
+ "100-italic.css": "link:@fontsource/work-sans/100-italic.css",
+ "100.css": "link:@fontsource/work-sans/100.css",
+ "200-italic.css": "link:@fontsource/work-sans/200-italic.css",
+ "200.css": "link:@fontsource/work-sans/200.css",
+ "300-italic.css": "link:@fontsource/work-sans/300-italic.css",
+ "300.css": "link:@fontsource/work-sans/300.css",
+ "400-italic.css": "link:@fontsource/work-sans/400-italic.css",
+ "400.css": "link:@fontsource/work-sans/400.css",
+ "500-italic.css": "link:@fontsource/work-sans/500-italic.css",
+ "500.css": "link:@fontsource/work-sans/500.css",
+ "600-italic.css": "link:@fontsource/work-sans/600-italic.css",
+ "600.css": "link:@fontsource/work-sans/600.css",
+ "700-italic.css": "link:@fontsource/work-sans/700-italic.css",
+ "700.css": "link:@fontsource/work-sans/700.css",
+ "800-italic.css": "link:@fontsource/work-sans/800-italic.css",
+ "800.css": "link:@fontsource/work-sans/800.css",
+ "900-italic.css": "link:@fontsource/work-sans/900-italic.css",
+ "900.css": "link:@fontsource/work-sans/900.css",
+ "@astrojs/react": "^3.6.2",
+ "@astrojs/tailwind": "^5.1.0",
+ "@fontsource/roboto": "^5.0.15",
+ "@fontsource/work-sans": "^5.0.20",
+ "@headlessui/react": "^2.1.6",
+ "@heroicons/react": "^2.1.5",
+ "@types/react": "^18.3.5",
+ "@types/react-dom": "^18.3.0",
+ "astro": "^4.15.4",
+ "dotenv": "^16.4.5",
+ "outline": "link:@heroicons/react/outline",
+ "prettier": "^3.3.3",
+ "prettier-plugin-astro": "^0.13.0",
+ "prettier-plugin-tailwindcss": "^0.5.14",
+ "prop-types": "^15.8.1",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-reveal": "^1.2.2",
+ "tailwindcss": "^3.4.10"
+ },
+ "devDependencies": {
+ "@tailwindcss/typography": "^0.5.15"
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 51721be..05c5048 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,15 +8,93 @@ importers:
.:
dependencies:
+ 100-italic.css:
+ specifier: link:@fontsource/work-sans/100-italic.css
+ version: link:@fontsource/work-sans/100-italic.css
+ 100.css:
+ specifier: link:@fontsource/work-sans/100.css
+ version: link:@fontsource/work-sans/100.css
+ 200-italic.css:
+ specifier: link:@fontsource/work-sans/200-italic.css
+ version: link:@fontsource/work-sans/200-italic.css
+ 200.css:
+ specifier: link:@fontsource/work-sans/200.css
+ version: link:@fontsource/work-sans/200.css
+ 300-italic.css:
+ specifier: link:@fontsource/work-sans/300-italic.css
+ version: link:@fontsource/work-sans/300-italic.css
+ 300.css:
+ specifier: link:@fontsource/work-sans/300.css
+ version: link:@fontsource/work-sans/300.css
+ 400-italic.css:
+ specifier: link:@fontsource/work-sans/400-italic.css
+ version: link:@fontsource/work-sans/400-italic.css
+ 400.css:
+ specifier: link:@fontsource/work-sans/400.css
+ version: link:@fontsource/work-sans/400.css
+ 500-italic.css:
+ specifier: link:@fontsource/work-sans/500-italic.css
+ version: link:@fontsource/work-sans/500-italic.css
+ 500.css:
+ specifier: link:@fontsource/work-sans/500.css
+ version: link:@fontsource/work-sans/500.css
+ 600-italic.css:
+ specifier: link:@fontsource/work-sans/600-italic.css
+ version: link:@fontsource/work-sans/600-italic.css
+ 600.css:
+ specifier: link:@fontsource/work-sans/600.css
+ version: link:@fontsource/work-sans/600.css
+ 700-italic.css:
+ specifier: link:@fontsource/work-sans/700-italic.css
+ version: link:@fontsource/work-sans/700-italic.css
+ 700.css:
+ specifier: link:@fontsource/work-sans/700.css
+ version: link:@fontsource/work-sans/700.css
+ 800-italic.css:
+ specifier: link:@fontsource/work-sans/800-italic.css
+ version: link:@fontsource/work-sans/800-italic.css
+ 800.css:
+ specifier: link:@fontsource/work-sans/800.css
+ version: link:@fontsource/work-sans/800.css
+ 900-italic.css:
+ specifier: link:@fontsource/work-sans/900-italic.css
+ version: link:@fontsource/work-sans/900-italic.css
+ 900.css:
+ specifier: link:@fontsource/work-sans/900.css
+ version: link:@fontsource/work-sans/900.css
+ '@astrojs/react':
+ specifier: ^3.6.2
+ version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.3)
'@astrojs/tailwind':
specifier: ^5.1.0
version: 5.1.0(astro@4.15.4(rollup@4.21.2)(typescript@5.5.4))(tailwindcss@3.4.10)
+ '@fontsource/roboto':
+ specifier: ^5.0.15
+ version: 5.0.15
+ '@fontsource/work-sans':
+ specifier: ^5.0.20
+ version: 5.0.20
+ '@headlessui/react':
+ specifier: ^2.1.6
+ version: 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@heroicons/react':
+ specifier: ^2.1.5
+ version: 2.1.5(react@18.3.1)
+ '@types/react':
+ specifier: ^18.3.5
+ version: 18.3.5
+ '@types/react-dom':
+ specifier: ^18.3.0
+ version: 18.3.0
astro:
specifier: ^4.15.4
version: 4.15.4(rollup@4.21.2)(typescript@5.5.4)
dotenv:
specifier: ^16.4.5
version: 16.4.5
+ outline:
+ specifier: link:@heroicons/react/outline
+ version: link:@heroicons/react/outline
prettier:
specifier: ^3.3.3
version: 3.3.3
@@ -26,6 +104,18 @@ importers:
prettier-plugin-tailwindcss:
specifier: ^0.5.14
version: 0.5.14(prettier-plugin-astro@0.13.0)(prettier@3.3.3)
+ prop-types:
+ specifier: ^15.8.1
+ version: 15.8.1
+ react:
+ specifier: ^18.3.1
+ version: 18.3.1
+ react-dom:
+ specifier: ^18.3.1
+ version: 18.3.1(react@18.3.1)
+ react-reveal:
+ specifier: ^1.2.2
+ version: 1.2.2(react@18.3.1)
tailwindcss:
specifier: ^3.4.10
version: 3.4.10
@@ -60,6 +150,15 @@ packages:
resolution: {integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==}
engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0}
+ '@astrojs/react@3.6.2':
+ resolution: {integrity: sha512-fK29lYI7zK/KG4ZBy956x4dmauZcZ18osFkuyGa8r3gmmCQa2NZ9XNu9WaVYEUm0j89f4Gii4tbxLoyM8nk2MA==}
+ engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0}
+ peerDependencies:
+ '@types/react': ^17.0.50 || ^18.0.21
+ '@types/react-dom': ^17.0.17 || ^18.0.6
+ react: ^17.0.2 || ^18.0.0 || ^19.0.0-beta
+ react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0-beta
+
'@astrojs/tailwind@5.1.0':
resolution: {integrity: sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig==}
peerDependencies:
@@ -143,6 +242,18 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
+ '@babel/plugin-transform-react-jsx-self@7.24.7':
+ resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-jsx-source@7.24.7':
+ resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
'@babel/plugin-transform-react-jsx@7.25.2':
resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==}
engines: {node: '>=6.9.0'}
@@ -302,6 +413,45 @@ packages:
cpu: [x64]
os: [win32]
+ '@floating-ui/core@1.6.7':
+ resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==}
+
+ '@floating-ui/dom@1.6.10':
+ resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==}
+
+ '@floating-ui/react-dom@2.1.1':
+ resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ '@floating-ui/react@0.26.23':
+ resolution: {integrity: sha512-9u3i62fV0CFF3nIegiWiRDwOs7OW/KhSUJDNx2MkQM3LbE5zQOY01sL3nelcVBXvX7Ovvo3A49I8ql+20Wg/Hw==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ '@floating-ui/utils@0.2.7':
+ resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==}
+
+ '@fontsource/roboto@5.0.15':
+ resolution: {integrity: sha512-352XiID9jfwmYaHpdmS3ocGJi3PA+vOm4HzJIRfSyPEyLP6dZN8iiEKUbdAfB5YXQO3YxO2KZpR+R28q2zMiYw==}
+
+ '@fontsource/work-sans@5.0.20':
+ resolution: {integrity: sha512-y5iXosRufbJWj2W1SwupjFdHVVsICFkWPEKj0nE9G1wKdFCpZq0xoHEcaSgkIVjzC+xrVSMliaDv81T9E+i6RA==}
+
+ '@headlessui/react@2.1.6':
+ resolution: {integrity: sha512-IkaSHxsMdrSdVZn5n3ClfvqQo5umHeqwjeZfbFUTczykeHoMH+3VOP0nn7zVsbebazjPmOsXh3x9gCy6e2PG5Q==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ react: ^18
+ react-dom: ^18
+
+ '@heroicons/react@2.1.5':
+ resolution: {integrity: sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==}
+ peerDependencies:
+ react: '>= 16'
+
'@img/sharp-darwin-arm64@0.33.5':
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@@ -448,6 +598,37 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
+ '@react-aria/focus@3.18.2':
+ resolution: {integrity: sha512-Jc/IY+StjA3uqN73o6txKQ527RFU7gnG5crEl5Xy3V+gbYp2O5L3ezAo/E0Ipi2cyMbG6T5Iit1IDs7hcGu8aw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+
+ '@react-aria/interactions@3.22.2':
+ resolution: {integrity: sha512-xE/77fRVSlqHp2sfkrMeNLrqf2amF/RyuAS6T5oDJemRSgYM3UoxTbWjucPhfnoW7r32pFPHHgz4lbdX8xqD/g==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+
+ '@react-aria/ssr@3.9.5':
+ resolution: {integrity: sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ==}
+ engines: {node: '>= 12'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+
+ '@react-aria/utils@3.25.2':
+ resolution: {integrity: sha512-GdIvG8GBJJZygB4L2QJP1Gabyn2mjFsha73I2wSe+o4DYeGWoJiMZRM06PyTIxLH4S7Sn7eVDtsSBfkc2VY/NA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+
+ '@react-stately/utils@3.10.3':
+ resolution: {integrity: sha512-moClv7MlVSHpbYtQIkm0Cx+on8Pgt1XqtPx6fy9rQFb2DNc9u1G3AUVnqA17buOkH1vLxAtX4MedlxMWyRCYYA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+
+ '@react-types/shared@3.24.1':
+ resolution: {integrity: sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+
'@rollup/pluginutils@5.1.0':
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
engines: {node: '>=14.0.0'}
@@ -543,11 +724,23 @@ packages:
'@shikijs/vscode-textmate@9.2.2':
resolution: {integrity: sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==}
+ '@swc/helpers@0.5.13':
+ resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==}
+
'@tailwindcss/typography@0.5.15':
resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20'
+ '@tanstack/react-virtual@3.10.7':
+ resolution: {integrity: sha512-yeP+M0G8D+15ZFPivpuQ5hoM4Fa/PzERBx8P8EGcfEsXX3JOb9G9UUrqc47ZXAxvK+YqzM9T5qlJUYUFOwCZJw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+
+ '@tanstack/virtual-core@3.10.7':
+ resolution: {integrity: sha512-ND5dfsU0n9F4gROzwNNDJmg6y8n9pI8YWxtgbfJ5UcNn7Hx+MxEXtXcQ189tS7sh8pmCObgz2qSiyRKTZxT4dg==}
+
'@types/babel__core@7.20.5':
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
@@ -581,12 +774,27 @@ packages:
'@types/nlcst@2.0.3':
resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
+ '@types/prop-types@15.7.12':
+ resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
+
+ '@types/react-dom@18.3.0':
+ resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
+
+ '@types/react@18.3.5':
+ resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==}
+
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
'@ungap/structured-clone@1.2.0':
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+ '@vitejs/plugin-react@4.3.1':
+ resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.2.0 || ^5.0.0
+
acorn@8.12.1:
resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
engines: {node: '>=0.4.0'}
@@ -783,6 +991,9 @@ packages:
engines: {node: '>=4'}
hasBin: true
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
debug@4.3.7:
resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
engines: {node: '>=6.0'}
@@ -1155,6 +1366,10 @@ packages:
longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
@@ -1557,12 +1772,36 @@ packages:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'}
+ prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+
property-information@6.5.0:
resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ react-dom@18.3.1:
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+
+ react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ react-refresh@0.14.2:
+ resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
+ engines: {node: '>=0.10.0'}
+
+ react-reveal@1.2.2:
+ resolution: {integrity: sha512-JCv3fAoU6Z+Lcd8U48bwzm4pMZ79qsedSXYwpwt6lJNtj/v5nKJYZZbw3yhaQPPgYePo3Y0NOCoYOq/jcsisuw==}
+ peerDependencies:
+ react: ^15.3.0 || ^16.0.0
+
+ react@18.3.1:
+ resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
+ engines: {node: '>=0.10.0'}
+
read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
@@ -1639,6 +1878,9 @@ packages:
sass-formatter@0.7.9:
resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==}
+ scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+
section-matter@1.0.0:
resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
engines: {node: '>=4'}
@@ -1738,6 +1980,9 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ tabbable@6.2.0:
+ resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
+
tailwindcss@3.4.10:
resolution: {integrity: sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==}
engines: {node: '>=14.0.0'}
@@ -1792,6 +2037,9 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
+ ultrahtml@1.5.3:
+ resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==}
+
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
@@ -1985,6 +2233,18 @@ snapshots:
dependencies:
prismjs: 1.29.0
+ '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.3)':
+ dependencies:
+ '@types/react': 18.3.5
+ '@types/react-dom': 18.3.0
+ '@vitejs/plugin-react': 4.3.1(vite@5.4.3)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ ultrahtml: 1.5.3
+ transitivePeerDependencies:
+ - supports-color
+ - vite
+
'@astrojs/tailwind@5.1.0(astro@4.15.4(rollup@4.21.2)(typescript@5.5.4))(tailwindcss@3.4.10)':
dependencies:
astro: 4.15.4(rollup@4.21.2)(typescript@5.5.4)
@@ -2106,6 +2366,16 @@ snapshots:
'@babel/core': 7.25.2
'@babel/helper-plugin-utils': 7.24.8
+ '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/helper-plugin-utils': 7.24.8
+
+ '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/helper-plugin-utils': 7.24.8
+
'@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)':
dependencies:
'@babel/core': 7.25.2
@@ -2215,6 +2485,48 @@ snapshots:
'@esbuild/win32-x64@0.21.5':
optional: true
+ '@floating-ui/core@1.6.7':
+ dependencies:
+ '@floating-ui/utils': 0.2.7
+
+ '@floating-ui/dom@1.6.10':
+ dependencies:
+ '@floating-ui/core': 1.6.7
+ '@floating-ui/utils': 0.2.7
+
+ '@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@floating-ui/dom': 1.6.10
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ '@floating-ui/react@0.26.23(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@floating-ui/utils': 0.2.7
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ tabbable: 6.2.0
+
+ '@floating-ui/utils@0.2.7': {}
+
+ '@fontsource/roboto@5.0.15': {}
+
+ '@fontsource/work-sans@5.0.20': {}
+
+ '@headlessui/react@2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@floating-ui/react': 0.26.23(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/focus': 3.18.2(react@18.3.1)
+ '@react-aria/interactions': 3.22.2(react@18.3.1)
+ '@tanstack/react-virtual': 3.10.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ '@heroicons/react@2.1.5(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+
'@img/sharp-darwin-arm64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.0.4
@@ -2333,6 +2645,46 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
+ '@react-aria/focus@3.18.2(react@18.3.1)':
+ dependencies:
+ '@react-aria/interactions': 3.22.2(react@18.3.1)
+ '@react-aria/utils': 3.25.2(react@18.3.1)
+ '@react-types/shared': 3.24.1(react@18.3.1)
+ '@swc/helpers': 0.5.13
+ clsx: 2.1.1
+ react: 18.3.1
+
+ '@react-aria/interactions@3.22.2(react@18.3.1)':
+ dependencies:
+ '@react-aria/ssr': 3.9.5(react@18.3.1)
+ '@react-aria/utils': 3.25.2(react@18.3.1)
+ '@react-types/shared': 3.24.1(react@18.3.1)
+ '@swc/helpers': 0.5.13
+ react: 18.3.1
+
+ '@react-aria/ssr@3.9.5(react@18.3.1)':
+ dependencies:
+ '@swc/helpers': 0.5.13
+ react: 18.3.1
+
+ '@react-aria/utils@3.25.2(react@18.3.1)':
+ dependencies:
+ '@react-aria/ssr': 3.9.5(react@18.3.1)
+ '@react-stately/utils': 3.10.3(react@18.3.1)
+ '@react-types/shared': 3.24.1(react@18.3.1)
+ '@swc/helpers': 0.5.13
+ clsx: 2.1.1
+ react: 18.3.1
+
+ '@react-stately/utils@3.10.3(react@18.3.1)':
+ dependencies:
+ '@swc/helpers': 0.5.13
+ react: 18.3.1
+
+ '@react-types/shared@3.24.1(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+
'@rollup/pluginutils@5.1.0(rollup@4.21.2)':
dependencies:
'@types/estree': 1.0.5
@@ -2398,6 +2750,10 @@ snapshots:
'@shikijs/vscode-textmate@9.2.2': {}
+ '@swc/helpers@0.5.13':
+ dependencies:
+ tslib: 2.7.0
+
'@tailwindcss/typography@0.5.15(tailwindcss@3.4.10)':
dependencies:
lodash.castarray: 4.4.0
@@ -2406,6 +2762,14 @@ snapshots:
postcss-selector-parser: 6.0.10
tailwindcss: 3.4.10
+ '@tanstack/react-virtual@3.10.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@tanstack/virtual-core': 3.10.7
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ '@tanstack/virtual-core@3.10.7': {}
+
'@types/babel__core@7.20.5':
dependencies:
'@babel/parser': 7.25.6
@@ -2449,10 +2813,32 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
+ '@types/prop-types@15.7.12': {}
+
+ '@types/react-dom@18.3.0':
+ dependencies:
+ '@types/react': 18.3.5
+
+ '@types/react@18.3.5':
+ dependencies:
+ '@types/prop-types': 15.7.12
+ csstype: 3.1.3
+
'@types/unist@3.0.3': {}
'@ungap/structured-clone@1.2.0': {}
+ '@vitejs/plugin-react@4.3.1(vite@5.4.3)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2)
+ '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2)
+ '@types/babel__core': 7.20.5
+ react-refresh: 0.14.2
+ vite: 5.4.3
+ transitivePeerDependencies:
+ - supports-color
+
acorn@8.12.1: {}
ansi-align@3.0.1:
@@ -2711,6 +3097,8 @@ snapshots:
cssesc@3.0.0: {}
+ csstype@3.1.3: {}
+
debug@4.3.7:
dependencies:
ms: 2.1.3
@@ -3085,6 +3473,10 @@ snapshots:
longest-streak@3.1.0: {}
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
lru-cache@10.4.3: {}
lru-cache@5.1.1:
@@ -3606,10 +3998,35 @@ snapshots:
kleur: 3.0.3
sisteransi: 1.0.5
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
property-information@6.5.0: {}
queue-microtask@1.2.3: {}
+ react-dom@18.3.1(react@18.3.1):
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.3.1
+ scheduler: 0.23.2
+
+ react-is@16.13.1: {}
+
+ react-refresh@0.14.2: {}
+
+ react-reveal@1.2.2(react@18.3.1):
+ dependencies:
+ prop-types: 15.8.1
+ react: 18.3.1
+
+ react@18.3.1:
+ dependencies:
+ loose-envify: 1.4.0
+
read-cache@1.0.0:
dependencies:
pify: 2.3.0
@@ -3756,6 +4173,10 @@ snapshots:
dependencies:
suf-log: 2.5.3
+ scheduler@0.23.2:
+ dependencies:
+ loose-envify: 1.4.0
+
section-matter@1.0.0:
dependencies:
extend-shallow: 2.0.1
@@ -3876,6 +4297,8 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
+ tabbable@6.2.0: {}
+
tailwindcss@3.4.10:
dependencies:
'@alloc/quick-lru': 5.2.0
@@ -3929,13 +4352,14 @@ snapshots:
optionalDependencies:
typescript: 5.5.4
- tslib@2.7.0:
- optional: true
+ tslib@2.7.0: {}
type-fest@2.19.0: {}
typescript@5.5.4: {}
+ ultrahtml@1.5.3: {}
+
unified@11.0.5:
dependencies:
'@types/unist': 3.0.3
diff --git a/public/fonts/WorkSans-Italic-VariableFont_wght.ttf b/public/fonts/WorkSans-Italic-VariableFont_wght.ttf
new file mode 100644
index 0000000..ad92373
Binary files /dev/null and b/public/fonts/WorkSans-Italic-VariableFont_wght.ttf differ
diff --git a/public/fonts/WorkSans-VariableFont_wght.ttf b/public/fonts/WorkSans-VariableFont_wght.ttf
new file mode 100644
index 0000000..9a82798
Binary files /dev/null and b/public/fonts/WorkSans-VariableFont_wght.ttf differ
diff --git a/src/assets/images/andrew-kepson-2020-portrait.png b/src/assets/images/andrew-kepson-2020-portrait.png
new file mode 100644
index 0000000..cb55546
Binary files /dev/null and b/src/assets/images/andrew-kepson-2020-portrait.png differ
diff --git a/src/assets/images/stock/headless-wordpress-blogging-stock.jpg b/src/assets/images/stock/headless-wordpress-blogging-stock.jpg
new file mode 100644
index 0000000..fe48419
Binary files /dev/null and b/src/assets/images/stock/headless-wordpress-blogging-stock.jpg differ
diff --git a/src/assets/images/stock/headless-wordpress-developer-marketing-collaboration.jpg b/src/assets/images/stock/headless-wordpress-developer-marketing-collaboration.jpg
new file mode 100644
index 0000000..446e74d
Binary files /dev/null and b/src/assets/images/stock/headless-wordpress-developer-marketing-collaboration.jpg differ
diff --git a/src/components/Footer.astro b/src/components/Footer.astro
deleted file mode 100644
index fe604a3..0000000
--- a/src/components/Footer.astro
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/src/components/Header.astro b/src/components/Header.astro
deleted file mode 100644
index 8aacfae..0000000
--- a/src/components/Header.astro
+++ /dev/null
@@ -1,5 +0,0 @@
-
AK
+