Replace the SSR + injected vanilla-JS navigation script with a proper client-side React app. BookIndex now uses useState/useEffect/useCallback for all navigation state, scroll tracking, keyboard shortcuts, and history management. webpack.config.js switches from renderToStaticMarkup to embedding page data as window.__BOOK_DATA__ JSON; book.js becomes a createRoot entry point. Also adds babel-loader for JSX bundling, fixes #root display:contents so the flex height chain is preserved, and restores missing CSS for header, .logo, .toolbar, and .tab buttons. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
25 lines
662 B
JSON
25 lines
662 B
JSON
{
|
|
"scripts": {
|
|
"build": "webpack --mode=production",
|
|
"dev": "webpack serve --mode=development"
|
|
},
|
|
"devDependencies": {
|
|
"@babel/core": "^7.29.7",
|
|
"@babel/preset-react": "^7.29.7",
|
|
"@babel/register": "^7.29.7",
|
|
"babel-loader": "^10.1.1",
|
|
"copy-webpack-plugin": "^14.0.0",
|
|
"css-loader": "^7.1.4",
|
|
"css-minimizer-webpack-plugin": "^8.0.0",
|
|
"html-webpack-plugin": "^5.6.7",
|
|
"mini-css-extract-plugin": "^2.10.2",
|
|
"prettier": "^3.8.3",
|
|
"react": "^19.2.7",
|
|
"react-dom": "^19.2.7",
|
|
"style-loader": "^4.0.0",
|
|
"webpack": "^5.107.2",
|
|
"webpack-cli": "^7.0.3",
|
|
"webpack-dev-server": "^5.2.4"
|
|
}
|
|
}
|