{
  "schema": "Nexamas.UI.ProductControlsPublicApiBaseline/1.0",
  "phase": "Phase1PublicApiFreezeAudit",
  "purpose": "Frozen source-level public API baseline for the eight governed product controls. The source-contract suite rejects accidental public API drift until a deliberate API review updates this baseline.",
  "normalization": "VB comments and string literal contents are removed, then each line beginning with Public is whitespace-normalized and stored as relativePath|declaration.",
  "changePolicy": {
    "allowedOnlyBy": "Deliberate Public API Freeze review",
    "requires": "reviewed API diff, docs/update note, compatibility decision, and this baseline updated in the same change",
    "compactPreviewRule": "New public Adapter/Provider/Source/WriteBack/Routing contracts remain forbidden by Nexamas.UI.ProductControlsPublicExposureManifest.json."
  },
  "totalPublicDeclarationCount": 305,
  "productControls": [
    {
      "id": "treegrid",
      "displayName": "TreeGrid",
      "sourceRoot": "Component/Data/TreeGrid",
      "publicDeclarationCount": 60,
      "sha256": "D5FE1CB61E7ACB2187787823BCA4E98E4F3A0AA0892DF9C8BBD80F4D19316B68",
      "publicDeclarations": [
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:102|Public Function UpdateEditDraft(value As String) As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:112|Public Function CommitEdit(Optional value As String = Nothing) As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:134|Public Function CancelEdit() As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:143|Public Function TrySetRowLabel(rowKey As String,",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:148|Public Function TrySetRowValue(rowKey As String,",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:154|Public Function GetRowLabel(rowKey As String) As String",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:15|Public Event RowEditStarted As EventHandler",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:160|Public Function GetRowValue(rowKey As String,",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:169|Public Function GetRowValues(rowKey As String) As IReadOnlyList(Of String)",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:16|Public Event RowEditCommitted As EventHandler",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:17|Public Event RowEditCanceled As EventHandler",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:19|Public ReadOnly Property IsEditingRow As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:25|Public ReadOnly Property EditingRowKey As String",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:31|Public ReadOnly Property EditingColumnKey As String",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:37|Public ReadOnly Property IsEditingLabel As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:43|Public ReadOnly Property EditingDraftText As String",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:49|Public ReadOnly Property EditingOriginalText As String",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:55|Public ReadOnly Property EditRevision As Integer",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:61|Public Function CanEditRow(rowKey As String) As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:65|Public Function BeginEditSelectedLabel() As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:70|Public Function BeginEditSelectedValue(columnKey As String) As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.Editing.vb:75|Public Function BeginEdit(rowKey As String,",
        "Component/Data/TreeGrid/MASTreeGrid.SortFilter.vb:101|Public Function ClearRowSort() As MASTreeGrid",
        "Component/Data/TreeGrid/MASTreeGrid.SortFilter.vb:15|Public ReadOnly Property HasRowFilter As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.SortFilter.vb:21|Public ReadOnly Property RowFilterText As String",
        "Component/Data/TreeGrid/MASTreeGrid.SortFilter.vb:27|Public ReadOnly Property IsSorted As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.SortFilter.vb:33|Public ReadOnly Property SortColumnKey As String",
        "Component/Data/TreeGrid/MASTreeGrid.SortFilter.vb:39|Public ReadOnly Property SortAscending As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.SortFilter.vb:45|Public Function FilterRows(filterText As String) As MASTreeGrid",
        "Component/Data/TreeGrid/MASTreeGrid.SortFilter.vb:59|Public Function ClearRowFilter() As MASTreeGrid",
        "Component/Data/TreeGrid/MASTreeGrid.SortFilter.vb:71|Public Function SortRowsByLabel(Optional ascending As Boolean = True) As MASTreeGrid",
        "Component/Data/TreeGrid/MASTreeGrid.SortFilter.vb:84|Public Function SortRowsByColumn(columnKey As String,",
        "Component/Data/TreeGrid/MASTreeGrid.vb:142|Public Sub New()",
        "Component/Data/TreeGrid/MASTreeGrid.vb:146|Public Shared Function Create(Optional title As String = Nothing) As MASTreeGrid",
        "Component/Data/TreeGrid/MASTreeGrid.vb:156|Public Event TreeGridChanged As EventHandler",
        "Component/Data/TreeGrid/MASTreeGrid.vb:157|Public Event SelectedRowChanged As EventHandler",
        "Component/Data/TreeGrid/MASTreeGrid.vb:158|Public Event RowExpandedChanged As EventHandler",
        "Component/Data/TreeGrid/MASTreeGrid.vb:160|Public Property Title As String",
        "Component/Data/TreeGrid/MASTreeGrid.vb:173|Public ReadOnly Property ColumnCount As Integer",
        "Component/Data/TreeGrid/MASTreeGrid.vb:179|Public ReadOnly Property RowCount As Integer",
        "Component/Data/TreeGrid/MASTreeGrid.vb:185|Public ReadOnly Property VisibleRowCount As Integer",
        "Component/Data/TreeGrid/MASTreeGrid.vb:191|Public ReadOnly Property SelectedRowKey As String",
        "Component/Data/TreeGrid/MASTreeGrid.vb:197|Public ReadOnly Property SummaryText As String",
        "Component/Data/TreeGrid/MASTreeGrid.vb:203|Public ReadOnly Property FirstVisibleRowIndex As Integer",
        "Component/Data/TreeGrid/MASTreeGrid.vb:209|Public ReadOnly Property LastVisibleRowIndex As Integer",
        "Component/Data/TreeGrid/MASTreeGrid.vb:217|Public ReadOnly Property RowViewportCapacity As Integer",
        "Component/Data/TreeGrid/MASTreeGrid.vb:223|Public Function GetColumnKeys() As IReadOnlyList(Of String)",
        "Component/Data/TreeGrid/MASTreeGrid.vb:231|Public Function GetRowKeys() As IReadOnlyList(Of String)",
        "Component/Data/TreeGrid/MASTreeGrid.vb:237|Public Function AddColumn(columnKey As String,",
        "Component/Data/TreeGrid/MASTreeGrid.vb:250|Public Function AddRootRow(rowKey As String,",
        "Component/Data/TreeGrid/MASTreeGrid.vb:272|Public Function AddChildRow(parentRowKey As String,",
        "Component/Data/TreeGrid/MASTreeGrid.vb:297|Public Function ClearRows() As MASTreeGrid",
        "Component/Data/TreeGrid/MASTreeGrid.vb:319|Public Function ClearColumns() As MASTreeGrid",
        "Component/Data/TreeGrid/MASTreeGrid.vb:333|Public Function SelectRow(rowKey As String) As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.vb:341|Public Function EnsureRowVisible(rowKey As String) As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.vb:354|Public Function ScrollRows(deltaRows As Integer) As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.vb:364|Public Function ToggleRow(rowKey As String) As Boolean",
        "Component/Data/TreeGrid/MASTreeGrid.vb:370|Public Function SetRowExpanded(rowKey As String,",
        "Component/Data/TreeGrid/MASTreeGrid.vb:385|Public Function WithTitle(value As String) As MASTreeGrid",
        "Component/Data/TreeGrid/MASTreeGrid.vb:390|Public Shadows Function WithSize(sizeIntent As MASSize) As MASTreeGrid"
      ]
    },
    {
      "id": "pivottable",
      "displayName": "PivotTable",
      "sourceRoot": "Component/Data/PivotTable",
      "publicDeclarationCount": 25,
      "sha256": "4B096D3C46FF1DD2E097E628501456B711D945B8F950E693B59B0863FCF9BD39",
      "publicDeclarations": [
        "Component/Data/PivotTable/MASPivotTable.vb:103|Public Sub New()",
        "Component/Data/PivotTable/MASPivotTable.vb:107|Public Shared Function Create(Optional title As String = Nothing) As MASPivotTable",
        "Component/Data/PivotTable/MASPivotTable.vb:117|Public Event PivotTableChanged As EventHandler",
        "Component/Data/PivotTable/MASPivotTable.vb:118|Public Event SelectedCellChanged As EventHandler",
        "Component/Data/PivotTable/MASPivotTable.vb:120|Public Property Title As String",
        "Component/Data/PivotTable/MASPivotTable.vb:133|Public ReadOnly Property RowCount As Integer",
        "Component/Data/PivotTable/MASPivotTable.vb:139|Public ReadOnly Property ColumnCount As Integer",
        "Component/Data/PivotTable/MASPivotTable.vb:145|Public ReadOnly Property SelectedRowKey As String",
        "Component/Data/PivotTable/MASPivotTable.vb:151|Public ReadOnly Property SelectedColumnKey As String",
        "Component/Data/PivotTable/MASPivotTable.vb:157|Public ReadOnly Property GrandTotal As Decimal",
        "Component/Data/PivotTable/MASPivotTable.vb:164|Public ReadOnly Property SummaryText As String",
        "Component/Data/PivotTable/MASPivotTable.vb:170|Public Function GetRowKeys() As IReadOnlyList(Of String)",
        "Component/Data/PivotTable/MASPivotTable.vb:178|Public Function GetColumnKeys() As IReadOnlyList(Of String)",
        "Component/Data/PivotTable/MASPivotTable.vb:186|Public Function AddColumn(columnKey As String, header As String) As MASPivotTable",
        "Component/Data/PivotTable/MASPivotTable.vb:204|Public Function AddRow(rowKey As String, label As String) As MASPivotTable",
        "Component/Data/PivotTable/MASPivotTable.vb:222|Public Function SetCellValue(rowKey As String, columnKey As String, value As Decimal) As MASPivotTable",
        "Component/Data/PivotTable/MASPivotTable.vb:243|Public Function GetCellValue(rowKey As String, columnKey As String) As Decimal",
        "Component/Data/PivotTable/MASPivotTable.vb:249|Public Function GetRowTotal(rowKey As String) As Decimal",
        "Component/Data/PivotTable/MASPivotTable.vb:258|Public Function GetColumnTotal(columnKey As String) As Decimal",
        "Component/Data/PivotTable/MASPivotTable.vb:267|Public Function SelectCell(rowKey As String, columnKey As String) As Boolean",
        "Component/Data/PivotTable/MASPivotTable.vb:279|Public Function ClearRows() As MASPivotTable",
        "Component/Data/PivotTable/MASPivotTable.vb:299|Public Function ClearColumns() As MASPivotTable",
        "Component/Data/PivotTable/MASPivotTable.vb:316|Public Function ClearAll() As MASPivotTable",
        "Component/Data/PivotTable/MASPivotTable.vb:340|Public Function WithTitle(value As String) As MASPivotTable",
        "Component/Data/PivotTable/MASPivotTable.vb:345|Public Shadows Function WithSize(sizeIntent As MASSize) As MASPivotTable"
      ]
    },
    {
      "id": "kanban",
      "displayName": "KanbanBoard",
      "sourceRoot": "Component/Data/KanbanBoard",
      "publicDeclarationCount": 46,
      "sha256": "33E1B4E105858EFBBB58463C3B4AC3CC46EBE95C4D32464334F560AFE4F51D84",
      "publicDeclarations": [
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:108|Public Function RestoreBoardSnapshot(snapshot As MASKanbanBoardSnapshot) As Boolean",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:17|Public NotInheritable Class MASKanbanBoardSnapshot",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:184|Public Function ResetBoardViewport() As MASKanbanBoard",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:18|Public Sub New(version As Integer,",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:38|Public ReadOnly Property Version As Integer",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:39|Public ReadOnly Property Title As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:40|Public ReadOnly Property SelectedColumnKey As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:41|Public ReadOnly Property SelectedCardKey As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:42|Public ReadOnly Property LeftColumnIndex As Integer",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:43|Public ReadOnly Property Columns As IReadOnlyList(Of MASKanbanColumnSnapshot)",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:49|Public NotInheritable Class MASKanbanColumnSnapshot",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:50|Public Sub New(key As String,",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:66|Public ReadOnly Property Key As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:67|Public ReadOnly Property Title As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:68|Public ReadOnly Property TopCardIndex As Integer",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:69|Public ReadOnly Property Cards As IReadOnlyList(Of MASKanbanCardSnapshot)",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:75|Public NotInheritable Class MASKanbanCardSnapshot",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:76|Public Sub New(key As String,",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:86|Public ReadOnly Property Key As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:87|Public ReadOnly Property Title As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:88|Public ReadOnly Property Detail As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:89|Public ReadOnly Property BadgeText As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.Persistence.vb:94|Public Function CreateBoardSnapshot() As MASKanbanBoardSnapshot",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:102|Public ReadOnly Property SelectedColumnKey As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:110|Public ReadOnly Property SelectedCardKey As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:118|Public ReadOnly Property SummaryText As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:124|Public Function GetColumnKeys() As IReadOnlyList(Of String)",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:132|Public Function GetCardKeys(columnKey As String) As IReadOnlyList(Of String)",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:143|Public Function AddColumn(columnKey As String,",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:164|Public Function AddCard(columnKey As String,",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:192|Public Function SelectCard(cardKey As String) As Boolean",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:199|Public Function MoveCard(cardKey As String,",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:211|Public Function MoveCardToIndex(cardKey As String,",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:250|Public Function MoveSelectedCardToColumn(targetColumnKey As String) As Boolean",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:256|Public Function MoveSelectedCardBy(delta As Integer) As Boolean",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:263|Public Function ClearBoard() As MASKanbanBoard",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:281|Public Function WithTitle(value As String) As MASKanbanBoard",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:286|Public Shadows Function WithSize(sizeIntent As MASSize) As MASKanbanBoard",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:58|Public Sub New()",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:62|Public Shared Function Create(Optional title As String = Nothing) As MASKanbanBoard",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:73|Public Event BoardChanged As EventHandler",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:74|Public Event SelectedCardChanged As EventHandler",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:75|Public Event CardMoved As EventHandler",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:77|Public Property Title As String",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:90|Public ReadOnly Property ColumnCount As Integer",
        "Component/Data/KanbanBoard/MASKanbanBoard.vb:96|Public ReadOnly Property CardCount As Integer"
      ]
    },
    {
      "id": "agenda",
      "displayName": "AgendaView",
      "sourceRoot": "Component/Data/AgendaView",
      "publicDeclarationCount": 27,
      "sha256": "5EA4C2590AE38A0718A7FDF52D8A29C97D282A859A9EC7066AF97C4979408C1E",
      "publicDeclarations": [
        "Component/Data/AgendaView/MASAgendaView.vb:107|Public Property ViewMode As MASAgendaViewMode",
        "Component/Data/AgendaView/MASAgendaView.vb:123|Public Property StartHour As Integer",
        "Component/Data/AgendaView/MASAgendaView.vb:139|Public Property EndHour As Integer",
        "Component/Data/AgendaView/MASAgendaView.vb:155|Public ReadOnly Property EventCount As Integer",
        "Component/Data/AgendaView/MASAgendaView.vb:161|Public ReadOnly Property SelectedEventKey As String",
        "Component/Data/AgendaView/MASAgendaView.vb:169|Public ReadOnly Property SummaryText As String",
        "Component/Data/AgendaView/MASAgendaView.vb:175|Public Function GetEventKeys() As IReadOnlyList(Of String)",
        "Component/Data/AgendaView/MASAgendaView.vb:183|Public Function AddEvent(eventKey As String,",
        "Component/Data/AgendaView/MASAgendaView.vb:204|Public Function ClearEvents() As MASAgendaView",
        "Component/Data/AgendaView/MASAgendaView.vb:218|Public Function SelectEvent(eventKey As String) As Boolean",
        "Component/Data/AgendaView/MASAgendaView.vb:225|Public Function MovePreviousDay() As MASAgendaView",
        "Component/Data/AgendaView/MASAgendaView.vb:230|Public Function MoveNextDay() As MASAgendaView",
        "Component/Data/AgendaView/MASAgendaView.vb:235|Public Function MovePreviousRange() As MASAgendaView",
        "Component/Data/AgendaView/MASAgendaView.vb:240|Public Function MoveNextRange() As MASAgendaView",
        "Component/Data/AgendaView/MASAgendaView.vb:245|Public Function MoveToday() As MASAgendaView",
        "Component/Data/AgendaView/MASAgendaView.vb:266|Public Function WithTitle(value As String) As MASAgendaView",
        "Component/Data/AgendaView/MASAgendaView.vb:271|Public Function WithDate(value As Date) As MASAgendaView",
        "Component/Data/AgendaView/MASAgendaView.vb:276|Public Function WithViewMode(value As MASAgendaViewMode) As MASAgendaView",
        "Component/Data/AgendaView/MASAgendaView.vb:281|Public Function WithHours(startHour As Integer,",
        "Component/Data/AgendaView/MASAgendaView.vb:293|Public Shadows Function WithSize(sizeIntent As MASSize) As MASAgendaView",
        "Component/Data/AgendaView/MASAgendaView.vb:60|Public Sub New()",
        "Component/Data/AgendaView/MASAgendaView.vb:64|Public Shared Function Create(Optional title As String = Nothing,",
        "Component/Data/AgendaView/MASAgendaView.vb:76|Public Event AgendaChanged As EventHandler",
        "Component/Data/AgendaView/MASAgendaView.vb:77|Public Event SelectedEventChanged As EventHandler",
        "Component/Data/AgendaView/MASAgendaView.vb:79|Public Property Title As String",
        "Component/Data/AgendaView/MASAgendaView.vb:92|Public Property Day As Date",
        "Component/Data/AgendaView/MASAgendaViewMode.vb:11|Public Enum MASAgendaViewMode"
      ]
    },
    {
      "id": "dashboardgrid",
      "displayName": "DashboardGrid",
      "sourceRoot": "Component/Data/DashboardGrid",
      "publicDeclarationCount": 37,
      "sha256": "85FB8B3BDD5032F58D3ACF2BA79EF355A427314AF00E9B7CE6A5349653553A52",
      "publicDeclarations": [
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:124|Public Function MoveWidget(widgetKey As String,",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:143|Public Function ResizeWidget(widgetKey As String,",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:160|Public Function ResetWidgetViewport() As MASDashboardGrid",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:17|Public NotInheritable Class MASDashboardGridLayoutSnapshot",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:18|Public Sub New(version As Integer,",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:36|Public ReadOnly Property Version As Integer",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:37|Public ReadOnly Property Title As String",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:38|Public ReadOnly Property SelectedWidgetKey As String",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:39|Public ReadOnly Property TopIndex As Integer",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:40|Public ReadOnly Property Widgets As IReadOnlyList(Of MASDashboardGridWidgetSnapshot)",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:46|Public NotInheritable Class MASDashboardGridWidgetSnapshot",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:47|Public Sub New(key As String,",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:61|Public ReadOnly Property Key As String",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:62|Public ReadOnly Property Title As String",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:63|Public ReadOnly Property ValueText As String",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:64|Public ReadOnly Property Caption As String",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:65|Public ReadOnly Property SpanColumns As Integer",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:66|Public ReadOnly Property SpanRows As Integer",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:71|Public Function CreateLayoutSnapshot() As MASDashboardGridLayoutSnapshot",
        "Component/Data/DashboardGrid/MASDashboardGrid.Persistence.vb:85|Public Function RestoreLayoutSnapshot(snapshot As MASDashboardGridLayoutSnapshot) As Boolean",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:104|Public Event DashboardGridChanged As EventHandler",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:105|Public Event SelectedWidgetChanged As EventHandler",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:107|Public Property Title As String",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:120|Public ReadOnly Property ItemCount As Integer",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:126|Public ReadOnly Property SelectedIndex As Integer",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:132|Public ReadOnly Property SelectedWidgetKey As String",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:139|Public ReadOnly Property SummaryText As String",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:145|Public Function GetWidgetKeys() As IReadOnlyList(Of String)",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:153|Public Function AddWidget(widgetKey As String,",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:176|Public Function ClearWidgets() As MASDashboardGrid",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:190|Public Function SelectWidget(widgetKey As String) As Boolean",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:197|Public Function MovePrevious() As MASDashboardGrid",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:202|Public Function MoveNext() As MASDashboardGrid",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:207|Public Function WithTitle(value As String) As MASDashboardGrid",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:212|Public Shadows Function WithSize(sizeIntent As MASSize) As MASDashboardGrid",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:90|Public Sub New()",
        "Component/Data/DashboardGrid/MASDashboardGrid.vb:94|Public Shared Function Create(Optional title As String = Nothing) As MASDashboardGrid"
      ]
    },
    {
      "id": "masterdetail",
      "displayName": "MasterDetailView",
      "sourceRoot": "Component/Data/MasterDetailView",
      "publicDeclarationCount": 35,
      "sha256": "1454E2882D223F0377136730C39AE4BAC5E86EE0FCD2CDCDFE80A428D14BD3F4",
      "publicDeclarations": [
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:125|Public Function ResetMasterViewport() As MASMasterDetailView",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:17|Public NotInheritable Class MASMasterDetailViewSnapshot",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:18|Public Sub New(version As Integer,",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:37|Public ReadOnly Property Version As Integer",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:38|Public ReadOnly Property Title As String",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:39|Public ReadOnly Property SelectedItemKey As String",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:40|Public ReadOnly Property TopIndex As Integer",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:41|Public ReadOnly Property Items As IReadOnlyList(Of MASMasterDetailItemSnapshot)",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:47|Public NotInheritable Class MASMasterDetailItemSnapshot",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:48|Public Sub New(key As String,",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:62|Public ReadOnly Property Key As String",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:63|Public ReadOnly Property Title As String",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:64|Public ReadOnly Property Subtitle As String",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:65|Public ReadOnly Property DetailTitle As String",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:66|Public ReadOnly Property DetailText As String",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:67|Public ReadOnly Property BadgeText As String",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:72|Public Function CreateViewSnapshot() As MASMasterDetailViewSnapshot",
        "Component/Data/MasterDetailView/MASMasterDetailView.Persistence.vb:86|Public Function RestoreViewSnapshot(snapshot As MASMasterDetailViewSnapshot) As Boolean",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:100|Public ReadOnly Property SummaryText As String",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:106|Public Function GetItemKeys() As IReadOnlyList(Of String)",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:114|Public Function AddItem(itemKey As String,",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:138|Public Function ClearItems() As MASMasterDetailView",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:153|Public Function SelectItem(itemKey As String) As Boolean",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:160|Public Function MovePrevious() As MASMasterDetailView",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:165|Public Function MoveNext() As MASMasterDetailView",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:170|Public Function WithTitle(value As String) As MASMasterDetailView",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:175|Public Shadows Function WithSize(sizeIntent As MASSize) As MASMasterDetailView",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:51|Public Sub New()",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:55|Public Shared Function Create(Optional title As String = Nothing) As MASMasterDetailView",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:65|Public Event MasterDetailChanged As EventHandler",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:66|Public Event SelectedItemChanged As EventHandler",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:68|Public Property Title As String",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:81|Public ReadOnly Property ItemCount As Integer",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:87|Public ReadOnly Property SelectedIndex As Integer",
        "Component/Data/MasterDetailView/MASMasterDetailView.vb:93|Public ReadOnly Property SelectedItemKey As String"
      ]
    },
    {
      "id": "applayout",
      "displayName": "AppLayout",
      "sourceRoot": "Component/Container/AppLayout",
      "publicDeclarationCount": 37,
      "sha256": "16FA4251026E73E5651AF5BB25AF9926B91E82995DCA68DF5B8C755F8E602B13",
      "publicDeclarations": [
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:15|Public NotInheritable Class MASAppLayoutSnapshot",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:16|Public Sub New(version As Integer,",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:42|Public ReadOnly Property Version As Integer",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:43|Public ReadOnly Property Title As String",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:44|Public ReadOnly Property NavigationTitle As String",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:45|Public ReadOnly Property NavigationText As String",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:46|Public ReadOnly Property ContentTitle As String",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:47|Public ReadOnly Property ContentText As String",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:48|Public ReadOnly Property DetailTitle As String",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:49|Public ReadOnly Property DetailText As String",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:50|Public ReadOnly Property StatusText As String",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:51|Public ReadOnly Property ShowNavigation As Boolean",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:52|Public ReadOnly Property ShowDetails As Boolean",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:53|Public ReadOnly Property ShowStatusBar As Boolean",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:58|Public Function CreateLayoutSnapshot() As MASAppLayoutSnapshot",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:74|Public Function RestoreLayoutSnapshot(snapshot As MASAppLayoutSnapshot) As Boolean",
        "Component/Container/AppLayout/MASAppLayout.Persistence.vb:92|Public Function ResetLayoutSlots() As MASAppLayout",
        "Component/Container/AppLayout/MASAppLayout.vb:100|Public Property ContentTitle As String",
        "Component/Container/AppLayout/MASAppLayout.vb:112|Public Property ContentText As String",
        "Component/Container/AppLayout/MASAppLayout.vb:124|Public Property DetailTitle As String",
        "Component/Container/AppLayout/MASAppLayout.vb:136|Public Property DetailText As String",
        "Component/Container/AppLayout/MASAppLayout.vb:148|Public Property StatusText As String",
        "Component/Container/AppLayout/MASAppLayout.vb:160|Public Property ShowNavigation As Boolean",
        "Component/Container/AppLayout/MASAppLayout.vb:172|Public Property ShowDetails As Boolean",
        "Component/Container/AppLayout/MASAppLayout.vb:184|Public Property ShowStatusBar As Boolean",
        "Component/Container/AppLayout/MASAppLayout.vb:196|Public ReadOnly Property LayoutModeText As String",
        "Component/Container/AppLayout/MASAppLayout.vb:202|Public ReadOnly Property SummaryText As String",
        "Component/Container/AppLayout/MASAppLayout.vb:208|Public Function SetNavigation(title As String, text As String) As MASAppLayout",
        "Component/Container/AppLayout/MASAppLayout.vb:214|Public Function SetContent(title As String, text As String) As MASAppLayout",
        "Component/Container/AppLayout/MASAppLayout.vb:220|Public Function SetDetails(title As String, text As String) As MASAppLayout",
        "Component/Container/AppLayout/MASAppLayout.vb:226|Public Function WithTitle(value As String) As MASAppLayout",
        "Component/Container/AppLayout/MASAppLayout.vb:231|Public Shadows Function WithSize(sizeIntent As MASSize) As MASAppLayout",
        "Component/Container/AppLayout/MASAppLayout.vb:49|Public Sub New()",
        "Component/Container/AppLayout/MASAppLayout.vb:53|Public Shared Function Create(Optional title As String = Nothing) As MASAppLayout",
        "Component/Container/AppLayout/MASAppLayout.vb:63|Public Property Title As String",
        "Component/Container/AppLayout/MASAppLayout.vb:76|Public Property NavigationTitle As String",
        "Component/Container/AppLayout/MASAppLayout.vb:88|Public Property NavigationText As String"
      ]
    },
    {
      "id": "splitview",
      "displayName": "SplitView",
      "sourceRoot": "Component/Container/SplitView",
      "publicDeclarationCount": 38,
      "sha256": "A2B45A7710E045918CD9E8E9EB9B1970A290D8ABABF3FF1CF83FFF459581DFF7",
      "publicDeclarations": [
        "Component/Container/SplitView/MASSplitView.Persistence.vb:14|Public NotInheritable Class MASSplitViewLayoutSnapshot",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:15|Public Sub New(version As Integer,",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:44|Public ReadOnly Property Version As Integer",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:45|Public ReadOnly Property Title As String",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:46|Public ReadOnly Property LeftPaneTitle As String",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:47|Public ReadOnly Property ContentPaneTitle As String",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:48|Public ReadOnly Property RightPaneTitle As String",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:49|Public ReadOnly Property LeftPaneText As String",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:50|Public ReadOnly Property ContentPaneText As String",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:51|Public ReadOnly Property RightPaneText As String",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:52|Public ReadOnly Property LeftPaneRatio As Single",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:53|Public ReadOnly Property RightPaneRatio As Single",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:54|Public ReadOnly Property LeftPaneCollapsed As Boolean",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:55|Public ReadOnly Property RightPaneCollapsed As Boolean",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:60|Public Function CreateLayoutSnapshot() As MASSplitViewLayoutSnapshot",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:76|Public Function RestoreLayoutSnapshot(snapshot As MASSplitViewLayoutSnapshot) As Boolean",
        "Component/Container/SplitView/MASSplitView.Persistence.vb:98|Public Function ResetPaneLayout() As MASSplitView",
        "Component/Container/SplitView/MASSplitView.vb:100|Public Event SplitViewChanged As EventHandler",
        "Component/Container/SplitView/MASSplitView.vb:102|Public Property Title As String",
        "Component/Container/SplitView/MASSplitView.vb:116|Public Property LeftPaneTitle As String",
        "Component/Container/SplitView/MASSplitView.vb:129|Public Property ContentPaneTitle As String",
        "Component/Container/SplitView/MASSplitView.vb:142|Public Property RightPaneTitle As String",
        "Component/Container/SplitView/MASSplitView.vb:155|Public Property LeftPaneText As String",
        "Component/Container/SplitView/MASSplitView.vb:168|Public Property ContentPaneText As String",
        "Component/Container/SplitView/MASSplitView.vb:181|Public Property RightPaneText As String",
        "Component/Container/SplitView/MASSplitView.vb:194|Public Property LeftPaneRatio As Single",
        "Component/Container/SplitView/MASSplitView.vb:211|Public Property RightPaneRatio As Single",
        "Component/Container/SplitView/MASSplitView.vb:228|Public Property IsLeftPaneCollapsed As Boolean",
        "Component/Container/SplitView/MASSplitView.vb:241|Public Property IsRightPaneCollapsed As Boolean",
        "Component/Container/SplitView/MASSplitView.vb:254|Public ReadOnly Property SummaryText As String",
        "Component/Container/SplitView/MASSplitView.vb:260|Public Function SetPaneTexts(leftText As String,",
        "Component/Container/SplitView/MASSplitView.vb:269|Public Function CollapseLeft(Optional collapsed As Boolean = True) As MASSplitView",
        "Component/Container/SplitView/MASSplitView.vb:274|Public Function CollapseRight(Optional collapsed As Boolean = True) As MASSplitView",
        "Component/Container/SplitView/MASSplitView.vb:279|Public Function ExpandAll() As MASSplitView",
        "Component/Container/SplitView/MASSplitView.vb:285|Public Function WithTitle(value As String) As MASSplitView",
        "Component/Container/SplitView/MASSplitView.vb:290|Public Shadows Function WithSize(sizeIntent As MASSize) As MASSplitView",
        "Component/Container/SplitView/MASSplitView.vb:85|Public Sub New()",
        "Component/Container/SplitView/MASSplitView.vb:89|Public Shared Function Create(Optional title As String = Nothing) As MASSplitView"
      ]
    }
  ],
  "requiredPublicApiBaselineAssets": [
    "eng/tests/Nexamas.UI.ProductControlsGovernanceManifest.json",
    "eng/tests/Nexamas.UI.ProductControlsPublicExposureManifest.json",
    "eng/tests/Nexamas.UI.ProductControlsPublicApiBaseline.json",
    "docs/quality-proof/product-controls-public-api-freeze-audit.md"
  ],
  "disambiguation": "Public declaration identifiers include source line numbers as path:line|declaration to distinguish same-signature declarations inside nested DTOs."
}
