# DropDown
_A collapsible selection menu that expands to show multiple options when clicked. Supports single and multi-selection modes, custom item styling, separators, and item callbacks._

Extends: `List`

## Examples (Executable)
```lua run
local basalt = require("basalt")
local main = basalt.getMainFrame()

-- Create a styled dropdown menu
local dropdown = main:addDropDown()
:setPosition(5, 5)
:setSize(20, 1)  -- Height expands when opened
:setSelectedText("Select an option...")

-- Add items with different styles and callbacks
dropdown:setItems({
{
text = "Category A",
background = colors.blue,
foreground = colors.white
},
{ separator = true, text = "-" },  -- Add a separator
{
text = "Option 1",
callback = function(self)
-- Handle selection
basalt.LOGGER.debug("Selected Option 1")
end
},
{
text = "Option 2",
-- Custom colors when selected
selectedBackground = colors.green,
selectedForeground = colors.white
}
})

-- Listen for selections
dropdown:onChange(function(self, value)
basalt.LOGGER.debug("Selected:", value)
end)

basalt.run()
```

## Table Types

### ItemTable

|Property|Type|Description|
|---|---|---|
|text|string|The display text for the item|
|callback|function|Function called when selected|
|fg|color|Normal text color|
|bg|color|Normal background color|
|selectedFg|color|Text color when selected|
|selectedBg|color|Background when selected|

## Properties

|Property|Type|Default|Description|
|---|---|---|---|
|dropdownHeight|number|5|Maximum visible items when expanded|
|selectedText|string|""|Text shown when no selection made|
|dropSymbol|string|"\31"|Indicator for dropdown state|
