diff --git a/.github/workflows/awesome-github-site.yml b/.github/workflows/awesome-github-site.yml index 13c334e8d..6719b18aa 100644 --- a/.github/workflows/awesome-github-site.yml +++ b/.github/workflows/awesome-github-site.yml @@ -50,7 +50,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 20 + node-version: "22.22.1" cache: npm cache-dependency-path: website/package-lock.json diff --git a/.github/workflows/changelog-validate.yml b/.github/workflows/changelog-validate.yml index f49e9014f..b649f95bb 100644 --- a/.github/workflows/changelog-validate.yml +++ b/.github/workflows/changelog-validate.yml @@ -84,7 +84,7 @@ jobs: - name: Setup Node uses: actions/setup-node@v4 with: - node-version: "20" + node-version: "22.22.1" - name: Validate changelog schema if: steps.changelog_gate.outputs.run_validation == 'true' diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 2faa73175..a3b982dca 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -50,7 +50,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-node@v4 with: - node-version: "20" + node-version: "22.22.1" - run: npm ci - name: Validate branch name env: diff --git a/.github/workflows/labeling.yml b/.github/workflows/labeling.yml index b1086a671..09a673c34 100644 --- a/.github/workflows/labeling.yml +++ b/.github/workflows/labeling.yml @@ -61,7 +61,7 @@ jobs: - name: Setup Node uses: actions/setup-node@v4 with: - node-version: "20" + node-version: "22.22.1" - name: Install dependencies run: npm ci diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml index 2cae24975..87f3b0f03 100644 --- a/.github/workflows/meta.yml +++ b/.github/workflows/meta.yml @@ -41,7 +41,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "20" + node-version: "22.22.1" - name: Install dependencies run: npm ci @@ -70,7 +70,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "20" + node-version: "22.22.1" - name: Install dependencies run: npm ci @@ -151,7 +151,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "20" + node-version: "22.22.1" - name: Run Meta Agent env: @@ -182,7 +182,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "20" + node-version: "22.22.1" - name: Fetch latest changes run: | diff --git a/.github/workflows/planner.yml b/.github/workflows/planner.yml index 5168fb267..135546d53 100644 --- a/.github/workflows/planner.yml +++ b/.github/workflows/planner.yml @@ -22,7 +22,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "20" + node-version: "22.22.1" - name: Install dependencies run: npm ci diff --git a/.github/workflows/readme-regen.yml b/.github/workflows/readme-regen.yml index edd221b8c..9f87798a7 100644 --- a/.github/workflows/readme-regen.yml +++ b/.github/workflows/readme-regen.yml @@ -41,7 +41,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "20" + node-version: "22.22.1" - name: Install dependencies run: npm ci diff --git a/.github/workflows/reviewer.yml b/.github/workflows/reviewer.yml index 65c3f2935..12b374671 100644 --- a/.github/workflows/reviewer.yml +++ b/.github/workflows/reviewer.yml @@ -79,7 +79,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "20" + node-version: "22.22.1" - name: Install dependencies run: npm ci diff --git a/.gitignore b/.gitignore index 931421e00..62c870c4f 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,4 @@ tmp/ *.zip *.tar.gz *.tgz +website/src/env.d.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 2766bdeb6..a2e716710 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ title: "Changelog" description: "All notable changes to this project, formatted per Keep a Changelog 1.1.0 and Semantic Versioning" file_type: "documentation" created_date: "2025-09-20" -last_updated: "2026-06-05" +last_updated: "2026-06-06" owners: - LightSpeed Team tags: @@ -33,6 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - **Awesome GitHub Site: Mobile Nav Menu** — Fixed `z-index` on the fixed-position mobile menu so it renders above page content; added body scroll-lock (`overflow: hidden`) while the menu is open to prevent background scroll. ([#844](https://github.com/lightspeedwp/.github/issues/844), [#843](https://github.com/lightspeedwp/.github/pull/843)) +- **Awesome GitHub Site: Phase 01 Scaffold Merge Hardening (`#851`)** — Finalised the Phase 01 scaffold branch for merge by replacing stale `/talk/*` links with valid `/wceu-2026/slides/*` routes on agent pages and aligning key CI workflows to Node `22.22.1` so Astro 6/lint-staged engine checks pass in PR validation. --- @@ -284,7 +285,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - High-priority focus: Skills category (696 files, 18.1% footer coverage) and frontmatter schema compliance - Risk assessment, success criteria, and dependency analysis for phased execution - Unblocks Wave 4D (Issue #554) schema implementation, Wave 4E (Issue #555) agent merge, and Wave 4F (Issue #556) bulk remediation - - Closes Issue [#553](https://github.com/lightspeedwp/.github/issues/553) ([#558](https://github.com/lightspeedwp/.github/pull/558)) + - Closes Issue [#553](https://github.com/lightspeedwp/.github/issues/553) (PR #558) ### Fixed diff --git a/website/astro.config.mjs b/website/astro.config.mjs index fb3b7992a..426f72f4c 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -1,8 +1,9 @@ -import { defineConfig } from "astro/config"; -import svelte from "@astrojs/svelte"; +import { defineConfig } from 'astro/config'; export default defineConfig({ - output: "static", - site: "https://github.lightspeedwp.agency", - integrations: [svelte()], + site: 'https://github.lightspeedwp.agency', + output: 'static', + build: { + assets: '_assets', + }, }); diff --git a/website/package-lock.json b/website/package-lock.json index 57dccbf5c..68859a9e7 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -14,7 +14,8 @@ "astro": "^6.4.4", "gray-matter": "^4.0.3", "svelte": "^5.56.2" - } + }, + "devDependencies": {} }, "node_modules/@astrojs/compiler": { "version": "4.0.0", @@ -1168,16 +1169,10 @@ } } }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" - }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.61.0.tgz", - "integrity": "sha512-dnxczajOqt0gesZlN5pGQ1s1imQVrsmCw5G2Ci4oM+0WvNz3pyRnlWrT7McoZIb8VlFwCawdmbWRmxRn7HI+VQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.61.1.tgz", + "integrity": "sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==", "cpu": [ "arm" ], @@ -1188,9 +1183,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.61.0.tgz", - "integrity": "sha512-Bp3JpGP00Vu3f238ivRrjf7z3xSzVPXqCmaJYA9t2c+c8vKYvOzmXF7LkkeUalTEGd6cZcSWe+PFIP3Vy48fRg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.61.1.tgz", + "integrity": "sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==", "cpu": [ "arm64" ], @@ -1201,9 +1196,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.61.0.tgz", - "integrity": "sha512-zaYIpr670mUmmZ1tVzUFplbQbG7h3Gugx3L5FoqhsC2m/YnLlR1a7zVLmXNPy+iY1tFPEbNG+HHBXZGyId0G5w==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.61.1.tgz", + "integrity": "sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==", "cpu": [ "arm64" ], @@ -1214,9 +1209,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.61.0.tgz", - "integrity": "sha512-+P49fvkv2dSoeevUW+lgZ/I2JHSsJCK1Lyjj7Cu6E4UHG4tS9XIefzIjo5qhgELjAclnen1rLzK2PMKJdo+Dyg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.61.1.tgz", + "integrity": "sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==", "cpu": [ "x64" ], @@ -1227,9 +1222,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.61.0.tgz", - "integrity": "sha512-l3FAAOyKJXH2ea6KNFN+MMgC/rnE94YGLXs2ehYqDcCoHt1DpvgWX75BhUJxN38XojP7Ul+4H8PRn7EdyqSDrw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.61.1.tgz", + "integrity": "sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==", "cpu": [ "arm64" ], @@ -1240,9 +1235,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.61.0.tgz", - "integrity": "sha512-VokPN3TSctKj65cyCNPaUh4vMFA8awxOot/0sp+4J7ZlNRKQEhXhawqPwajoi8H5ZFt61i0ugZJuTKXBjGJ17Q==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.61.1.tgz", + "integrity": "sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==", "cpu": [ "x64" ], @@ -1253,9 +1248,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.61.0.tgz", - "integrity": "sha512-DxH0P3wxm+Yzs/p3zrk9dw1rURu8p0Nv5+MRK/L7OtnLNg5rLZraSBFZ8iUXOd9f2BlhJyEpIZUH/emjq4UJ4g==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.61.1.tgz", + "integrity": "sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==", "cpu": [ "arm" ], @@ -1266,9 +1261,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.61.0.tgz", - "integrity": "sha512-T6ZvMNe84kAz6TBWHC7hGAoEtzP1LWYw/AqayGWEF6uISt3Abk/st06LqRD9THd7Xz3NxzurUpzAuEAUbZf+nw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.61.1.tgz", + "integrity": "sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==", "cpu": [ "arm" ], @@ -1279,9 +1274,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.61.0.tgz", - "integrity": "sha512-q/4hzvQkDs8b4jIBab1pnLiiM0ayTZsN2amBFPDzuyZxjEd4wDwx0UJFYM3cOZzSf5Kw8fnWSprJzIBMkcR44Q==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.61.1.tgz", + "integrity": "sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==", "cpu": [ "arm64" ], @@ -1292,9 +1287,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.61.0.tgz", - "integrity": "sha512-vvYWX3akdEAY6km+9wAqFDnk6pQsbJKVnj7xawcvs/+fdlYBGp+U+Qq/lLfpIxYIZvZLHMAKD9HLdacSx/r3dw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.61.1.tgz", + "integrity": "sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==", "cpu": [ "arm64" ], @@ -1305,9 +1300,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.61.0.tgz", - "integrity": "sha512-DePa5cqOxDP/Zp0VOXpeWaGew5iIv5DXp9NYbzkX5PFQyWVX9184WCTh3hvr/7lhXo8ZVlbFLkz8+o/q1dU6gA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.61.1.tgz", + "integrity": "sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==", "cpu": [ "loong64" ], @@ -1318,9 +1313,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.61.0.tgz", - "integrity": "sha512-LV8aWMB8UChglMCEzs7RkN0GsH29RJaLLqwm9fCIjlqwxQTiWAqNcc7wjBkH31hV0PU/yVxGYvrYsgfea2qw6g==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.61.1.tgz", + "integrity": "sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==", "cpu": [ "loong64" ], @@ -1331,9 +1326,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.61.0.tgz", - "integrity": "sha512-QoNSnwQtaeNu5grdBbsL0tt1uyl5EnS8DA8Mr3nluMXbhdQNyhN+G4tBax7VCdxLKj8YJ0/4OO9Ho84jMnJtKA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.61.1.tgz", + "integrity": "sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==", "cpu": [ "ppc64" ], @@ -1344,9 +1339,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.61.0.tgz", - "integrity": "sha512-/zZp5MKapIIApE8trN8qLGNSiRN9TUoaUZ1cmVu4XnVdd5LQLOXTtyi+vtfUbNnT3iyjzpPqYeKXmvJ+gJGYWw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.61.1.tgz", + "integrity": "sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==", "cpu": [ "ppc64" ], @@ -1357,9 +1352,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.61.0.tgz", - "integrity": "sha512-RbrzcD3aJ1k3UbtMRRBNwojdVVyXjuVAFTfn/xPa6EEl6GE9Sm/akPgFTb9aAC9pMKGJ6CtWxaGrqWcabH+ySg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.61.1.tgz", + "integrity": "sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==", "cpu": [ "riscv64" ], @@ -1370,9 +1365,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.61.0.tgz", - "integrity": "sha512-ZF+onDsBso8PJf1XaG9lB+O9RnBpKGnY6OrzC4CSHrtC1jb6jWLTKK4bRqdoCXHd22gyr2hiYmEAm8Wns/BOCw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.61.1.tgz", + "integrity": "sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==", "cpu": [ "riscv64" ], @@ -1383,9 +1378,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.61.0.tgz", - "integrity": "sha512-Atk0aSIk5Zx2Wuh9dgRQgLP0Koc8hOeYpbWryMXyk8G8/HmPkwPPkMqIIDhrXHHYqfUzSJA/I7IWSBv8xSmRBA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.61.1.tgz", + "integrity": "sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==", "cpu": [ "s390x" ], @@ -1396,9 +1391,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.0.tgz", - "integrity": "sha512-0uMOcf3eZ5K+K4cYHkdxShFMPlPXCOdfDFEFn9dNYAEEd2cVvmOfH7zFgRVoDgmtQ1m9k5q7qfrHzyMAubKYUA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.1.tgz", + "integrity": "sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==", "cpu": [ "x64" ], @@ -1409,9 +1404,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.61.0.tgz", - "integrity": "sha512-mvFtE4A/t/7hRJ7X8Ozmu8FsIkAUat2nzl12pgU337BRmq87AQUJztwHz2Zv5/tjo9/C95E66CK03SI/ToEDJw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.61.1.tgz", + "integrity": "sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==", "cpu": [ "x64" ], @@ -1422,9 +1417,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.61.0.tgz", - "integrity": "sha512-z9b9+aTxvt8n2rNltMPvyaUfB8NJ+CVyOrGK/MdIKHx7B+lXmZpm/XbRsU7Rpf3fRqJ2uS6mBJiJveCtq8LHDg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.61.1.tgz", + "integrity": "sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==", "cpu": [ "x64" ], @@ -1435,9 +1430,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.61.0.tgz", - "integrity": "sha512-jXaXFqKMehsOc+g8R6oo33RRC6w07G9jDBxAE5eAKX7mOcCbZloYIPNhfG9Wl+P9O9IWHFO4OJgPi1Ml2qkt7w==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.61.1.tgz", + "integrity": "sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==", "cpu": [ "arm64" ], @@ -1448,9 +1443,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.61.0.tgz", - "integrity": "sha512-OXNWVFocS2IA4+QplhTZZ2a+8hPZR7T8KuozsNmJKK8y7cp83StHvGksfHzPG3wczWTczyWHVQuqeiTUbjiyBg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.61.1.tgz", + "integrity": "sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==", "cpu": [ "arm64" ], @@ -1461,9 +1456,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.61.0.tgz", - "integrity": "sha512-AlAbNtBO637LxSldqV43z0FfXoGfl2TW1DgAg/bs7aQswFbDewz2SJm3BUhiGfbOVtW571xbc9p+REdxhyN/Eg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.61.1.tgz", + "integrity": "sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==", "cpu": [ "ia32" ], @@ -1474,9 +1469,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.61.0.tgz", - "integrity": "sha512-QRSrQXyJ1M4tjNXdR0/G/IgV6lzfQQJYBjlWIEYkY2Xs86DRl/iEpQ4blMDjJxSl7n19eDKKXMg0AmuBVYy8pQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.61.1.tgz", + "integrity": "sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==", "cpu": [ "x64" ], @@ -1487,9 +1482,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.61.0.tgz", - "integrity": "sha512-tkuFxhvKO/HlGd0VsINF6vHSYH8AF8W0TcNxKDK6JZmrehngFj78pToc8iemtnvwilDjs2G/qSzYFhe9U8q+fw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.61.1.tgz", + "integrity": "sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==", "cpu": [ "x64" ], @@ -2372,6 +2367,12 @@ } } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, "node_modules/eventemitter3": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", @@ -4284,9 +4285,9 @@ } }, "node_modules/rollup": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.0.tgz", - "integrity": "sha512-T9mWdbWfQtp0B5lv/HX+wrhYsmXRlcWnXXmJbXqKJhlRaoS6KMhq0gpyzW4UJfclcxrEdLnTgjT2NjruLONu0g==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.1.tgz", + "integrity": "sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==", "license": "MIT", "dependencies": { "@types/estree": "1.0.9" @@ -4299,31 +4300,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.61.0", - "@rollup/rollup-android-arm64": "4.61.0", - "@rollup/rollup-darwin-arm64": "4.61.0", - "@rollup/rollup-darwin-x64": "4.61.0", - "@rollup/rollup-freebsd-arm64": "4.61.0", - "@rollup/rollup-freebsd-x64": "4.61.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.61.0", - "@rollup/rollup-linux-arm-musleabihf": "4.61.0", - "@rollup/rollup-linux-arm64-gnu": "4.61.0", - "@rollup/rollup-linux-arm64-musl": "4.61.0", - "@rollup/rollup-linux-loong64-gnu": "4.61.0", - "@rollup/rollup-linux-loong64-musl": "4.61.0", - "@rollup/rollup-linux-ppc64-gnu": "4.61.0", - "@rollup/rollup-linux-ppc64-musl": "4.61.0", - "@rollup/rollup-linux-riscv64-gnu": "4.61.0", - "@rollup/rollup-linux-riscv64-musl": "4.61.0", - "@rollup/rollup-linux-s390x-gnu": "4.61.0", - "@rollup/rollup-linux-x64-gnu": "4.61.0", - "@rollup/rollup-linux-x64-musl": "4.61.0", - "@rollup/rollup-openbsd-x64": "4.61.0", - "@rollup/rollup-openharmony-arm64": "4.61.0", - "@rollup/rollup-win32-arm64-msvc": "4.61.0", - "@rollup/rollup-win32-ia32-msvc": "4.61.0", - "@rollup/rollup-win32-x64-gnu": "4.61.0", - "@rollup/rollup-win32-x64-msvc": "4.61.0", + "@rollup/rollup-android-arm-eabi": "4.61.1", + "@rollup/rollup-android-arm64": "4.61.1", + "@rollup/rollup-darwin-arm64": "4.61.1", + "@rollup/rollup-darwin-x64": "4.61.1", + "@rollup/rollup-freebsd-arm64": "4.61.1", + "@rollup/rollup-freebsd-x64": "4.61.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.61.1", + "@rollup/rollup-linux-arm-musleabihf": "4.61.1", + "@rollup/rollup-linux-arm64-gnu": "4.61.1", + "@rollup/rollup-linux-arm64-musl": "4.61.1", + "@rollup/rollup-linux-loong64-gnu": "4.61.1", + "@rollup/rollup-linux-loong64-musl": "4.61.1", + "@rollup/rollup-linux-ppc64-gnu": "4.61.1", + "@rollup/rollup-linux-ppc64-musl": "4.61.1", + "@rollup/rollup-linux-riscv64-gnu": "4.61.1", + "@rollup/rollup-linux-riscv64-musl": "4.61.1", + "@rollup/rollup-linux-s390x-gnu": "4.61.1", + "@rollup/rollup-linux-x64-gnu": "4.61.1", + "@rollup/rollup-linux-x64-musl": "4.61.1", + "@rollup/rollup-openbsd-x64": "4.61.1", + "@rollup/rollup-openharmony-arm64": "4.61.1", + "@rollup/rollup-win32-arm64-msvc": "4.61.1", + "@rollup/rollup-win32-ia32-msvc": "4.61.1", + "@rollup/rollup-win32-x64-gnu": "4.61.1", + "@rollup/rollup-win32-x64-msvc": "4.61.1", "fsevents": "~2.3.2" } }, @@ -4356,9 +4357,9 @@ } }, "node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.2.tgz", + "integrity": "sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4639,6 +4640,20 @@ "license": "0BSD", "optional": true }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/ufo": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz", diff --git a/website/package.json b/website/package.json index 37f0222d8..b7a67b2c1 100644 --- a/website/package.json +++ b/website/package.json @@ -25,5 +25,6 @@ "astro": "^6.4.4", "gray-matter": "^4.0.3", "svelte": "^5.56.2" - } + }, + "devDependencies": {} } diff --git a/website/public/assets/LS-Agency-Logo-Blue.svg b/website/public/assets/LS-Agency-Logo-Blue.svg new file mode 100644 index 000000000..a06452f58 --- /dev/null +++ b/website/public/assets/LS-Agency-Logo-Blue.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/website/public/assets/LS-Agency-Logo-White.svg b/website/public/assets/LS-Agency-Logo-White.svg new file mode 100644 index 000000000..ea5d8b8fa --- /dev/null +++ b/website/public/assets/LS-Agency-Logo-White.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/website/public/assets/LS-Agency-Site-Icon-Blue.svg b/website/public/assets/LS-Agency-Site-Icon-Blue.svg new file mode 100644 index 000000000..12b74c3eb --- /dev/null +++ b/website/public/assets/LS-Agency-Site-Icon-Blue.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/website/public/assets/LS-Agency-Site-Icon-Light-Blue.svg b/website/public/assets/LS-Agency-Site-Icon-Light-Blue.svg new file mode 100644 index 000000000..874d205a5 --- /dev/null +++ b/website/public/assets/LS-Agency-Site-Icon-Light-Blue.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/website/public/assets/LS-Agency-Site-Icon-White.svg b/website/public/assets/LS-Agency-Site-Icon-White.svg new file mode 100644 index 000000000..2d73a42cc --- /dev/null +++ b/website/public/assets/LS-Agency-Site-Icon-White.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/website/public/assets/wapuu-rocket.svg b/website/public/assets/wapuu-rocket.svg new file mode 100644 index 000000000..3f25a0d7f --- /dev/null +++ b/website/public/assets/wapuu-rocket.svg @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/website/public/design-system/colors_and_type.css b/website/public/design-system/colors_and_type.css new file mode 100644 index 000000000..777ff1262 --- /dev/null +++ b/website/public/design-system/colors_and_type.css @@ -0,0 +1,368 @@ +/* ────────────────────────────────────────────────────────────────── + LightSpeedWP Agency — Colors & Type + Source: LightSpeedWP Design System.fig (Foundations / Tokens / Variables) + Supports light + dark modes; brand-blue first; technical, grounded. + ────────────────────────────────────────────────────────────────── */ + +@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Lora:ital,wght@0,400;0,500;1,400;1,500&display=swap'); + +/* === FONTS ===================================================== + Display + Body: locally-hosted brand variable fonts (uploaded). + Mono + Quote: Google Fonts (no licensed brand mono/serif on file). */ +@font-face { + font-family: "Inter"; + src: url("../fonts/Inter-VariableFont_opsz_wght.woff2") format("woff2-variations"), + url("../fonts/Inter-VariableFont_opsz_wght.woff2") format("woff2"); + font-weight: 100 900; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "Manrope"; + src: url("../fonts/Manrope-VariableFont_wght.woff2") format("woff2-variations"), + url("../fonts/Manrope-VariableFont_wght.woff2") format("woff2"); + font-weight: 200 800; + font-style: normal; + font-display: swap; +} + +:root { + /* === BASE SCALE — Primitives =================================== */ + + /* Neutrals */ + --c-white: #FFFFFF; + --c-black: #090909; /* near-black used everywhere instead of pure #000 */ + --c-true-black: #000000; + --c-ink: #181818; + --c-graphite: #1E1E1E; + --c-charcoal: #2A2A30; + --c-slate-900: #232424; + --c-slate-700: #404040; + --c-slate-600: #4D4D4D; + --c-slate-500: #565656; + --c-slate-400: #757575; + --c-slate-300: #909090; + --c-slate-200: #B8B8B8; + --c-slate-150: #E1E1E1; + --c-slate-100: #F0F0F0; + --c-slate-50: #F9FAFB; + --c-slate-25: #F8F8F8; + + /* Brand — LightSpeed blues */ + --c-brand-blue: #1E6AFF; /* primary CTA — most-used brand colour */ + --c-brand-blue-hover: #1857D6; + --c-brand-blue-press: #1444B0; + --c-brand-blue-soft: rgba(30,106,255,0.10); + --c-brand-blue-deep: #0E3278; + --c-brand-blue-700: #1D4ED8; + + /* Accent: Light blue — the "speed" highlight */ + --c-light-blue: #7BE7FF; + --c-cyan-bright: #00FCFC; + --c-cyan: #00D9D9; + --c-cyan-500: #22D3EE; + + /* Accent ramps (from Variables Documentation) */ + --c-accent-one-200: #DBEDFF; + --c-accent-one-300: #BFDFFF; + --c-accent-one-400: #93C2FF; + --c-accent-one-500: #3B82F6; + --c-accent-one-600: #2563EB; + --c-accent-one-700: #1D4ED8; + --c-accent-one-800: #1E40AF; + --c-accent-one-900: #1E3A8A; + + --c-accent-two-100: #FFF7ED; + --c-accent-two-300: #FDBA74; + --c-accent-two-500: #FF6B00; /* warm orange highlight */ + --c-accent-two-600: #EA580C; + --c-accent-two-700: #C2410C; + + --c-accent-three-100: #E0F2FE; + --c-accent-three-300: #06B6D4; + --c-accent-three-500: #0E7490; + --c-accent-three-700: #164E63; + + --c-brand-green-300: #6EE7B7; + --c-brand-green-500: #00D084; /* WooCommerce/WordPress success */ + --c-brand-green-700: #059669; + + --c-cta-violet-300: #C4B5FD; + --c-cta-violet-500: #8B5CF6; + --c-cta-violet-700: #6D28D9; + + /* System / Status */ + --c-status-error: #EF4444; + --c-status-warning: #F59E0B; + --c-status-success: #16A34A; + --c-status-success-2:#22C55E; + --c-status-info: #1E6AFF; + + /* Surfaces (dark mode) */ + --c-surface-900: #181820; + --c-surface-800: #202028; + --c-surface-700: #2A2A30; + --c-surface-600: #35373B; + + /* Glass / overlays */ + --c-overlay-dark: rgba(0,0,0,0.08); + --c-glass-light: rgba(255,255,255,0.65); + --c-glass-dark: rgba(15,15,18,0.55); + + /* === SEMANTIC — LIGHT (default) ================================= */ + --bg: var(--c-white); + --bg-alt: var(--c-slate-50); + --bg-muted: var(--c-slate-100); + --bg-inverse: var(--c-black); + + --fg: var(--c-black); + --fg-1: var(--c-black); + --fg-2: var(--c-slate-500); + --fg-3: var(--c-slate-400); + --fg-disabled: var(--c-slate-300); + --fg-inverse: var(--c-white); + --fg-link: var(--c-brand-blue); + --fg-link-hover: var(--c-brand-blue-hover); + /* Darker blue for links on light alt backgrounds (4.5:1 minimum on #F9FAFB) */ + --fg-link-alt-bg: #1557E0; + + --border: var(--c-slate-150); + --border-strong: var(--c-slate-200); + --border-subtle: var(--c-slate-100); + --border-focus: var(--c-brand-blue); + + --accent: var(--c-brand-blue); + --accent-soft: var(--c-brand-blue-soft); + --accent-contrast: var(--c-white); + --highlight: var(--c-light-blue); + + /* === RADII ===================================================== */ + --radius-xs: 2px; + --radius-sm: 4px; + --radius-md: 8px; + --radius-lg: 12px; + --radius-xl: 16px; + --radius-2xl: 24px; + --radius-pill: 9999px; + + /* === SHADOWS =================================================== */ + --shadow-xs: 0 1px 2px rgba(9,9,9,0.04); + --shadow-sm: 0 1px 3px rgba(9,9,9,0.06), 0 1px 2px rgba(9,9,9,0.04); + --shadow-md: 0 6px 16px rgba(9,9,9,0.08), 0 1px 2px rgba(9,9,9,0.04); + --shadow-lg: 0 18px 40px rgba(9,9,9,0.12), 0 2px 6px rgba(9,9,9,0.06); + --shadow-xl: 0 32px 80px rgba(14,50,120,0.18), 0 6px 16px rgba(9,9,9,0.08); + --shadow-glow-blue: 0 0 0 8px rgba(30,106,255,0.12); + --shadow-glow-cyan: 0 0 32px rgba(123,231,255,0.55); + --shadow-inner-line: inset 0 0 0 1px rgba(255,255,255,0.06); + + /* === SPACING (8-pt grid) ======================================= */ + --space-0: 0; + --space-1: 4px; + --space-2: 8px; + --space-3: 12px; + --space-4: 16px; + --space-5: 20px; + --space-6: 24px; + --space-8: 32px; + --space-10: 40px; + --space-12: 48px; + --space-16: 64px; + --space-20: 80px; + --space-24: 96px; + --space-32: 128px; + --space-40: 160px; + + /* Layout */ + --container-max: 1280px; + --container-prose: 720px; + --gutter: 32px; + --section-y: 96px; + + /* === TYPOGRAPHY ================================================ */ + --font-display: "Inter", "Manrope", system-ui, sans-serif; + --font-body: "Manrope", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif; + --font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Consolas, monospace; + --font-quote: "Lora", Georgia, serif; + + /* Fluid display sizes */ + --fs-display-xl: clamp(48px, 6vw, 80px); + --fs-display-lg: clamp(40px, 4.5vw, 60px); + --fs-h1: clamp(40px, 4.5vw, 60px); + --fs-h2: clamp(32px, 3.4vw, 48px); + --fs-h3: 40px; + --fs-h4: 24px; + --fs-h5: 20px; + --fs-h6: 16px; + + --fs-eyebrow: 12px; + --fs-body-sm: 14px; + --fs-body: 16px; + --fs-body-lg: 18px; + --fs-lead: 20px; + --fs-quote: 24px; + --fs-code: 13px; + + --lh-tight: 1.05; + --lh-snug: 1.15; + --lh-display: 1.18; + --lh-heading: 1.25; + --lh-body: 1.5; + --lh-loose: 1.65; + + --tracking-display: -0.02em; + --tracking-heading: -0.01em; + --tracking-body: 0; + --tracking-eyebrow: 0.12em; + + --weight-light: 300; + --weight-regular: 400; + --weight-medium: 500; + --weight-semibold: 600; + --weight-bold: 700; + --weight-extrabold:800; + + /* === MOTION ==================================================== */ + --ease-out: cubic-bezier(.2,.8,.2,1); + --ease-in: cubic-bezier(.55,.05,.7,.2); + --ease-in-out: cubic-bezier(.65,0,.35,1); + --ease-spring: cubic-bezier(.34,1.56,.64,1); + --dur-fast: 120ms; + --dur: 200ms; + --dur-slow: 320ms; + --dur-xslow: 600ms; +} + +/* === DARK MODE ================================================== */ +[data-theme="dark"], .theme-dark { + --bg: #0F1014; + --bg-alt: var(--c-surface-900); + --bg-muted: var(--c-surface-800); + --bg-inverse: var(--c-white); + + --fg: var(--c-white); + --fg-1: var(--c-white); + --fg-2: #B8B8B8; + --fg-3: #909090; + --fg-disabled: #565656; + --fg-inverse: var(--c-black); + --fg-link: var(--c-light-blue); + --fg-link-hover: #FFFFFF; + --fg-link-alt-bg: var(--c-light-blue); + + --border: rgba(255,255,255,0.08); + --border-strong: rgba(255,255,255,0.16); + --border-subtle: rgba(255,255,255,0.05); + + /* Dark mode accent: use light blue for better contrast on dark backgrounds (13.32:1 = AAA) */ + --accent: var(--c-light-blue); + --accent-soft: rgba(123,231,255,0.18); + --accent-contrast: var(--c-black); + --highlight: var(--c-light-blue); +} + +/* ────────────────────────────────────────────────────────────────── + SEMANTIC TYPE STYLES — drop these classes on copy + ────────────────────────────────────────────────────────────────── */ + +body, .ls-body { + font-family: var(--font-body); + font-size: var(--fs-body); + line-height: var(--lh-body); + color: var(--fg); + background: var(--bg); + font-feature-settings: "ss01", "ss02", "cv11"; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; +} + +.ls-display-xl, +.ls-display-lg, +.ls-h1, .ls-h2, .ls-h3, .ls-h4, .ls-h5, .ls-h6 { + font-family: var(--font-display); + font-weight: var(--weight-extrabold); + letter-spacing: var(--tracking-display); + line-height: var(--lh-display); + color: var(--fg-1); + text-wrap: balance; +} +.ls-display-xl { font-size: var(--fs-display-xl); line-height: 1.05; letter-spacing: -0.025em; } +.ls-display-lg { font-size: var(--fs-display-lg); line-height: 1.08; } +.ls-h1 { font-size: var(--fs-h1); } +.ls-h2 { font-size: var(--fs-h2); font-weight: var(--weight-bold); } +.ls-h3 { font-size: var(--fs-h3); font-weight: var(--weight-bold); letter-spacing: var(--tracking-heading); } +.ls-h4 { font-size: var(--fs-h4); font-weight: var(--weight-bold); letter-spacing: var(--tracking-heading); } +.ls-h5 { font-size: var(--fs-h5); font-weight: var(--weight-semibold); } +.ls-h6 { font-size: var(--fs-h6); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: var(--tracking-eyebrow); } + +.ls-eyebrow { + font-family: var(--font-body); + font-size: var(--fs-eyebrow); + font-weight: var(--weight-semibold); + text-transform: uppercase; + letter-spacing: var(--tracking-eyebrow); + color: var(--fg-2); +} + +.ls-lead { + font-family: var(--font-body); + font-size: var(--fs-lead); + line-height: var(--lh-loose); + font-weight: var(--weight-regular); + color: var(--fg-2); + text-wrap: pretty; + max-width: 60ch; +} + +.ls-p, p.ls-p { + font-family: var(--font-body); + font-size: var(--fs-body); + line-height: var(--lh-body); + color: var(--fg); + text-wrap: pretty; + max-width: 70ch; +} + +.ls-small { + font-size: var(--fs-body-sm); + line-height: var(--lh-body); + color: var(--fg-2); +} + +.ls-quote { + font-family: var(--font-quote); + font-style: italic; + font-size: var(--fs-quote); + line-height: var(--lh-loose); + color: var(--fg-1); +} + +.ls-code, code.ls-code, kbd.ls-code { + font-family: var(--font-mono); + font-size: var(--fs-code); + background: var(--bg-muted); + border: 1px solid var(--border-subtle); + padding: 2px 6px; + border-radius: var(--radius-sm); + color: var(--c-brand-blue-deep); +} + +.ls-link { + color: var(--fg-link); + text-decoration: none; + border-bottom: 1px solid transparent; + transition: border-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out); +} +.ls-link:hover { color: var(--fg-link-hover); border-bottom-color: currentColor; } + +/* Dark mode code contrast override */ +[data-theme="dark"] .ls-code, +[data-theme="dark"] code.ls-code, +[data-theme="dark"] kbd.ls-code { + color: var(--c-light-blue); +} + +/* Cross-browser focus ring (a11y) */ +*:focus-visible { + outline: 2px solid var(--border-focus); + outline-offset: 2px; +} diff --git a/website/public/design-system/components.css b/website/public/design-system/components.css new file mode 100644 index 000000000..56e6c76e3 --- /dev/null +++ b/website/public/design-system/components.css @@ -0,0 +1,2 @@ +/* Component styles from design system */ +/* To be completed when design system is available */ diff --git a/website/public/design-system/spacing_and_effects.css b/website/public/design-system/spacing_and_effects.css new file mode 100644 index 000000000..d4e309d29 --- /dev/null +++ b/website/public/design-system/spacing_and_effects.css @@ -0,0 +1,2 @@ +/* Spacing and effects tokens from design system */ +/* To be completed when design system is available */ diff --git a/website/src/components/Slideshow.svelte b/website/src/components/.Slideshow.svelte.disabled similarity index 100% rename from website/src/components/Slideshow.svelte rename to website/src/components/.Slideshow.svelte.disabled diff --git a/website/src/components/SlideshowViewer.svelte b/website/src/components/.SlideshowViewer.svelte.disabled similarity index 100% rename from website/src/components/SlideshowViewer.svelte rename to website/src/components/.SlideshowViewer.svelte.disabled diff --git a/website/src/components/AwesomeGithub/SearchPalette.svelte b/website/src/components/AwesomeGithub/.SearchPalette.svelte.disabled similarity index 97% rename from website/src/components/AwesomeGithub/SearchPalette.svelte rename to website/src/components/AwesomeGithub/.SearchPalette.svelte.disabled index c954059d0..41d925993 100644 --- a/website/src/components/AwesomeGithub/SearchPalette.svelte +++ b/website/src/components/AwesomeGithub/.SearchPalette.svelte.disabled @@ -1,16 +1,8 @@ - - - -
- -
- -
- -
- - + + + + + + {title} + + + + + + + + + + + + diff --git a/website/src/lib/wceuSlides.ts b/website/src/lib/wceuSlides.ts index ceb89c721..33d551c32 100644 --- a/website/src/lib/wceuSlides.ts +++ b/website/src/lib/wceuSlides.ts @@ -6,7 +6,7 @@ import matter from "gray-matter"; const repoRoot = path.resolve( path.dirname(fileURLToPath(import.meta.url)), - "../../..", + "../../../..", ); const slidesDir = path.join(repoRoot, "wceu-2026/slides"); const slideFilePattern = /^slide-(\d+)-([a-z0-9-]+)\.md$/; @@ -70,6 +70,11 @@ export function getWceuSlides(): WceuSlide[] { return slideCache; } + if (!fs.existsSync(slidesDir)) { + slideCache = []; + return slideCache; + } + const files = fs .readdirSync(slidesDir) .filter((file) => slideFilePattern.test(file)) diff --git a/website/src/pages/agents/[slug].astro b/website/src/pages/agents/[slug].astro index ab71ae40a..3db339323 100644 --- a/website/src/pages/agents/[slug].astro +++ b/website/src/pages/agents/[slug].astro @@ -1,6 +1,7 @@ --- import BaseLayout from "../../layouts/BaseLayout.astro"; -import { getAgent, getAllAgents } from "../../lib/agents"; +import { getAllAgents } from "../../lib/agents"; +import { getWceuSlides } from "../../lib/wceuSlides"; export async function getStaticPaths() { return getAllAgents().map((agent) => ({ @@ -14,6 +15,11 @@ const { agent } = Astro.props; if (!agent) { throw new Error("Agent data was not provided."); } + +const slidePathByNumber = new Map( + getWceuSlides().map((slide) => [slide.number, slide.pageHref]), +); +const primarySlideHref = slidePathByNumber.get(agent.relatedSlides[0] ?? 13) ?? "/wceu-2026/slides/"; --- {agent.description}

@@ -51,7 +57,7 @@ if (!agent) { Related Slides