# TallStackUI: Dropdown Submenu
> TallStackUI is a TALL Stack (Tailwind CSS, Alpine.js, Laravel, Livewire)
> component library providing 65+ Blade components for building modern web interfaces.
A nested submenu within a Dropdown component that opens a secondary floating panel on click. Displays a chevron indicator for the submenu direction and supports icons and separators.
## Basic Usage
```blade
```
```blade
```
## Attributes
| Attribute | Type | Default | Description |
|-----------|--------------|---------|----------------------------------------------------------------------------------------|
| text | string\|null | null | Text label for the submenu trigger |
| icon | string\|null | null | Heroicon name displayed alongside the text |
| position | string\|null | 'right' | Submenu opening direction ('right' maps to 'right-start', 'left' maps to 'left-start') |
| separator | bool\|null | false | When true, adds a top border separator line |
## Slots
| Slot | Description |
|-----------|-----------------------------------------------------------|
| (default) | Submenu items (typically `` components) |
## Soft Customization
Soft customization allows you to override default Tailwind CSS classes used by this component at runtime, either through a service provider or scoped per-instance.
### Customization
```php
TallStackUi::customize()
->dropdown('submenu')
->block('item.base', 'your-tailwind-classes');
```
### Available Blocks
| Block Name | Purpose |
|---------------------|----------------------------------------------------------------------------------------------|
| wrapper | Flex container for icon and text |
| item.base | Submenu trigger button base styles (text, hover, focus) — padding/text live in size variants |
| item.sizes.xs | Padding and text size when the parent dropdown is `xs` |
| item.sizes.sm | Padding and text size when the parent dropdown is `sm` |
| item.sizes.md | Padding and text size when the parent dropdown is `md` (default) |
| item.sizes.lg | Padding and text size when the parent dropdown is `lg` |
| border | Separator border styles |
| icon.sizes.xs | Trigger icon dimensions when the parent dropdown is `xs` |
| icon.sizes.sm | Trigger icon dimensions when the parent dropdown is `sm` |
| icon.sizes.md | Trigger icon dimensions when the parent dropdown is `md` (default) |
| icon.sizes.lg | Trigger icon dimensions when the parent dropdown is `lg` |
| submenu.left | Left chevron indicator size |
| submenu.right | Right chevron indicator size |
| floating.default | Floating panel base styles (background, border, shadow) |
| floating.widths.xxs | Floating panel width when the parent dropdown is `width="xxs"` (`w-32`) |
| floating.widths.xs | Floating panel width when the parent dropdown is `width="xs"` (`w-40`) |
| floating.widths.sm | Floating panel width when the parent dropdown is `width="sm"` (`w-48`) |
| floating.widths.md | Floating panel width when the parent dropdown is `width="md"` (`w-56`, default) |
| floating.widths.lg | Floating panel width when the parent dropdown is `width="lg"` (`w-64`) |
| floating.widths.xl | Floating panel width when the parent dropdown is `width="xl"` (`w-72`) |
| floating.widths.2xl | Floating panel width when the parent dropdown is `width="2xl"` (`w-80`) |
| slot | Submenu items container with overflow and rounding |
Size and width are inherited from the parent `` automatically (see `.ai/components/dropdown/main.md`). The submenu has no per-instance size or width props — its trigger button reads the parent's `data-tsui-dropdown-size` via Tailwind arbitrary variants, and its teleported floating panel reads `data-tsui-dropdown-size` / `data-tsui-dropdown-width` set on Alpine `init` from the closest ancestor.