local panelData = {
	type = "panel",
	name = "Window Title",
	displayName = "Longer Window Title",
	author = "Seerah",
	version = "1.3",
	slashCommand = "/myaddon",	--(optional) will register a keybind to open to this panel
	registerForRefresh = true,	--boolean (optional) (will refresh all options controls when a setting is changed and when the panel is shown)
	registerForDefaults = true,	--boolean (optional) (will set all options controls back to default values)
}

local optionsTable = {
	[1] = {
		type = "header",
		name = "My Header",
		width = "full",	--or "half" (optional)
	},
	[2] = {
		type = "description",
		--title = "My Title",	--(optional)
		title = nil,	--(optional)
		text = "My description text to display. blah blah blah blah blah blah blah - even more sample text!!",
		width = "full",	--or "half" (optional)
	},
	[3] = {
		type = "dropdown",
		name = "My Dropdown",
		tooltip = "Dropdown's tooltip text.",
		choices = {"table", "of", "choices"},
		getFunc = function() return "of" end,
		setFunc = function(var) print(var) end,
		width = "half",	--or "half" (optional)
		warning = "Will need to reload the UI.",	--(optional)
	},
	[4] = {
		type = "dropdown",
		name = "My Dropdown",
		tooltip = "Dropdown's tooltip text.",
		choices = {"table", "of", "choices"},
		getFunc = function() return "of" end,
		setFunc = function(var) print(var) end,
		width = "half",	--or "half" (optional)
		warning = "Will need to reload the UI.",	--(optional)
	},
	[5] = {
		type = "slider",
		name = "My Slider",
		tooltip = "Slider's tooltip text.",
		min = 0,
		max = 20,
		step = 1,	--(optional)
		getFunc = function() return 3 end,
		setFunc = function(value) d(value) end,
		width = "half",	--or "half" (optional)
		default = 5,	--(optional)
	},
	[6] = {
		type = "button",
		name = "My Button",
		tooltip = "Button's tooltip text.",
		func = function() d("button pressed!") end,
		width = "half",	--or "half" (optional)
		warning = "Will need to reload the UI.",	--(optional)
	},
	[7] = {
		type = "submenu",
		name = "Submenu Title",
		tooltip = "My submenu tooltip",	--(optional)
		controls = {
			[1] = {
				type = "checkbox",
				name = "My Checkbox",
				tooltip = "Checkbox's tooltip text.",
				getFunc = function() return true end,
				setFunc = function(value) d(value) end,
				width = "half",	--or "half" (optional)
				warning = "Will need to reload the UI.",	--(optional)
			},
			[2] = {
				type = "colorpicker",
				name = "My Color Picker",
				tooltip = "Color Picker's tooltip text.",
				getFunc = function() return 1, 0, 0, 1 end,	--(alpha is optional)
				setFunc = function(r,g,b,a) print(r, g, b, a) end,	--(alpha is optional)
				width = "half",	--or "half" (optional)
				warning = "warning text",
			},
			[3] = {
				type = "editbox",
				name = "My Editbox",
				tooltip = "Editbox's tooltip text.",
				getFunc = function() return "this is some text" end,
				setFunc = function(text) print(text) end,
				isMultiline = false,	--boolean
				width = "half",	--or "half" (optional)
				warning = "Will need to reload the UI.",	--(optional)
				default = "",	--(optional)
			},
		},
	},
	[8] = {
		type = "custom",
		reference = "MyAddonCustomControl",	--unique name for your control to use as reference
		refreshFunc = function(customControl) end,	--(optional) function to call when panel/controls refresh
		width = "half",	--or "half" (optional)
	},
	[9] = {
		type = "texture",
		image = "EsoUI\\Art\\ActionBar\\abilityframe64_up.dds",
		imageWidth = 64,	--max of 250 for half width, 510 for full
		imageHeight = 64,	--max of 100
		tooltip = "Image's tooltip text.",	--(optional)
		width = "half",	--or "half" (optional)
	},
}

local LAM = LibStub("LibAddonMenu-2.0")
LAM:RegisterAddonPanel("MyAddon", panelData)
LAM:RegisterOptionControls("MyAddon", optionsTable)