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' && ( -
- - patch({ brand_name: e.target.value })} - /> - - - patch({ tagline: e.target.value })} - /> - - + -