Option Strict On
Option Explicit On

Namespace Nexamas.UI.Values

    Friend NotInheritable Class CommonEnums
        Private Sub New()
        End Sub

        Friend Enum ControlKind
            ButtonMas = 0
            ButtonTal = 1
            Button = ButtonMas

            Input = 2
            SegmentedControl = 3
            Tile = 4
            Card = 5
            Fenster = 6
            List = 7
            ListRow = 8
            DropDown = 9
            SelectorItemChip = 10
            ComboBox = 11
            ScrollBar = 12
            TopBar = 13
            SelectorItem = 14
            Menu = 15
            TextBox = 16
            SearchBox = 17
            ListBox = 18
            CheckBox = 19
            GlyphButton = 20
            Label = 21
            PathTextBox = 22
            MultilineTextBox = 23
            FileExplorerSplitter = 24


            OperationProgressBox = 25
            ProgressBar = 26
            RadioButton = 27
            ToggleSwitch = 28
            TabControl = 29
            TabItem = 30
            ToastHost = 31
            PasswordBox = 32
            NumericInput = 33
            Tooltip = 34
            TreeView = 35
            TreeRow = 36
            ListView = 37
            ListViewRow = 38
            ListViewHeader = 39
            GroupBox = 41
            ColorPicker = 42

            ContextMenu = 45
            DropDownMenu = 46
            TileBox = 47

            ColorPickerPreview = 49
            ColorPickerSVBox = 50
            ColorPickerHueBar = 51
            ColorPickerSlot = 52
            ColorPickerSwatch = 53
            ColorPickerMarker = 54


            GroupBoxTitlePlate = 58
            PanelShell = 59

            DropDownListOverlay = 60

            Toolbar = 62
            ToolbarSpacer = 63
            ToolbarSeparator = 64
            PathDisplayBox = 65
            FileExplorerNavigationBar = 66
            Title = 67
            DataGrid = 68
            Chart = 69
            PropertyGrid = 70
            DatePicker = 71
            ValidationMessage = 72
            Badge = 73
            StatusBanner = 74
            EmptyState = 75
            LoadingSkeleton = 76
            Breadcrumb = 77
            Pagination = 78
            TimePicker = 79
            SplitButton = 80
            Expander = 81
            Accordion = 82
            Callout = 83
            DateRangePicker = 84
            SidePanel = 85
            Stepper = 86
            Wizard = 87
            NotificationPanel = 88
            CommandPalette = 89
            MenuBar = 90
            TagInput = 91
            DataForm = 92
            Avatar = 93
            AvatarGroup = 94
            Timeline = 95
            Slider = 96
            ImageViewer = 97
            FileDropZone = 98
            Generic = 99
            CalendarView = 100
            TransferList = 101
            Rating = 102
            MetricCard = 103
            FilterBuilder = 104
            KanbanBoard = 105
            AgendaView = 106
            TreeGrid = 107
            ContentCarousel = 108
            PivotTable = 109
            NavigationRail = 110
            DashboardGrid = 111
            MasterDetailView = 112
            ChartLegend = 113
            SplitView = 114
            FormValidationSummary = 115
            AppliedFiltersBar = 116
            AppLayout = 117
        End Enum

        Friend Enum SurfaceFamily
            Generic = 0

            Input = 10
            ComboBox = 11

            Card = 20
            TopBar = 21
            SelectorItem = 22

            ListSurface = 30
            Row = 31

            Fenster = 40
            DropDown = 41
            Menu = 42
            ListBox = 43

            Chip = 50

            ButtonMas = 60
            ButtonTal = 61
            Button = ButtonMas
            SegmentedControl = 62
            ScrollBar = 63
            Tile = 64
            CheckBox = 65
            ProgressBar = 66
            RadioButton = 67
            ToggleSwitch = 68
            TabStrip = 69
            Toast = 70
            Tooltip = 71
            TabItem = 72
            GroupBox = 73
            ColorPicker = 74

            ContextMenu = 77

            DropDownMenu = 78
            TileBox = 79

            ColorPickerPreview = 81
            ColorPickerSVBox = 82
            ColorPickerHueBar = 83
            ColorPickerSlot = 84
            ColorPickerSwatch = 85
            ColorPickerMarker = 86


            GroupBoxTitlePlate = 90
            PanelShell = 91
            DataGrid = 92
            Chart = 93
            PropertyGrid = 94
            Media = 95
        End Enum

        Friend Shared Function MapKindToFamily(kind As ControlKind) As SurfaceFamily
            Select Case kind
                Case ControlKind.Input,
     ControlKind.TextBox,
     ControlKind.SearchBox,
     ControlKind.PasswordBox,
     ControlKind.NumericInput,
     ControlKind.PathTextBox,
     ControlKind.MultilineTextBox,
     ControlKind.TagInput,
     ControlKind.DataForm,
                     ControlKind.Slider
                    Return SurfaceFamily.Input

                Case ControlKind.TreeView,
                     ControlKind.ListView
                    Return SurfaceFamily.ListSurface

                Case ControlKind.DataGrid,
                     ControlKind.TreeGrid,
                     ControlKind.PivotTable
                    Return SurfaceFamily.DataGrid

                Case ControlKind.Chart,
                     ControlKind.ChartLegend
                    Return SurfaceFamily.Chart

                Case ControlKind.ImageViewer
                    Return SurfaceFamily.Media

                Case ControlKind.FileDropZone,
                     ControlKind.CalendarView,
                     ControlKind.AgendaView,
                     ControlKind.TransferList,
                     ControlKind.Rating,
                     ControlKind.MetricCard,
                     ControlKind.FilterBuilder,
                     ControlKind.KanbanBoard,
                     ControlKind.ContentCarousel,
                     ControlKind.NavigationRail,
                     ControlKind.DashboardGrid,
                     ControlKind.MasterDetailView,
                     ControlKind.SplitView,
                     ControlKind.FormValidationSummary,
                     ControlKind.AppliedFiltersBar,
                     ControlKind.AppLayout
                    Return SurfaceFamily.Card

                Case ControlKind.Timeline
                    Return SurfaceFamily.Card

                Case ControlKind.PropertyGrid
                    Return SurfaceFamily.PropertyGrid

                Case ControlKind.TreeRow,
                     ControlKind.ListViewRow,
                     ControlKind.ListViewHeader
                    Return SurfaceFamily.Row

                Case ControlKind.ComboBox,
                     ControlKind.DatePicker,
                     ControlKind.TimePicker,
                     ControlKind.DateRangePicker
                    Return SurfaceFamily.ComboBox

                Case ControlKind.DropDown
                    Return SurfaceFamily.DropDown

                Case ControlKind.DropDownMenu
                    Return SurfaceFamily.DropDownMenu

                Case ControlKind.ContextMenu
                    Return SurfaceFamily.ContextMenu

                Case ControlKind.Menu,
                     ControlKind.MenuBar
                    Return SurfaceFamily.Menu

                Case ControlKind.ListBox
                    Return SurfaceFamily.ListBox

                Case ControlKind.Fenster
                    Return SurfaceFamily.Fenster

                Case ControlKind.Card,
                     ControlKind.StatusBanner,
                     ControlKind.NotificationPanel,
                     ControlKind.CommandPalette,
                     ControlKind.EmptyState,
                     ControlKind.LoadingSkeleton
                    Return SurfaceFamily.Card

                Case ControlKind.TopBar
                    Return SurfaceFamily.TopBar

                Case ControlKind.SelectorItem
                    Return SurfaceFamily.SelectorItem

                Case ControlKind.SelectorItemChip,
                     ControlKind.Badge,
                     ControlKind.Avatar,
                     ControlKind.AvatarGroup
                    Return SurfaceFamily.Chip

                Case ControlKind.List
                    Return SurfaceFamily.ListSurface

                Case ControlKind.ListRow
                    Return SurfaceFamily.Row

                Case ControlKind.Button,
                     ControlKind.ButtonMas,
                     ControlKind.SplitButton
                    Return SurfaceFamily.ButtonMas

                Case ControlKind.ButtonTal
                    Return SurfaceFamily.ButtonTal

                Case ControlKind.CheckBox
                    Return SurfaceFamily.CheckBox

                Case ControlKind.RadioButton
                    Return SurfaceFamily.RadioButton

                Case ControlKind.ToggleSwitch
                    Return SurfaceFamily.ToggleSwitch

                Case ControlKind.SegmentedControl
                    Return SurfaceFamily.SegmentedControl

                Case ControlKind.TabControl
                    Return SurfaceFamily.TabStrip

                Case ControlKind.TabItem
                    Return SurfaceFamily.TabItem

                Case ControlKind.ToastHost
                    Return SurfaceFamily.Toast

                Case ControlKind.ScrollBar
                    Return SurfaceFamily.ScrollBar

                Case ControlKind.Tile
                    Return SurfaceFamily.Tile

                Case ControlKind.TileBox
                    Return SurfaceFamily.TileBox





                Case ControlKind.OperationProgressBox,
                     ControlKind.ProgressBar
                    Return SurfaceFamily.ProgressBar

                Case ControlKind.Tooltip
                    Return SurfaceFamily.Tooltip

                Case ControlKind.GroupBox,
                     ControlKind.Expander,
                     ControlKind.Accordion,
                     ControlKind.Stepper,
                     ControlKind.Wizard
                    Return SurfaceFamily.GroupBox

                Case ControlKind.Callout
                    Return SurfaceFamily.Tooltip

                Case ControlKind.GroupBoxTitlePlate
                    Return SurfaceFamily.GroupBoxTitlePlate

                Case ControlKind.ColorPicker
                    Return SurfaceFamily.ColorPicker

                Case ControlKind.ColorPickerPreview
                    Return SurfaceFamily.ColorPickerPreview

                Case ControlKind.ColorPickerSVBox
                    Return SurfaceFamily.ColorPickerSVBox

                Case ControlKind.ColorPickerHueBar
                    Return SurfaceFamily.ColorPickerHueBar

                Case ControlKind.ColorPickerSlot
                    Return SurfaceFamily.ColorPickerSlot

                Case ControlKind.ColorPickerSwatch
                    Return SurfaceFamily.ColorPickerSwatch

                Case ControlKind.ColorPickerMarker
                    Return SurfaceFamily.ColorPickerMarker

                Case ControlKind.PanelShell,
                     ControlKind.SidePanel
                    Return SurfaceFamily.PanelShell

                Case ControlKind.GlyphButton
                    Return SurfaceFamily.ButtonMas

                Case ControlKind.Label,
                     ControlKind.Title,
                     ControlKind.ValidationMessage,
                     ControlKind.Breadcrumb,
                     ControlKind.Pagination
                    Return SurfaceFamily.Generic

               

                Case ControlKind.DropDownListOverlay
                    Return SurfaceFamily.DropDown

                Case ControlKind.FileExplorerSplitter,
     ControlKind.Toolbar,
     ControlKind.ToolbarSpacer,
     ControlKind.ToolbarSeparator,
     ControlKind.PathDisplayBox,
     ControlKind.FileExplorerNavigationBar
                    Return SurfaceFamily.Generic



                Case Else
                    Return SurfaceFamily.Generic

            End Select
        End Function

    End Class

End Namespace