// SONARA — Manager Roster page (Attivi / Inviti in attesa / Storico) const RIcons = window.SonaraIcons; const RArrIc = ({ size = 12 }) => ; const ACTIVE_ROSTER = [ { id: "luca", handle: "@lucabianchi", name: "Luca Bianchi", init: "LB", genres: "Cantautorato · indie", city: "Milano", relation: "Esclusiva", since: "8 mesi", activity: { text: "5 offerte sulla richiesta Mix EP 'Restami'", time: "2h fa", accent: "violet", urgent: true } }, { id: "martina", handle: "@martinarey", name: "Martina Rey", init: "MR", genres: "Alt-pop · R&B", city: "Bologna", relation: "Non-esclusiva", since: "3 settimane", activity: { text: "Master completato con Studio Riva · 5★", time: "1g fa", accent: "success" } }, { id: "giada", handle: "@giadaverdi", name: "Giada Verdi", init: "GV", genres: "Trap · drill", city: "Roma", relation: "Esclusiva", since: "1 anno · 4 mesi", activity: { text: "Cerca beat trap dark · 8 offerte ricevute", time: "3g fa", accent: "violet" } }, { id: "edo", handle: "@edopalma", name: "Edoardo Palma", init: "EP", genres: "Indie · folk", city: "Torino", relation: "Esclusiva", since: "2 anni", activity: { text: "Nessuna attività negli ultimi 30 giorni", time: "stale", accent: "neutral", warn: true } }, { id: "kaya", handle: "@kayalow", name: "Kaya Low", init: "KL", genres: "R&B · neo-soul", city: "Milano", relation: "Project-based", since: "6 settimane", activity: { text: "Caricata nuova showcase track 'Mira'", time: "ieri", accent: "violet" } }, ]; const PENDING = [ { id: "i1", handle: "@simonecaruso", name: "Simone Caruso", init: "SC", genres: "Alt-pop · indie", city: "Torino", sent: "3gg fa", expires: 27, relation: "Esclusiva", msg: "Ho seguito la tua crescita su Spotify, mi piacerebbe parlare di una collaborazione di management strutturata. Sarei interessato a costruire un piano EP per il 2027." }, { id: "i2", handle: "@noahmiles", name: "Noah Miles", init: "NM", genres: "Indie · alt-pop", city: "Milano", sent: "7gg fa", expires: 23, relation: "Non-esclusiva", msg: "Bellissimo lavoro su 'Aria di Marzo'. Vorrei discutere di booking e sync — la mia rete potrebbe aprirti il circuito club tedesco." }, { id: "i3", handle: "@miabertolino", name: "Mia Bertolino", init: "MB", genres: "Indie · folk", city: "Padova", sent: "12gg fa", expires: 18, relation: "Project-based", msg: "Solo per il primo EP, da definire i termini insieme. Mi piace molto la tua voce." }, ]; const STORICO = [ { id: "h1", handle: "@martabasso", name: "Marta Basso", init: "MB", relation: "Esclusiva", terminated: "Terminata 15 mar 2026", reason: "Per accordo", duration: "1 anno · 8 mesi", by: "Reciproco" }, { id: "h2", handle: "@feliceaurora", name: "Felice Aurora", init: "FA", relation: "Non-esclusiva", terminated: "Scaduta 2 mar 2026", reason: "Invito non risposto", duration: "Mai accettata", by: "Sistema (TTL 30gg)" }, { id: "h3", handle: "@dariocosta", name: "Dario Costa", init: "DC", relation: "Project-based", terminated: "Conclusa 14 feb 2026", reason: "Progetto completato", duration: "4 mesi", by: "Reciproco" }, ]; function RosterTabs({ active, onChange }) { const tabs = [ { k: "attivi", l: "Attivi", c: ACTIVE_ROSTER.length }, { k: "inviti", l: "Inviti in attesa", c: PENDING.length }, { k: "storico", l: "Storico", c: STORICO.length }, ]; return (
{tabs.map(t => ( ))}
); } function ActiveTab() { return (
{ACTIVE_ROSTER.map(a => ( {a.init}
{a.name} {a.handle} · {a.relation}
{a.genres} · {a.city} · Da {a.since}
{a.activity.text} {a.activity.time !== "stale" && {a.activity.time}}
e.stopPropagation()}>
))}
); } function PendingTab() { return ( <>
{PENDING.map(p => (
{p.init}
{p.name} {p.handle} · {p.relation} · Scade tra {p.expires}gg
{p.genres} · {p.city} · Inviato {p.sent}
"{p.msg}"
))}
Puoi avere fino a 20 inviti pendenti. Attualmente: {PENDING.length}/20. + Invita un artista
); } function StoricoTab() { return (
{STORICO.map(s => (
{s.init}
{s.name} {s.handle} · {s.relation}
{s.terminated} · Durata: {s.duration}
{s.reason} · {s.by}
Invita di nuovo
))}
); } Object.assign(window, { RosterTabs, ActiveTab, PendingTab, StoricoTab, ACTIVE_ROSTER, PENDING, STORICO });