From 9372ec571253cfa5a6b38652dd8eeb212fe6c37f Mon Sep 17 00:00:00 2001 From: Kevin Longe <273747162+kvlonge@users.noreply.github.com> Date: Sun, 1 Nov 2026 12:29:52 +0000 Subject: [PATCH] docs: add SQLStack parent branding to website Amp-Thread-ID: https://ampcode.com/threads/T-01a1970a-5e2e-7369-bbfe-0ff96af3a22f --- .github/workflows/website.yml | 6 ++ website/.gitignore | 2 + website/README.md | 1 + website/astro.config.mjs | 2 + website/package-lock.json | 48 +++++++++++++++ website/package.json | 6 +- website/playwright.config.mjs | 14 +++++ website/public/assets/sqlstack-dark.png | Bin 0 -> 5364 bytes website/public/assets/sqlstack.png | Bin 0 -> 5215 bytes website/public/brand.css | 67 +++++++++++++++++++++ website/public/index.html | 25 ++++++-- website/public/styles.css | 3 +- website/src/components/Footer.astro | 18 ++++++ website/src/components/SiteTitle.astro | 11 ++-- website/src/styles/sqlbuild.css | 2 +- website/tests/branding.spec.mjs | 76 ++++++++++++++++++++++++ 16 files changed, 270 insertions(+), 11 deletions(-) create mode 100644 website/playwright.config.mjs create mode 100644 website/public/assets/sqlstack-dark.png create mode 100644 website/public/assets/sqlstack.png create mode 100644 website/public/brand.css create mode 100644 website/src/components/Footer.astro create mode 100644 website/tests/branding.spec.mjs diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index b10b2fb3fb..0dbd53aed5 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -44,6 +44,12 @@ jobs: - name: Check links run: python3 scripts/check_links.py dist + - name: Install browser + run: npx playwright install --with-deps chromium + + - name: Check branding and responsive navigation + run: npm test + - name: Upload site if: github.event_name != 'pull_request' uses: actions/upload-pages-artifact@v3 diff --git a/website/.gitignore b/website/.gitignore index ddce69b680..4faa99dd86 100644 --- a/website/.gitignore +++ b/website/.gitignore @@ -1,3 +1,5 @@ node_modules/ dist/ .astro/ +test-results/ +playwright-report/ diff --git a/website/README.md b/website/README.md index b920a0a57f..7800276220 100644 --- a/website/README.md +++ b/website/README.md @@ -6,6 +6,7 @@ The SQLBuild website: the homepage at `/` and the documentation at `/docs/`, bui - `src/content/docs/docs/`: the documentation pages (MDX), first ported from the Mintlify docs and now edited here. `src/navigation.mjs` holds the sidebar and redirects. - `src/components/`: the page layout, header and page title, replacing Starlight's defaults. `src/components/mintlify/` has drop-in versions of the Mintlify components the pages use (`Card`, `CardGroup`, `Frame`, `Note`, `Warning`). - `public/fonts/`: self-hosted fonts, each with its licence. +- `public/brand.css`: shared SQLStack attribution styling for the homepage and docs. The SQLStack symbols in `public/assets/sqlstack*.png` are unchanged copies from `sqlstack-io/sqlstack` at revision `9b37b9e128d36930e1fe0c5880606525100b228b` (`assets/icons/sqlstack.png` and `sqlstack-dark.png`). Search uses Pagefind, and `llms.txt`, `llms-small.txt` and `llms-full.txt` are generated at build time. diff --git a/website/astro.config.mjs b/website/astro.config.mjs index 3b47d41c91..594c8e1665 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -18,6 +18,7 @@ export default defineConfig({ }, favicon: '/favicon.png', head: [ + { tag: 'link', attrs: { rel: 'stylesheet', href: '/brand.css' } }, { tag: 'meta', attrs: { property: 'og:image', content: 'https://sqlbuild.com/assets/og-sqlbuild-docs.png' } }, { tag: 'meta', attrs: { property: 'og:image:width', content: '1200' } }, { tag: 'meta', attrs: { property: 'og:image:height', content: '630' } }, @@ -35,6 +36,7 @@ export default defineConfig({ SiteTitle: './src/components/SiteTitle.astro', Pagination: './src/components/Pagination.astro', ThemeSelect: './src/components/ThemeSelect.astro', + Footer: './src/components/Footer.astro', }, customCss: ['./src/styles/fonts.css', './src/styles/sqlbuild.css'], expressiveCode: { diff --git a/website/package-lock.json b/website/package-lock.json index f69819c3ee..e99ca21c9e 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -12,6 +12,9 @@ "sharp": "^0.35.4", "starlight-llms-txt": "^0.12.0" }, + "devDependencies": { + "@playwright/test": "^1.64.1" + }, "engines": { "node": ">=22.12.0" } @@ -1733,6 +1736,22 @@ "win32" ] }, + "node_modules/@playwright/test": { + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.64.1.tgz", + "integrity": "sha512-IaYGml/nSOiZWROfPtuIL7neuu9qDOZ3TNvNljUIrhDMxiGTgPjzj/g9p9RxpS2tSepPDRY+UwAaEeiKtUvIAg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.64.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/@rolldown/binding-android-arm-eabi": { "version": "1.2.11", "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.11.tgz", @@ -4960,6 +4979,35 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/playwright": { + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.64.1.tgz", + "integrity": "sha512-HCrVhHr5QQuwYoswEUGTb7gGp522yflbv/ST8nF4sFWGuLjQCt17Q/EubpGGSNKYn1tsTCPZxqHhHCfVURu7UA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.64.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/playwright-core": { + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.64.1.tgz", + "integrity": "sha512-BC4s8y6SEVA6Q1rSxZTto8hI1KUI3xXlHGZgvGqP4IqPdI/a6FX9H29IDNz7vKo9l21b6LfYosScPL6M3xxyDQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/postcss": { "version": "8.5.28", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", diff --git a/website/package.json b/website/package.json index 0576825801..3df87e0ac7 100644 --- a/website/package.json +++ b/website/package.json @@ -8,7 +8,8 @@ "scripts": { "dev": "astro dev", "build": "astro build", - "preview": "astro preview" + "preview": "astro preview", + "test": "playwright test" }, "dependencies": { "@astrojs/starlight": "^0.42.4", @@ -16,5 +17,8 @@ "astro": "^7.3.5", "sharp": "^0.35.4", "starlight-llms-txt": "^0.12.0" + }, + "devDependencies": { + "@playwright/test": "^1.64.1" } } diff --git a/website/playwright.config.mjs b/website/playwright.config.mjs new file mode 100644 index 0000000000..8aafb91d47 --- /dev/null +++ b/website/playwright.config.mjs @@ -0,0 +1,14 @@ +import { defineConfig } from '@playwright/test'; + +export default defineConfig({ + testDir: './tests', + use: { + baseURL: process.env.SITE_URL || 'http://127.0.0.1:4174', + deviceScaleFactor: 2, + launchOptions: process.env.CHROME_PATH ? { executablePath: process.env.CHROME_PATH } : {}, + }, + webServer: process.env.SITE_URL ? undefined : { + command: 'npm run preview -- --host 127.0.0.1 --port 4174 --ignore-lock', + url: 'http://127.0.0.1:4174', + }, +}); diff --git a/website/public/assets/sqlstack-dark.png b/website/public/assets/sqlstack-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..d29890b7dd10ccaab52c910ec5d7253c1f3b5fcf GIT binary patch literal 5364 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 Z{Xf&PWiBODt#AMU002ovPDHLkV1k~N^$Y+2 literal 0 HcmV?d00001 diff --git a/website/public/brand.css b/website/public/brand.css new file mode 100644 index 0000000000..1e3042bd0b --- /dev/null +++ b/website/public/brand.css @@ -0,0 +1,67 @@ +/* Shared attribution for the static homepage and Starlight documentation. */ +.brand-group { + display: grid; + flex-shrink: 0; +} + +.brand-byline { + display: flex; + align-items: center; + min-height: 24px; + /* The wordmark starts at x=447 in the unchanged 1626px-wide lockup. */ + margin-inline-start: 27.5%; + color: var(--sqb-muted, var(--muted-foreground)); + font-size: 11px; + line-height: 14px; + text-decoration: none; + white-space: nowrap; +} + +.sqlstack-family { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: 16px; + margin-top: 20px; + padding-top: 20px; + border-top: 1px solid var(--sqb-line, var(--inner-line)); + font-size: 13px; +} + +.sqlstack-parent { + display: inline-flex; + align-items: center; + gap: 10px; +} + +.sqlstack-parent img { + width: 28px; + height: auto; +} + +.sqlstack-for-dark, +:root[data-theme='dark'] .sqlstack-for-light { + display: none; +} + +:root[data-theme='dark'] .sqlstack-for-dark { + display: block; +} + +.sqlstack-products { + display: flex; + flex-wrap: wrap; + gap: 8px 20px; +} + +.sqlstack-family a { + color: var(--sqb-muted, var(--muted-foreground)); + text-decoration: none; +} + +.brand-byline:hover, +.sqlstack-family a:hover { + color: var(--sqb-fg, var(--foreground)); + text-decoration: underline; +} diff --git a/website/public/index.html b/website/public/index.html index 57a33059b1..1c33ebbcf0 100644 --- a/website/public/index.html +++ b/website/public/index.html @@ -24,6 +24,7 @@ +