Nav
class Nav extends BeartropyComponent
Full-featured sidebar navigation with categories, nested children, permissions, and active state detection.
Renders a <nav> element driven by Alpine.js for collapse/expand, hover submenus (via x-teleport),
and client-side active state reconciliation. Supports two highlight modes: 'standard' (background
highlight) and 'text' (text-only highlight with hover). Colors are resolved from presets/nav.php.
Items support permission gating (can, canAny, canMatch) with optional admin bypass,
nested children, badges (slot, Alpine, or static), dividers, external links, and tooltips.
Traits
Trait HasPresets.
Trait HasErrorBag.
Properties
| string|null | $size | Component size (md, lg, etc.) used for preset resolution. |
from BeartropyComponent |
| array | $items | Resolved and permission-filtered navigation items. |
|
| string | $sidebarBind | Alpine variable name for sidebar collapse binding. |
|
| string | $highlightMode | Highlight mode: 'standard' (bg) or 'text' (text-only). |
|
| string|null | $highlightParentClass | CSS classes for active parent items. |
|
| string|null | $highlightChildClass | CSS classes for active child items. |
|
| string|null | $itemClass | Base CSS classes for parent items. |
|
| string|null | $childItemClass | Base CSS classes for child items. |
|
| string | $categoryClass | CSS classes for category headings. |
|
| string | $iconClass | CSS classes for icon rendering. |
|
| string | $childBorderClass | CSS classes for child container border. |
|
| string|null | $hoverTextClass | Hover classes for parent items (text mode). |
|
| string|null | $hoverTextChildClass | Hover classes for child items (text mode). |
|
| bool | $withnavigate | Whether to add wire:navigate to links. |
|
| $hideCategories | |||
| $singleOpenExpanded | |||
| $collapseButtonAsItem | |||
| $collapseButtonLabelCollapse | |||
| $collapseButtonLabelExpand | |||
| $collapseButtonIconCollapse | |||
| $collapseButtonIconExpand | |||
| $rememberCollapse | |||
| $rememberCollapseKey | |||
| $hoverMenuShowHeader | |||
| $hoverMenuHeaderClass | |||
| $hoverMenuHeaderTextClass |
Methods
Compute component presets based on context.
No description
No description
No description
No description
No description
No description
No description
No description
No description
Determine the error state for a specific field.
Analyze wire:model attributes to determine binding state.
Resolve the size preset for the component.
Create a new Nav component instance.
Resolve the navigation items source.
Load navigation config file: config/beartropy/ui/navs/
Determine if a navigation item is active based on current request.
Render an icon for a navigation item.
Filter navigation categories and their items based on permissions.
Filter a list of navigation items based on user permissions.
Generate a unique ID for a navigation item.
Get the view / contents that represent the component.
Details
in
HasPresets at line 21
array
getComponentPresets(string|null $componentName = null, ComponentAttributeBag|null $attributes = null)
Compute component presets based on context.
in
HasPresets at line 59
protected array
loadPresets(string $componentName)
No description
in
HasPresets at line 73
protected array
loadComponentDefaults(string $componentName)
No description
in
HasPresets at line 88
protected bool
detectHasVariants(array $colors)
No description
in
HasPresets at line 116
protected array
computeSupports(array $sizes, array $colorsArray, array $defaults, array $magicProps)
No description
in
HasPresets at line 137
protected array
resolveSize(array $supports, array $sizes, array $defaults, array $magicProps)
No description
in
HasPresets at line 174
protected array
resolveVariant(array $supports, array $colorsArray, array $componentPresets, array $defaults, array $magicProps, bool $hasVariants)
No description
in
HasPresets at line 223
protected array
resolveColor(array $supports, array $colorsArray, array $componentPresets, array $defaults, array $magicProps, string|null $variant, bool $hasVariants)
No description
in
HasPresets at line 293
protected array
resolveFill(array $supports, array $attributes, array $defaults)
No description
in
HasPresets at line 338
protected string
buildCacheKey(string $component, array $supports, string|null $size, string|null $variant, string|null $color, bool $shouldFill)
No description
in
HasPresets at line 349
protected void
syncInstanceProps(array $supports, string|null $size, string|null $variant, string|null $color)
No description
in
HasPresets at line 365
protected array
buildPresetNames(array $supports, string|null $size, string|null $variant, string|null $color, bool $shouldFill, string $sizeOrigin, string $variantOrigin, string $colorOrigin, string $fillOrigin)
No description
in
HasPresets at line 384
protected void
debugWarnings(array $supports, array $sizePreset, array $colorPreset, string $componentName, string|null $variant, string|null $color)
No description
in
HasErrorBag at line 24
array
getErrorState(ComponentAttributeBag|null $attributes = null, ViewErrorBag|MessageBag|null $errors = null, string|null $error = null)
Determine the error state for a specific field.
Checks both the session error bag and specific error attributes.
Looks up errors by wire:model value or name attribute.
in
BeartropyComponent at line 33
array
getWireModelState(ComponentAttributeBag|null $attributes = null)
Analyze wire:model attributes to determine binding state.
Detects if wire:model is present and if it uses dot notation (e.g., user.name).
in
BeartropyComponent at line 64
array
getSizePreset(string|null $componentName = null, array|ComponentAttributeBag|null $attributes = null, string $defaultSize = 'md')
Resolve the size preset for the component.
Checks:
- Explicit
$this->size. - Magic attributes (e.g.,
<x-button sm />). - Default size.
at line 93
__construct(mixed $items = null, string $sidebarBind = 'sidebarCollapsed', string $highlightMode = 'standard', string|null $highlightParentClass = null, string|null $highlightChildClass = null, string|null $itemClass = null, string|null $childItemClass = null, string $categoryClass = 'text-xs font-semibold text-gray-400 dark:text-gray-500 uppercase px-3 mb-1 tracking-wide select-none', string $iconClass = '', string $childBorderClass = 'border-l border-gray-300 dark:border-gray-700', string|null $hoverTextClass = null, string|null $hoverTextChildClass = null, string $color = 'beartropy', bool $withnavigate = false, $hideCategories = false, $singleOpenExpanded = false, $collapseButtonAsItem = true, $collapseButtonLabelCollapse = null, $collapseButtonLabelExpand = null, $collapseButtonIconCollapse = 'arrows-pointing-in', $collapseButtonIconExpand = 'arrows-pointing-out', $rememberCollapse = null, $rememberCollapseKey = 'beartropy:sidebar:collapsed', $hoverMenuShowHeader = true, $hoverMenuHeaderClass = 'sticky top-0 z-10 px-3 py-2 border-b border-gray-200/80 dark:border-gray-700/70 bg-white/95 dark:bg-gray-900/95 backdrop-blur-sm', $hoverMenuHeaderTextClass = 'font-bold text-sm text-gray-700 dark:text-gray-400')
Create a new Nav component instance.
at line 183
protected array
resolveItems(mixed $items)
Resolve the navigation items source.
at line 206
protected array
loadConfigNav(string $nav = 'default')
Load navigation config file: config/beartropy/ui/navs/
at line 224
bool
isItemActive(array $item)
Determine if a navigation item is active based on current request.
Checks path matches, route name matches, and recursive child activation.
at line 305
string
renderIcon(string $icon, string $iconClass = '')
Render an icon for a navigation item.
at line 326
protected array
filterNavCategories(array $categories, mixed $user = null)
Filter navigation categories and their items based on permissions.
at line 357
array
filterNavItems(array $items, mixed $user = null)
Filter a list of navigation items based on user permissions.
at line 490
string
navId(array $item)
Generate a unique ID for a navigation item.
at line 500
View
render()
Get the view / contents that represent the component.