Option Strict On
Option Explicit On

Imports System.Collections.Generic
Imports Nexamas.UI.Architecture
Imports Nexamas.UI.Components.DropDownMenu
Imports Nexamas.UI.Components.ListPopup
Imports Nexamas.UI.Components.ListRendering
Imports Nexamas.UI.Controls
Imports Nexamas.UI.FloatRuntime
Imports Nexamas.UI.Rendering
Imports Nexamas.UI.Values

Namespace Nexamas.UI.Components

    ''' <summary>
    ''' Built-in architecture descriptors owned by the TextInput family.
    ''' </summary>
    Friend NotInheritable Class MASComponentTextInputArchitectureProvider
        Implements Nexamas.UI.Architecture.IMASComponentRegistrationProvider

        Public Function GetComponents() As IEnumerable(Of Nexamas.UI.Architecture.MASComponentDescriptor) Implements Nexamas.UI.Architecture.IMASComponentRegistrationProvider.GetComponents
            Dim list As New List(Of MASComponentDescriptor)()

            list.Add(MASComponentDescriptor.Create(Of MASNumericTextBox)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.NumericInput,
                surfaceFamily:=CommonEnums.SurfaceFamily.Input,
                materialRole:=MASMaterialRole.Input,
                interactionRole:=MASInteractionRole.Input,
                shadowRole:=MASShadowRole.Control,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Input,
            themeColorRole:=NexamasUIColorRole.Border,
                themeStateRole:=NexamasUIStateRole.Editable,
                inputRole:=MASInputRole.TextInput,
                focusRole:=MASFocusRole.Focusable
            ))

            list.Add(MASComponentDescriptor.Create(Of MASPasswordTextBox)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.PasswordBox,
                surfaceFamily:=CommonEnums.SurfaceFamily.Input,
                materialRole:=MASMaterialRole.Input,
                interactionRole:=MASInteractionRole.Input,
                shadowRole:=MASShadowRole.Control,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Input,
            themeColorRole:=NexamasUIColorRole.Border,
                themeStateRole:=NexamasUIStateRole.Editable,
                inputRole:=MASInputRole.TextInput,
                focusRole:=MASFocusRole.Focusable
            ))

            list.Add(MASComponentDescriptor.Create(Of MASPathTextBox)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.PathTextBox,
                surfaceFamily:=CommonEnums.SurfaceFamily.Input,
                materialRole:=MASMaterialRole.Input,
                interactionRole:=MASInteractionRole.Input,
                shadowRole:=MASShadowRole.Control,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Input,
            themeColorRole:=NexamasUIColorRole.Border,
                themeStateRole:=NexamasUIStateRole.Editable,
                inputRole:=MASInputRole.TextInput,
                focusRole:=MASFocusRole.Focusable
            ))

            list.Add(MASComponentDescriptor.Create(Of MASSearchTextBox)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.SearchBox,
                surfaceFamily:=CommonEnums.SurfaceFamily.Input,
                materialRole:=MASMaterialRole.Input,
                interactionRole:=MASInteractionRole.Input,
                shadowRole:=MASShadowRole.Control,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Input,
            themeColorRole:=NexamasUIColorRole.Border,
                themeStateRole:=NexamasUIStateRole.Editable,
                inputRole:=MASInputRole.TextInput,
                focusRole:=MASFocusRole.Focusable
            ))

            list.Add(MASComponentDescriptor.Create(Of MASMultilineTextBox)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.MultilineTextBox,
                surfaceFamily:=CommonEnums.SurfaceFamily.Input,
                materialRole:=MASMaterialRole.Input,
                interactionRole:=MASInteractionRole.Input,
                shadowRole:=MASShadowRole.Control,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Input,
            themeColorRole:=NexamasUIColorRole.Border,
                themeStateRole:=NexamasUIStateRole.Editable,
                inputRole:=MASInputRole.TextInput,
                focusRole:=MASFocusRole.Focusable
            ))

            list.Add(MASComponentDescriptor.Create(Of MASTextBox)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.TextBox,
                surfaceFamily:=CommonEnums.SurfaceFamily.Input,
                materialRole:=MASMaterialRole.Input,
                interactionRole:=MASInteractionRole.Input,
                shadowRole:=MASShadowRole.Control,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Input,
            themeColorRole:=NexamasUIColorRole.Border,
                themeStateRole:=NexamasUIStateRole.Editable,
                inputRole:=MASInputRole.TextInput,
                focusRole:=MASFocusRole.Focusable
            ))

            Return list
        End Function

    End Class

End Namespace
