/* * detail-render.js * HTML-string generators for the right-side detail panel (desktop) and * the selected-entity view (mobile). Covers all four entity types. * * Depends on: S, _bnd (state.js); esc (helpers.js); * pluginsByCategory, pluginsByTarget, vPluginBtn, getBookStats, * vAiProgressBar, candidateSugRows, _STATUS_BADGE (tree-render.js); * parseBounds, parseBndPluginResults (canvas-boundary.js) * Provides: vDetailBody(), vRoomDetail(), vCabinetDetail(), * vShelfDetail(), vBookDetail() */ // ── Room detail ────────────────────────────────────────────────────────────── function vRoomDetail(r) { const stats = getBookStats(r, 'room'); const totalBooks = stats.total; return `
${r.cabinets.length} cabinet${r.cabinets.length!==1?'s':''} · ${totalBooks} book${totalBooks!==1?'s':''}
Drag lines · Ctrl+Alt+Click to add · Snap to AI guides
` : ''} ${hasPhoto ? `Drag lines · Ctrl+Alt+Click to add · Snap to AI guides