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

    Partial Friend NotInheritable Class MASComponentControlsArchitectureProvider

        Private Shared Sub RegisterTextValidationFeedback(list As List(Of MASComponentDescriptor))
            list.Add(
                MASComponentDescriptor.Create(Of MASTitle)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.Title,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Generic,
                    materialRole:=MASMaterialRole.Control,
                    interactionRole:=MASInteractionRole.Passive,
                    shadowRole:=MASShadowRole.None,
                    radiusRole:=MASRadiusRole.None,
                    typographyRole:=MASTypographyRole.Header,
                    themeSurfaceRole:=NexamasUISurfaceRole.Control,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Passive,
                    inputRole:=MASInputRole.Passive,
                    focusRole:=MASFocusRole.NotFocusable
                )
            )

                        list.Add(
                MASComponentDescriptor.Create(Of MASLabel)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.Label,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Generic,
                    materialRole:=MASMaterialRole.Control,
                    interactionRole:=MASInteractionRole.Passive,
                    shadowRole:=MASShadowRole.None,
                    radiusRole:=MASRadiusRole.None,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Control,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Passive,
                    inputRole:=MASInputRole.Passive,
                    focusRole:=MASFocusRole.NotFocusable
                )
            )

                        list.Add(
                MASComponentDescriptor.Create(Of MASValidationMessage)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.ValidationMessage,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Generic,
                    materialRole:=MASMaterialRole.Control,
                    interactionRole:=MASInteractionRole.Passive,
                    shadowRole:=MASShadowRole.None,
                    radiusRole:=MASRadiusRole.None,
                    typographyRole:=MASTypographyRole.Caption,
                    themeSurfaceRole:=NexamasUISurfaceRole.Control,
                    themeColorRole:=NexamasUIColorRole.TextMuted,
                    themeStateRole:=NexamasUIStateRole.Passive,
                    inputRole:=MASInputRole.Passive,
                    focusRole:=MASFocusRole.NotFocusable
                )
            )



                        list.Add(
                MASComponentDescriptor.Create(Of MASFormValidationSummary)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.FormValidationSummary,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                    materialRole:=MASMaterialRole.Panel,
                    interactionRole:=MASInteractionRole.Passive,
                    shadowRole:=MASShadowRole.Soft,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Panel,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Passive,
                    inputRole:=MASInputRole.Passive,
                    focusRole:=MASFocusRole.NotFocusable
                )
            )

                        list.Add(
                MASComponentDescriptor.Create(Of MASAppliedFiltersBar)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.AppliedFiltersBar,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                    materialRole:=MASMaterialRole.Panel,
                    interactionRole:=MASInteractionRole.Passive,
                    shadowRole:=MASShadowRole.Soft,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Panel,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Passive,
                    inputRole:=MASInputRole.Passive,
                    focusRole:=MASFocusRole.NotFocusable
                )
            )

                        list.Add(
                MASComponentDescriptor.Create(Of MASBadge)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.Badge,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Chip,
                    materialRole:=MASMaterialRole.Control,
                    interactionRole:=MASInteractionRole.Passive,
                    shadowRole:=MASShadowRole.None,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Caption,
                    themeSurfaceRole:=NexamasUISurfaceRole.Control,
                    themeColorRole:=NexamasUIColorRole.Accent,
                    themeStateRole:=NexamasUIStateRole.Passive,
                    inputRole:=MASInputRole.Passive,
                    focusRole:=MASFocusRole.NotFocusable
                )
            )



                        list.Add(
                MASComponentDescriptor.Create(Of MASStatusBanner)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.StatusBanner,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                    materialRole:=MASMaterialRole.Panel,
                    interactionRole:=MASInteractionRole.Passive,
                    shadowRole:=MASShadowRole.Soft,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Panel,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Passive,
                    inputRole:=MASInputRole.Passive,
                    focusRole:=MASFocusRole.NotFocusable
                )
            )


                        list.Add(
                MASComponentDescriptor.Create(Of MASNotificationPanel)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.NotificationPanel,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                    materialRole:=MASMaterialRole.Panel,
                    interactionRole:=MASInteractionRole.Composite,
                    shadowRole:=MASShadowRole.Soft,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Panel,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Interactive,
                    inputRole:=MASInputRole.RoutedContainer,
                    focusRole:=MASFocusRole.FocusScope
                )
            )



                        list.Add(
                MASComponentDescriptor.Create(Of MASCommandPalette)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.CommandPalette,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                    materialRole:=MASMaterialRole.Panel,
                    interactionRole:=MASInteractionRole.Composite,
                    shadowRole:=MASShadowRole.Soft,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Panel,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Interactive,
                    inputRole:=MASInputRole.PointerAndKeyboard,
                    focusRole:=MASFocusRole.Focusable
                )
            )


                        list.Add(
                MASComponentDescriptor.Create(Of MASAvatar)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.Avatar,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Chip,
                    materialRole:=MASMaterialRole.Control,
                    interactionRole:=MASInteractionRole.Selectable,
                    shadowRole:=MASShadowRole.Soft,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Control,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Interactive,
                    inputRole:=MASInputRole.PointerAndKeyboard,
                    focusRole:=MASFocusRole.Focusable
                )
            )

                        list.Add(
                MASComponentDescriptor.Create(Of MASAvatarGroup)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.AvatarGroup,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Chip,
                    materialRole:=MASMaterialRole.Panel,
                    interactionRole:=MASInteractionRole.Composite,
                    shadowRole:=MASShadowRole.Soft,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Panel,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Interactive,
                    inputRole:=MASInputRole.PointerAndKeyboard,
                    focusRole:=MASFocusRole.Focusable
                )
            )



                        list.Add(
                MASComponentDescriptor.Create(Of MASTagInput)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.TagInput,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Input,
                    materialRole:=MASMaterialRole.Input,
                    interactionRole:=MASInteractionRole.Composite,
                    shadowRole:=MASShadowRole.None,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Input,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Interactive,
                    inputRole:=MASInputRole.PointerAndKeyboard,
                    focusRole:=MASFocusRole.Focusable
                )
            )



                        list.Add(
                MASComponentDescriptor.Create(Of MASDataForm)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.DataForm,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Input,
                    materialRole:=MASMaterialRole.Panel,
                    interactionRole:=MASInteractionRole.Composite,
                    shadowRole:=MASShadowRole.Soft,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Panel,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Interactive,
                    inputRole:=MASInputRole.PointerAndKeyboard,
                    focusRole:=MASFocusRole.Focusable
                )
            )



                        list.Add(
                MASComponentDescriptor.Create(Of MASTimeline)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.Timeline,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                    materialRole:=MASMaterialRole.Panel,
                    interactionRole:=MASInteractionRole.Composite,
                    shadowRole:=MASShadowRole.Soft,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Panel,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Interactive,
                    inputRole:=MASInputRole.PointerAndKeyboard,
                    focusRole:=MASFocusRole.Focusable
                )
            )

        End Sub

    End Class

End Namespace
