Files
electronics-inventory/public/index.html
mikael-lovqvists-claude-agent 28b4590903 Add bins feature: upload, de-perspective, gallery
- lib/storage.mjs: bin CRUD with bin: prefix
- lib/grid-image.mjs: compute_bin_size() capped at 1024px
- server.mjs: POST/GET/PUT/DELETE /api/bins routes; PUT /api/bins/:id/corners
  re-processes image via process_grid_image with rows=1 cols=1
- public/lib/api.mjs: bin API wrappers including upload_bin()
- public/index.html: Bins nav button
- public/templates.html: t-section-bins, t-bin-card, t-dialog-bin-editor
- public/app.mjs: render_bins(), open_bin_editor() using Grid_Setup,
  save/cancel wiring in init()
- public/style.css: bin gallery and card styles

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 04:28:03 +00:00

35 lines
1.2 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Electronics Inventory</title>
<link rel="stylesheet" href="/style.css">
<link rel="preload" as="fetch" href="/templates.html" crossorigin>
</head>
<body>
<header>
<div class="app-title">Electronics Inventory</div>
<nav>
<button class="nav-btn active" data-section="components">Components</button>
<button class="nav-btn" data-section="inventory">Inventory</button>
<button class="nav-btn" data-section="fields">Fields</button>
<button class="nav-btn" data-section="grids">Grids</button>
<button class="nav-btn" data-section="templates">Templates</button>
<button class="nav-btn" data-section="bins">Bins</button>
</nav>
<div class="maint-menu" id="maint-menu">
<button class="maint-toggle" id="maint-toggle" title="Maintenance"></button>
<div class="maint-dropdown" id="maint-dropdown" hidden>
<button class="maint-item" id="maint-gen-thumbs">Generate missing PDF thumbnails</button>
</div>
</div>
</header>
<main id="main"></main>
<div id="lightbox" hidden>
<img id="lightbox-img" alt="">
</div>
<script type="module" src="/app.mjs"></script>
</body>
</html>