# Side Navigation

A persistent sidebar navigation component with three sections: header (module switcher), scrollable body (tree menu), and footer (user context).

## Visual Structure

```
ga-side-navigation
  ├── ga-side-navigation__header
  │   ├── ga-side-navigation__switcher [--active]
  │   │   ├── ga-side-navigation__switcher-title
  │   │   └── ga-side-navigation__switcher-action
  │   ├── ga-side-navigation__switcher-dropdown (optional, shown when switcher is active)
  │   │   ├── ga-side-navigation__switcher-dropdown-header (optional)
  │   │   └── ga-side-navigation__switcher-dropdown-item
  │   │       ├── ga-side-navigation__switcher-dropdown-title
  │   │       └── ga-side-navigation__switcher-dropdown-external (optional)
  │   └── ga-input.ga-side-navigation__search (optional, uses ga-input with custom overrides)
  │       └── ga-side-navigation__search-shortcut (optional, keyboard shortcut badge)
  ├── ga-side-navigation__body
  │   ├── ga-side-navigation__item [--active|--disabled|--level-2|--level-3|--level-4]
  │   │   ├── ga-side-navigation__item-icon (optional, expand/collapse chevron for parents or decorative icon)
  │   │   ├── ga-side-navigation__item-content
  │   │   │   ├── ga-side-navigation__item-label
  │   │   │   └── ga-side-navigation__item-description (optional)
  │   │   └── ga-side-navigation__item-external (optional)
  │   ├── ga-side-navigation__recent-title (optional)
  │   ├── ga-side-navigation__recent-item
  │   │   ├── ga-side-navigation__recent-item-icon (optional)
  │   │   └── ga-side-navigation__recent-item-content
  │   │       ├── ga-side-navigation__recent-item-label
  │   │       └── ga-side-navigation__recent-item-description (optional)
  │   ├── ga-side-navigation__search-results-title (optional)
  │   └── ga-side-navigation__search-results-item
  │       ├── ga-side-navigation__search-results-item-content
  │       │   ├── ga-side-navigation__search-results-item-label
  │       │   └── ga-side-navigation__search-results-item-description (optional)
  │       └── ga-side-navigation__search-results-item-external (optional)
  └── ga-side-navigation__footer
      ├── ga-side-navigation__footer-dropdown (optional, shown when user is active)
      │   └── ga-side-navigation__footer-dropdown-item [--disabled]
      │       ├── ga-side-navigation__footer-dropdown-icon (optional)
      │       └── ga-side-navigation__footer-dropdown-title
      └── ga-side-navigation__user [--active]
          ├── ga-side-navigation__user-avatar
          ├── ga-side-navigation__user-name
          └── ga-side-navigation__user-action
```

## Elements Hierarchy

### Core Block

- `ga-side-navigation` - Main container, full-height sidebar layout

### Header

- `ga-side-navigation__header` - Top section, vertical stack for switcher and other elements (e.g., search)
- `ga-side-navigation__switcher` - Module switcher row
- `ga-side-navigation__switcher-title` - Module name
- `ga-side-navigation__switcher-action` - Chevron icon indicating the switcher can be toggled
- `ga-side-navigation__switcher-dropdown` - Dropdown container, absolutely positioned below the switcher
- `ga-side-navigation__switcher-dropdown-header` - Dropdown heading (e.g., "Choose a service")
- `ga-side-navigation__switcher-dropdown-item` - Individual module option
- `ga-side-navigation__switcher-dropdown-title` - Module name
- `ga-side-navigation__switcher-dropdown-external` - External link icon (optional)
- `ga-side-navigation__search` - Modifier applied alongside `ga-input` to override styles. Uses standard `ga-input` structure internally.
- `ga-side-navigation__search-shortcut` - Keyboard shortcut badge inside the search input

### Body - Navigation Items

- `ga-side-navigation__body` - Scrollable content area for navigation items
- `ga-side-navigation__item` - Individual navigation item
- `ga-side-navigation__item-icon` - Icon for the item (expand/collapse chevron for parents, or decorative icon; not both)
- `ga-side-navigation__item-content` - Wrapper for text content
- `ga-side-navigation__item-label` - Primary text
- `ga-side-navigation__item-description` - Secondary text
- `ga-side-navigation__item-external` - External link icon, positioned far right (optional)

### Body - Recently Viewed

- `ga-side-navigation__recent-title` - Section heading (e.g., "Recently viewed")
- `ga-side-navigation__recent-item` - Individual recently viewed item
- `ga-side-navigation__recent-item-icon` - Icon for the item
- `ga-side-navigation__recent-item-content` - Wrapper for text content
- `ga-side-navigation__recent-item-label` - Primary text
- `ga-side-navigation__recent-item-description` - Secondary text (e.g., breadcrumb path)

### Body - Search Results

- `ga-side-navigation__search-results-title` - Section heading (e.g., "Search results")
- `ga-side-navigation__search-results-item` - Individual search result item
- `ga-side-navigation__search-results-item-content` - Wrapper for text content
- `ga-side-navigation__search-results-item-label` - Primary text
- `ga-side-navigation__search-results-item-description` - Secondary text (e.g., breadcrumb path)
- `ga-side-navigation__search-results-item-external` - External link icon, positioned far right (optional)

### Footer

- `ga-side-navigation__footer` - Positioning container for user row and its dropdown
- `ga-side-navigation__user` - User context row, tabbable and hoverable
- `ga-side-navigation__user-avatar` - User avatar image
- `ga-side-navigation__user-name` - User display name
- `ga-side-navigation__user-action` - Chevron icon
- `ga-side-navigation__footer-dropdown` - Dropdown container, positioned upward above the footer
- `ga-side-navigation__footer-dropdown-item` - Individual dropdown option
- `ga-side-navigation__footer-dropdown-icon` - Item icon (optional)
- `ga-side-navigation__footer-dropdown-title` - Option label

### Modifiers

- `ga-side-navigation__item--active` - Currently selected navigation item
- `ga-side-navigation__item--expanded` - Expanded parent item (shows children)
- `ga-side-navigation__item--disabled` - Non-interactive item
- `ga-side-navigation__item--level-2` - Second-level tree item
- `ga-side-navigation__item--level-3` - Third-level tree item
- `ga-side-navigation__item--level-4` - Fourth-level tree item
- `ga-side-navigation__item--level-5` - Fifth-level tree item (not recommended to go beyond level 4 for usability reasons, but supported by styles)
- `ga-side-navigation__item--level-6` - Sixth-level tree item (not recommended to go beyond level 4 for usability reasons, but supported by styles)

## Examples

### Default

```html
<div class="ga-side-navigation" style="height: 600px">
  <div class="ga-side-navigation__header">
    <div tabindex="0" class="ga-side-navigation__switcher">
      <span class="ga-side-navigation__switcher-title">Dashboard</span>
      <span class="ga-side-navigation__switcher-action">
        <!-- icon: chevrons-up-down, size=16 -->
      </span>
    </div>
    <div class="ga-input ga-side-navigation__search">
      <!-- icon: search, size=16 -->
      <input type="search" placeholder="Search" />
      <kbd class="ga-side-navigation__search-shortcut">⌘ K</kbd>
    </div>
  </div>
  <div class="ga-side-navigation__body">
    <div class="ga-side-navigation__item ga-side-navigation__item--active">
      <!-- icon: layout-grid, size=16, class="ga-side-navigation__item-icon" -->
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">My overview</div>
      </div>
    </div>
    <div class="ga-side-navigation__recent-title">Recently viewed</div>
    <div class="ga-side-navigation__recent-item">
      <!-- icon: history, size=16, class="ga-side-navigation__recent-item-icon" -->
      <div class="ga-side-navigation__recent-item-content">
        <div class="ga-side-navigation__recent-item-label">Insights</div>
        <div class="ga-side-navigation__recent-item-description">
          Business Intelligence › Analytics
        </div>
      </div>
    </div>
    <div class="ga-side-navigation__recent-item">
      <!-- icon: history, size=16, class="ga-side-navigation__recent-item-icon" -->
      <div class="ga-side-navigation__recent-item-content">
        <div class="ga-side-navigation__recent-item-label">
          Voucher registration
        </div>
        <div class="ga-side-navigation__recent-item-description">
          Finance › Accounts
        </div>
      </div>
    </div>
    <div class="ga-side-navigation__recent-item">
      <!-- icon: history, size=16, class="ga-side-navigation__recent-item-icon" -->
      <div class="ga-side-navigation__recent-item-content">
        <div class="ga-side-navigation__recent-item-label">Stock count</div>
        <div class="ga-side-navigation__recent-item-description">
          Warehouse › Inventory management › St...
        </div>
      </div>
    </div>
    <div class="ga-side-navigation__recent-item">
      <!-- icon: history, size=16, class="ga-side-navigation__recent-item-icon" -->
      <div class="ga-side-navigation__recent-item-content">
        <div class="ga-side-navigation__recent-item-label">My approvals</div>
        <div class="ga-side-navigation__recent-item-description">
          Approval › My tasks
        </div>
      </div>
    </div>
  </div>
  <div class="ga-side-navigation__footer">
    <div tabindex="0" class="ga-side-navigation__user">
      <img
        class="ga-side-navigation__user-avatar"
        src="https://i.pravatar.cc/40?img=49"
        alt="Avatar"
      />
      <span class="ga-side-navigation__user-name">Anna Andersson</span>
      <span class="ga-side-navigation__user-action">
        <!-- icon: chevrons-up-down, size=16 -->
      </span>
    </div>
  </div>
</div>
```

### Search Results

```html
<div class="ga-side-navigation" style="height: 600px">
  <div class="ga-side-navigation__header">
    <div tabindex="0" class="ga-side-navigation__switcher">
      <span class="ga-side-navigation__switcher-title">Dashboard</span>
      <span class="ga-side-navigation__switcher-action">
        <!-- icon: chevrons-up-down, size=16 -->
      </span>
    </div>
    <div class="ga-input ga-side-navigation__search">
      <!-- icon: search, size=16 -->
      <input type="search" placeholder="Search" value="voucher" />
      <kbd class="ga-side-navigation__search-shortcut">⌘ K</kbd>
    </div>
  </div>
  <div class="ga-side-navigation__body">
    <div class="ga-side-navigation__search-results-title">3 results</div>
    <div tabindex="0" class="ga-side-navigation__search-results-item">
      <div class="ga-side-navigation__search-results-item-content">
        <div class="ga-side-navigation__search-results-item-label">
          <strong>Voucher</strong>
          registration
        </div>
        <div class="ga-side-navigation__search-results-item-description">
          Finance › Accounts
        </div>
      </div>
    </div>
    <div tabindex="0" class="ga-side-navigation__search-results-item">
      <div class="ga-side-navigation__search-results-item-content">
        <div class="ga-side-navigation__search-results-item-label">
          <strong>Voucher</strong>
          overview
        </div>
        <div class="ga-side-navigation__search-results-item-description">
          Finance › Reports
        </div>
      </div>
    </div>
    <div tabindex="0" class="ga-side-navigation__search-results-item">
      <div class="ga-side-navigation__search-results-item-content">
        <div class="ga-side-navigation__search-results-item-label">
          Templates for
          <strong>Voucher</strong>
        </div>
        <div class="ga-side-navigation__search-results-item-description">
          Finance › Settings
        </div>
      </div>
      <!-- icon: external-link, size=16, class="ga-side-navigation__search-results-item-external" -->
    </div>
  </div>
  <div class="ga-side-navigation__footer">
    <div tabindex="0" class="ga-side-navigation__user">
      <img
        class="ga-side-navigation__user-avatar"
        src="https://i.pravatar.cc/40?img=49"
        alt="Avatar"
      />
      <span class="ga-side-navigation__user-name">Anna Andersson</span>
      <span class="ga-side-navigation__user-action">
        <!-- icon: chevrons-up-down, size=16 -->
      </span>
    </div>
  </div>
</div>
```

### Minimal

```html
<div class="ga-side-navigation" style="height: 400px">
  <div class="ga-side-navigation__header">
    <div tabindex="0" class="ga-side-navigation__switcher">
      <span class="ga-side-navigation__switcher-title">App</span>
      <span class="ga-side-navigation__switcher-action">
        <!-- icon: chevrons-up-down, size=16 -->
      </span>
    </div>
  </div>
  <div class="ga-side-navigation__body">
    <div class="ga-side-navigation__item ga-side-navigation__item--active">
      <span class="ga-side-navigation__item-icon"></span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Home</div>
      </div>
    </div>
    <div class="ga-side-navigation__item">
      <span class="ga-side-navigation__item-icon"></span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Settings</div>
      </div>
    </div>
  </div>
  <div class="ga-side-navigation__footer">
    <div tabindex="0" class="ga-side-navigation__user">
      <img
        class="ga-side-navigation__user-avatar"
        src="https://i.pravatar.cc/40?img=49"
        alt="Avatar"
      />
      <span class="ga-side-navigation__user-name">Anna Andersson</span>
      <span class="ga-side-navigation__user-action">
        <!-- icon: chevrons-up-down, size=16 -->
      </span>
    </div>
  </div>
</div>
```

### With Tree Menu

```html
<div class="ga-side-navigation" style="height: 450px">
  <div class="ga-side-navigation__header">
    <div tabindex="0" class="ga-side-navigation__switcher">
      <span class="ga-side-navigation__switcher-title">Finance</span>
      <span class="ga-side-navigation__switcher-action">
        <!-- icon: chevrons-up-down, size=16 -->
      </span>
    </div>
  </div>
  <div class="ga-side-navigation__body">
    <div class="ga-side-navigation__item ga-side-navigation__item--expanded">
      <span class="ga-side-navigation__item-icon">
        <!-- icon: chevron-down, size=16 -->
      </span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Settings</div>
      </div>
    </div>
    <div
      class="ga-side-navigation__item ga-side-navigation__item--level-2 ga-side-navigation__item--expanded"
    >
      <span class="ga-side-navigation__item-icon">
        <!-- icon: chevron-down, size=16 -->
      </span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">General ledger</div>
      </div>
    </div>
    <div
      class="ga-side-navigation__item ga-side-navigation__item--level-3 ga-side-navigation__item--active"
    >
      <span class="ga-side-navigation__item-icon"></span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Journal entries</div>
      </div>
    </div>
    <div class="ga-side-navigation__item ga-side-navigation__item--level-3">
      <span class="ga-side-navigation__item-icon">
        <!-- icon: chevron-down, size=16 -->
      </span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Account balances</div>
      </div>
    </div>
    <div class="ga-side-navigation__item ga-side-navigation__item--level-4">
      <span class="ga-side-navigation__item-icon">
        <!-- icon: chevron-down, size=16 -->
      </span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Level 4 label</div>
      </div>
    </div>
    <div class="ga-side-navigation__item ga-side-navigation__item--level-5">
      <span class="ga-side-navigation__item-icon">
        <!-- icon: chevron-down, size=16 -->
      </span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Level 5 label</div>
      </div>
    </div>
    <div class="ga-side-navigation__item ga-side-navigation__item--level-6">
      <span class="ga-side-navigation__item-icon"></span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Level 6 label</div>
      </div>
    </div>
    <div class="ga-side-navigation__item ga-side-navigation__item--level-2">
      <span class="ga-side-navigation__item-icon">
        <!-- icon: chevron-right, size=16 -->
      </span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Accounts payable</div>
      </div>
    </div>
    <div class="ga-side-navigation__item">
      <span class="ga-side-navigation__item-icon"></span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Reporting</div>
      </div>
      <!-- icon: external-link, size=16, class="ga-side-navigation__item-external" -->
    </div>
    <div class="ga-side-navigation__item">
      <span class="ga-side-navigation__item-icon"></span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Settings</div>
      </div>
    </div>
    <div class="ga-side-navigation__item ga-side-navigation__item--disabled">
      <span class="ga-side-navigation__item-icon"></span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Archive</div>
      </div>
    </div>
  </div>
  <div class="ga-side-navigation__footer">
    <div tabindex="0" class="ga-side-navigation__user">
      <img
        class="ga-side-navigation__user-avatar"
        src="https://i.pravatar.cc/40?img=49"
        alt="Avatar"
      />
      <span class="ga-side-navigation__user-name">Anna Andersson</span>
      <span class="ga-side-navigation__user-action">
        <!-- icon: chevrons-up-down, size=16 -->
      </span>
    </div>
  </div>
</div>
```

### Switcher Open

```html
<div class="ga-side-navigation" style="height: 400px">
  <div class="ga-side-navigation__header">
    <div
      tabindex="0"
      class="ga-side-navigation__switcher ga-side-navigation__switcher--active"
    >
      <span class="ga-side-navigation__switcher-title">Dashboard</span>
      <span class="ga-side-navigation__switcher-action">
        <!-- icon: chevron-down, size=16 -->
      </span>
    </div>
    <div class="ga-side-navigation__switcher-dropdown">
      <div class="ga-side-navigation__switcher-dropdown-header">
        Choose a service
      </div>
      <div tabindex="0" class="ga-side-navigation__switcher-dropdown-item">
        <span class="ga-side-navigation__switcher-dropdown-title">Finance</span>
      </div>
      <div tabindex="0" class="ga-side-navigation__switcher-dropdown-item">
        <span class="ga-side-navigation__switcher-dropdown-title">
          Analytics
        </span>
      </div>
      <div tabindex="0" class="ga-side-navigation__switcher-dropdown-item">
        <span class="ga-side-navigation__switcher-dropdown-title">HR</span>
        <!-- icon: external-link, size=16, class="ga-side-navigation__switcher-dropdown-external" -->
      </div>
    </div>
  </div>
  <div class="ga-side-navigation__body">
    <div class="ga-side-navigation__item ga-side-navigation__item--active">
      <span class="ga-side-navigation__item-icon"></span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Home</div>
      </div>
    </div>
    <div class="ga-side-navigation__item">
      <span class="ga-side-navigation__item-icon"></span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Settings</div>
      </div>
    </div>
  </div>
  <div class="ga-side-navigation__footer">
    <div tabindex="0" class="ga-side-navigation__user">
      <img
        class="ga-side-navigation__user-avatar"
        src="https://i.pravatar.cc/40?img=49"
        alt="Avatar"
      />
      <span class="ga-side-navigation__user-name">Anna Andersson</span>
      <span class="ga-side-navigation__user-action">
        <!-- icon: chevrons-up-down, size=16 -->
      </span>
    </div>
  </div>
</div>
```

### Footer Open

```html
<div class="ga-side-navigation" style="height: 400px">
  <div class="ga-side-navigation__header">
    <div tabindex="0" class="ga-side-navigation__switcher">
      <span class="ga-side-navigation__switcher-title">Dashboard</span>
      <span class="ga-side-navigation__switcher-action">
        <!-- icon: chevrons-up-down, size=16 -->
      </span>
    </div>
  </div>
  <div class="ga-side-navigation__body">
    <div class="ga-side-navigation__item ga-side-navigation__item--active">
      <span class="ga-side-navigation__item-icon"></span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Home</div>
      </div>
    </div>
    <div class="ga-side-navigation__item">
      <span class="ga-side-navigation__item-icon"></span>
      <div class="ga-side-navigation__item-content">
        <div class="ga-side-navigation__item-label">Settings</div>
      </div>
    </div>
  </div>
  <div class="ga-side-navigation__footer">
    <div class="ga-side-navigation__footer-dropdown">
      <div tabindex="0" class="ga-side-navigation__footer-dropdown-item">
        <!-- icon: user, size=16, class="ga-side-navigation__footer-dropdown-icon" -->
        <span class="ga-side-navigation__footer-dropdown-title">Profile</span>
      </div>
      <div tabindex="0" class="ga-side-navigation__footer-dropdown-item">
        <!-- icon: settings, size=16, class="ga-side-navigation__footer-dropdown-icon" -->
        <span class="ga-side-navigation__footer-dropdown-title">Settings</span>
      </div>
      <div
        tabindex="0"
        class="ga-side-navigation__footer-dropdown-item ga-side-navigation__footer-dropdown-item--disabled"
      >
        <!-- icon: log-out, size=16, class="ga-side-navigation__footer-dropdown-icon" -->
        <span class="ga-side-navigation__footer-dropdown-title">Log out</span>
      </div>
    </div>
    <div
      tabindex="0"
      class="ga-side-navigation__user ga-side-navigation__user--active"
    >
      <img
        class="ga-side-navigation__user-avatar"
        src="https://i.pravatar.cc/40?img=49"
        alt="Avatar"
      />
      <span class="ga-side-navigation__user-name">Anna Andersson</span>
      <span class="ga-side-navigation__user-action">
        <!-- icon: chevron-up, size=16 -->
      </span>
    </div>
  </div>
</div>
```
