﻿Option Strict On
Option Explicit On

Imports System.Collections.Generic

Partial Friend NotInheritable Class ShowcaseNavigationCatalog

    Private Shared Function CreateEntryKinds() As IReadOnlyList(Of ShowcaseNavigationEntryKind)
        Dim kinds As New List(Of ShowcaseNavigationEntryKind) From {
            ShowcaseNavigationEntryKind.LiveDemo,
            ShowcaseNavigationEntryKind.ProductSystem,
            ShowcaseNavigationEntryKind.Foundation,
            ShowcaseNavigationEntryKind.Proof
        }

        Return kinds.AsReadOnly()
    End Function

    Friend Shared Function ResolveEntryKind(entry As ShowcaseNavigationEntry) As ShowcaseNavigationEntryKind
        If entry Is Nothing Then Return ShowcaseNavigationEntryKind.LiveDemo

        Select Case entry.Category
            Case ShowcaseNavigationCategory.Foundation
                Return ShowcaseNavigationEntryKind.Foundation
            Case ShowcaseNavigationCategory.LayoutAndWorkflow,
                 ShowcaseNavigationCategory.ThemeAndLocalization,
                 ShowcaseNavigationCategory.Output
                Return ShowcaseNavigationEntryKind.ProductSystem
            Case ShowcaseNavigationCategory.Quality
                Return ShowcaseNavigationEntryKind.Proof
            Case Else
                Return ShowcaseNavigationEntryKind.LiveDemo
        End Select
    End Function

    Friend Shared Function ResolveEntryKindTitle(kind As ShowcaseNavigationEntryKind) As String
        Select Case kind
            Case ShowcaseNavigationEntryKind.Foundation
                Return "Foundation"
            Case ShowcaseNavigationEntryKind.LiveDemo
                Return "Live demos"
            Case ShowcaseNavigationEntryKind.ProductSystem
                Return "Product systems"
            Case ShowcaseNavigationEntryKind.Proof
                Return "Proof / certification"
            Case Else
                Return "Capabilities"
        End Select
    End Function

    Friend Shared Function ResolveEntryKindSummary(kind As ShowcaseNavigationEntryKind) As String
        Select Case kind
            Case ShowcaseNavigationEntryKind.Foundation
                Return "Architecture, services, and commercial boundary decisions that frame the SDK."
            Case ShowcaseNavigationEntryKind.LiveDemo
                Return "Controls and data surfaces that should visually sell the platform first."
            Case ShowcaseNavigationEntryKind.ProductSystem
                Return "Theme, RTL, layout, workflow, and output systems demonstrated through public APIs."
            Case ShowcaseNavigationEntryKind.Proof
                Return "Certification, coverage, render verification, and diagnostics kept as engineering evidence."
            Case Else
                Return "Grouped Showcase capabilities."
        End Select
    End Function
    Friend Shared Function ResolveClassificationTitle(classification As ShowcaseCapabilityClassification) As String
        Select Case classification
            Case ShowcaseCapabilityClassification.Stable
                Return "Stable"
            Case ShowcaseCapabilityClassification.Advanced
                Return "Advanced"
            Case ShowcaseCapabilityClassification.Preview
                Return "Preview"
            Case ShowcaseCapabilityClassification.Evidence
                Return "Evidence"
            Case ShowcaseCapabilityClassification.Compat
                Return "Compat"
            Case Else
                Return "Unclassified"
        End Select
    End Function

    Friend Shared Function ResolveClassificationSummary(classification As ShowcaseCapabilityClassification) As String
        Select Case classification
            Case ShowcaseCapabilityClassification.Stable
                Return "Primary consumer-facing V1 surface intended for normal product use."
            Case ShowcaseCapabilityClassification.Advanced
                Return "Supported public integration surface that requires deeper lifetime, ownership, or product knowledge."
            Case ShowcaseCapabilityClassification.Preview
                Return "Public preview surface whose contract may still evolve."
            Case ShowcaseCapabilityClassification.Evidence
                Return "Read-only quality, documentation, packaging, or certification evidence; not presented as a primary V1 feature."
            Case ShowcaseCapabilityClassification.Compat
                Return "Compatibility-only surface retained for migration or legacy integration."
            Case Else
                Return "No capability classification is available."
        End Select
    End Function

End Class
