<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vibe Closet Pro</title>
<style>
:root {
--neon: #00f2ff;
--bg: #0a0a0a;
--card: #1a1a1a;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: var(--bg);
color: white;
text-align: center;
margin: 0;
padding-bottom: 100px;
}
h2 {
color: var(--neon);
margin-top: 20px;
letter-spacing: 2px;
text-transform: uppercase;
}
.slot {
height: 180px;
width: 85%;
max-width: 400px;
margin: 15px auto;
background: var(--card);
border: 2px solid var(--neon);
border-radius: 15px;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
box-shadow: 0 0 15px rgba(0, 242, 255, 0.2);
transition: transform 0.3s ease;
}
.slot:active { transform: scale(0.98); }
.slot img { width: 100%; height: 100%; object-fit: cover; }
.controls {
position: fixed;
bottom: 0;
width: 100%;
background: rgba(0,0,0,0.85);
padding: 20px 0;
backdrop-filter: blur(10px);
border-top: 1px solid #333;
}
button {
background: var(--neon);
border: none;
padding: 12px 25px;
border-radius: 25px;
font-weight: bold;
cursor: pointer;
margin: 5px;
text-transform: uppercase;
transition: 0.2s;
}
button:hover { opacity: 0.8; }
.btn-mix { background: white; color: black; }
</style>
</head>
<body>
<h2>Il Tuo Armadio Vibe</h2>
<div id="slot-sopra" class="slot">SOPRA</div>
<div id="slot-sotto" class="slot">SOTTO</div>
<div id="slot-scarpe" class="slot">SCARPE</div>
<div class="controls">
<button onclick="triggerUpload()">+ AGGIUNGI</button>
<button class="btn-mix" onclick="generateOutfit()">MIX OUTFIT</button>
</div>
<input type="file" id="fileInput" hidden accept="image/*" onchange="handleUpload(event)">
<script>
// Inizializzazione dati
let closet = JSON.parse(localStorage.getItem('myVibeCloset')) || { sopra: [], sotto: [], scarpe: [] };
function triggerUpload() {
const type = prompt("Cosa vuoi aggiungere? (sopra, sotto, scarpe)").toLowerCase().trim();
if (['sopra', 'sotto', 'scarpe'].includes(type)) {
const input = document.getElementById('fileInput');
input.dataset.type = type; // Memorizza la categoria
input.click();
} else if (type !== "") {
alert("Categoria non valida. Usa: sopra, sotto o scarpe");
}
}
function handleUpload(event) {
const file = event.target.files[0];
const type = event.target.dataset.type;
if (!file) return;
const reader = new FileReader();
reader.onload = function(e) {
const base64Image = e.target.result;
closet[type].push(base64Image);
localStorage.setItem('myVibeCloset', JSON.stringify(closet));
alert("Capo aggiunto con successo in " + type.toUpperCase() + "!");
// Visualizza subito l'ultimo caricato nello slot
document.getElementById(`slot-${type}`).innerHTML = `<img src="${base64Image}">`;
};
reader.readAsDataURL(file);
}
function generateOutfit() {
const categories = ['sopra', 'sotto', 'scarpe'];
let itemsFound = false;
categories.forEach(type => {
if (closet[type] && closet[type].length > 0) {
const randomIndex = Math.floor(Math.random() * closet[type].length);
const randomImg = closet[type][randomIndex];
document.getElementById(`slot-${type}`).innerHTML = `<img src="${randomImg}">`;
itemsFound = true;
}
});
if (!itemsFound) {
alert("L'armadio è vuoto! Aggiungi dei capi prima di mixare.");
}
}
</script>
</body>
</html>