Header

Header

Header defines the top navigation configuration for pages.

Props

id
string
required

Header id in the CMS.

userId
string
required

Owner/creator identifier. Set automatically on create. Read-only afterwards.

name
string
required

Internal label used in the CMS UI.

ctaBtns

Optional CTA buttons rendered on the right side of the header.

brands
Brand[]

Optional list of brands used by the header (implementation-specific rendering).

menuItemsrequired

Relationship to top-level header menu items.

menuItemsOrder
string[]
required

Ordered list of HeaderMenuItem ids. Source of truth for menu item order.

theme

Optional theme override for the header.

Ordering behavior

menuItemsOrder and menuItems are kept in sync (same pattern as Page.bannersOrder):

  • If menuItemsOrder is explicitly set:
  • menuItems is overwritten to match that order (connect on create, set on update).
  • If menuItemsOrder is untouched but menuItems changes:
  • set replaces the full order
  • disconnectAll clears the order
  • disconnect removes ids from the order
  • connect appends new ids to the end (preserving existing order)

HeaderMenuItem

HeaderMenuItem represents a menu entry. It can be either:

  • a direct link (hasSubmenu = false, link required), or
  • a submenu container (hasSubmenu = true, link must be empty)

Props

id
string
required

Menu item id in the CMS.

userId
string
required

Owner/creator identifier. Set automatically on create. Read-only afterwards.

label
string
required

Visible menu label.

header

Back-reference to headers using this menu item.

Parent menu item (set for submenu entries).

link

Direct link when hasSubmenu is false.

hasSubmenu
boolean
required

If true, this item is a submenu container and must not have a direct link.

subMenuItems

Direct children of this menu item.

subMenuItemsOrder
string[]
required

Ordered list of submenu ids. Source of truth for submenu ordering.

Validation rules

  • If hasSubmenu = true then link must be empty.
  • If hasSubmenu = false then link must be set.

Ordering behavior (submenu)

subMenuItemsOrder and subMenuItems follow the same sync pattern as menuItemsOrder.

Deletion cleanup

On delete, the removed menu item id is purged from:

  • every Header.menuItemsOrder
  • every HeaderMenuItem.subMenuItemsOrder