Files
stanza/apps/web/package.json
T
jake e28eba2702 feat: add Handlebars template engine with peer-aware render context and consolidate eslint-prettier into a single adaptive template
- Replace per-framework template files (`eslint.config.next.mjs`, `eslint.config.tanstack.mjs`) with a single `eslint.config.mjs` that branches via Handlebars `{{#if peers.framework}}` conditionals; add `handlebars` as a direct dependency to `@stanza/registry`, `apps/cli`, and `apps/web`
- Extend the template render context with a `peers: Partial<Record<CategoryId, string>>` map so any template can inspect the active framework, auth provider, etc.; thread it through `buildRenderContext`, `synthesizeTemplates`, the CLI `codemod-runner`, and the web `getBuilderState` server function
- Extract and export `activePeerIds(manifest, appId?)` from `@stanza/registry` to derive the peer map from a manifest (app-scoped for `home: app` categories); add `selectedPeerIds(selections)` in `apps/web/src/lib/selection.ts` as the URL-params-derived equivalent
- Add integration tests verifying framework-conditional eslint-prettier output for `default`, `next`, and `tanstack-start` adapters; expand resolver tests for `activePeerIds` app-scoping and for modules that declare both a `default` adapter and a framework-specific override
2026-05-25 13:35:27 -04:00

72 lines
2.1 KiB
JSON

{
"name": "@stanza/web",
"version": "0.1.0",
"private": true,
"license": "MIT",
"type": "module",
"scripts": {
"build": "vp build",
"dev": "vp dev",
"prebuild": "./scripts/prepare-registry.sh",
"predev": "./scripts/prepare-registry.sh",
"start": "node .output/server/index.mjs"
},
"dependencies": {
"@base-ui/react": "^1.5.0",
"@fontsource-variable/geist": "^5.2.9",
"@fontsource-variable/geist-mono": "^5.2.8",
"@orama/orama": "^3.1.18",
"@pierre/trees": "1.0.0-beta.4",
"@stanza/registry": "workspace:*",
"@tabler/icons-react": "^3.44.0",
"@tailwindcss/vite": "^4.3.0",
"@takumi-rs/image-response": "^1.5.1",
"@tanstack/react-devtools": "^0.10.5",
"@tanstack/react-hotkeys": "^0.10.0",
"@tanstack/react-router": "^1.170.8",
"@tanstack/react-router-devtools": "^1.167.0",
"@tanstack/react-router-ssr-query": "^1.167.0",
"@tanstack/react-start": "^1.168.13",
"@tanstack/router-plugin": "^1.168.11",
"@vercel/functions": "^3.6.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"fumadocs-core": "^16.9.1",
"fumadocs-mdx": "^15.0.8",
"fumadocs-ui": "npm:@fumadocs/base-ui@^16.9.1",
"handlebars": "^4.7.9",
"lru-cache": "^11.5.0",
"nitro": "^3.0.260522-beta",
"posthog-js": "^1.376.0",
"posthog-node": "^5.35.1",
"react": "^19.2.6",
"react-dom": "^19.2.6",
"react-resizable-panels": "^4.11.2",
"shadcn": "^4.8.0",
"shiki": "^4.1.0",
"sonner": "^2.0.7",
"tailwind-merge": "^3.6.0",
"tailwindcss": "^4.3.0",
"tw-animate-css": "^1.4.0",
"zod": "^4.4.3"
},
"devDependencies": {
"@tailwindcss/typography": "^0.5.19",
"@tanstack/devtools-vite": "^0.7.0",
"@testing-library/dom": "^10.4.1",
"@testing-library/react": "^16.3.2",
"@types/mdx": "^2.0.13",
"@types/node": "^25.9.1",
"@types/react": "^19.2.15",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.2",
"@vitejs/plugin-rsc": "^0.5.26",
"jsdom": "^29.1.1",
"typescript": "^6.0.3",
"vite": "catalog:",
"vite-plus": "catalog:",
"vitest": "catalog:",
"web-vitals": "^5.2.0"
}
}