<?xml version="1.0" encoding="UTF-8"?>
  <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="UIDescription" type="UIDescriptionType"/>

  <xs:simpleType name="OnlyWhiteSpaceContentType">
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="collapse"/>
      <xs:length value="0"/>
    </xs:restriction> 
  </xs:simpleType> 

  <xs:simpleType name="BooleanStringType">
      <xs:restriction base="xs:string">
        <xs:enumeration value="true" />
        <xs:enumeration value="false" />
      </xs:restriction>
  </xs:simpleType>

  <!-- HeaderLine child alignment: only left/right are meaningful (left/right grouping). -->
  <xs:simpleType name="AlignAttributeType">
      <xs:restriction base="xs:string">
        <xs:enumeration value="left" />
        <xs:enumeration value="right" />
      </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ColumnsType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="auto"/>
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
      <xs:enumeration value="3"/>
      <xs:enumeration value="4"/>
      <xs:enumeration value="5"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="GroupElementColumnsType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(auto|[1-2])(,(auto|[1-2])){0,2}"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="AdvancedSearchControlType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="EventsType" name="Events" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="xs:string" name="dataSource" use="required"/>
  </xs:complexType>

  <xs:complexType name="ActionBarType">
    <xs:sequence>
      <xs:element type="ImageButtonType" name="ImageButton" maxOccurs="2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ContextMenuType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="ItemsType" name="Items"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PrimaryActionType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="ListEventsType" name="Events"/>
    </xs:sequence>
    <xs:attribute type="BooleanStringType" name="showPortraitLabel" use="optional"/>
  </xs:complexType>

  <xs:complexType name="MenuItemType">
    <xs:choice  maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="EventsType" name="Events"/>
      <xs:element type="VisibilityRolesType" name="VisibilityRoles"/>
      <xs:element type="EditibilityRolesType" name="EditibilityRoles"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="directlyVisible"/>
    <xs:attribute type="xs:string" name="itemId"/>
    <xs:attribute type="xs:string" name="backendSystem" use="optional"/>
    <!-- New UX: ImageButton variant for directly visible menu items (default: secondary) -->
    <xs:attribute type="ButtonVariantType" name="variant" use="optional"/>
    <!-- Label visibility for a directly-visible menu button. never = icon-only everywhere (the Label still shows in the options menu); auto/unset = per-surface default (phone icon-only, tablet icon+text); always = icon+text on all devices including phone. -->
    <xs:attribute type="MenuItemLabelType" name="showLabel" use="optional"/>
  </xs:complexType>

  <xs:complexType name="RoleType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="name" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="ItemSelectedEventType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
      <xs:element type="SelectAreaType" name="SelectArea" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="event" use="optional"/>
    <xs:attribute type="xs:string" name="resetMultiAreas" use="optional"/>
    <xs:attribute type="xs:string" name="storeTabNameIn" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ItemsSelectedEventType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="event" use="optional"/>
  </xs:complexType>
  <xs:complexType name="ListButtonPressedEventType">
    <xs:choice maxOccurs="1" minOccurs="0">
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="event" use="optional"/>
  </xs:complexType>
  <xs:complexType name="PrimaryActionPressedEventType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="event" use="optional"/>
  </xs:complexType>
  <xs:complexType name="LongPressMenuOpeningEventType">
    <xs:choice maxOccurs="1" minOccurs="0">
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="event" use="required"/>
  </xs:complexType>
  <xs:complexType name="LongPressMenuSelectedEventType">
    <xs:choice maxOccurs="1" minOccurs="0">
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="event" use="required"/>
  </xs:complexType>

  <xs:complexType name="RowType">
    <xs:sequence>
      <xs:element type="ColType" name="Col" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="DivType" name="Div" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="colSpan" use="optional"/>
    <xs:attribute type="xs:string" name="layoutType" use="optional"/>
    <xs:attribute type="xs:string" name="bindingId" use="optional"/>
    <xs:attribute type="xs:string" name="width" use="optional"/>
    <xs:attribute type="xs:string" name="height" use="optional"/>
    <xs:attribute type="xs:string" name="flex" use="optional"/>
  </xs:complexType>

  <xs:complexType name="DivType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="layoutType" use="optional"/>
        <xs:attribute type="xs:string" name="bindingId" use="optional"/>
        <xs:attribute type="xs:string" name="width" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>


  <xs:complexType name="ContextOpeningEventType">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="event" use="optional"/>
  </xs:complexType>

  <xs:complexType name="DropdownOpeningEventType">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="event" use="optional"/>
  </xs:complexType>

  <xs:complexType name="DataImportedEventType">
    <xs:choice maxOccurs="1" minOccurs="0">
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="event" use="optional"/>
  </xs:complexType>

  <xs:complexType name="AreaType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
      <xs:element type="MenuItemsType" name="MenuItems" minOccurs="0"/>
      <xs:element type="CalendarControlType" name="CalendarControl" minOccurs="0"/>
      <xs:element type="GroupedListType" name="GroupedList" minOccurs="0"/>
      <xs:element type="TabSelectorType" name="TabSelector" minOccurs="0"/>
      <xs:element type="GroupElementType" name="GroupElement" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="WelcomeType" name="Welcome" minOccurs="0"/>
      <xs:element type="ImageButtonType" name="ImageButton" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="NavigationMenuContainerType" name="NavigationMenuContainer" minOccurs="0"/>
      <xs:element type="RowHeaderType" name="RowHeader" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="AreaHeaderType" name="AreaHeader" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="CardContainerType" name="CardContainer" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="SyncCardContainerType" name="SyncCardContainer" maxOccurs="1" minOccurs="0"/>
      <xs:element type="QuickActionCardContainerType" name="QuickActionCardContainer" maxOccurs="1" minOccurs="0"/>
      <xs:element type="GroupedButtonListType" name="GroupedButtonList" minOccurs="0"/>
      <xs:element type="AreaType" name="Area" minOccurs="0"/>
      <xs:element type="MediaListControlType" name="MediaListControl" minOccurs="0"/>
      <xs:element type="MediaNavigationControlType" name="MediaNavigationControl" minOccurs="0"/>
      <xs:element type="GoogleMapType" name="GoogleMap" minOccurs="0"/>
      <xs:element type="UIPluginType" name="UIPlugin" minOccurs="0"/>
      <xs:element type="UIPluginV2Type" name="UIPluginV2" minOccurs="0"/>
      <xs:element type="EmbeddedListType" name="EmbeddedList" minOccurs="0"/>
      <xs:element type="InputAreaMultiLineType" name="InputAreaMultiLine" minOccurs="0"/>
      <xs:element type="ImageSelectorType" name="ImageSelector" minOccurs="0"/>
      <xs:element type="SelectionBoxType" name="SelectionBox"  minOccurs="0"/>
      <xs:element type="InputAreaType" name="InputArea"/>
      <xs:element type="MultiSelectionGroupedListType" name="MultiSelectionGroupedList"/>
      <xs:element type="MultiSelectionBreadCrumbControlType" name="MultiSelectionBreadCrumbControl"/>
      <xs:element type="BreadCrumbControlType" name="BreadCrumbControl"/>
      <xs:element type="ActionBarType" name="ActionBar" maxOccurs="1" minOccurs="0" />
      <xs:element type="EnhancedDecisionListType" name="EnhancedDecisionList"/>
      <xs:element type="AdvancedSearchControlType" name="AdvancedSearchControl"/>
      <xs:element type="ThemeSelectionType" name="ThemeSelection"/>
      <xs:element type="FastDataEntryGridType" name="FastDataEntryGrid"/>
      <xs:element type="DataImportWizardType" name="DataImportWizard"/>
      <xs:element type="AttachmentFolderType" name="AttachmentFolder"/>
      <xs:element type="MigratedComponentType" name="NoDataMessage"/>
      <xs:element type="MigratedComponentType" name="VisitDetails"/>
      <xs:element type="MigratedComponentType" name="UserWelcome"/>
      <xs:element type="TextDisplayType" name="TextDisplay"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="areaName"/>
    <xs:attribute type="xs:string" name="areaPattern"/>
    <xs:attribute type="xs:string" name="backendSystem" use="optional"/>
    <xs:attribute type="xs:string" name="Flex" use="optional"/>
    <xs:attribute type="xs:string" name="lazyLoading" use="optional"/>
    <xs:attribute name="columns" use="optional">
      <xs:annotation>
        <xs:documentation>Number of columns. For CardArea layouts: 1-5 or 'auto' (dynamic based on screen width). For GroupedElementsArea: GroupElement-grid pattern (e.g. 'auto', '2', '2,1' for tablet-landscape/tablet-portrait/phone). When set on a GroupedElementsArea, child GroupElements without their own 'columns' attribute inherit this value.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:union memberTypes="ColumnsType GroupElementColumnsType"/>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="layout" use="optional">
      <xs:annotation>
        <xs:documentation>Layout strategy for Card areas in Lumina: 'grid' (CSS grid with equal heights and colSpan support) or 'floating' (reading-order float columns with dynamic heights). Default: 'grid' for schemaVersion >= 2, 'floating' for older contracts. Can be overridden per section by RowHeader layout.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="grid"/>
          <xs:enumeration value="floating"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>


  <xs:complexType name="EnhancedDecisionListType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1" maxOccurs="1"/>
      <xs:element type="EventsType" name="Events" minOccurs="0" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="DataImportWizardType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1"/>
      <xs:element type="ItemsType" name="Items" minOccurs="1"/>
      <xs:element type="DataMappingType" name="DataMapping" minOccurs="1" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
    <xs:attribute type="NonEmptyStringType" name="dataSource" use="optional"/>
  </xs:complexType>

  <xs:simpleType name="MaxVisibleAttachmentsType">
    <xs:restriction base="xs:string">
        <!-- Allow values are 1-40 -->
        <xs:pattern value="[1-9]|[1-3][0-9]|40"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="AttachmentFolderType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1" />
      <xs:element type="ItemsType" name="Items" minOccurs="1" />
      <xs:element type="AttachmentFolderInfoSectionsType" name="AttachmentFolderInfoSections" minOccurs="0"/>
      <xs:element type="LinkBarType" name="LinkBar" maxOccurs="1" minOccurs="0"/>
    </xs:all>
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
    <xs:attribute type="MaxVisibleAttachmentsType" name="maxVisibleAttachments" use="required"/>
    <xs:attribute type="NonEmptyStringType" name="dataSource" use="required"/>
    <xs:attribute type="NonEmptyStringType" name="attachmentList" use="optional"/>
  </xs:complexType>

  <xs:simpleType name="NoOfColumnsType">
    <xs:restriction base="xs:string">
        <xs:pattern value="1|2"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="AttachmentFolderInfoSectionsType">
    <xs:sequence>
      <xs:element type="AttachmentFolderInfoSectionType" name="AttachmentFolderInfoSection" maxOccurs="5"  minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="NoOfColumnsType" name="noOfColumns" use="optional"/>
  </xs:complexType>

  <xs:simpleType name="BackendSystemType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="cas"/>
      <xs:enumeration value="sf" />
      <xs:enumeration value="both" />
    </xs:restriction>
  </xs:simpleType>

  <!-- ImageButton Lumina mode types -->
  <xs:simpleType name="ButtonVariantType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="primary"/>
      <xs:enumeration value="secondary"/>
      <xs:enumeration value="tertiary"/>
      <xs:enumeration value="primary-destructive"/>
      <xs:enumeration value="secondary-destructive"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ButtonIconPositionType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="left"/>
      <xs:enumeration value="right"/>
      <xs:enumeration value="both"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- MenuItem label visibility: auto = per-surface default (phone icon-only, tablet icon+text);
       always = icon+text on all devices including phone;
       never = icon-only everywhere (label still shows in the options menu). -->
  <xs:simpleType name="MenuItemLabelType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="auto"/>
      <xs:enumeration value="always"/>
      <xs:enumeration value="never"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="AttachmentFolderInfoSectionType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" minOccurs="0" maxOccurs="1"/>
      <xs:element type="AttachmentFolderInfoSectionAttributeType" name="AttachmentFolderInfoSectionAttribute" minOccurs="1" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
    <xs:attribute type="BackendSystemType" name="backendSystem" use="optional"/>
  </xs:complexType>

  <xs:complexType name="AttachmentFolderInfoSectionAttributeType">
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
    <xs:attribute type="NonEmptyStringType" name="mappedTarget" use="required"/>
  </xs:complexType>

  <xs:complexType name="DataMappingType">
    <xs:sequence>
      <xs:element type="ColumnMappingType" name="ColumnMapping" minOccurs="1" maxOccurs="5"/>
    </xs:sequence>
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="ColumnMappingType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
    <xs:attribute type="ColumnMappingtypeType" name="type" use="required"/>
    <xs:attribute type="xs:integer" name="maxLength" use="optional"/>
    <xs:attribute type="NonEmptyStringType" name="regex" use="optional"/>
    <xs:attribute type="NonEmptyStringType" name="validateAgainstDataSourceAttribute" use="optional"/>
    <xs:attribute type="xs:integer" name="defaultCSVPosition" use="optional"/>
    <xs:attribute type="FlexType" name="skipOnZeroOrNull" use="optional"/>
  </xs:complexType>

    <xs:complexType name="FastDataEntryGridType">
    <xs:all>
      <xs:element type="DataInputAreaType" name="DataInputArea" minOccurs="1" maxOccurs="1"/>
      <xs:element type="DataGridType" name="DataGrid" minOccurs="1" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="DataInputAreaType">
    <xs:sequence>
      <xs:element type="DataSearchFieldType" name="DataSearchField" minOccurs="1" maxOccurs="1"/>
      <xs:element type="NumberInputFieldType" name="NumberInputField" minOccurs="0" maxOccurs="2" />
      <xs:element type="FastDataEntryCreateEventType" name="Events" minOccurs="1" maxOccurs="1"/>
    </xs:sequence>
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="DataGridType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1" maxOccurs="1"/>
      <xs:element type="DataGridItemsType" name="Items" minOccurs="1" maxOccurs="1"/>
      <xs:element type="FastDataEntryDeleteEventType" name="Events" minOccurs="0" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
    <xs:attribute type="NonEmptyStringType" name="dataSource" use="required"/>
    <xs:attribute type="DataGridPagingType" name="paging" use="required"/>
  </xs:complexType>

  <xs:complexType name="DataGridItemsType">
    <xs:all>
      <xs:element type="GridLayoutType" name="GridLayout" minOccurs="1" maxOccurs="1"/>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="GridLayoutColType">
    <xs:attribute type="ColWidthType" name="width" use="required"/>
	  <xs:attribute type="NonEmptyStringType" name="layoutType" use="required"/>
	  <xs:attribute type="NonEmptyStringType" name="bindingId" use="required"/>
  </xs:complexType>
  
  <xs:complexType name="GridLayoutHeaderColType">
	  <xs:attribute type="NonEmptyStringType" name="align" use="required"/>
	  <xs:attribute type="NonEmptyStringType" name="bindingId" use="required"/>
  </xs:complexType>
  <xs:complexType name="GridLayoutHeaderType" mixed="true">
	  <xs:sequence>
      <xs:element type="GridLayoutHeaderColType" name="Col" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="GridLayoutDefaultType" mixed="true">
	  <xs:sequence>
	   <xs:element type="GridLayoutHeaderType" name="Header" minOccurs="1"/>
     <xs:element type="GridLayoutColType" name="Col" maxOccurs="unbounded" minOccurs="1"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="GridLayoutType">
    <xs:all>
      <xs:element type="GridLayoutDefaultType" name="Default" minOccurs="1"/>
      <xs:element type="GridLayoutDefaultType" name="Tablet" minOccurs="0"/>
      <xs:element type="GridLayoutDefaultType" name="Phone" minOccurs="0"/>
    </xs:all>
  </xs:complexType>
  
  <xs:complexType name="DataSearchFieldType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1" maxOccurs="1"/>
      <xs:element type="ItemsType" name="Items" minOccurs="1" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
    <xs:attribute type="NonEmptyStringType" name="dataSource" use="required"/>
  </xs:complexType>  

  <xs:complexType name="NumberInputFieldType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
    <xs:attribute type="FormatV2Type" name="format" use="optional"/>
    <xs:attribute type="FormatV2Type" name="formatV2" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ThemeSelectionType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>


    <xs:complexType name="BreadCrumbControlType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
      <xs:element type="HierarchyType" name="Hierarchy"/>
      <xs:element type="SearchAttributesType" name="SearchAttributes"/>
      <xs:element type="ItemsType" name="Items"/>
      <xs:element type="ListEventsType" name="Events"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="searchable"/>
    <xs:attribute type="SearchBarPlacementType" name="searchBarPlacement"/>
    <xs:attribute type="xs:string" name="groupBy"/>
    <xs:attribute type="xs:string" name="sortBy"/>
    <xs:attribute type="xs:string" name="direction"/>
    <xs:attribute type="xs:string" name="dataSource"/>
    <xs:attribute type="xs:string" name="master"/>
	  <xs:attribute type="xs:string" name="sortInsideGroupBy" use="optional"/>
	  <xs:attribute type="xs:string" name="sortDirectionInGroup" use="optional"/>
    <xs:attribute type="xs:string" name="numberpadDefaultField" use="optional"/>
	  <xs:attribute type="xs:boolean" name="showPreviousNextEnter" use="optional"/>
    <xs:attribute type="ItemAnimationType" name="itemAnimation" use="optional"/>
    <xs:attribute type="FlexType" name="flex" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightDefault" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightPhone" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightTablet" use="optional"/>
  </xs:complexType>

  <xs:complexType name="MultiSelectionBreadCrumbControlType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
      <xs:element type="HierarchyType" name="Hierarchy"/>
      <xs:element type="SearchAttributesType" name="SearchAttributes"/>
      <xs:element type="ItemsType" name="Items"/>
      <xs:element type="ListEventsType" name="Events"/>
      <xs:element type="GroupVisibleElementConfigurationType" name="GroupVisibleElementConfiguration"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="searchable"/>
    <xs:attribute type="SearchBarPlacementType" name="searchBarPlacement"/>
    <xs:attribute type="xs:string" name="groupBy"/>
    <xs:attribute type="xs:string" name="sortBy"/>
    <xs:attribute type="xs:string" name="direction"/>
    <xs:attribute type="xs:string" name="dataSource"/>
    <xs:attribute type="xs:string" name="master"/>
	  <xs:attribute type="xs:string" name="sortInsideGroupBy" use="optional"/>
	  <xs:attribute type="xs:string" name="sortDirectionInGroup" use="optional"/>
    <xs:attribute type="xs:string" name="numberpadDefaultField" use="optional"/>
	  <xs:attribute type="xs:boolean" name="showPreviousNextEnter" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightDefault" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightPhone" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightTablet" use="optional"/>
  </xs:complexType>

  <xs:complexType name="HierarchyType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="DataSourcesType" name="DataSources"/>
      <xs:element type="EventsType" name="Events"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="labelAttribute"/>
  </xs:complexType>

  <xs:complexType name="DataSourcesType">
    <xs:sequence>
      <xs:element type="DataSourceType" name="DataSource" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DataSourceType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="name" use="optional"/>
        <xs:attribute type="xs:string" name="keyAttribute" use="optional"/>
        <xs:attribute type="xs:string" name="refKeyAttribute" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="MultiSelectionGroupedListType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
      <xs:element type="SearchAttributesType" name="SearchAttributes"/>
      <xs:element type="ItemsType" name="Items"/>
      <xs:element type="ListEventsType" name="Events"/>
      <xs:element type="GroupVisibleElementConfigurationType" name="GroupVisibleElementConfiguration"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="xs:string" name="searchable"/>
    <xs:attribute type="SearchBarPlacementType" name="searchBarPlacement"/>
    <xs:attribute type="xs:string" name="groupBy"/>
    <xs:attribute type="xs:string" name="sortBy"/>
    <xs:attribute type="xs:string" name="direction"/>
    <xs:attribute type="xs:string" name="dataSource" use="required"/>
    <xs:attribute type="xs:string" name="master"/>
	  <xs:attribute type="xs:string" name="sortInsideGroupBy" use="optional"/>
	  <xs:attribute type="xs:string" name="sortDirectionInGroup" use="optional"/>
    <xs:attribute type="xs:string" name="numberpadDefaultField" use="optional"/>
	  <xs:attribute type="xs:boolean" name="showPreviousNextEnter" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightDefault" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightPhone" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightTablet" use="optional"/>
 </xs:complexType>

  <xs:complexType name="GroupVisibleElementConfigurationType">
    <xs:sequence>
      <xs:element type="GroupElementsByType" name="GroupElementsBy"/>
      <xs:element type="PrimaryElementIndicatorType" name="PrimaryElementIndicator"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PrimaryElementIndicatorType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="attributeName"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="GroupElementsByType">
    <xs:sequence>
      <xs:element type="ListItemAttributeType" name="ListItemAttribute" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListItemAttributeType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="name" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="ImageSelectorType">
    <xs:sequence>
      <xs:element type="EventsType" name="Events"/>
      <xs:element type="ItemsType" name="Items"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="type"/>
    <xs:attribute type="xs:string" name="dataSource"/>
    <xs:attribute type="xs:string" name="filter"/>
  </xs:complexType>

  <xs:complexType name="EmbeddedListType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="ItemsType" name="Items" minOccurs="0"/>
      <xs:element type="SelectionBoxType" name="SelectionBox" minOccurs="0"/>
      <xs:element type="InputAreaType" name="InputArea" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="DatePickerFieldType" name="DatePickerField" minOccurs="0"/>
      <xs:element type="MergerType" name="Merger" minOccurs="0"/>
      <xs:element type="InputAreaMultiLineType" name="InputAreaMultiLine" minOccurs="0"/>
      <xs:element type="ListEventsType" name="Events" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="dataSource"/>
    <xs:attribute type="xs:string" name="disabled"/>
    <xs:attribute type="RowHeightType" name="rowHeightDefault" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightPhone" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightTablet" use="optional"/>
  </xs:complexType>

  <xs:complexType name="GroupedButtonListType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
      <!-- GroupedButtonList uses its own Items type so that <Header> (count caption) is allowed only here. -->
      <xs:element type="GroupedButtonListItemsType" name="Items"/>
      <xs:element type="EventsType" name="Events"/>
      <xs:element type="SearchAttributesType" name="SearchAttributes" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="xs:string" name="searchable" use="optional"/>
    <xs:attribute type="xs:string" name="groupBy" use="optional"/>
    <xs:attribute type="xs:string" name="hasBorder" use="optional"/>
    <xs:attribute type="xs:string" name="dragTextBinding" use="optional"/>
    <xs:attribute type="xs:string" name="dataSource" use="required"/>
  </xs:complexType>

  <xs:complexType name="CalendarControlType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="SettingsType" name="Settings"/>
      <xs:element type="ItemsType" name="Items"/>
      <xs:element type="EventsType" name="Events"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="dataSource"/>
    <xs:attribute type="xs:string" name="firstLine"/>
    <xs:attribute type="xs:string" name="secondLine"/>
    <xs:attribute type="xs:string" name="secondLineTimeFormat"/>
    <xs:attribute type="xs:string" name="dateFromAttribute"/>
    <xs:attribute type="xs:string" name="dateThruAttribute"/>
    <xs:attribute type="xs:string" name="timeFromAttribute"/>
    <xs:attribute type="xs:string" name="timeThruAttribute"/>
    <xs:attribute type="xs:string" name="allDayAttribute"/>
    <xs:attribute type="xs:string" name="backgroundColorAttribute"/>
  </xs:complexType>

  <xs:complexType name="SettingsType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="dataSource"/>
        <xs:attribute type="xs:string" name="keyAttribute"/>
        <xs:attribute type="xs:string" name="valueAttribute"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="GoogleMapDetailsType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
      <xs:element type="CockpitSectionsType" name="CockpitSections" />
      <xs:element type="ActionBarType" name="ActionBar" minOccurs="0" />
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="GoogleMapType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
      <xs:element type="EventsType" name="Events" minOccurs="0"/>
      <xs:element type="GoogleMapDetailsType" name="GoogleMapDetails" minOccurs="0" />
    </xs:choice>
    <xs:attribute type="xs:string" name="dataSource"/>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="latitudeField"/>
    <xs:attribute type="xs:string" name="longitudeField"/>
    <xs:attribute type="xs:string" name="idField"/>
    <xs:attribute type="xs:string" name="toolTipField"/>
    <xs:attribute type="xs:string" name="width"/>
    <xs:attribute type="xs:string" name="pKeyField"/>
    <xs:attribute type="xs:string" name="initialZoomLevel"/>
    <xs:attribute type="xs:string" name="visibilityField"/>
  </xs:complexType>

  <xs:complexType name="MediaListControlType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="ItemsType" name="Items" minOccurs="0"/>
      <xs:element type="EventsType" name="Events" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="dataSource"/>
    <xs:attribute type="BooleanStringType" name="selectable"/>
  </xs:complexType>

  <xs:complexType name="MediaNavigationControlType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="EventsType" name="Events" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="xs:string" name="dataSource" use="required"/>
  </xs:complexType>

  <xs:complexType name="NavigationMenuContainerType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="NavigationMenuItemType" name="NagivationMenuItem" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="NavigationMenuItemType" name="NavigationMenuItem" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="NavigationMenuSectionType" name="NavigationMenuSection" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="ImageButtonType" name="ImageButton" maxOccurs="unbounded" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name"/>
  </xs:complexType>
  <xs:complexType name="ContextSelectedEventType">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="event" use="optional"/>
  </xs:complexType>

  <xs:complexType name="MediaItemTappedEventType">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="event" use="optional"/>
  </xs:complexType>
  <xs:complexType name="BindingType" mixed="true">
    <xs:sequence>
      <xs:element type="ParametersType" name="Parameters" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="type" use="optional"/>
    <xs:attribute type="xs:string" name="target" use="required"/>
    <xs:attribute type="xs:string" name="call" use="optional"/>
    <xs:attribute type="xs:string" name="bindingMode" use="optional"/>
    <xs:attribute type="xs:string" name="toggleId" use="optional"/>
    <xs:attribute type="xs:string" name="binding" use="optional"/>
    <xs:attribute type="xs:string" name="id" use="optional"/>
    <xs:attribute type="xs:string" name="defaultLabel" use="optional"/>
    <xs:attribute type="FormatType" name="format" use="optional"/>
    <xs:attribute type="FormatV2Type" name="formatV2" use="optional"/>
    <xs:attribute type="xs:string" name="typeField" use="optional"/>
    <xs:attribute type="xs:string" name="minBinding" use="optional"/>
    <xs:attribute type="xs:string" name="maxBinding" use="optional"/>
    <xs:attribute type="xs:string" name="stepSizeBinding" use="optional"/>
    <xs:attribute type="xs:string" name="stepperEnabledBinding" use="optional"/>
    <xs:attribute type="xs:string" name="formatBinding" use="optional"/>
    <xs:attribute type="xs:string" name="value" use="optional"/>
    <xs:attribute type="xs:string" name="defaultImage" use="optional"/>
    <xs:attribute type="xs:string" name="minValue" use="optional"/>
    <xs:attribute type="xs:string" name="increment" use="optional"/>
    <xs:attribute type="xs:string" name="maxValue" use="optional"/>
    <xs:attribute type="xs:string" name="bindiDescriptionngMode" use="optional"/>
    <xs:attribute type="xs:string" name="Literal" use="optional"/>

    <xs:attribute type="xs:string" name="roundedEdge" use="optional"/>
    <xs:attribute type="xs:string" name="fileTypeBinding" use="optional"/>
    <xs:attribute type="xs:string" name="isMandatoryBinding" use="optional"/>
    <xs:attribute type="xs:string" name="defaultImageType" use="optional"/>
    <xs:attribute type="xs:string" name="imageType" use="optional"/>
    <xs:attribute type="VerticalAlignmentType" name="verticalAlignment" use="optional"/>
    <xs:attribute type="xs:string" name="alternateImage" use="optional"/>
    <xs:attribute type="xs:string" name="alternateImageFileType" use="optional"/>
    <xs:attribute type="phoneType" name="phoneType" use="optional"/>
    <xs:attribute type="xs:string" name="stepperCorrelationId" use="optional"/>
    <xs:attribute type="xs:string" name="longPressMenuId" use="optional"/>
    <xs:attribute type="xs:string" name="badgeText" use="optional"/>
    <xs:attribute type="xs:string" name="badgeType" use="optional"/>
    <xs:attribute type="xs:string" name="text" use="optional"/>
    <xs:attribute type="xs:boolean" name="nullable" use="optional"/>
    <xs:attribute type="xs:boolean" name="allowInitialValueEmpty" use="optional"/>
  </xs:complexType>

  <xs:simpleType name="VerticalAlignmentType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="top"/>
      <xs:enumeration value="bottom" />
      <xs:enumeration value="center" />
      <xs:enumeration value="Top"/>
      <xs:enumeration value="Bottom" />
      <xs:enumeration value="Center" />
      <xs:enumeration value="TOP"/>
      <xs:enumeration value="BOTTOM" />
      <xs:enumeration value="CENTER" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="phoneType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="MOBILE"/>
      <xs:enumeration value="WORK" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="ListType">
    <xs:sequence>
      <xs:element type="BindingType" name="Binding" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="target"/>
    <xs:attribute type="xs:string" name="dataSource"/>
    <xs:attribute type="xs:string" name="direction"/>
  </xs:complexType>

  <xs:complexType name="EventsType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="ButtonPressedEventType" name="ButtonPressedEvent" minOccurs="0"/>
      <xs:element type="CalendarLongTapEventType" name="CalendarLongTapEvent" minOccurs="0"/>
      <xs:element type="CalendarItemOverlappingOpeningEventType" name="CalendarItemOverlappingOpeningEvent" minOccurs="0"/>
      <xs:element type="SwipeEventType" name="SwipeEvent" minOccurs="0"/>
      <xs:element type="LoadContainerDataType" name="LoadContainerData" minOccurs="0"/>
      <xs:element type="ItemSelectedEventType" name="ItemSelectedEvent" minOccurs="0"/>
      <xs:element type="ContextOpeningEventType" name="ContextOpeningEvent" minOccurs="0"/>
      <xs:element type="ContextSelectedEventType" name="ContextSelectedEvent" minOccurs="0"/>
      <xs:element type="MediaItemTappedEventType" name="MediaItemTappedEvent" minOccurs="0"/>
      <xs:element type="MarkerInfoClickedEventType" name="MarkerInfoClickedEvent" minOccurs="0"/>
      <xs:element type="CalendarDateRangeChangedEventType" name="CalendarDateRangeChangedEvent" minOccurs="0"/>
      <xs:element type="CalendarItemResizeEventType" name="CalendarItemResizeEvent" minOccurs="0"/>
      <xs:element type="CalendarItemMoveEventType" name="CalendarItemMoveEvent" minOccurs="0"/>
      <xs:element type="CalendarDropEventType" name="CalendarDropEvent" minOccurs="0"/>
      <xs:element type="ValueChangedEventType" name="ValueChangedEvent" minOccurs="0"/>
      <xs:element type="LookupEventType" name="LookupEvent" minOccurs="0"/>
      <xs:element type="StartPhoneCallEventType" name="StartPhoneCallEvent" minOccurs="0"/>
      <xs:element type="HierarchyBackEventType" name="HierarchyBackEvent" minOccurs="0"/>
      <xs:element type="MapMarkerSelectedEventType" name="MapMarkerSelectedEvent" minOccurs="0"/>
      <xs:element type="AdvancedSearchStartEventType" name="AdvancedSearchStartEvent" minOccurs="0"/>
      <xs:element type="AdvancedSearchEndEventType" name="AdvancedSearchEndEvent" minOccurs="0"/>
      <xs:element type="SelectionChangedEventType" name="SelectionChangedEvent" minOccurs="0"/>
      <xs:element type="PreviousPeriodEventType" name="PreviousPeriodEvent" minOccurs="0"/>
      <xs:element type="NextPeriodEventType" name="NextPeriodEvent" minOccurs="0"/>
      <xs:element type="TodayEventType" name="TodayEvent" minOccurs="0"/>
      <xs:element type="GoToDateEventType" name="GoToDateEvent" minOccurs="0"/>
    </xs:choice>
  </xs:complexType>

  <!-- CalendarNavigation period-navigation events. The prev/next/today controls carry no payload;
       GoToDateEvent carries the picked date via Params (value=".date"). A contract routes these to
       existing process actions so a self-navigating agenda drives itself without a mode flag. -->
  <xs:complexType name="PreviousPeriodEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="NextPeriodEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="TodayEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="GoToDateEventType">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="event"/>
  </xs:complexType>

  <xs:complexType name="ListEventsType">
    <xs:complexContent>
        <xs:extension base="EventsType">
            <xs:sequence>
                 <xs:element type="ListButtonPressedEventType" name="ListButtonPressedEvent" minOccurs="0"/>
                 <xs:element type="PrimaryActionPressedEventType" name="PrimaryActionPressedEvent" minOccurs="0"/>
                 <xs:element type="LongPressMenuOpeningEventType" name="LongPressMenuOpeningEvent" minOccurs="0"/>
                 <xs:element type="LongPressMenuSelectedEventType" name="LongPressMenuSelectedEvent" minOccurs="0"/>
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="DataImportWizardEventsType">
    <xs:complexContent>
        <xs:extension base="EventsType">
            <xs:sequence>
                 <xs:element type="DataImportedEventType" name="DataImportedEvent" minOccurs="0"/>
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="FastDataEntryCreateEventType">
    <xs:choice maxOccurs="unbounded" minOccurs="1">
      <xs:element type="CreateNewRecordEventType" name="CreateNewRecordEvent"/>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="FastDataEntryDeleteEventType">
    <xs:choice maxOccurs="unbounded" minOccurs="1">
      <xs:element type="DeleteRecordEventType" name="DeleteRecordEvent"/>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="UIPluginEventsType">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <!-- UIPlugins can throw custom events-->
        <xs:any processContents="skip"/>
      </xs:choice>
  </xs:complexType>

  <xs:complexType name="UIPluginV2EventsType">
    <xs:sequence>
      <xs:element type="CustomEventType" name="CustomPluginEvent" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CustomEventType">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="xs:string" name="event" use="required"/>
  </xs:complexType>

  <xs:complexType name="HierarchyBackEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="StartPhoneCallEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="plugin"/>
        <xs:attribute type="xs:string" name="event"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="ValueChangedEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="SelectionChangedEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="LookupEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

 <xs:complexType name="MapMarkerSelectedEventType">
   <xs:sequence>
     <xs:element type="ParamsType" name="Params"/>
   </xs:sequence>
   <xs:attribute type="xs:string" name="event"/>
 </xs:complexType>
  <xs:complexType name="AdvancedSearchStartEventType">
   <xs:attribute type="xs:string" name="event"/>
  </xs:complexType>
  <xs:complexType name="AdvancedSearchEndEventType">
    <xs:attribute type="xs:string" name="event"/>
  </xs:complexType>
  <xs:complexType name="CreateNewRecordEventType">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="event"/>
  </xs:complexType>
  <xs:complexType name="DeleteRecordEventType">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="event"/>
  </xs:complexType>
  <xs:complexType name="CalendarDropEventType">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="event"/>
  </xs:complexType>

  <xs:complexType name="CalendarItemMoveEventType" mixed="true">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="event" use="optional"/>
  </xs:complexType>

  <xs:complexType name="CalendarItemResizeEventType">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="event"/>
  </xs:complexType>

  <xs:complexType name="CalendarDateRangeChangedEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="CalendarItemOverlappingOpeningEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="CalendarLongTapEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="SwipeEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="PhoneButtonPressedEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="EmailButtonPressedEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="WelcomeType">
  <xs:sequence>
    <xs:element type="BindingsType" name="Bindings"/>
  </xs:sequence>
  <xs:attribute type="xs:string" name="name"/>
</xs:complexType>

  <xs:complexType name="PageType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="ViewVariablesType" name="ViewVariables" minOccurs="0"/>
      <xs:element type="PageHeaderType" name="PageHeader" minOccurs="0"/>
      <xs:element type="BannerType" name="Banner" minOccurs="0" maxOccurs="1"/>
      <xs:element type="HeaderLineType" name="HeaderLine" minOccurs="0" maxOccurs="1"/>
      <xs:element type="ScopedNotificationType" name="ScopedNotification" minOccurs="0" maxOccurs="1"/>
      <xs:element type="SectionType" name="Section" maxOccurs="unbounded"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="pagePattern"/>
    <xs:attribute type="xs:string" name="navigation"/>
    <xs:attribute type="ShowNavigationType" name="showNavigation" use="optional"/>
    <xs:attribute type="xs:string" name="selectFirstItemInList" use="optional"/>
    <xs:attribute type="xs:string" name="masterSectionFlex" use="optional"/>
    <xs:attribute type="xs:string" name="detailSectionFlex" use="optional"/>
    <xs:attribute type="xs:string" name="onBackDiscard" use="optional"/>
    <xs:attribute type="OnBackDiscardV2Type" name="onBackDiscardV2" use="optional"/>
    <xs:attribute type="xs:string" name="leftSectionFlex" use="optional"/>
    <xs:attribute type="xs:string" name="rightSectionFlex" use="optional"/>
    <xs:attribute type="xs:string" name="multiSectionFlex" use="optional"/>
    <xs:attribute type="MasterDetailFlexType" name="masterDetailFlex" use="optional"/>
    <xs:attribute type="xs:string" name="cachable" use="optional"/>
    <xs:attribute type="xs:string" name="switchToDetail" use="optional"/>
    <xs:attribute type="xs:boolean" name="useSolidBackground" use="optional"/>
  </xs:complexType>

  <!-- Orientation-aware master/detail split ratios: "<m>:<d>" (uniform) or "<m>:<d>,<m>:<d>" (landscape,portrait).
       Only 1-2 segments: phone always collapses to single-pane, so a 3rd segment would never be honored. -->
  <xs:simpleType name="MasterDetailFlexType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(\d+(\.\d+)?:\d+(\.\d+)?)(,\d+(\.\d+)?:\d+(\.\d+)?){0,1}" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ShowNavigationType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="true" />
      <xs:enumeration value="false" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="OnBackDiscardV2Type">
    <xs:restriction base="xs:string">
      <xs:enumeration value="true" />
      <xs:enumeration value="false" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="ViewVariablesType">
    <xs:sequence>
      <xs:element type="ViewVariableType" name="ViewVariable"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ViewVariableType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="name"/>
        <xs:attribute type="xs:string" name="value"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="TabletType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="DefaultType" name="Default"/>
      <xs:element type="PortraitType" name="Portrait" minOccurs="0"/>
      <xs:element type="WindowsType" name="Windows" minOccurs="0"/>
      <xs:element type="AppleType" name="Apple" minOccurs="0"/>
      <xs:element type="AndroidType" name="Android" minOccurs="0"/>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="PortraitType">
    <xs:sequence>
      <xs:element type="HeaderType" name="Header" minOccurs="0"/>
      <xs:element type="ColType" name="Col" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AndroidType">
    <xs:sequence>
      <xs:element type="HeaderType" name="Header" minOccurs="0"/>
      <xs:element type="ColType" name="Col" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ParamsType">
    <xs:sequence>
      <xs:element type="ParamType" name="Param" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="BindingsType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="ResourceType" name="Resource"/>
      <xs:element type="BindingType" name="Binding"/>
      <xs:element type="ListType" name="List"/>
    </xs:choice>
  </xs:complexType>

  <!-- Members shared by ItemsType and GroupedButtonListItemsType, EXCEPT ItemListLayout (which differs
       per variant). Kept as a group so the two Items types reuse it without duplicating the member list. -->
  <xs:group name="ItemsCommonMembers">
    <xs:choice>
      <xs:element type="MenuItemsType" name="MenuItems"/>
      <xs:element type="PrimaryActionType" name="PrimaryAction" minOccurs="0"/>
      <xs:element type="ContextMenuType" name="ContextMenu" minOccurs="0"/>
      <xs:element type="LongPressMenuType" name="LongPressMenu" minOccurs="0"/>
      <xs:element type="GridLayoutType" name="GridLayout" minOccurs="0"/>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="TabType" name="Tab" maxOccurs="unbounded" minOccurs="0"/>
    </xs:choice>
  </xs:group>

  <xs:complexType name="ItemsType">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element type="ItemListLayoutType" name="ItemListLayout" minOccurs="0"/>
      <xs:group ref="ItemsCommonMembers"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="optional"/>
    <xs:attribute type="xs:string" name="itemPattern" use="optional"/>
  </xs:complexType>

  <!-- GroupedButtonList-only Items: same members as ItemsType, but binds the GroupedButtonList-specific
       ItemListLayout type (which additionally allows <Header>). Header is therefore scoped to GroupedButtonList. -->
  <xs:complexType name="GroupedButtonListItemsType">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element type="GroupedButtonListItemListLayoutType" name="ItemListLayout" minOccurs="0"/>
      <xs:group ref="ItemsCommonMembers"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="optional"/>
    <xs:attribute type="xs:string" name="itemPattern" use="optional"/>
  </xs:complexType>
  <xs:complexType name="TabType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
    <xs:element type="BindingsType" name="Bindings"/>
    <xs:element type="EditibilityRolesType" name="EditibilityRoles"/>
    <xs:element type="VisibilityRolesType" name="VisibilityRoles" minOccurs="0"/>
  </xs:choice>
  <xs:attribute type="xs:string" name="tabName" use="optional"/>
    <xs:attribute type="xs:string" name="backendSystem" use="optional"/>
</xs:complexType>
  <xs:complexType name="NavigationMenuItemType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="EventsType" name="Events"/>
      <xs:element type="EditibilityRolesType" name="EditibilityRoles"/>
      <xs:element type="VisibilityRolesType" name="VisibilityRoles" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="optional"/>
    <xs:attribute type="xs:string" name="backendSystem" use="optional"/>
    <xs:attribute name="position" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="standard"/>
          <xs:enumeration value="footer"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="variant" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="standard"/>
          <xs:enumeration value="destructive"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="NavigationMenuSectionType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="NavigationMenuSectionItemsType" name="Items" minOccurs="0"/>
      <xs:element type="EventsType" name="Events"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="DatasourceAttributeType" name="dataSource" use="required"/>
    <xs:attribute type="BooleanStringType" name="collapsible" use="optional"/>
  </xs:complexType>

  <xs:complexType name="NavigationMenuSectionItemsType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RowHeaderType">
    <xs:annotation>
      <xs:documentation>
        RowHeader component for collapsible card row sections in Lumina layouts.
        Controls visibility of all CardContainers that follow until the next RowHeader.
        Supported bindings: Title (Label), IsCollapsible (boolean), CollapseState (boolean, TWO_WAY)
      </xs:documentation>
    </xs:annotation>
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1" minOccurs="0"/>
      <xs:element type="RowHeaderEventsType" name="Events" maxOccurs="1" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute name="layout" use="optional">
      <xs:annotation>
        <xs:documentation>Overrides the Area's layout for all CardContainers following this RowHeader until the next RowHeader. Values: 'grid' (CSS grid with equal heights) or 'floating' (reading-order float columns with dynamic heights).</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="grid"/>
          <xs:enumeration value="floating"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute type="ColumnsType" name="columns" use="optional">
      <xs:annotation>
        <xs:documentation>Overrides the Area's columns for all CardContainers following this RowHeader. Values: 1-5 or 'auto'.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="RowHeaderEventsType">
    <xs:sequence>
      <xs:element type="CollapsedEventType" name="CollapsedEvent" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AreaHeaderType">
    <xs:annotation>
      <xs:documentation>
        Lumina header component for an Area: optional title on the left, optional action children on the right.
        Action children must be ImageButton (or ButtonGroup wrapping ImageButtons). Use Binding type="Visible" on
        children for runtime visibility; the static directlyVisible="false" attribute is honored at layout level only.
      </xs:documentation>
    </xs:annotation>
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1" minOccurs="0"/>
      <xs:element type="ImageButtonType" name="ImageButton" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="ButtonGroupType" name="ButtonGroup" maxOccurs="unbounded" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="optional"/>
  </xs:complexType>

  <xs:complexType name="CollapsedEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="CardContainerType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="CardEventSubcriptionType" name="CardEventSubcription" maxOccurs="1" minOccurs="0"/>
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1" />
      <xs:element type="EditibilityRolesType" name="EditibilityRoles"/>
      <xs:element type="VisibilityRolesType" name="VisibilityRoles" minOccurs="0"/>
      <xs:element type="EventsType" name="Events" maxOccurs="1" minOccurs="0"/>
      <xs:element type="UIPluginType" name="UIPlugin" minOccurs="0"/>
      <xs:element type="UIPluginV2Type" name="UIPluginV2" minOccurs="0"/>
      <xs:element type="ActionBarType" name="ActionBar" maxOccurs="1" minOccurs="0" />
      <xs:element type="CockpitListType" name="CockpitList" maxOccurs="1" minOccurs="0"/>
      <xs:element type="CockpitMapType" name="CockpitMap" maxOccurs="1" minOccurs="0"/>
      <xs:element type="LinkBarType" name="LinkBar" maxOccurs="1" minOccurs="0"/>
      <xs:element type="CockpitSectionsType" name="CockpitSections" maxOccurs="1" minOccurs="0"/>
      <xs:element type="InfoControlType" name="InfoControl" maxOccurs="1" minOccurs="0"/>
      <xs:element type="MigratedComponentType" name="NoDataMessage" minOccurs="0"/>
      <xs:element type="MigratedComponentType" name="VisitDetails" minOccurs="0"/>
      <xs:element type="MigratedComponentType" name="UserWelcome" minOccurs="0"/>
      <xs:element type="UserWelcomeV2Type" name="UserWelcomeV2" minOccurs="0"/>
      <xs:element type="TextDisplayType" name="TextDisplay" minOccurs="0"/>
      <xs:element type="CompositeCardContentType" name="CompositeCardContent" maxOccurs="1" minOccurs="0"/>
      <xs:element type="CockpitImageType" name="CockpitImage" maxOccurs="1" minOccurs="0"/>
      <xs:element type="GroupElementType" name="GroupElement" maxOccurs="unbounded" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="xs:string" name="loadPriority" use="optional"/>
    <xs:attribute type="BooleanStringType" name="showCardContainerHeader" use="optional"/>
    <xs:attribute type="xs:short" name="colSpan" use="optional">
      <xs:annotation>
        <xs:documentation>Number of grid columns this card spans (1 to columns). Used with Area columns attribute in Lumina.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="height" use="optional" default="fixed">
      <xs:annotation>
        <xs:documentation>Card height mode: 'fixed' (375px, default) or 'dynamic' (grows with content)</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="fixed"/>
          <xs:enumeration value="dynamic"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="mode" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="editable"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="SyncCardContainerType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="CardEventSubcriptionType" name="CardEventSubcription" maxOccurs="1" minOccurs="0"/>
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1" />
      <xs:element type="EditibilityRolesType" name="EditibilityRoles"/>
      <xs:element type="VisibilityRolesType" name="VisibilityRoles" minOccurs="0"/>
      <xs:element type="EventsType" name="Events" maxOccurs="1" minOccurs="0"/>
      <xs:element type="ActionBarType" name="ActionBar" maxOccurs="1" minOccurs="0" />
      <xs:element type="LinkBarType" name="LinkBar" maxOccurs="1" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="QuickActionCardContainerType">
    <xs:annotation>
      <xs:documentation>Placeholder element that controls where the Quick Action Card is positioned within a CardArea. The card is populated at runtime with quick action data when the feature is enabled and actions are available. Only one QuickActionCardContainer is allowed per CardArea. Supports Bindings for Title, Visible, IsCollapsible, and CollapseState.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="WelcomeMessageType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DateSelectorType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="ActionsType">
    <xs:sequence>
      <xs:element type="ImageButtonType" name="ImageButton" maxOccurs="2" minOccurs="0"/>
      <xs:element type="ButtonGroupType" name="ButtonGroup" maxOccurs="1" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="KPIsType">
    <xs:sequence>
      <xs:element type="KPIType" name="KPI" maxOccurs="4" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="KPIType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="optional"/>
  </xs:complexType>

  <xs:complexType name="UserWelcomeV2Type">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
      <xs:element type="WelcomeMessageType" name="WelcomeMessage" minOccurs="0"/>
      <xs:element type="DateSelectorType" name="DateSelector" minOccurs="0"/>
      <xs:element type="ActionsType" name="Actions" minOccurs="0"/>
      <xs:element type="KPIsType" name="KPIs" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="TextDisplayType">
    <xs:annotation>
      <xs:documentation>Text display component for CardContainer. Text fills available space and is clipped at the container boundary.</xs:documentation>
    </xs:annotation>
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" minOccurs="0" maxOccurs="1"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="ContentSectionType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1" minOccurs="0"/>
      <xs:choice minOccurs="0" maxOccurs="1">
        <xs:element type="CockpitListType" name="CockpitList"/>
        <xs:element type="MigratedComponentType" name="NoDataMessage"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="xs:string" name="showDivider" use="optional"/>
    <xs:attribute type="xs:string" name="separator" use="optional"/>
  </xs:complexType>

  <xs:complexType name="CompositeCardContentType">
    <xs:sequence>
      <xs:element type="ContentSectionType" name="ContentSection" maxOccurs="unbounded" minOccurs="1"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="CardEventSubcriptionType">
    <xs:sequence>
      <xs:element type="CardEventType" name="CardEvent" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CardEventType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="CardEventTypeName" name="name" use="required"/>
        <xs:attribute type="OnAutoReloadParamTypeName" name="intervalInSeconds" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="CardEventTypeName">
    <xs:restriction base="xs:string">
      <xs:enumeration value="onDateChange" />
      <xs:enumeration value="onAutoReload" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="SearchBarPlacementType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="HeaderLine" />
      <xs:enumeration value="InLine" />
    </xs:restriction>
  </xs:simpleType>

    <xs:simpleType name="OnAutoReloadParamTypeName" >
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="5"/>
            <xs:maxInclusive value="3600"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="DefaultType">
    <xs:sequence>
      <xs:element type="HeaderType" name="Header" minOccurs="0"/>
      <xs:element type="ColType" name="Col" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="RowType" name="Row" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="HeaderType">
    <xs:sequence>
      <xs:element type="ColType" name="Col" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="TextBarType">
    <xs:choice>
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1" minOccurs="1"/>
    </xs:choice>
	<xs:attribute type="xs:string" name="name"/>
  </xs:complexType>

  <xs:complexType name="GroupedListType">
   <xs:sequence>
   <xs:choice maxOccurs="1" minOccurs="0">
   <xs:element type="TextBarType" name="TextBar" maxOccurs="1" minOccurs="0"/>
   </xs:choice>
    <xs:choice maxOccurs="unbounded" minOccurs="0">      
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
      <xs:element type="ItemsType" name="Items" minOccurs="0"/>
      <xs:element type="ListEventsType" name="Events" minOccurs="0"/>
      <xs:element type="SearchAttributesType" name="SearchAttributes" minOccurs="0"/>
      <xs:element type="SortOptionsType" name="SortOptions" minOccurs="0"/>
    </xs:choice>
   </xs:sequence>

    <xs:attribute type="xs:string" name="name"  use="required"/>
    <xs:attribute type="xs:string" name="master"/>
    <xs:attribute type="xs:string" name="indexBar"/>
    <xs:attribute type="xs:string" name="searchable"/>
    <xs:attribute type="SearchBarPlacementType" name="searchBarPlacement"/>
    <xs:attribute type="xs:string" name="groupBy"/>
    <xs:attribute type="xs:string" name="dataSource" use="required"/>
    <xs:attribute type="xs:string" name="hasBorder"/>
    <xs:attribute type="xs:string" name="sortBy"/>
    <xs:attribute type="xs:string" name="direction"/>
    <xs:attribute type="xs:string" name="onItemDisclosure"/>
    <xs:attribute type="xs:string" name="disabled" use="optional"/>
    <xs:attribute type="xs:string" name="groupby" use="optional"/>
	  <xs:attribute type="xs:string" name="sortInsideGroupBy" use="optional"/>
	  <xs:attribute type="xs:string" name="sortDirectionInGroup" use="optional"/>
	  <xs:attribute type="xs:string" name="numberpadDefaultField" use="optional"/>
	  <xs:attribute type="xs:boolean" name="showPreviousNextEnter" use="optional"/>
    <xs:attribute type="ItemAnimationType" name="itemAnimation" use="optional"/>
    <xs:attribute type="FlexType" name="flex" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightDefault" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightPhone" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightTablet" use="optional"/>
    <xs:attribute name="variant" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="legacy"/>
          <xs:enumeration value="v2"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute type="BooleanStringType" name="styledGroupRow" use="optional"/>
    <xs:attribute type="BooleanStringType" name="showSelectedIndicator" use="optional" default="false">
      <xs:annotation>
        <xs:documentation>When true, shows a blue vertical indicator on the left of the selected row. Supported only for Lumina or higher (schemaVersion >= 2.0). Default: false.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:simpleType name="ItemAnimationType">
      <xs:restriction base="xs:string">
          <xs:enumeration value="leftToRight" />
          <xs:enumeration value="rightToLeft" />
          <xs:enumeration value="none" />
      </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="FlexType">
      <xs:restriction base="xs:string">
          <xs:enumeration value="true" />
          <xs:enumeration value="false" />
      </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="SortOptionsType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" minOccurs="0" maxOccurs="1"/>
      <xs:element type="SortOptionType" name="SortOption" minOccurs="1" maxOccurs="unbounded"/>
      <xs:element type="EventsType" name="Events" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="binding" use="optional"/>
  </xs:complexType>

  <xs:complexType name="SortOptionType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="value" use="required"/>
  </xs:complexType>

  <xs:complexType name="SearchAttributesType">
    <xs:sequence>
      <xs:element type="SearchAttributeType" name="SearchAttribute" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SearchAttributeType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="name"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="LongPressMenuType">
    <xs:sequence>
      <xs:element type="ItemsType" name="Items" minOccurs="1"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name"  use="required"/>
    <xs:attribute type="xs:string" name="dataSource" use="required"/>
  </xs:complexType>
  
  <!-- Shared layout members, kept as a group so the standard and GroupedButtonList layout types
       reuse them without duplication. -->
  <xs:group name="ItemListLayoutMembers">
    <xs:choice>
      <xs:element type="DefaultType" name="Default" minOccurs="0"/>
      <xs:element type="TabletType" name="Tablet" minOccurs="0"/>
      <xs:element type="PhoneType" name="Phone" minOccurs="0"/>
      <xs:element type="ColType" name="Col" maxOccurs="unbounded" minOccurs="0"/>
    </xs:choice>
  </xs:group>

  <xs:complexType name="ItemListLayoutType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:group ref="ItemListLayoutMembers"/>
    </xs:choice>
  </xs:complexType>

  <!-- GroupedButtonList-only layout: standard members plus an optional <Header> (the count caption,
       e.g. "All (15)"). Header is intentionally allowed only here, not in the shared ItemListLayoutType. -->
  <xs:complexType name="GroupedButtonListItemListLayoutType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:group ref="ItemListLayoutMembers"/>
      <xs:element type="HeaderType" name="Header" minOccurs="0"/>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="MenuItemsType">
    <xs:sequence>
      <xs:element type="MenuItemType" name="MenuItem" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ResourceType" mixed="true">
    <xs:sequence>
      <xs:element type="ParametersType" name="Parameters" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="target" use="optional"/>
    <xs:attribute type="xs:string" name="type" use="optional"/>
    <xs:attribute type="xs:string" name="id" use="optional"/>
    <xs:attribute type="xs:string" name="defaultLabel" use="optional"/>
    <xs:attribute type="xs:string" name="call" use="optional"/>
    <xs:attribute type="xs:string" name="bindingMode" use="optional"/>
    <xs:attribute type="xs:string" name="binding" use="optional"/>
    <xs:attribute type="xs:string" name="defaultImage" use="optional"/>
  </xs:complexType>
  <xs:complexType name="LinkBarType">
    <xs:sequence>
      <xs:element type="ImageButtonType" name="ImageButton" maxOccurs="2"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="WindowsType">
    <xs:sequence>
      <xs:element type="ColType" name="Col" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="DefaultType" name="Default" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="LoadContainerDataType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="event" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="ImageButtonType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1"/>
      <xs:element type="EventsType" name="Events" maxOccurs="1"/>
      <xs:element type="EditibilityRolesType" name="EditibilityRoles" maxOccurs="1"/>
      <xs:element type="VisibilityRolesType" name="VisibilityRoles" maxOccurs="1"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="optional"/>
    <xs:attribute type="xs:string" name="backColor" use="optional"/>
    <xs:attribute type="xs:string" name="backendSystem" use="optional"/>
    <xs:attribute type="xs:string" name="disabled"/>
    <!-- New UX mode attributes -->
    <xs:attribute type="ButtonVariantType" name="variant" use="optional"/>
    <xs:attribute type="ButtonIconPositionType" name="iconPosition" use="optional"/>
    <xs:attribute type="BooleanStringType" name="showPortraitLabel" use="optional"/>
    <xs:attribute type="BooleanStringType" name="showPhoneLabel" use="optional"/>
    <xs:attribute type="AlignAttributeType" name="align" use="optional"/>
  </xs:complexType>
  <xs:complexType name="ButtonGroupType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1" minOccurs="0"/>
      <xs:element type="ImageButtonType" name="ImageButton" maxOccurs="unbounded" minOccurs="1"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="AlignAttributeType" name="align" use="optional"/>
  </xs:complexType>
  <xs:complexType name="MarkerInfoClickedEventType">
    <xs:sequence>
      <xs:element type="ParamsType" name="Params"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="event"/>
  </xs:complexType>
  <xs:complexType name="VisibilityRolesType" mixed="true">
    <xs:sequence>
      <xs:element type="RoleType" name="Role" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="allRoles" use="optional"/>
  </xs:complexType>
  <xs:complexType name="EditibilityRolesType" mixed="true">
    <xs:sequence>
      <xs:element type="RoleType" name="Role" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="allRoles" use="optional"/>
  </xs:complexType>
  <xs:complexType name="ParamType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="name" use="optional"/>
        <xs:attribute type="xs:string" name="value" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="PageHeaderType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="MenuItemsType" name="MenuItems" minOccurs="0"/>
      <xs:element type="SplitScreenButtonsType" name="SplitScreenButtons" minOccurs="0"/>
      <xs:element type="GuidedFlowType" name="GuidedFlow" minOccurs="0"/>
      <xs:element type="NavigationMenuContainerType" name="NavigationMenuContainer" minOccurs="0"/>
      <xs:element type="DropdownType" name="Dropdown" minOccurs="0" maxOccurs="1"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="titleBinding" use="optional"/>
    <!-- New UX: Show sync button in page header -->
    <xs:attribute type="xs:boolean" name="syncButton" use="optional"/>
  </xs:complexType>

  <xs:complexType name="GuidedFlowType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="EventsType" name="Events" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="DatasourceAttributeType" name="dataSource" use="required"/>
  </xs:complexType>

  <xs:complexType name="SplitScreenButtonsType">
    <xs:sequence>
      <xs:element type="LeftSectionButtonType" name="LeftSectionButton"/>
      <xs:element type="RightSectionButtonType" name="RightSectionButton"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LeftSectionButtonType">
      <xs:sequence>
        <xs:element type="BindingsType" name="Bindings"/>
      </xs:sequence>
      <xs:attribute type="xs:string" name="directlyVisible"/>
  </xs:complexType>

  <xs:complexType name="RightSectionButtonType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="directlyVisible"/>
  </xs:complexType>

  <xs:complexType name="UIPluginType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
      <xs:element type="UIPluginEventsType" name="Events" minOccurs="0"/>
      <xs:element type="UIPluginType" name="UIPlugin" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="optional"/>
    <xs:attribute type="xs:string" name="uiPlugin" use="optional"/>
  </xs:complexType>

  <xs:complexType name="UIPluginV2Type">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" minOccurs="0" maxOccurs="1"/>
      <xs:element type="UIPluginV2EventsType" name="Events" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="xs:string" name="uiPlugin" use="required"/>
  </xs:complexType>

  <xs:complexType name="MigratedComponentType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>


  <xs:complexType name="SectionType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
      <xs:element type="AreaType" name="Area" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="sectionName"/>
    <xs:attribute type="xs:string" name="Flex" use="optional"/>
    <xs:attribute type="xs:string" name="sectionPattern"/>
    <xs:attribute type="xs:string" name="showInfoArea" use="optional"/>
    <xs:attribute type="xs:string" name="showPasswordChangeButton" use="optional"/>
    <xs:attribute type="xs:string" name="currentTab" use="optional"/>
    <xs:attribute type="xs:string" name="directlyVisible" use="optional"/>
    <xs:attribute type="BooleanStringType" name="collapsible" use="optional"/>
  </xs:complexType>

  <xs:complexType name="GroupElementType" mixed="true">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="MergerType" name="Merger" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="InputAreaMultiLineType" name="InputAreaMultiLine"/>
      <xs:element type="SelectionBoxType" name="SelectionBox"/>
      <xs:element type="LookupType" name="Lookup"/>
      <xs:element type="InputAreaType" name="InputArea"/>
      <xs:element type="PasswordAreaType" name="PasswordArea"/>
      <xs:element type="CheckBoxType" name="CheckBox" minOccurs="0"/>
      <xs:element type="DatePickerFieldType" name="DatePickerField"/>
      <xs:element type="TimePickerFieldType" name="TimePickerField"/>
      <xs:element type="StepperType" name="Stepper"/>
      <xs:element type="MediaControlType" name="MediaControl" minOccurs="0"/>
      <xs:element type="SignatureControlType" name="SignatureControl" minOccurs="0"/>
  </xs:choice>
  <xs:attribute type="xs:string" name="name" use="optional"/>
  <xs:attribute type="xs:string" name="backendSystem" use="optional"/>
  <xs:attribute name="layout" use="optional">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="stacked"/>
        <xs:enumeration value="display"/>
        <xs:enumeration value="compact"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute type="GroupElementColumnsType" name="columns" use="optional"/>
</xs:complexType>

  <xs:complexType name="SignatureControlType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="EditibilityRolesType" name="EditibilityRoles"/>
      <xs:element type="VisibilityRolesType" name="VisibilityRoles"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="optional"/>
    <xs:attribute type="xs:string" name="colSpan" use="optional"/>
  </xs:complexType>

  <xs:complexType name="MediaControlType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="colSpan" use="optional"/>
  </xs:complexType>

  <xs:complexType name="LookupType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="EventsType" name="Events" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="optional"/>
    <xs:attribute type="xs:string" name="disabled" use="optional"/>
    <xs:attribute type="xs:string" name="colSpan" use="optional"/>
  </xs:complexType>

  <xs:complexType name="CheckBoxType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="EventsType" name="Events" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="editable"/>
    <xs:attribute type="xs:boolean" name="nullable" use="optional"/>
    <xs:attribute type="xs:string" name="disabled" use="optional"/>
    <xs:attribute type="xs:string" name="colSpan" use="optional"/>
  </xs:complexType>

  <xs:complexType name="MergerType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="DatePickerFieldType" name="DatePickerField" minOccurs="0"/>
      <xs:element type="TimePickerFieldType" name="TimePickerField" minOccurs="0"/>
      <xs:element type="InputAreaType" name="InputArea" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="StepperType" name="Stepper" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="SelectionBoxType" name="SelectionBox" minOccurs="0"/>
      <xs:element type="ImageButtonType" name="ImageButton" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="CheckBoxType" name="CheckBox" minOccurs="0"/>
      <xs:element type="PasswordAreaType" name="PasswordArea"/>
      <xs:element type="LookupType" name="Lookup" maxOccurs="unbounded" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="optional"/>
    <xs:attribute type="xs:string" name="pattern" use="optional"/>
    <xs:attribute type="xs:string" name="labelHandling" use="optional"/>
    <xs:attribute type="xs:string" name="leftRatio" use="optional"/>
    <xs:attribute type="xs:string" name="rightRatio" use="optional"/>
    <xs:attribute type="xs:string" name="disabled" use="optional"/>
    <xs:attribute type="xs:string" name="separator" use="optional"/>
    <xs:attribute type="xs:string" name="colSpan" use="optional"/>
  </xs:complexType>

  <xs:complexType name="StepperType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="minValue"/>
    <xs:attribute type="xs:string" name="maxValue"/>
    <xs:attribute type="FormatType" name="format"/>
    <xs:attribute type="xs:string" name="disabled"/>
    <xs:attribute type="xs:boolean" name="nullable" use="optional"/>
    <xs:attribute type="xs:string" name="colSpan" use="optional"/>
  </xs:complexType>

  <xs:complexType name="DatePickerFieldType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="editable"/>
    <xs:attribute type="xs:string" name="disabled" use="optional"/>
    <xs:attribute type="xs:string" name="dateVisible" use="optional"/>
    <xs:attribute type="xs:string" name="timeVisible" use="optional"/>
    <xs:attribute type="xs:boolean" name="nullable" use="optional"/>
    <xs:attribute type="xs:string" name="colSpan" use="optional"/>
  </xs:complexType>

  <xs:complexType name="TimePickerFieldType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="editable"/>
    <xs:attribute type="xs:string" name="disabled" use="optional"/>
    <xs:attribute type="xs:string" name="colSpan" use="optional"/>
  </xs:complexType>

<xs:complexType name="InputAreaMultiLineType">
  <xs:sequence>
    <xs:element type="BindingsType" name="Bindings"/>
  </xs:sequence>
  <xs:attribute type="xs:string" name="name" use="optional"/>
  <xs:attribute type="xs:string" name="editable" use="optional"/>
  <xs:attribute type="xs:string" name="noOfRows" use="optional"/>
  <xs:attribute type="xs:string" name="disabled" use="optional"/>
  <xs:attribute type="xs:string" name="colSpan" use="optional"/>
  <xs:attribute type="InputAreaMultiLineVariantType" name="variant" use="optional"/>
  <xs:attribute type="BooleanStringType" name="fillParent" use="optional"/>
</xs:complexType>

<xs:simpleType name="InputAreaMultiLineVariantType">
  <xs:restriction base="xs:string">
    <xs:enumeration value="default"/>
    <xs:enumeration value="borderless"/>
  </xs:restriction>
</xs:simpleType>

<xs:complexType name="SelectionBoxType">
  <xs:sequence>
    <xs:element type="BindingsType" name="Bindings"/>
    <xs:element type="ItemsType" name="Items" minOccurs="0"/>
    <xs:element type="EventsType" name="Events" minOccurs="0"/>
  </xs:sequence>
  <xs:attribute type="xs:string" name="name" use="optional"/>
  <xs:attribute type="xs:string" name="editable" use="optional"/>
  <xs:attribute type="xs:string" name="disabled" use="optional"/>
  <xs:attribute type="xs:string" name="backendSystem" use="optional"/>
  <xs:attribute type="xs:boolean" name="allowInitialValueEmpty" use="optional"/>
  <xs:attribute type="xs:string" name="colSpan" use="optional"/>
</xs:complexType>

<xs:complexType name="InputAreaType">
  <xs:sequence>
    <xs:element type="BindingsType" name="Bindings"/>
  </xs:sequence>
  <xs:attribute type="xs:string" name="name"/>
  <xs:attribute type="xs:string" name="editable" use="optional"/>
  <xs:attribute type="xs:boolean" name="nullable" use="optional"/>
  <xs:attribute type="xs:string" name="disabled" use="optional"/>
  <xs:attribute type="xs:string" name="colSpan" use="optional"/>
</xs:complexType>

<xs:complexType name="PasswordAreaType">
  <xs:sequence>
    <xs:element type="BindingsType" name="Bindings"/>
  </xs:sequence>
  <xs:attribute type="xs:string" name="name"/>
  <xs:attribute type="xs:string" name="colSpan" use="optional"/>
</xs:complexType>

<xs:complexType name="TabSelectorType">
  <xs:sequence>
    <xs:element type="ItemsType" name="Items"/>
    <xs:element type="EventsType" name="Events"/>
  </xs:sequence>
  <xs:attribute type="xs:string" name="name"/>
</xs:complexType>

  <xs:complexType name="InputType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="name" use="optional"/>
        <xs:attribute type="xs:string" name="type" use="optional"/>
        <xs:attribute type="xs:string" name="value" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="AppleType">
    <xs:sequence>
      <xs:element type="HeaderType" name="Header" minOccurs="0"/>
      <xs:element type="ColType" name="Col" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PhoneType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="DefaultType" name="Default"/>
      <xs:element type="AppleType" name="Apple" minOccurs="0"/>
      <xs:element type="AndroidType" name="Android" minOccurs="0"/>
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="UIDescriptionType">
    <xs:sequence>
      <xs:element type="PageType" name="Page"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="schemaVersion"/>
    <xs:attribute type="xs:string" name="layoutType" use="optional"/>
    <xs:attribute type="xs:string" name="navigation" use="optional"/>
    <xs:attribute type="xs:string" name="simpleEditorOnly" use="optional"/>
    <xs:attribute name="uxMode" use="optional">
      <xs:annotation>
        <xs:documentation>Optional rendering mode override. 'legacy' renders the contract without Lumina chrome, 'compatibility' applies Lumina chrome but preserves legacy metrics (sizes, paddings, em-base), 'lumina' applies the complete Lumina rendering including metrics. Honored only when activation is on. schemaVersion &gt;= 2 contracts always render in 'lumina' mode; explicit 'legacy' or 'compatibility' on a schemaVersion &gt;= 2 contract is rejected by code-based validation.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="legacy"/>
          <xs:enumeration value="compatibility"/>
          <xs:enumeration value="lumina"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="CockpitMapType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="EventsType" name="Events"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="height"/>
    <xs:attribute type="xs:string" name="dataSource"/>
    <xs:attribute type="xs:string" name="name"/>
    <xs:attribute type="xs:string" name="pKeyField"/>
    <xs:attribute type="xs:string" name="latitudeField"/>
    <xs:attribute type="xs:string" name="longitudeField"/>
    <xs:attribute type="xs:string" name="idField"/>
    <xs:attribute type="xs:string" name="toolTipField"/>
  </xs:complexType>
  <xs:complexType name="ParametersType">
    <xs:sequence>
      <xs:element type="InputType" name="Input" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CockpitListType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="ItemsType" name="Items"/>
      <xs:element type="EventsType" name="Events"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="name" use="optional"/>
    <xs:attribute type="xs:string" name="hasBorder" use="optional"/>
    <xs:attribute type="xs:string" name="dataSource" use="optional"/>
    <xs:attribute type="xs:string" name="maxListLength" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightDefault" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightPhone" use="optional"/>
    <xs:attribute type="RowHeightType" name="rowHeightTablet" use="optional"/>
    <xs:attribute name="variant" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="legacy"/>
          <xs:enumeration value="v2"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="ButtonPressedEventType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="SelectAreaType" name="SelectArea" minOccurs="0"/>
      <xs:element type="ShowSectionType" name="ShowSection" minOccurs="0"/>
      <xs:element type="ParamsType" name="Params" minOccurs="0"/>
      <xs:element type="ValidateAndSelectAreaType" name="ValidateAndSelectArea" minOccurs="0"/>
    </xs:choice>
    <xs:attribute type="xs:string" name="event" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ValidateAndSelectAreaType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="name" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="SelectAreaType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="name" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="ShowSectionType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:string" name="name" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="ColType" mixed="true">
    <xs:sequence>
      <xs:element type="RowType" name="Row" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="width" use="optional"/>
    <xs:attribute type="xs:string" name="height" use="optional"/>
    <xs:attribute type="xs:string" name="layoutType" use="optional"/>
    <xs:attribute type="xs:string" name="bindingId" use="optional"/>
    <xs:attribute type="xs:string" name="suffixBindingId" use="optional"/>
    <xs:attribute type="xs:string" name="flex" use="optional"/>
    <xs:attribute type="xs:string" name="align" use="optional"/>
    <xs:attribute type="xs:string" name="colSpan" use="optional"/>
    <xs:attribute type="BooleanStringType" name="showCount" use="optional"/>
    <xs:attribute type="xs:string" name="max-width" use="optional"/>
    <xs:attribute type="xs:string" name="maxWidth" use="optional"/>
  </xs:complexType>

  <xs:simpleType name="SectionPatternType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="3columns" />
      <xs:enumeration value="switch" />
      <xs:enumeration value="summary" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="CockpitSectionsType">
    <xs:sequence>
      <xs:element type="CockpitSectionType" name="CockpitSection" maxOccurs="5" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="optional"/>
  </xs:complexType>

  <xs:complexType name="InfoControlType">
    <xs:sequence>
      <xs:element type="InfoItemType" name="InfoItem" maxOccurs="2" minOccurs="1"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="optional"/>
  </xs:complexType>

  <xs:complexType name="PressedEventType">
    <xs:attribute type="xs:string" name="event"/>
  </xs:complexType>

  <xs:complexType name="InfoItemEventsType">
    <xs:sequence>
      <xs:element type="PressedEventType" name="PressedEvent" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InfoItemActionsType">
    <xs:sequence>
      <xs:element type="ImageButtonType" name="ImageButton" maxOccurs="3" minOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InfoItemType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1" maxOccurs="1"/>
      <xs:element type="InfoItemEventsType" name="Events" minOccurs="0" maxOccurs="1"/>
      <xs:element type="InfoItemActionsType" name="Actions" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="SwitchImagePressedEventType">
    <xs:attribute type="xs:string" name="event"/>
  </xs:complexType>

  <xs:complexType name="CockpitSectionEventsType">
    <xs:sequence>
      <xs:element type="PhoneButtonPressedEventType" name="PhoneButtonPressedEvent" minOccurs="0"/>
      <xs:element type="EmailButtonPressedEventType" name="EmailButtonPressedEvent" minOccurs="0"/>
      <xs:element type="SwitchImagePressedEventType" name="LeftIconPressedEvent" minOccurs="0"/>
      <xs:element type="SwitchImagePressedEventType" name="RightIconPressedEvent" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CockpitSectionType">
    <xs:sequence>
      <xs:element type="BindingsType" name="Bindings" minOccurs="0"/>
      <xs:element type="CockpitSectionEventsType" name="Events" minOccurs="0"/>
      <xs:element type="ImageButtonType" name="ImageButton" minOccurs="0"/>
      <xs:element type="ItemsType" name="Items" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="SectionPatternType" name="sectionPattern" use="required"/>
    <xs:attribute type="xs:string" name="showSeparator" use="optional"/>
    <xs:attribute type="DatasourceAttributeType" name="dataSource" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ImagePressedEventType">
    <xs:attribute type="xs:string" name="event"/>
  </xs:complexType>

  <xs:complexType name="ImagePressedEventsType">
    <xs:sequence>
       <xs:element type="ImagePressedEventType" name="ImagePressedEvent" minOccurs="0"  maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CockpitImageType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" minOccurs="1" maxOccurs="1"/>
      <xs:element type="ImagePressedEventsType" name="Events" minOccurs="0" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="NonEmptyStringType" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="BannerFilterEventsType">
    <xs:sequence>
       <xs:element type="ItemSelectedEventType" name="ItemSelectedEvent" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="BannerType">
     <xs:all>
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1"/>
      <xs:element type="BannerFilterType" name="BannerFilter" maxOccurs="1" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

<xs:complexType name="BannerFilterType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1"/>
      <xs:element type="ItemsType" name="Items" minOccurs="0" maxOccurs="1"/>
      <xs:element type="BannerFilterEventsType" name="Events" minOccurs="0" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="BannerFilter_TextLinesTypes" name="textLines" use="optional"/>
     <xs:attribute type="xs:string" name="dataSource"/>
  </xs:complexType>

  <xs:simpleType name="BannerFilter_TextLinesTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="1"/>
      <xs:enumeration value="2" />
    </xs:restriction>
  </xs:simpleType>

   <xs:complexType name="HeaderLineType">
     <xs:choice maxOccurs="unbounded" minOccurs="0">
       <xs:element type="BindingsType" name="Bindings" maxOccurs="1" minOccurs="0"/>
       <xs:element type="ImageButtonType" name="ImageButton" maxOccurs="unbounded" minOccurs="0"/>
       <xs:element type="ButtonGroupType" name="ButtonGroup" maxOccurs="unbounded" minOccurs="0"/>
       <xs:element type="DropdownType" name="Dropdown" maxOccurs="unbounded" minOccurs="0"/>
       <xs:element type="CalendarNavigationType" name="CalendarNavigation" maxOccurs="1" minOccurs="0"/>
       <xs:element type="SectionToggleButtonType" name="SectionToggleButton" maxOccurs="1" minOccurs="0"/>
       <xs:element type="MenuItemsType" name="MenuItems" maxOccurs="1" minOccurs="0"/>
     </xs:choice>
     <xs:attribute type="xs:string" name="name"/>
  </xs:complexType>

  <xs:complexType name="CalendarNavigationType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" minOccurs="0" maxOccurs="1"/>
      <xs:element type="EventsType" name="Events" minOccurs="0" maxOccurs="1"/>
    </xs:all>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="AlignAttributeType" name="align" use="optional"/>
  </xs:complexType>

  <xs:complexType name="SectionToggleButtonType">
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="AlignAttributeType" name="align" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ScopedNotificationType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="DropdownType">
    <xs:all>
      <xs:element type="BindingsType" name="Bindings"/>
      <xs:element type="ItemsType" name="Items"/>
      <xs:element type="DropdownEventsType" name="Events" minOccurs="0"/>
    </xs:all>
    <xs:attribute type="xs:string" name="name" use="required"/>
    <xs:attribute type="DatasourceAttributeType" name="dataSource" use="required"/>
    <xs:attribute type="WidthAttributeType" name="width" use="optional"/>
    <xs:attribute type="BannerFilter_TextLinesTypes" name="textLines" use="optional"/>
    <xs:attribute type="BooleanStringType" name="showPortraitLabel" use="optional"/>
    <xs:attribute type="BooleanStringType" name="showPhoneLabel" use="optional"/>
    <xs:attribute type="AlignAttributeType" name="align" use="optional"/>
  </xs:complexType>

  <xs:complexType name="DropdownEventsType">
    <xs:all>
      <xs:element type="DropdownOpeningEventType" name="DropdownOpeningEvent" minOccurs="0"/>
      <xs:element type="ItemsSelectedEventType" name="ItemsSelectedEvent" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:simpleType name="DatasourceAttributeType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(ProcessContext|ApplicationContext)::.+"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="WidthAttributeType">
    <xs:restriction base="xs:string">
      <xs:pattern value="\d+(\.\d+)?(px|em)"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FormatType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(\d+|\d*\.\d{1})"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="NonEmptyStringType">
   <xs:restriction base="xs:string">
    <xs:minLength value="1" />
    <xs:pattern value=".*[^\s].*" />
   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FormatV2Type">
   <xs:restriction base="xs:string">
      <xs:pattern value="\d+\.\d+"/>
   </xs:restriction>
</xs:simpleType>

<xs:simpleType name="DataGridPagingType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="false" />
    </xs:restriction>
</xs:simpleType>

<xs:simpleType name="ColumnMappingtypeType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="Text"/>
        <xs:enumeration value="Number"/>
    </xs:restriction>
</xs:simpleType>

<xs:simpleType name="ColWidthType">
	<xs:restriction base="xs:string">
		<xs:pattern value="\d{1,3}%"/>
	</xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="RowHeightType">
    <xs:restriction base="xs:string">
      <xs:pattern value="\d+(\.\d+)?em"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>
