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 RegisterDataNavigationVisualization(list As List(Of MASComponentDescriptor))
            list.Add(MASComponentDescriptor.Create(Of MASDataGrid)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.DataGrid,
                surfaceFamily:=CommonEnums.SurfaceFamily.DataGrid,
                materialRole:=MASMaterialRole.ListSurface,
                interactionRole:=MASInteractionRole.Selectable,
                shadowRole:=MASShadowRole.Control,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.List,
                themeColorRole:=NexamasUIColorRole.TextBody,
                themeStateRole:=NexamasUIStateRole.Selectable,
                inputRole:=MASInputRole.PointerAndKeyboard,
                focusRole:=MASFocusRole.Focusable
            ))

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


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

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

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

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

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

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

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

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

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

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

        End Sub

    End Class

End Namespace
