diff --git a/src/components/BrandZone.tsx b/src/components/BrandZone.tsx
index 7fe7558..0adb7a7 100644
--- a/src/components/BrandZone.tsx
+++ b/src/components/BrandZone.tsx
@@ -79,27 +79,93 @@ function Field({
hint,
children,
className = '',
+ wide = false,
}: {
label: string;
hint?: string;
children: React.ReactNode;
className?: string;
+ /** Ocupa las 2 columnas del grid del PanelCard */
+ wide?: boolean;
}) {
return (
-
-
+
+
{hint ? (
-
{hint}
+
{hint}
) : null}
{children}
);
}
+/** Bloque tipo Overview / Prohibido: aire, eyebrow, título y grid legible */
+function PanelCard({
+ eyebrow,
+ title,
+ description,
+ children,
+ accent = 'neutral',
+ cols = 2,
+}: {
+ eyebrow?: string;
+ title: string;
+ description?: string;
+ children: React.ReactNode;
+ accent?: 'neutral' | 'brand' | 'amber' | 'sky' | 'rose';
+ cols?: 1 | 2;
+}) {
+ const tone =
+ accent === 'brand'
+ ? 'border-brand-200/80 bg-gradient-to-br from-brand-50/70 via-white to-white'
+ : accent === 'amber'
+ ? 'border-amber-200/80 bg-gradient-to-br from-amber-50/60 via-white to-white'
+ : accent === 'sky'
+ ? 'border-sky-200/80 bg-gradient-to-br from-sky-50/60 via-white to-white'
+ : accent === 'rose'
+ ? 'border-rose-200/80 bg-gradient-to-br from-rose-50/50 via-white to-white'
+ : 'border-gray-200 bg-gradient-to-br from-gray-50/80 via-white to-white';
+ return (
+
+
+ {eyebrow ? (
+
+ {eyebrow}
+
+ ) : null}
+
+ {title}
+
+ {description ? (
+
+ {description}
+
+ ) : null}
+
+
+ {children}
+
+
+ );
+}
+
const inputCls =
- 'w-full rounded-xl border border-gray-300 bg-white px-3 py-2 text-xs text-gray-900 placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-brand-200';
-const areaCls = `${inputCls} min-h-[88px] resize-y`;
+ 'w-full rounded-xl border border-gray-200 bg-white px-3.5 py-2.5 text-sm text-gray-900 placeholder:text-gray-400 shadow-xs focus:outline-none focus:border-brand-400 focus:ring-2 focus:ring-brand-100 transition-colors';
+const areaCls = `${inputCls} min-h-[104px] resize-y leading-relaxed`;
const selectCls = inputCls;
+const sectionStack = 'space-y-5';
function KitThumb({ assetFileId, alt }: { assetFileId: string; alt: string }) {
const [url, setUrl] = useState
(null);
@@ -555,7 +621,7 @@ export default function BrandZone({
}
return (
-
+
@@ -662,11 +728,18 @@ export default function BrandZone({
})}
-
+
{section !== 'overview' ? (
-
-
{secMeta?.label}
-
{secMeta?.subtitle}
+
+
+ Zona de marca
+
+
+ {secMeta?.label}
+
+
+ {secMeta?.subtitle}
+
) : null}
@@ -683,147 +756,179 @@ export default function BrandZone({
)}
{section === 'identidad' && (
-
)}
{section === 'voz' && (
-
+
)}
{section === 'visual' && (
-
-
-
-
-
- Colores
+
+
+
+
+
+
+
+
+
+ Tokens de color
-
+
{book.colors.length === 0 ? (
-
+
Añade tokens de color con picker o pega un #hex.
) : null}
@@ -1061,9 +1245,14 @@ export default function BrandZone({
))}
-
+
-
+
f.family)}
onPick={(font, pickRole) => {
@@ -1093,15 +1282,15 @@ export default function BrandZone({
setOkMsg(`${font.family} añadida al kit (${pickRole})`);
}}
/>
-
-
-
+
+
+
Tipografías del kit
@@ -1199,13 +1388,17 @@ export default function BrandZone({
))}
-
+
Para archivos .ttf/.otf/.woff usa la barra «Añadir al kit» con
tipo Tipografía.
-
+
-
+
-
+
-
+
-
-
- Archivos del kit ({book.kit_assets.length})
-
+
{book.kit_assets.length === 0 ? (
Todavía no hay logos ni archivos. Usa «Añadir al kit»
@@ -1344,13 +1539,19 @@ export default function BrandZone({
))}
)}
-
+
)}
{section === 'audiencia' && (
-
-
+
+
+