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

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

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

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

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

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

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


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

                        list.Add(MASComponentDescriptor.Create(Of MASDatePickerCalendarView)(
                category:=MASComponentCategory.CompositeContent,
                surfaceFamily:=CommonEnums.SurfaceFamily.DropDown,
                materialRole:=MASMaterialRole.Popup,
                interactionRole:=MASInteractionRole.Composite,
                shadowRole:=MASShadowRole.Popup,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Popup,
                themeColorRole:=NexamasUIColorRole.TextBody,
                themeStateRole:=NexamasUIStateRole.Editable,
                inputRole:=MASInputRole.RoutedContainer,
                focusRole:=MASFocusRole.FocusScope
            ))


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

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

                        list.Add(MASComponentDescriptor.Create(Of MASTimePickerClockView)(
                category:=MASComponentCategory.CompositeContent,
                surfaceFamily:=CommonEnums.SurfaceFamily.DropDown,
                materialRole:=MASMaterialRole.Popup,
                interactionRole:=MASInteractionRole.Composite,
                shadowRole:=MASShadowRole.Popup,
                radiusRole:=MASRadiusRole.SurfaceFamily,
                typographyRole:=MASTypographyRole.Body,
                themeSurfaceRole:=NexamasUISurfaceRole.Popup,
                themeColorRole:=NexamasUIColorRole.TextBody,
                themeStateRole:=NexamasUIStateRole.Editable,
                inputRole:=MASInputRole.RoutedContainer,
                focusRole:=MASFocusRole.FocusScope
            ))

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

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

        End Sub

    End Class

End Namespace
