diff --git a/src/components/BrandZone.tsx b/src/components/BrandZone.tsx index 3f84486..7fe7558 100644 --- a/src/components/BrandZone.tsx +++ b/src/components/BrandZone.tsx @@ -18,19 +18,27 @@ import { X, Check, Rss, + Building2, + MessageSquareText, + Users, + Package, + Layers, + Share2, + Megaphone, + Linkedin, + FileText, + ShieldCheck, + LayoutDashboard, } from 'lucide-react'; import type { BlogAnalysisResult } from '@/lib/blog-analyzer'; import type { B2BAnalysisResult } from '@/lib/b2b-analyzer'; -import { PageHeader, Surface, SectionTitle, SegmentedControl } from '@/components/ui'; import { ASSET_KIND_LABELS, - BRANDBOOK_SECTIONS, emptyBrandbook, linesToList, listToLines, newId, normalizeHex, - primaryLogo, type BrandAssetKind, type Brandbook, type BrandbookSectionId, @@ -43,6 +51,29 @@ import { import GoogleFontsGallery from '@/components/GoogleFontsGallery'; import BrandOverview from '@/components/BrandOverview'; +type NavId = BrandbookSectionId | 'overview'; + +const NAV_SECTIONS: { + id: NavId; + label: string; + subtitle: string; + icon: React.ComponentType<{ className?: string }>; +}[] = [ + { id: 'overview', label: '0. Brand Overview', subtitle: 'Resumen visual del kit', icon: LayoutDashboard }, + { id: 'identidad', label: '1. Identidad', subtitle: 'Pitch, promesa, posicionamiento', icon: Building2 }, + { id: 'voz', label: '2. Voz y tono', subtitle: 'Personalidad, do/don’t, ejemplos', icon: MessageSquareText }, + { id: 'visual', label: '3. Visual', subtitle: 'Logo, colores, tipografías, kit', icon: Palette }, + { id: 'audiencia', label: '4. Audiencia', subtitle: 'ICP, personas B2B/B2C', icon: Users }, + { id: 'oferta', label: '5. Oferta', subtitle: 'VP, productos, prueba social', icon: Package }, + { id: 'pilares', label: '6. Pilares de contenido', subtitle: 'Series, matriz, tabúes', icon: Layers }, + { id: 'canales', label: '7. Canales', subtitle: 'Handles, roles, cadencia', icon: Share2 }, + { id: 'ads', label: '8. Anuncios', subtitle: 'USPs, hooks, CTAs, ángulos', icon: Megaphone }, + { id: 'b2b', label: '9. LinkedIn B2B', subtitle: 'Temas, formatos, ABM', icon: Linkedin }, + { id: 'blog', label: '10. Blog corporativo', subtitle: 'SEO, clusters, CTAs', icon: FileText }, + { id: 'compliance', label: '11. Compliance', subtitle: 'Claims, disclaimers, límites', icon: ShieldCheck }, + { id: 'fuentes', label: '12. Fuentes', subtitle: 'Docs, excerpts, notas', icon: BookOpen }, +]; + function Field({ label, hint, @@ -55,20 +86,18 @@ function Field({ className?: string; }) { return ( -