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 RegisterMenusProgressContainers(list As List(Of MASComponentDescriptor))
            list.Add(
                MASComponentDescriptor.Create(Of MASMenuBar)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.MenuBar,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Menu,
                    materialRole:=MASMaterialRole.Control,
                    interactionRole:=MASInteractionRole.Composite,
                    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 MASCallout)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.Callout,
                    surfaceFamily:=CommonEnums.SurfaceFamily.Tooltip,
                    materialRole:=MASMaterialRole.Tooltip,
                    interactionRole:=MASInteractionRole.Floating,
                    shadowRole:=MASShadowRole.Tooltip,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Tooltip,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Interactive,
                    inputRole:=MASInputRole.Passive,
                    focusRole:=MASFocusRole.NotFocusable
                )
            )

                        list.Add(
                MASComponentDescriptor.Create(Of MASEmptyState)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.EmptyState,
                    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 MASLoadingSkeleton)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.LoadingSkeleton,
                    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 MASProgressBar)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.ProgressBar,
                    surfaceFamily:=CommonEnums.SurfaceFamily.ProgressBar,
                    materialRole:=MASMaterialRole.Control,
                    interactionRole:=MASInteractionRole.Passive,
                    shadowRole:=MASShadowRole.Soft,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.None,
                    themeSurfaceRole:=NexamasUISurfaceRole.Control,
                    themeColorRole:=NexamasUIColorRole.Accent,
                    themeStateRole:=NexamasUIStateRole.Passive,
                    inputRole:=MASInputRole.Passive,
                    focusRole:=MASFocusRole.NotFocusable
                )
            )

                        list.Add(
                MASComponentDescriptor.Create(Of MASOperationProgressBox)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.OperationProgressBox,
                    surfaceFamily:=CommonEnums.SurfaceFamily.ProgressBar,
                    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 MASGroupBox)(
                    category:=MASComponentCategory.Control,
                    controlKind:=CommonEnums.ControlKind.GroupBox,
                    surfaceFamily:=CommonEnums.SurfaceFamily.GroupBox,
                    materialRole:=MASMaterialRole.Panel,
                    interactionRole:=MASInteractionRole.Composite,
                    shadowRole:=MASShadowRole.Soft,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Header,
                    themeSurfaceRole:=NexamasUISurfaceRole.Panel,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Passive,
                    inputRole:=MASInputRole.RoutedContainer,
                 focusRole:=MASFocusRole.FocusScope
                )
            )

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

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

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

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

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

                        list.Add(
                MASComponentDescriptor.Create(Of MASPanelShellFloatHost)(
                    category:=MASComponentCategory.FloatContent,
                    surfaceFamily:=CommonEnums.SurfaceFamily.PanelShell,
                    materialRole:=MASMaterialRole.Dialog,
                    interactionRole:=MASInteractionRole.Floating,
                    shadowRole:=MASShadowRole.Dialog,
                    radiusRole:=MASRadiusRole.SurfaceFamily,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Dialog,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Interactive,
                    floatRole:=MASFloatRole.Dialog,
                    inputRole:=MASInputRole.RoutedContainer,
                    focusRole:=MASFocusRole.ModalFocusScope
                )
            )

                        list.Add(
                MASComponentDescriptor.Create(Of MASPanelShellFloatHost.MASPanelShellScrollOverlay)(
                    category:=MASComponentCategory.CompositeContent,
                    surfaceFamily:=CommonEnums.SurfaceFamily.PanelShell,
                    materialRole:=MASMaterialRole.Dialog,
                    interactionRole:=MASInteractionRole.Passive,
                    shadowRole:=MASShadowRole.None,
                    radiusRole:=MASRadiusRole.None,
                    typographyRole:=MASTypographyRole.Body,
                    themeSurfaceRole:=NexamasUISurfaceRole.Dialog,
                    themeColorRole:=NexamasUIColorRole.TextBody,
                    themeStateRole:=NexamasUIStateRole.Passive,
                    inputRole:=MASInputRole.Passive,
                    focusRole:=MASFocusRole.NotFocusable
                )
            )

        End Sub

    End Class

End Namespace
