Files
docs/apps/bootnode-docs/package.json
T
zeekayandHanzo Dev 5313260909 Every docs site wears the same chrome
One app carried the Hanzo shell and twenty did not, so a reader crossing from
base.hanzo.ai to zen.hanzo.ai left the ecosystem and landed somewhere that only
resembled it. Five of those twenty had hand-rolled a footer of their own —
sixteen lines of copyright and a repo link, written five separate times.

Each app now loads the brand tokens before its own sheet, reports through
docs-analytics under its own product name, and renders HanzoFooter from
@hanzogui/shell — the same 6-column ecosystem footer, defined once, that
apps/docs already used.

A footer written inside a layout was chrome pretending to be content, and it is
gone. A footer written inside a page is content pretending to be chrome: those
keep their words and become sections, so each page has one contentinfo landmark
instead of two.

Three manifests listed @hanzo/font twice in the same object.

Builds verified across the four shapes this repo has: a static export, a
next.config.mjs app, a single-page app with no route groups, and one that
already reported analytics. Every one renders exactly one footer.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-29 14:29:19 -07:00

56 lines
1.7 KiB
JSON

{
"name": "bootnode-docs",
"version": "0.1.1",
"private": true,
"scripts": {
"build": "pnpm build:pre && next build --webpack && pnpm build:post",
"build:pre": "bun ./scripts/pre-build.ts",
"build:post": "bun ./scripts/post-build.ts",
"types:check": "docs-mdx && next typegen && tsc --noEmit",
"clean": "rimraf .next",
"dev": "next dev --port 3005 --webpack",
"lint": "docs-mdx && eslint .",
"start": "next start"
},
"dependencies": {
"@hanzogui/shell": "^7.6.3",
"@hanzo/docs-analytics": "workspace:*",
"@hanzo/brand": "^1.4.1",
"@hanzo/font": "^1.9.2",
"@hanzo/mdx-runtime": "workspace:*",
"@hanzo/docs": "workspace:*",
"@hanzo/docs-core": "workspace:*",
"@hanzo/docs-mdx": "workspace:*",
"@hanzo/docs-base-ui": "workspace:*",
"@shikijs/rehype": "^3.21.0",
"@shikijs/transformers": "^3.21.0",
"class-variance-authority": "^0.7.1",
"lucide-react": "^0.562.0",
"next": "16.2.12",
"next-themes": "^0.4.6",
"react": "^19.2.8",
"react-dom": "^19.2.8",
"shiki": "^3.21.0",
"tailwind-merge": "^3.4.0",
"zod": "^4.3.5"
},
"devDependencies": {
"@hanzo/docs-cli": "workspace:*",
"@next/bundle-analyzer": "16.2.12",
"@next/env": "16.2.12",
"@next/eslint-plugin-next": "16.2.12",
"@tailwindcss/postcss": "^4.1.18",
"@types/node": "25.0.5",
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"browserslist-config-baseline": "^0.5.0",
"postcss": "^8.5.6",
"tailwindcss": "^4.1.18",
"tailwindcss-animate": "^1.0.7",
"tsconfig": "workspace:*",
"typescript": "^6.0.3"
},
"browserslist": [
"extends browserslist-config-baseline/2024"
]
}