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 RegisterMediaAndCompositeViews(list As List(Of MASComponentDescriptor))
            list.Add(MASComponentDescriptor.Create(Of MASFileDropZone)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.FileDropZone,
                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 MASCalendarView)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.CalendarView,
                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 MASTransferList)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.TransferList,
                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 MASRating)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.Rating,
                surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Selectable,
                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 MASMetricCard)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.MetricCard,
                surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Passive,
                shadowRole:=MASShadowRole.Soft,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Title,
                themeSurfaceRole:=NexamasUISurfaceRole.Panel,
                themeColorRole:=NexamasUIColorRole.TextBody,
                themeStateRole:=NexamasUIStateRole.Passive,
                inputRole:=MASInputRole.None,
                focusRole:=MASFocusRole.None
            ))


                        list.Add(MASComponentDescriptor.Create(Of MASFilterBuilder)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.FilterBuilder,
                surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Selectable,
                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 MASKanbanBoard)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.KanbanBoard,
                surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Selectable,
                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 MASAgendaView)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.AgendaView,
                surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Selectable,
                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 MASTreeGrid)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.TreeGrid,
                surfaceFamily:=CommonEnums.SurfaceFamily.DataGrid,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Selectable,
                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 MASPivotTable)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.PivotTable,
                surfaceFamily:=CommonEnums.SurfaceFamily.DataGrid,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Selectable,
                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 MASContentCarousel)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.ContentCarousel,
                surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Selectable,
                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 MASNavigationRail)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.NavigationRail,
                surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Selectable,
                shadowRole:=MASShadowRole.Soft,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Panel,
                themeColorRole:=NexamasUIColorRole.TextBody,
                themeStateRole:=NexamasUIStateRole.Navigation,
                inputRole:=MASInputRole.PointerAndKeyboard,
                focusRole:=MASFocusRole.Focusable
            ))


                        list.Add(MASComponentDescriptor.Create(Of MASDashboardGrid)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.DashboardGrid,
                surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Selectable,
                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 MASMasterDetailView)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.MasterDetailView,
                surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Selectable,
                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 MASChartLegend)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.ChartLegend,
                surfaceFamily:=CommonEnums.SurfaceFamily.Chart,
                materialRole:=MASMaterialRole.Control,
                interactionRole:=MASInteractionRole.Selectable,
                shadowRole:=MASShadowRole.Control,
                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 MASSplitView)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.SplitView,
                surfaceFamily:=CommonEnums.SurfaceFamily.Card,
                materialRole:=MASMaterialRole.Panel,
                interactionRole:=MASInteractionRole.Selectable,
                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 MASAppLayout)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.AppLayout,
                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 MASTileBox)(
                category:=MASComponentCategory.Control,
                controlKind:=CommonEnums.ControlKind.TileBox,
                surfaceFamily:=CommonEnums.SurfaceFamily.TileBox,
                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.PointerOnly,
                focusRole:=MASFocusRole.NotFocusable
            ))

        End Sub

    End Class

End Namespace
