fix: tema claro blanco, logo 4Ventures y menú original

Fondo blanco en la app; menú con labels/iconos originales; logo en sidebar y login.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
4Ventures
2026-09-24 09:53:36 +02:00
parent 6d1602bd68
commit 068faa3d25
33 changed files with 642 additions and 633 deletions

View File

@@ -145,7 +145,7 @@ function ChannelEvolutionChart({
if (!weeks.length || !series.length) {
return (
<div className="h-[260px] flex items-center justify-center text-sm text-gray-500 border border-dashed border-gray-800 rounded-xl">
<div className="h-[260px] flex items-center justify-center text-sm text-gray-500 border border-dashed border-gray-200 rounded-xl">
Sin serie en el rango seleccionado.
</div>
);
@@ -233,7 +233,7 @@ function ChannelEvolutionChart({
</svg>
{hover && (
<div
className="pointer-events-none absolute z-10 rounded-lg border border-gray-700 bg-[#0D121F] px-2.5 py-1.5 text-[11px] text-white shadow-xl"
className="pointer-events-none absolute z-10 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-[11px] text-gray-900 shadow-xl"
style={{
left: Math.min(hover.x + 8, 560),
top: Math.max(hover.y - 36, 8),
@@ -397,9 +397,9 @@ export default function SeguimientoBoard() {
if (data.portfolioWide) {
return (
<div className="rounded-xl border border-gray-800 bg-[#111827] p-8 text-center">
<div className="rounded-xl border border-gray-200 bg-white p-8 text-center">
<Radio className="w-8 h-8 text-brand-500 mx-auto mb-3" />
<h2 className="text-lg font-semibold text-white">Seguimiento</h2>
<h2 className="text-lg font-semibold text-gray-900">Seguimiento</h2>
<p className="text-sm text-gray-400 mt-2 max-w-md mx-auto">
{data.hint ||
'Selecciona un cliente en el encabezado para ver la evolución y las notas.'}
@@ -465,7 +465,7 @@ export default function SeguimientoBoard() {
className={`px-3 py-1.5 rounded-lg text-xs font-semibold ${
preset === p.id
? 'bg-brand-500 text-white'
: 'bg-gray-800/70 text-gray-300 hover:bg-gray-800'
: 'bg-gray-100 text-gray-600 hover:bg-gray-50'
}`}
>
{p.label}
@@ -479,7 +479,7 @@ export default function SeguimientoBoard() {
{cards.map((c) => (
<div
key={c.label}
className="rounded-xl border border-gray-800 bg-[#0D121F] px-3 py-3"
className="rounded-xl border border-gray-200 bg-white px-3 py-3"
>
<div className="flex items-center justify-between mb-1">
<p className="text-[10px] uppercase tracking-wider text-gray-500">
@@ -487,19 +487,19 @@ export default function SeguimientoBoard() {
</p>
{c.icon}
</div>
<p className="text-xl font-bold text-white tabular-nums">{c.value}</p>
<p className="text-xl font-bold text-gray-900 tabular-nums">{c.value}</p>
</div>
))}
</div>
{/* Channel evolution */}
<section className="bg-[#111827] border border-gray-800 rounded-xl p-5 space-y-4">
<section className="bg-white border border-gray-200 rounded-xl p-5 space-y-4">
<div className="flex flex-wrap items-center justify-between gap-3">
<div className="flex items-center gap-2 text-white font-medium">
<div className="flex items-center gap-2 text-gray-900 font-medium">
<LineIcon className="w-4 h-4 text-brand-500" />
Evolución por canal
</div>
<div className="flex gap-1 rounded-lg border border-gray-800 p-0.5 bg-black/20">
<div className="flex gap-1 rounded-lg border border-gray-200 p-0.5 bg-gray-50">
{(
[
['leads', 'Leads'],
@@ -534,8 +534,8 @@ export default function SeguimientoBoard() {
onClick={() => toggleChannel(ch)}
className={`inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-full border transition-all capitalize ${
on
? 'border-gray-600 text-white bg-gray-900'
: 'border-gray-800 text-gray-500 opacity-60'
? 'border-gray-600 text-gray-900 bg-gray-900'
: 'border-gray-200 text-gray-500 opacity-60'
}`}
>
<span
@@ -558,8 +558,8 @@ export default function SeguimientoBoard() {
</section>
{/* Notes box */}
<section className="rounded-2xl border border-gray-800 bg-[#111827] p-5 space-y-3">
<div className="flex items-center gap-2 text-white font-medium">
<section className="rounded-2xl border border-gray-200 bg-white p-5 space-y-3">
<div className="flex items-center gap-2 text-gray-900 font-medium">
<MessageSquareText className="w-4 h-4 text-violet-400" />
Comentarios y notas
</div>
@@ -571,13 +571,13 @@ export default function SeguimientoBoard() {
value={noteTitle}
onChange={(e) => setNoteTitle(e.target.value)}
placeholder="Título (opcional)"
className="w-full rounded-lg bg-black/30 border border-gray-800 px-3 py-2 text-sm text-white placeholder:text-gray-600"
className="w-full rounded-lg bg-black/30 border border-gray-200 px-3 py-2 text-sm text-gray-900 placeholder:text-gray-600"
/>
<textarea
value={noteBody}
onChange={(e) => setNoteBody(e.target.value)}
placeholder="Escribe aquí comentarios, notas o cualquier cosa relevante…"
className="w-full min-h-[120px] rounded-lg bg-black/30 border border-gray-800 px-3 py-2 text-sm text-white placeholder:text-gray-600"
className="w-full min-h-[120px] rounded-lg bg-black/30 border border-gray-200 px-3 py-2 text-sm text-gray-900 placeholder:text-gray-600"
/>
<div className="flex flex-wrap items-center gap-3">
<button
@@ -598,7 +598,7 @@ export default function SeguimientoBoard() {
{/* Timeline */}
<section className="space-y-4">
<div className="flex flex-col sm:flex-row sm:items-center justify-between gap-3">
<div className="flex items-center gap-2 text-white font-medium">
<div className="flex items-center gap-2 text-gray-900 font-medium">
<Radio className="w-4 h-4 text-emerald-400" />
Timeline seguimiento
<span className="text-xs text-gray-500 font-normal">
@@ -609,17 +609,17 @@ export default function SeguimientoBoard() {
value={query}
onChange={(e) => setQuery(e.target.value)}
placeholder="Filtrar temas, CPL, notas…"
className="w-full sm:w-64 rounded-lg bg-black/30 border border-gray-800 px-3 py-1.5 text-sm text-white placeholder:text-gray-600 focus:outline-none focus:border-brand-500/50"
className="w-full sm:w-64 rounded-lg bg-black/30 border border-gray-200 px-3 py-1.5 text-sm text-gray-900 placeholder:text-gray-600 focus:outline-none focus:border-brand-500/50"
/>
</div>
{filteredEntries.length === 0 ? (
<div className="rounded-xl border border-dashed border-gray-800 px-4 py-10 text-center text-sm text-gray-500">
<div className="rounded-xl border border-dashed border-gray-200 px-4 py-10 text-center text-sm text-gray-500">
Sin entradas en este periodo. Añade una nota arriba o sincroniza
Superhuman Docs desde Agencia.
</div>
) : (
<ol className="relative border-l border-gray-800 ml-3 space-y-4">
<ol className="relative border-l border-gray-200 ml-3 space-y-4">
{filteredEntries.map((e) => {
const open = openId === e.id;
const when = e.occurred_at
@@ -635,7 +635,7 @@ export default function SeguimientoBoard() {
<button
type="button"
onClick={() => setOpenId(open ? null : e.id)}
className="w-full text-left rounded-xl border border-gray-800 bg-[#111827] hover:border-gray-700 transition-colors p-4"
className="w-full text-left rounded-xl border border-gray-200 bg-white hover:border-gray-200 transition-colors p-4"
>
<div className="flex flex-wrap items-start justify-between gap-2">
<div>
@@ -647,7 +647,7 @@ export default function SeguimientoBoard() {
</span>
<span className="text-[11px] text-gray-500">{when}</span>
</div>
<p className="text-sm font-semibold text-white">
<p className="text-sm font-semibold text-gray-900">
{e.title}
</p>
{e.summary && (
@@ -670,7 +670,7 @@ export default function SeguimientoBoard() {
</div>
{open && e.body_md && (
<pre className="mt-3 whitespace-pre-wrap text-xs text-gray-300 bg-black/30 border border-gray-800 rounded-lg p-3 max-h-64 overflow-y-auto font-sans">
<pre className="mt-3 whitespace-pre-wrap text-xs text-gray-600 bg-black/30 border border-gray-200 rounded-lg p-3 max-h-64 overflow-y-auto font-sans">
{e.body_md}
</pre>
)}