Option Strict On
Option Explicit On

Namespace Nexamas.UI.Theming

    ''' <summary>
    ''' Public root contract for selecting and identifying a Nexamas UI application theme.
    ''' The SDK-facing contract intentionally exposes only stable identity facts; deep
    ''' foundation, family, and component recipe contracts are internal Nexamas UI
    ''' implementation details consumed by controls through Friend theme contracts.
    ''' </summary>
    ''' <remarks>
    ''' Public consumers observe and select a registered theme by identity. Nexamas UI owns
    ''' registration and how that identity is decomposed into button, input, surface,
    ''' scroll, menu, and other visual recipes.
    ''' Arbitrary public IMASAppTheme registration is intentionally closed before v1.
    ''' This identity-only public contract preserves selection and diagnostics while
    ''' keeping custom recipe registration behind Nexamas UI-owned Friend seams until
    ''' a complete public theme-builder contract is ready for v1.
    ''' </remarks>
    Public Interface IMASAppTheme

        ''' <summary>
        ''' Gets the stable theme identifier used by registries, windows, and Theme Studio snapshots.
        ''' </summary>
        ReadOnly Property Id As String

        ''' <summary>
        ''' Gets the human-readable display name shown in selectors and diagnostics.
        ''' </summary>
        ReadOnly Property DisplayName As String

        ''' <summary>
        ''' Gets the immutable version stamp of the theme definition.
        ''' </summary>
        ReadOnly Property Version As Integer

    End Interface

End Namespace
