// SONARA — Profilo Producer // Nico Vega · @nicovega · Milano · Trap/Hip-hop · Beat dark + mix/master const PpIcons = window.SonaraIcons; const PRODUCER = { name: "Nico Vega", handle: "@nicovega", initials: "NV", verified: true, topRated: true, active: true, // badge "Risponde rapidamente" location: "Milano, IT", joined: "Gennaio 2023", followers: 2841, responseTime: "<6h", rating: 4.8, ratingCount: 47, completed: 47, bio: "Producer trap/hip-hop da Milano. Beat dark, 808 pesanti, melodie cinematiche. Mix & master per chi vuole un suono pulito e moderno. Ho lavorato con artisti emergenti della scena drill italiana — adesso prendo nuovi progetti su Sonara.", genres: ["Trap", "Drill", "Hip-hop", "R&B"], daw: "FL Studio + Pro Tools", experience: "8 anni", studio: "Home studio Milano", availability: "open", // "open" | "vacation" | "featuring_only" portfolio: [ { id: "p1", title: "Vega Type Beat — \"Notturno\"", role: "Beat originale · Producer", duration: "3:12", grad: "g3", plays: "8.2k" }, { id: "p2", title: "RAZZA — Asfalto (Mix & Master)", role: "Mix · Master · 2024", duration: "2:48", grad: "g4", plays: "12.4k" }, { id: "p3", title: "Yoshi — Quartiere (Co-prod + Mix)", role: "Co-production · Mix", duration: "3:31", grad: "g1", plays: "24.1k" }, { id: "p4", title: "Drill Type Beat — \"Lupo\"", role: "Beat originale · Producer", duration: "2:55", grad: "g5", plays: "5.8k" }, { id: "p5", title: "Sara D. — Senza Te (Vocal prod)", role: "Vocal production · Mix", duration: "3:04", grad: "g6", plays: "3.2k" }, ], services: [ { id: "s1", title: "Mix professionale trap/hip-hop", type: "Mix stereo", price: 120, delivery: "3 gg", orders: 24, rating: 4.9, grad: "g3" }, { id: "s2", title: "Mix + Master pacchetto completo", type: "Mix + Master", price: 180, delivery: "4 gg", orders: 18, rating: 4.8, grad: "g4" }, { id: "s3", title: "Custom production su brief", type: "Custom production", price: 350, delivery: "7 gg", orders: 8, rating: 5.0, grad: "g1" }, { id: "s4", title: "Vocal production + tuning", type: "Vocal production", price: 90, delivery: "2 gg", orders: 15, rating: 4.7, grad: "g5" }, ], beats: [ { id: "b1", title: "Notturno", bpm: 142, key: "F# min", price: 45, exclusive: 350, grad: "b1", plays: "2.1k", sold: 3 }, { id: "b2", title: "Asfalto Bagnato", bpm: 138, key: "G min", price: 50, exclusive: 400, grad: "b2", plays: "1.4k", sold: 1 }, { id: "b3", title: "Lupo Solitario", bpm: 145, key: "D min", price: 40, exclusive: 300, grad: "b3", plays: "3.2k", sold: 5 }, { id: "b4", title: "Quartiere Nord", bpm: 140, key: "A min", price: 55, exclusive: 450, grad: "b4", plays: "1.8k", sold: 2 }, { id: "b5", title: "Settembre", bpm: 132, key: "E min", price: 60, exclusive: 500, grad: "b5", plays: "892", sold: 0 }, { id: "b6", title: "Cassetta Vuota", bpm: 148, key: "B min", price: 45, exclusive: 380, grad: "b6", plays: "1.1k", sold: 1 }, ], reviews: [ { id: "r1", artist: "RAZZA", artistInit: "RZ", date: "2 settimane fa", rating: 5, project: "Mix EP \"Asfalto\"", text: "Nico ha capito subito la direzione. Mix pulito, 808 spaziali, master forte ma non schiacciato. Comunicazione 10/10, ha consegnato in anticipo.", tags: ["Qualità ★★★", "Comunicazione ★★★", "Puntualità ★★★"], response: "Grazie RAZZA, è stato un piacere lavorare al disco. A presto sul prossimo singolo 🔥", }, { id: "r2", artist: "Yoshi K.", artistInit: "YK", date: "1 mese fa", rating: 5, project: "Co-produzione + Mix \"Quartiere\"", text: "Top. Sa quello che fa, dà input creativi senza imporsi. Il pezzo ha girato bene grazie anche al suo lavoro.", tags: ["Qualità ★★★", "Creatività ★★★"], response: null, }, { id: "r3", artist: "Sara D.", artistInit: "SD", date: "1 mese fa", rating: 4, project: "Vocal production", text: "Lavoro solido sul tuning e sulle armonie. Mi sarebbe piaciuto un round di revisione in più ma il risultato è ottimo. Lo riprenderei.", tags: ["Qualità ★★★", "Comunicazione ★★"], response: "Grazie Sara! Per la prossima volta ti consiglio il pacchetto con revisioni extra incluse — ne ho aggiunte 2 di default 👍", }, { id: "r4", artist: "M. Lentini", artistInit: "ML", date: "2 mesi fa", rating: 5, project: "Mix singolo \"Mezzanotte\"", text: "Veloce, preciso, mix radio-ready. Lo consiglio.", tags: ["Qualità ★★★", "Puntualità ★★★"], response: null, }, ], socials: { instagram: "@nicovegabeats", youtube: "nicovegabeats", soundcloud: "nicovega", spotify: "nicovega-producer", beatstars: "nicovega", }, }; /* ───── Icons ───── */ const VerifIc = ({ size = 12 }) => ; const PinIc = ({ size = 14 }) => ; const CalIc = ({ size = 14 }) => ; const UsersIc = ({ size = 14 }) => ; const MsgIc = ({ size = 14 }) => ; const ShareIc = ({ size = 14 }) => ; const PlayIc = ({ size = 12 }) => ; const PauseIc = ({ size = 12 }) => ; const HeartIc = ({ size = 14 }) => ; const DotsIc = ({ size = 14 }) => ; const EyeIc = ({ size = 14 }) => ; const EditIc = ({ size = 14 }) => ; const PlusIc = ({ size = 14 }) => ; const CopyIc = ({ size = 13 }) => ; const CheckIc = ({ size = 13 }) => ; const StarIc = ({ size = 12, filled = true }) => ; const ChevronIc = ({ size = 14 }) => ; const BoltIc = ({ size = 12 }) => ; const TrophyIc = ({ size = 12 }) => ; /* ───── Waveform SVG (procedural) ───── */ function Waveform({ seed = 1, played = 0.35, height = 36 }) { const N = 64; const bars = React.useMemo(() => { const out = []; let s = seed * 9301; for (let i = 0; i < N; i++) { s = (s * 9301 + 49297) % 233280; const r = s / 233280; // envelope: small at edges, fuller mid const env = Math.sin((i / N) * Math.PI); const h = 0.2 + r * 0.8 * (0.55 + env * 0.55); out.push(Math.min(1, h)); } return out; }, [seed]); return (
{bars.map((h, i) => ( ))}
); } /* ───── PUBLIC (Anteprima) ───── */ function PublicView() { const [playing, setPlaying] = React.useState("p2"); return ( <>
{PRODUCER.initials}
{PRODUCER.topRated && ( Top Rated )} {PRODUCER.active && ( Risponde in {PRODUCER.responseTime} )}

{PRODUCER.name}

{PRODUCER.verified && Verificato} Aperto a ordini
{PRODUCER.location} Su Sonara da {PRODUCER.joined} {PRODUCER.followers.toLocaleString("it-IT")} follower {PRODUCER.rating} ({PRODUCER.ratingCount} recensioni)

{PRODUCER.bio}

DAW {PRODUCER.daw}
Esperienza {PRODUCER.experience}
Studio {PRODUCER.studio}
Ordini completati {PRODUCER.completed}
{PRODUCER.genres.map(g => {g})}
{/* PORTFOLIO AUDIO */}
Portfolio audio {PRODUCER.portfolio.length} demo
Streaming completo
{PRODUCER.portfolio.map((t, i) => (
{t.title}
{t.duration}
{t.role}
{t.plays}
))}
{/* SERVIZI */}
Servizi attivi {PRODUCER.services.length}
Vedi tutto
{PRODUCER.services.map(s => (
{s.type}
{s.title}
{s.rating} · {s.orders} ordini · Consegna {s.delivery}
a partire da €{s.price}
))}
{/* CATALOG BEAT */}
Catalog beat Top 6 · {PRODUCER.beats.length}+
Vedi tutto il catalog
{PRODUCER.beats.map(b => (
{Array.from({ length: 12 }).map((_, i) => ( ))}
{b.sold > 0 && {b.sold} venduti}
{b.title}
{b.bpm} BPM · {b.key}
€{b.price} €{b.exclusive} excl.
))}
{/* RECENSIONI */}
Recensioni ricevute {PRODUCER.ratingCount}
{[1,2,3,4,5].map(n => ( ))}
{PRODUCER.rating} su 5
{PRODUCER.reviews.map(r => (
{r.artistInit}
{r.artist}
{[1,2,3,4,5].map(n => ( ))}
{r.project} · {r.date}

{r.text}

{r.tags.map(t => {t})}
{r.response && (
NV Risposta di {PRODUCER.name}

{r.response}

)}
))}
{/* SIDE: STATS */}
Stats producer
Ultimi 30 giorni
Visite profilo
3.8k
+22% vs prec.
Ascolti portfolio
54.2k
+11%
Response time
4h 12m
Top 8% IT
Ranking trap
Top 12%
Italia
{/* SIDE: BADGE */}
Badge profilo
Verificato
Identità + KYC confermati
Attivo
Top Rated
≥30 ordini, ≥4.8 rating, ≥6 mesi
Attivo
Risponde rapidamente
Media <6h ultimi 30gg
Attivo
{/* SIDE: SOCIAL */}
Link social
e.preventDefault()}> IG
Instagram
{PRODUCER.socials.instagram}
e.preventDefault()}> YT
YouTube
{PRODUCER.socials.youtube}
e.preventDefault()}> SC
SoundCloud
{PRODUCER.socials.soundcloud}
e.preventDefault()}> SP
Spotify
{PRODUCER.socials.spotify}
e.preventDefault()}> BS
BeatStars
{PRODUCER.socials.beatstars}
{/* SIDE: SHARE */}
Condividi profilo
); } function ShareBlock() { const [copied, setCopied] = React.useState(false); const url = `sonara.it/p/${PRODUCER.handle.replace("@", "")}`; return (
{url}
Scansiona o stampa per locandine
); } /* ───── EDIT MODE ───── */ function EditView() { const [availability, setAvailability] = React.useState(PRODUCER.availability); const [coverUrl, setCoverUrl] = React.useState(null); const [avatarUrl, setAvatarUrl] = React.useState(null); const coverRef = React.useRef(null); const avatarRef = React.useRef(null); const onCover = (e) => { const f = e.target.files?.[0]; if (f) setCoverUrl(URL.createObjectURL(f)); }; const onAvatar = (e) => { const f = e.target.files?.[0]; if (f) setAvatarUrl(URL.createObjectURL(f)); }; return (
{/* MEDIA */}
Foto & copertina
{coverUrl && }
{!avatarUrl && PRODUCER.initials}
CopertinaJPG o PNG, almeno 1500 × 500 px. Max 5 MB.
Foto profiloQuadrata, almeno 400 × 400 px. Max 2 MB.
{/* INFO */}
Info profilo