diff --git a/web/client/dist/assets/index-CSB3uKJi.css b/web/client/dist/assets/index-CSB3uKJi.css
deleted file mode 100644
index e74278e..0000000
--- a/web/client/dist/assets/index-CSB3uKJi.css
+++ /dev/null
@@ -1 +0,0 @@
-@import"https://fonts.googleapis.com/css2?family=Silkscreen:wght@400;700&display=swap";.item-icon-img{image-rendering:pixelated;display:block}.item-icon-emoji{display:flex;align-items:center;justify-content:center;line-height:1}.inventory-panel{height:100%;display:flex;flex-direction:column;overflow:hidden}.inventory-toolbar{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:#3b3b3b;border-bottom:2px solid var(--mc-dark);flex-shrink:0;flex-wrap:wrap}.search-box{display:flex;align-items:center;background:var(--mc-dark);border:2px solid #333;padding:.25rem .5rem;flex:1;min-width:180px}.search-icon{font-size:.8rem;margin-right:.375rem}.search-input{border:none;background:transparent;color:var(--mc-text-white);font-family:Silkscreen,Courier New,monospace;font-size:.7rem;outline:none;width:100%}.search-input::placeholder{color:var(--mc-text-gray)}.search-clear{background:none;border:none;color:var(--mc-text-gray);cursor:pointer;font-size:.7rem;padding:0 .25rem}.search-clear:hover{color:var(--mc-text-red)}.sort-controls{display:flex;gap:.25rem}.item-count-label{font-size:.6rem;color:var(--mc-text-gray);white-space:nowrap}.inventory-body{flex:1;display:flex;overflow:hidden}.item-grid-wrapper{flex:1;overflow-y:auto;padding:.5rem}.item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:3px;padding:8px;background:var(--mc-inv-bg);border:3px solid var(--mc-dark);box-shadow:inset 3px 3px #fefefe,inset -3px -3px #555;min-height:200px}.item-slot{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--mc-inv-slot);border:2px solid;border-color:var(--mc-inv-slot-border) var(--mc-inv-slot-light) var(--mc-inv-slot-light) var(--mc-inv-slot-border);cursor:pointer;position:relative;overflow:hidden;padding:4px;transition:background .05s}.item-slot:hover{background:#aaa}.item-slot.selected{background:#b8d4f0;box-shadow:0 0 0 2px var(--mc-text-aqua)}.item-slot-count{position:absolute;bottom:2px;right:3px;color:#fff;font-size:.55rem;font-weight:700;font-family:Silkscreen,Courier New,monospace;text-shadow:1px 0 0 var(--mc-dark),-1px 0 0 var(--mc-dark),0 1px 0 var(--mc-dark),0 -1px 0 var(--mc-dark)}.item-slot-name{position:absolute;top:1px;left:2px;right:2px;font-size:.35rem;color:var(--mc-text-dark);font-weight:700;text-align:center;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-grid{grid-column:1 / -1;text-align:center;padding:2rem;color:var(--mc-text-gray);font-size:.75rem}.item-detail-panel{width:280px;background:#333;border-left:3px solid var(--mc-dark);padding:.75rem;display:flex;flex-direction:column;gap:.75rem;overflow-y:auto;flex-shrink:0}.detail-header{display:flex;align-items:center;gap:.75rem;padding-bottom:.5rem;border-bottom:2px solid var(--mc-dark)}.detail-info{flex:1}.detail-info h3{font-size:.8rem;color:var(--mc-text-white);text-shadow:1px 1px 0 var(--mc-dark)}.detail-id{font-size:.55rem;color:var(--mc-text-gray)}.detail-close{background:none;border:2px solid #555;color:var(--mc-text-gray);cursor:pointer;font-size:.8rem;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center}.detail-close:hover{color:var(--mc-text-red);border-color:var(--mc-text-red)}.detail-stats{display:grid;grid-template-columns:1fr 1fr;gap:.375rem}.detail-stat{display:flex;flex-direction:column;padding:.375rem;background:var(--mc-dark);border:2px solid #333}.detail-stat .label{font-size:.55rem;color:var(--mc-text-gray);font-weight:700;text-transform:uppercase}.detail-stat .value{font-size:.8rem;color:var(--mc-text-white);font-weight:700}.order-section{padding:.5rem;background:var(--mc-dark);border:2px solid #333}.order-section h4{font-size:.7rem;color:var(--mc-text-gold);margin-bottom:.5rem;text-shadow:1px 1px 0 #000}.order-controls{display:flex;flex-direction:column;gap:.5rem}.order-amount-controls{display:flex;gap:.25rem;align-items:center}.order-input{flex:1;background:#2a2a2a;border:2px solid #444;color:var(--mc-text-white);font-family:Silkscreen,Courier New,monospace;font-size:.75rem;text-align:center;padding:.25rem;outline:none;border-radius:0}.order-input:focus{border-color:var(--mc-text-green)}.order-presets{display:flex;gap:.25rem;flex-wrap:wrap}.order-btn{width:100%;padding:.625rem!important;font-size:.8rem!important}@media (max-width: 768px){.inventory-body{flex-direction:column}.item-detail-panel{width:100%;border-left:none;border-top:3px solid var(--mc-dark);max-height:300px}.item-grid{grid-template-columns:repeat(auto-fill,minmax(65px,1fr))}}@media (max-width: 480px){.item-grid{grid-template-columns:repeat(auto-fill,minmax(55px,1fr));gap:2px;padding:4px}}.storage-overview{padding:.75rem;display:flex;flex-direction:column;gap:.75rem}.overview-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:.5rem;border-bottom:2px solid var(--mc-dark)}.overview-header h2{font-size:.9rem;color:var(--mc-text-yellow);text-shadow:1px 1px 0 var(--mc-dark)}.capacity-section{padding:.5rem;background:var(--mc-dark);border:2px solid #333}.capacity-label{display:flex;justify-content:space-between;font-size:.65rem;font-weight:700;margin-bottom:.375rem;color:var(--mc-text-gray);text-transform:uppercase}.capacity-percent.normal{color:var(--mc-text-green)}.capacity-percent.warning{color:var(--mc-text-gold)}.capacity-percent.critical{color:var(--mc-text-red)}.capacity-bar{width:100%;height:12px;background:#333;border:2px solid;border-color:#222 #555 #555 #222;overflow:hidden}.capacity-fill{height:100%;transition:width .5s}.capacity-fill.normal{background:var(--mc-grass)}.capacity-fill.warning{background:var(--mc-text-gold)}.capacity-fill.critical{background:var(--mc-text-red)}.capacity-detail{font-size:.6rem;color:var(--mc-text-gray);text-align:center;margin-top:.25rem}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:.375rem}.stat-item{display:flex;flex-direction:column;padding:.375rem;background:var(--mc-dark);border:2px solid #333}.stat-label{font-size:.55rem;color:var(--mc-text-gray);font-weight:700;text-transform:uppercase}.stat-value{font-size:.75rem;color:var(--mc-text-white);font-weight:700;text-shadow:1px 1px 0 #000}.stat-value.ok{color:var(--mc-text-green)}.stat-value.offline{color:var(--mc-text-red)}.peripherals-section h3,.activity-section h3{font-size:.65rem;color:var(--mc-text-gold);font-weight:700;text-transform:uppercase;margin-bottom:.375rem;text-shadow:1px 1px 0 var(--mc-dark)}.peripheral-list{display:flex;flex-direction:column;gap:.25rem}.peripheral-item{font-size:.65rem;padding:.25rem .375rem;background:var(--mc-dark);border:1px solid #333}.peripheral-item.ok{color:var(--mc-text-green)}.peripheral-item.error{color:var(--mc-text-red)}.activity-list{display:flex;flex-wrap:wrap;gap:.25rem}.activity-item{font-size:.6rem;padding:.25rem .5rem;border:1px solid #333;font-weight:700}.activity-item.active{background:var(--mc-grass-dark);color:var(--mc-text-green);animation:activity-pulse 2s infinite}.activity-item.idle{background:var(--mc-dark);color:var(--mc-text-gray)}@keyframes activity-pulse{0%,to{opacity:1}50%{opacity:.6}}.last-update{font-size:.55rem;color:var(--mc-text-gray);text-align:center;padding-top:.5rem;border-top:1px solid #444}.smelting-panel{height:100%;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.75rem}.smelting-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:.5rem;border-bottom:2px solid var(--mc-dark)}.smelting-header h2{font-size:1rem;color:var(--mc-text-yellow);text-shadow:2px 2px 0 var(--mc-dark)}.smelting-paused-banner{padding:.5rem;background:#6b1a1a;border:2px solid var(--mc-dark);color:var(--mc-text-red);text-align:center;font-size:.75rem;font-weight:700;text-shadow:1px 1px 0 #000;animation:blink-warn 2s infinite}@keyframes blink-warn{0%,to{opacity:1}50%{opacity:.7}}.furnace-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem}.furnace-card{padding:.5rem;background:var(--mc-dark);border:2px solid #333}.furnace-card.active{border-color:var(--mc-text-gold);box-shadow:0 0 4px #fa03}.furnace-name{font-size:.6rem;color:var(--mc-text-gray);font-weight:700;text-transform:uppercase;margin-bottom:.375rem}.furnace-slot{display:flex;align-items:center;gap:.25rem;font-size:.6rem;margin:.125rem 0}.slot-label{color:var(--mc-text-gray);font-weight:700;min-width:2rem}.furnace-empty{font-size:.6rem;color:var(--mc-text-gray);font-style:italic}.recipe-bulk-controls{display:flex;gap:.5rem;margin-bottom:.75rem}.recipe-list{display:flex;flex-direction:column;gap:.25rem;max-height:400px;overflow-y:auto}.recipe-item{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;background:var(--mc-dark);border:2px solid #333;cursor:pointer;transition:background .05s}.recipe-item:hover{background:#2a2a2a;border-color:var(--mc-text-gold)}.recipe-item.disabled{opacity:.5}.recipe-toggle{font-size:.8rem;flex-shrink:0}.recipe-input,.recipe-output{display:flex;align-items:center;gap:.25rem;font-size:.6rem;min-width:0}.recipe-input span,.recipe-output span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recipe-arrow{color:var(--mc-text-gold);font-weight:700;flex-shrink:0}.recipe-furnaces{display:flex;gap:.25rem;margin-left:auto;flex-shrink:0}.furnace-tag{font-size:.5rem;padding:.125rem .25rem;background:#444;border:1px solid #555;color:var(--mc-text-gray)}.no-data{padding:1rem;text-align:center;color:var(--mc-text-gray);font-size:.7rem}.crafting-panel{height:100%;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.75rem}.crafting-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:.5rem;border-bottom:2px solid var(--mc-dark)}.crafting-header h2{font-size:1rem;color:var(--mc-text-yellow);text-shadow:2px 2px 0 var(--mc-dark)}.turtle-status{font-size:.7rem;font-weight:700;padding:.25rem .5rem;border:2px solid var(--mc-dark);text-shadow:1px 1px 0 var(--mc-dark)}.turtle-status.online{background:var(--mc-grass-dark);color:var(--mc-text-green)}.turtle-status.offline{background:#6b1a1a;color:var(--mc-text-red)}.turtle-warning{padding:.5rem;background:#6b4a1a;border:2px solid var(--mc-dark);color:var(--mc-text-gold);font-size:.7rem;font-weight:700;text-shadow:1px 1px 0 #000}.craft-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem}.craft-card{padding:.75rem;background:#3b3b3b;border:3px solid var(--mc-dark);box-shadow:inset 0 2px #555,inset 0 -2px #2a2a2a;display:flex;flex-direction:column;gap:.5rem}.craft-output{display:flex;align-items:center;gap:.5rem;padding-bottom:.375rem;border-bottom:2px solid var(--mc-dark)}.craft-info{display:flex;flex-direction:column}.craft-name{font-size:.8rem;color:var(--mc-text-white);font-weight:700;text-shadow:1px 1px 0 var(--mc-dark)}.craft-count{font-size:.55rem;color:var(--mc-text-gray)}.craft-ingredients{display:flex;flex-wrap:wrap;gap:.25rem}.craft-ingredient{display:flex;align-items:center;gap:.25rem;font-size:.55rem;color:var(--mc-text-gray);padding:.125rem .375rem;background:var(--mc-dark);border:1px solid #333}.craft-btn{width:100%}.craft-btn.crafting{opacity:.7;cursor:not-allowed}.craft-btn:disabled{opacity:.4;cursor:not-allowed}.no-data{grid-column:1 / -1;padding:2rem;text-align:center;color:var(--mc-text-gray);font-size:.75rem}.alerts-panel{height:100%;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.75rem}.alerts-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:.5rem;border-bottom:2px solid var(--mc-dark)}.alerts-header h2{font-size:1rem;color:var(--mc-text-yellow);text-shadow:2px 2px 0 var(--mc-dark)}.alert-count{font-size:.7rem;color:var(--mc-text-gray);padding:.25rem .5rem;background:var(--mc-dark);border:2px solid #333}.alert-list{display:flex;flex-direction:column;gap:.5rem}.alert-card{display:flex;align-items:center;gap:.75rem;padding:.625rem;background:#3b3b3b;border:3px solid var(--mc-dark);box-shadow:inset 0 2px #555,inset 0 -2px #2a2a2a}.alert-card.triggered{border-color:#661a1a;background:#3b2a2a}.alert-icon{font-size:1.2rem;flex-shrink:0}.alert-info{flex:1;display:flex;flex-direction:column;gap:.25rem}.alert-item-row{display:flex;align-items:center;gap:.375rem}.alert-item-name{font-size:.75rem;color:var(--mc-text-white);font-weight:700;text-shadow:1px 1px 0 var(--mc-dark)}.alert-details{display:flex;gap:.75rem;font-size:.6rem;color:var(--mc-text-gray)}.alert-details strong{color:var(--mc-text-white)}.alert-badge{padding:.25rem .5rem;font-size:.6rem;font-weight:700;border:2px solid var(--mc-dark);text-shadow:1px 1px 0 #000;flex-shrink:0}.alert-badge.low{background:#6b1a1a;color:var(--mc-text-red)}.alert-badge.ok{background:var(--mc-grass-dark);color:var(--mc-text-green)}.no-alerts{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:2rem;color:var(--mc-text-gray);font-size:.75rem}.no-alerts-icon{font-size:2rem}:root{--mc-dark: #1a1a1a;--mc-darker: #0e0e0e;--mc-stone: #7b7b7b;--mc-stone-light: #9d9d9d;--mc-stone-dark: #4b4b4b;--mc-dirt: #6b5030;--mc-dirt-dark: #4a3520;--mc-oak: #8b6d3c;--mc-oak-dark: #6b4e28;--mc-oak-light: #b89b60;--mc-grass: #5b8731;--mc-grass-light: #80b94e;--mc-grass-dark: #3d6b1a;--mc-inv-bg: #c6c6c6;--mc-inv-slot: #8b8b8b;--mc-inv-slot-border: #373737;--mc-inv-slot-light: #ffffff;--mc-text-white: #e0e0e0;--mc-text-gray: #a0a0a0;--mc-text-dark: #404040;--mc-text-yellow: #ffff55;--mc-text-green: #55ff55;--mc-text-red: #ff5555;--mc-text-aqua: #55ffff;--mc-text-gold: #ffaa00;--mc-text-light-purple: #ff55ff;--mc-text-blue: #5555ff;--mc-diamond: #4aedd9;--mc-emerald: #17dd62;--mc-redstone: #ff0000;--mc-lapis: #345ec3;--mc-border-highlight: #ffffff55;--mc-border-shadow: #00000088}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Silkscreen,Courier New,monospace;background:#2c2c2c;color:var(--mc-text-white);image-rendering:pixelated;overflow:hidden}.app{width:100vw;height:100vh;display:flex;flex-direction:column;overflow:hidden}.app-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1.25rem;background:var(--mc-oak-dark);border-bottom:3px solid var(--mc-dark);box-shadow:inset 0 2px 0 var(--mc-oak-light),inset 0 -2px 0 var(--mc-dirt-dark);flex-shrink:0}.app-header h1{font-size:1.1rem;font-weight:700;color:var(--mc-text-yellow);text-shadow:2px 2px 0 var(--mc-dark);letter-spacing:.05em}.connection-status{display:flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border:2px solid var(--mc-dark);font-weight:700;font-size:.7rem;text-shadow:1px 1px 0 var(--mc-dark)}.connection-status.connected{background:var(--mc-grass-dark);color:var(--mc-text-green);box-shadow:inset 0 1px 0 var(--mc-grass-light),inset 0 -1px #2a5010}.connection-status.disconnected{background:#6b1a1a;color:var(--mc-text-red);box-shadow:inset 0 1px #a03030,inset 0 -1px #400e0e}.status-dot{width:.5rem;height:.5rem;border-radius:0;animation:mc-blink 1.5s steps(2) infinite}.connected .status-dot{background:var(--mc-text-green);box-shadow:0 0 4px var(--mc-text-green)}.disconnected .status-dot{background:var(--mc-text-red);box-shadow:0 0 4px var(--mc-text-red)}@keyframes mc-blink{0%,to{opacity:1}50%{opacity:.3}}.command-toast{position:fixed;top:60px;left:50%;transform:translate(-50%);padding:.5rem 1.5rem;border:2px solid var(--mc-dark);font-size:.75rem;font-weight:700;z-index:1000;text-shadow:1px 1px 0 var(--mc-dark);animation:toast-in .2s ease}.command-toast.success{background:var(--mc-grass-dark);color:var(--mc-text-green)}.command-toast.error{background:#6b1a1a;color:var(--mc-text-red)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.app-content{flex:1;display:flex;overflow:hidden}.sidebar{width:280px;background:#333;border-right:3px solid var(--mc-dark);overflow-y:auto;flex-shrink:0}.main-panel{flex:1;display:flex;flex-direction:column;overflow:hidden}.panel-tabs{display:flex;gap:.25rem;padding:.5rem;background:#3b3b3b;border-bottom:3px solid var(--mc-dark);overflow-x:auto;flex-shrink:0}.panel-tabs button{padding:.5rem 1rem;border:2px solid var(--mc-dark);background:#5a5a5a;color:var(--mc-text-gray);border-radius:0;font-size:.875rem;font-weight:700;cursor:pointer;transition:all .1s;white-space:nowrap;font-family:Silkscreen,Courier New,monospace;text-shadow:1px 1px 0 var(--mc-dark);box-shadow:inset 0 -2px #444,inset 0 2px #777}.panel-tabs button:hover{background:#6b6b6b;color:var(--mc-text-white)}.panel-tabs button.active{background:#4a8c2a;color:#fff;box-shadow:inset 0 2px #6ab04c,inset 0 -2px #2d6b1a}.panel-content-wrapper{flex:1;overflow:hidden;display:flex;flex-direction:column}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#2c2c2c}::-webkit-scrollbar-thumb{background:#5a5a5a;border:1px solid var(--mc-dark)}::-webkit-scrollbar-thumb:hover{background:#6b6b6b}.detail-section{margin-bottom:1rem;padding:.875rem;background:#3b3b3b;border:3px solid var(--mc-dark);border-radius:0;box-shadow:inset 0 2px #555,inset 0 -2px #2a2a2a}.detail-section h3{font-size:.8rem;margin-bottom:.75rem;color:var(--mc-text-gold);font-weight:700;display:flex;align-items:center;gap:.5rem;text-shadow:1px 1px 0 var(--mc-dark);text-transform:uppercase;letter-spacing:.05em}.mc-btn{padding:.5rem .75rem;border:2px solid var(--mc-dark);border-radius:0;font-size:.7rem;font-weight:700;cursor:pointer;transition:all .05s;color:#fff;display:flex;align-items:center;justify-content:center;gap:.25rem;white-space:nowrap;font-family:Silkscreen,Courier New,monospace;text-shadow:1px 1px 0 var(--mc-dark);background:#6b6b6b;box-shadow:inset 0 2px #999,inset 0 -2px #444}.mc-btn:hover{background:#7b7b7b;box-shadow:inset 0 2px #aaa,inset 0 -2px #555}.mc-btn:active{background:#555;box-shadow:inset 0 2px #333,inset 0 -2px #777}.mc-btn.green{background:var(--mc-grass-dark);box-shadow:inset 0 2px 0 var(--mc-grass-light),inset 0 -2px #2a5010}.mc-btn.green:hover{background:var(--mc-grass)}.mc-btn.red{background:#8b2e2e;box-shadow:inset 0 2px #b44,inset 0 -2px #661a1a}.mc-btn.red:hover{background:#a03e3e}.mc-btn.blue{background:#2e4a8b;box-shadow:inset 0 2px #46b,inset 0 -2px #1a2a66}.mc-btn.blue:hover{background:#3e5a9b}.mc-btn.gold{background:#8b6b2e;box-shadow:inset 0 2px #b94,inset 0 -2px #664a1a}.mc-btn.gold:hover{background:#9b7b3e}@media (max-width: 1024px){.sidebar{width:220px}}@media (max-width: 768px){.app-content{flex-direction:column}.sidebar{width:100%;max-height:200px;border-right:none;border-bottom:3px solid var(--mc-dark)}}@media (max-width: 480px){.app-header h1{font-size:.85rem}.panel-tabs button{font-size:.7rem;padding:.4rem .6rem}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
diff --git a/web/client/dist/index.html b/web/client/dist/index.html
deleted file mode 100644
index 6ffb03f..0000000
--- a/web/client/dist/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
- Inventory Manager
-
-
-
-
-
-
-
-
-
-
diff --git a/web/client/node_modules/.bin/baseline-browser-mapping b/web/client/node_modules/.bin/baseline-browser-mapping
deleted file mode 120000
index 8e9a12d..0000000
--- a/web/client/node_modules/.bin/baseline-browser-mapping
+++ /dev/null
@@ -1 +0,0 @@
-../baseline-browser-mapping/dist/cli.cjs
\ No newline at end of file
diff --git a/web/client/node_modules/.bin/browserslist b/web/client/node_modules/.bin/browserslist
deleted file mode 120000
index 3cd991b..0000000
--- a/web/client/node_modules/.bin/browserslist
+++ /dev/null
@@ -1 +0,0 @@
-../browserslist/cli.js
\ No newline at end of file
diff --git a/web/client/node_modules/.bin/esbuild b/web/client/node_modules/.bin/esbuild
deleted file mode 120000
index c83ac07..0000000
--- a/web/client/node_modules/.bin/esbuild
+++ /dev/null
@@ -1 +0,0 @@
-../esbuild/bin/esbuild
\ No newline at end of file
diff --git a/web/client/node_modules/.bin/jsesc b/web/client/node_modules/.bin/jsesc
deleted file mode 120000
index 7237604..0000000
--- a/web/client/node_modules/.bin/jsesc
+++ /dev/null
@@ -1 +0,0 @@
-../jsesc/bin/jsesc
\ No newline at end of file
diff --git a/web/client/node_modules/.package-lock.json b/web/client/node_modules/.package-lock.json
deleted file mode 100644
index cb9c293..0000000
--- a/web/client/node_modules/.package-lock.json
+++ /dev/null
@@ -1,1015 +0,0 @@
-{
- "name": "inventory-manager-client",
- "version": "1.0.0",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "node_modules/@babel/code-frame": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
- "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.28.5",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.1.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
- "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
- "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.29.0",
- "@babel/generator": "^7.29.0",
- "@babel/helper-compilation-targets": "^7.28.6",
- "@babel/helper-module-transforms": "^7.28.6",
- "@babel/helpers": "^7.28.6",
- "@babel/parser": "^7.29.0",
- "@babel/template": "^7.28.6",
- "@babel/traverse": "^7.29.0",
- "@babel/types": "^7.29.0",
- "@jridgewell/remapping": "^2.3.5",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.29.1",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
- "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.29.0",
- "@babel/types": "^7.29.0",
- "@jridgewell/gen-mapping": "^0.3.12",
- "@jridgewell/trace-mapping": "^0.3.28",
- "jsesc": "^3.0.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
- "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.28.6",
- "@babel/helper-validator-option": "^7.27.1",
- "browserslist": "^4.24.0",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-globals": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
- "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
- "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.28.6",
- "@babel/types": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
- "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.28.6",
- "@babel/helper-validator-identifier": "^7.28.5",
- "@babel/traverse": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
- "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
- "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
- "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
- "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.29.2",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz",
- "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.28.6",
- "@babel/types": "^7.29.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.29.2",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
- "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.29.0"
- },
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
- "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
- "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
- "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.28.6",
- "@babel/parser": "^7.28.6",
- "@babel/types": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
- "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.29.0",
- "@babel/generator": "^7.29.0",
- "@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.29.0",
- "@babel/template": "^7.28.6",
- "@babel/types": "^7.29.0",
- "debug": "^4.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
- "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.28.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.13",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
- "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.0",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "node_modules/@jridgewell/remapping": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
- "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
- "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.31",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
- "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@rolldown/pluginutils": {
- "version": "1.0.0-beta.27",
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
- "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.59.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.1.tgz",
- "integrity": "sha512-NQ9KyU1Anuy59L8+HHOKM++CoUxrQWrZWXRik4BJFm+7i5NP6q/SW43xIBr80zzt+PDBJ7LeNmloQGfa0JGk0w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "libc": [
- "glibc"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "node_modules/@types/babel__generator": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
- "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
- "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.28.2"
- }
- },
- "node_modules/@types/estree": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
- "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.15",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
- "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
- "devOptional": true,
- "license": "MIT"
- },
- "node_modules/@types/react": {
- "version": "18.3.28",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz",
- "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==",
- "devOptional": true,
- "license": "MIT",
- "dependencies": {
- "@types/prop-types": "*",
- "csstype": "^3.2.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.3.7",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
- "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "^18.0.0"
- }
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
- "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.28.0",
- "@babel/plugin-transform-react-jsx-self": "^7.27.1",
- "@babel/plugin-transform-react-jsx-source": "^7.27.1",
- "@rolldown/pluginutils": "1.0.0-beta.27",
- "@types/babel__core": "^7.20.5",
- "react-refresh": "^0.17.0"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "peerDependencies": {
- "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
- }
- },
- "node_modules/baseline-browser-mapping": {
- "version": "2.10.10",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.10.tgz",
- "integrity": "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "baseline-browser-mapping": "dist/cli.cjs"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/browserslist": {
- "version": "4.28.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
- "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "baseline-browser-mapping": "^2.9.0",
- "caniuse-lite": "^1.0.30001759",
- "electron-to-chromium": "^1.5.263",
- "node-releases": "^2.0.27",
- "update-browserslist-db": "^1.2.0"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001780",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz",
- "integrity": "sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/csstype": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
- "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
- "devOptional": true,
- "license": "MIT"
- },
- "node_modules/debug": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/electron-to-chromium": {
- "version": "1.5.321",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz",
- "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "license": "MIT"
- },
- "node_modules/jsesc": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
- "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "license": "MIT",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/nanoid": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.36",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz",
- "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/postcss": {
- "version": "8.5.8",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz",
- "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.11",
- "picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/react": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
- "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
- "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.2"
- },
- "peerDependencies": {
- "react": "^18.3.1"
- }
- },
- "node_modules/react-refresh": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
- "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/rollup": {
- "version": "4.59.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.1.tgz",
- "integrity": "sha512-iZKH8BeoCwTCBTZBZWQQMreekd4mdomwdjIQ40GC1oZm6o+8PnNMIxFOiCsGMWeS8iDJ7KZcl7KwmKk/0HOQpA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "1.0.8"
- },
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.59.1",
- "@rollup/rollup-android-arm64": "4.59.1",
- "@rollup/rollup-darwin-arm64": "4.59.1",
- "@rollup/rollup-darwin-x64": "4.59.1",
- "@rollup/rollup-freebsd-arm64": "4.59.1",
- "@rollup/rollup-freebsd-x64": "4.59.1",
- "@rollup/rollup-linux-arm-gnueabihf": "4.59.1",
- "@rollup/rollup-linux-arm-musleabihf": "4.59.1",
- "@rollup/rollup-linux-arm64-gnu": "4.59.1",
- "@rollup/rollup-linux-arm64-musl": "4.59.1",
- "@rollup/rollup-linux-loong64-gnu": "4.59.1",
- "@rollup/rollup-linux-loong64-musl": "4.59.1",
- "@rollup/rollup-linux-ppc64-gnu": "4.59.1",
- "@rollup/rollup-linux-ppc64-musl": "4.59.1",
- "@rollup/rollup-linux-riscv64-gnu": "4.59.1",
- "@rollup/rollup-linux-riscv64-musl": "4.59.1",
- "@rollup/rollup-linux-s390x-gnu": "4.59.1",
- "@rollup/rollup-linux-x64-gnu": "4.59.1",
- "@rollup/rollup-linux-x64-musl": "4.59.1",
- "@rollup/rollup-openbsd-x64": "4.59.1",
- "@rollup/rollup-openharmony-arm64": "4.59.1",
- "@rollup/rollup-win32-arm64-msvc": "4.59.1",
- "@rollup/rollup-win32-ia32-msvc": "4.59.1",
- "@rollup/rollup-win32-x64-gnu": "4.59.1",
- "@rollup/rollup-win32-x64-msvc": "4.59.1",
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/scheduler": {
- "version": "0.23.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
- "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
- "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "escalade": "^3.2.0",
- "picocolors": "^1.1.1"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/use-sync-external-store": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
- "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
- "license": "MIT",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
- }
- },
- "node_modules/vite": {
- "version": "5.4.21",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz",
- "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/zustand": {
- "version": "4.5.7",
- "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz",
- "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==",
- "license": "MIT",
- "dependencies": {
- "use-sync-external-store": "^1.2.2"
- },
- "engines": {
- "node": ">=12.7.0"
- },
- "peerDependencies": {
- "@types/react": ">=16.8",
- "immer": ">=9.0.6",
- "react": ">=16.8"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "immer": {
- "optional": true
- },
- "react": {
- "optional": true
- }
- }
- }
- }
-}
diff --git a/web/client/node_modules/@babel/code-frame/LICENSE b/web/client/node_modules/@babel/code-frame/LICENSE
deleted file mode 100644
index f31575e..0000000
--- a/web/client/node_modules/@babel/code-frame/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-MIT License
-
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.