Scaffold arrangement demo slice with CompareBar wiring
Add a self-contained demo build target for the Providers → Packages → Comparison flow, deployable as a static SPA at /arrangement/. - vite.demo.config.ts: per-slice build via --mode, base path flips for dev vs prod, output to dist-demo/<slice>/ - src/demo/: shared fixtures (7 providers across verified/tier3/tier2 with real venue photography from brandassets) + Zustand basket store with ?compare= URL persistence - Verified-provider packages now share the nine canonical Essentials line items per FA convention; only Optionals/Extras vary - App-level CompareBar surfaces "Already added" / "Maximum 3" feedback via transient store error - ProviderCard logo objectFit cover→contain so wide logos don't crop - npm scripts demo:dev / demo:build, deps zustand + react-router-dom
This commit is contained in:
44
vite.demo.config.ts
Normal file
44
vite.demo.config.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { defineConfig } from 'vite';
|
||||
import react from '@vitejs/plugin-react';
|
||||
import path from 'path';
|
||||
|
||||
/**
|
||||
* Per-slice demo build. Slice name comes from `--mode <name>` and selects
|
||||
* the app folder, base path, and output directory.
|
||||
*
|
||||
* Dev: vite -c vite.demo.config.ts --mode arrangement
|
||||
* Build: vite build -c vite.demo.config.ts --mode arrangement
|
||||
* → dist-demo/arrangement/
|
||||
*/
|
||||
export default defineConfig(({ mode, command }) => {
|
||||
const slice = mode;
|
||||
const appRoot = path.resolve(__dirname, `src/demo/apps/${slice}`);
|
||||
|
||||
return {
|
||||
root: appRoot,
|
||||
// Dev server uses absolute base so HMR/asset URLs work at the root;
|
||||
// production build prefixes assets with /<slice>/ so the bundle is
|
||||
// portable to any nginx location matching that path.
|
||||
base: command === 'build' ? `/${slice}/` : '/',
|
||||
// Mirror Storybook's staticDirs so /brandlogo/, /images/, etc. resolve.
|
||||
publicDir: path.resolve(__dirname, 'brandassets'),
|
||||
plugins: [react()],
|
||||
resolve: {
|
||||
alias: {
|
||||
'@atoms': path.resolve(__dirname, 'src/components/atoms'),
|
||||
'@molecules': path.resolve(__dirname, 'src/components/molecules'),
|
||||
'@organisms': path.resolve(__dirname, 'src/components/organisms'),
|
||||
'@theme': path.resolve(__dirname, 'src/theme'),
|
||||
},
|
||||
},
|
||||
build: {
|
||||
outDir: path.resolve(__dirname, `dist-demo/${slice}`),
|
||||
emptyOutDir: true,
|
||||
sourcemap: true,
|
||||
},
|
||||
server: {
|
||||
port: 5180,
|
||||
open: false,
|
||||
},
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user