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

@@ -68,7 +68,7 @@ function AssetImagePreview({ assetId, alt }: { assetId: string; alt: string }) {
<img
src={url}
alt={alt}
className="w-full max-h-48 object-contain rounded-lg border border-gray-800 bg-black/40"
className="w-full max-h-48 object-contain rounded-lg border border-gray-200 bg-gray-100"
/>
);
}
@@ -232,7 +232,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
className={`text-xs px-3 py-1.5 rounded-lg border ${
tab === 'portal'
? 'border-brand-500/40 text-brand-400'
: 'border-gray-700 text-gray-400'
: 'border-gray-200 text-gray-400'
}`}
>
Portal
@@ -243,7 +243,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
className={`inline-flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-lg border ${
tab === 'drive'
? 'border-brand-500/40 text-brand-400'
: 'border-gray-700 text-gray-400'
: 'border-gray-200 text-gray-400'
}`}
>
<HardDrive className="w-3.5 h-3.5" />
@@ -267,7 +267,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
Carpeta
</label>
<input
className="mt-1 w-full rounded-lg bg-gray-900 border border-gray-700 px-3 py-2 text-sm text-white"
className="mt-1 w-full rounded-lg bg-gray-900 border border-gray-200 px-3 py-2 text-sm text-gray-900"
placeholder="ej. creatividades/meta o vacío = raíz"
value={folder}
onChange={(e) => setFolder(e.target.value)}
@@ -296,7 +296,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
}}
/>
</label>
<label className="inline-flex items-center justify-center gap-2 rounded-lg border border-gray-700 px-4 py-2.5 text-sm text-gray-300 hover:text-white cursor-pointer">
<label className="inline-flex items-center justify-center gap-2 rounded-lg border border-gray-200 px-4 py-2.5 text-sm text-gray-600 hover:text-gray-900 cursor-pointer">
Subir carpeta
<input
type="file"
@@ -335,11 +335,11 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
className={`rounded-xl border border-dashed px-6 py-10 text-center transition-colors ${
drag
? 'border-brand-500 bg-brand-500/10'
: 'border-gray-700 bg-[#111827]'
: 'border-gray-200 bg-white'
}`}
>
<FolderOpen className="w-8 h-8 text-gray-600 mx-auto mb-2" />
<p className="text-sm text-gray-300">
<p className="text-sm text-gray-600">
Arrastra aquí cualquier archivo (máx. 80 MB c/u)
</p>
<p className="text-[11px] text-gray-500 mt-1">
@@ -356,7 +356,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
className={`text-[11px] px-2.5 py-1 rounded-md border ${
!folder
? 'border-brand-500/40 text-brand-400'
: 'border-gray-700 text-gray-400'
: 'border-gray-200 text-gray-400'
}`}
>
Todas
@@ -369,7 +369,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
className={`text-[11px] px-2.5 py-1 rounded-md border ${
folder === f
? 'border-brand-500/40 text-brand-400'
: 'border-gray-700 text-gray-400'
: 'border-gray-200 text-gray-400'
}`}
>
{f}
@@ -381,9 +381,9 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
{loading ? (
<p className="text-sm text-gray-500">Cargando…</p>
) : visible.length === 0 ? (
<div className="bg-[#111827] border border-gray-800 rounded-xl p-12 text-center text-gray-400">
<div className="bg-white border border-gray-200 rounded-xl p-12 text-center text-gray-400">
<FileText className="w-10 h-10 text-gray-600 mx-auto mb-3" />
<p className="text-base font-medium text-gray-300">
<p className="text-base font-medium text-gray-600">
Sin archivos en esta vista
</p>
</div>
@@ -392,13 +392,13 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
{visible.map((a) => (
<li
key={a.id}
className="flex items-center gap-3 rounded-xl border border-gray-800 bg-[#111827] px-4 py-3"
className="flex items-center gap-3 rounded-xl border border-gray-200 bg-white px-4 py-3"
>
<span className="text-[10px] font-bold tracking-wider text-gray-500 w-10">
{iconHint(a.mime_type)}
</span>
<div className="flex-1 min-w-0">
<p className="text-sm text-white font-medium truncate">
<p className="text-sm text-gray-900 font-medium truncate">
{a.file_name}
</p>
<p className="text-[11px] text-gray-500">
@@ -424,7 +424,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
}
}
}}
className="hidden sm:inline-flex items-center gap-1 text-[10px] px-2 py-1 rounded border border-gray-700 text-gray-300 hover:text-white"
className="hidden sm:inline-flex items-center gap-1 text-[10px] px-2 py-1 rounded border border-gray-200 text-gray-600 hover:text-gray-900"
title="Comentar / validar"
>
{dualMap[a.id]?.both ? (
@@ -440,7 +440,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
<button
type="button"
onClick={() => download(a.id)}
className="p-2 rounded-lg text-gray-400 hover:text-white hover:bg-gray-800"
className="p-2 rounded-lg text-gray-400 hover:text-gray-900 hover:bg-gray-50"
title="Descargar"
>
<Download className="w-4 h-4" />
@@ -465,9 +465,9 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
{loading ? (
<p className="text-sm text-gray-500">Cargando Drive…</p>
) : driveFiles.length === 0 ? (
<div className="bg-[#111827] border border-gray-800 rounded-xl p-12 text-center text-gray-400">
<div className="bg-white border border-gray-200 rounded-xl p-12 text-center text-gray-400">
<HardDrive className="w-10 h-10 text-gray-600 mx-auto mb-3" />
<p className="text-base font-medium text-gray-300">
<p className="text-base font-medium text-gray-600">
Sin archivos en Drive
</p>
<p className="text-xs text-gray-500 mt-2">
@@ -479,13 +479,13 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
{driveFiles.map((f) => (
<li
key={f.id}
className="flex items-center gap-3 rounded-xl border border-gray-800 bg-[#111827] px-4 py-3"
className="flex items-center gap-3 rounded-xl border border-gray-200 bg-white px-4 py-3"
>
<span className="text-[10px] font-bold tracking-wider text-gray-500 w-10">
{iconHint(f.mimeType)}
</span>
<div className="flex-1 min-w-0">
<p className="text-sm text-white font-medium truncate">
<p className="text-sm text-gray-900 font-medium truncate">
{f.name}
</p>
<p className="text-[11px] text-gray-500">
@@ -498,7 +498,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
<button
type="button"
onClick={() => void openDrive(f)}
className="p-2 rounded-lg text-gray-400 hover:text-white hover:bg-gray-800"
className="p-2 rounded-lg text-gray-400 hover:text-gray-900 hover:bg-gray-50"
title="Abrir en Drive"
>
<ExternalLink className="w-4 h-4" />
@@ -512,10 +512,10 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
{detailId && (
<div className="fixed inset-0 z-50 bg-black/70 backdrop-blur-sm flex items-center justify-center p-4">
<div className="w-full max-w-lg rounded-2xl border border-gray-800 bg-[#0D121F] overflow-hidden">
<div className="px-4 py-3 border-b border-gray-800 flex items-center justify-between">
<div className="w-full max-w-lg rounded-2xl border border-gray-200 bg-white overflow-hidden">
<div className="px-4 py-3 border-b border-gray-200 flex items-center justify-between">
<div>
<p className="text-sm font-semibold text-white">
<p className="text-sm font-semibold text-gray-900">
{assets.find((a) => a.id === detailId)?.file_name || 'Archivo'}
</p>
<p className="text-[11px] text-gray-500">
@@ -526,7 +526,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
<button
type="button"
onClick={() => setDetailId(null)}
className="text-xs text-gray-400 hover:text-white"
className="text-xs text-gray-400 hover:text-gray-900"
>
Cerrar
</button>
@@ -550,13 +550,13 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
{comments.map((c) => (
<li
key={c.id}
className="text-xs border border-gray-800 rounded-lg px-2.5 py-2"
className="text-xs border border-gray-200 rounded-lg px-2.5 py-2"
>
<p className="text-[10px] text-gray-500 mb-1">
{c.author_party === 'agency' ? 'Agencia' : 'Cliente'}
{c.author_email ? ` · ${c.author_email}` : ''}
</p>
<p className="text-gray-200 whitespace-pre-wrap">{c.body}</p>
<p className="text-gray-800 whitespace-pre-wrap">{c.body}</p>
</li>
))}
</ul>
@@ -565,7 +565,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
value={commentText}
onChange={(e) => setCommentText(e.target.value)}
placeholder="Comentario…"
className="flex-1 rounded-lg bg-gray-900 border border-gray-700 px-3 py-2 text-xs text-white"
className="flex-1 rounded-lg bg-gray-900 border border-gray-200 px-3 py-2 text-xs text-gray-900"
/>
<button
type="button"
@@ -597,7 +597,7 @@ export default function AssetsLibrary({ tenantLabel }: { tenantLabel: string })
</button>
</div>
</div>
<div className="px-4 py-3 border-t border-gray-800 flex justify-end gap-2">
<div className="px-4 py-3 border-t border-gray-200 flex justify-end gap-2">
<button
type="button"
disabled={collabBusy}