Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/gcsconsultores/centros-estrategicos-gcs/llms.txt

Use this file to discover all available pages before exploring further.

The Lobby is the default room loaded when the virtual office initializes — its RoomId is 'lobby' and currentRoom is set to this value as the initial state inside VirtualOffice. It serves as the visual front door to GCS Consultores Empresariales: a hero section featuring the company description, key statistics (500+ companies advised, 15+ years of experience, 98% client satisfaction), and Sally’s animated welcome message. Below the hero, a responsive card grid presents every consulting room the current user is authorized to see, letting visitors orient themselves and navigate with a single click.

Room Cards

Each consulting room is represented by a RoomCard component. Cards are built from the ROOMS constant in lib/constants.ts — the Lobby filters the full record to an array, removes its own entry, and applies role-based visibility rules before rendering. Every RoomCard surfaces the following fields from the Room interface:
FieldTypeDescription
namestringFull display name (e.g. “Sala de Compliance”)
shortNamestringAbbreviated label used in compact layouts (e.g. “Compliance”)
descriptionstringOne-line summary shown on the card face
iconstringLucide icon name rendered as the card’s visual anchor
color'primary' | 'secondary' | 'accent'Controls the card’s color theme using GCS brand tokens
typeRoomAccessDisplayed as a badge — 'public' rooms are open to all; 'private' rooms require the consultor role
featuresstring[]Bullet list of key capabilities shown in expanded or hover state
ctaTextstringLabel for the card’s call-to-action button
The Lobby applies intelligent filtering before rendering cards: it always excludes its own 'lobby' entry, then shows all rooms to consultor users and only type === 'public' rooms to cliente users. If no rooms pass the filter, a fallback message is displayed instead of an empty grid.
Room navigation is event-driven and stateless from the Lobby’s perspective — it simply calls back up to VirtualOffice via the onRoomChange prop. When a visitor clicks a RoomCard, the following sequence occurs:
1

RoomCard fires onEnter(room.id)

The card calls the onEnter callback (aliased from onRoomChange) with the target RoomId.
2

VirtualOffice updates currentRoom

handleRoomChange stores the previous room in previousRoom state and sets currentRoom to the new RoomId.
3

Sally greeting is appended

A new SallyMessage is constructed using SALLY_GREETINGS[room] and pushed onto chatHistory, so her contextual welcome is ready the moment the user opens the chat panel.
4

Active room component renders

VirtualOffice.renderCurrentRoom() switches on the new currentRoom value and mounts the corresponding room component (e.g. <RoomCompliance />), passing onOpenChat, onOpenLeadForm, and onRoomChange as props.

Sally Welcome

When the virtual office first loads, a useEffect in VirtualOffice seeds chatHistory with an initial SallyMessage drawn from SALLY_GREETINGS.lobby:
¡Hola! Soy Sally, tu consultora virtual en GCS.
¿En qué puedo ayudarte hoy? Puedo guiarte por nuestras
salas especializadas o responder tus preguntas sobre
nuestros servicios.
Inside the Lobby component itself, this same greeting is rendered character-by-character using a setInterval typing simulation (30 ms per character) inside a speech bubble next to Sally’s avatar image. The blinking cursor disappears once the full string has been typed. Clicking Continuar conversación or Hablar con Sally opens the full SallyChat side panel where the conversation can continue.

Header Navigation

The Header component is a fixed top bar rendered by VirtualOffice above every room, including the Lobby. It provides persistent navigation without requiring a page reload. Key elements of the Header:
  • GCS Logogcs-logo.png inside a circular container, with COMPANY_INFO.shortName and COMPANY_INFO.tagline displayed alongside on sm screens and above.
  • Room indicator progress bar — A 1 px gradient bar below the nav that fills proportionally based on the active room’s position in the navItems array, giving a subtle visual sense of location.
  • Desktop navigation — A horizontal row of icon + label buttons, one per visible room. The active room receives bg-primary text-primary-foreground styling; inactive items use a muted hover state.
  • Role badge — A small <span> in the top-right area that displays "Consultor" or "Cliente" based on user?.role.
  • User icon button — Navigates to /login for unauthenticated users or to / for authenticated users via useRouter.
  • Contactar button — A prominently colored CTA button hidden on mobile (hidden sm:flex).
  • Mobile sheet menu — On screens narrower than lg, the desktop nav collapses into a Shadcn Sheet triggered by a hamburger icon. Each room link shows the full room.name and room.description inside the drawer.
The Lobby itself is a 'public' room — ROOMS.lobby.type === 'public' — so it is always accessible regardless of the user’s role or eligibility status. The eligibility gate that blocks access to the entire office is evaluated in VirtualOffice before any room renders; once a user passes that gate, the Lobby is unconditionally available.

Build docs developers (and LLMs) love