# ShellHeaderConfig

> _Since v0.1.1_

Shell header bar configuration

## Properties

| Property | Type | Description |
| -------- | ---- | ----------- |
| `title?` | <code>string</code> | Grid title displayed on the left (optional) |
| `toolbarContents?` | <code><a href="/grid/plugins/shell/interfaces/toolbarcontentdefinition/">ToolbarContentDefinition</a>[]</code> | Custom toolbar content (rendered before tool panel toggle) |
| `visible?` | <code>boolean</code> | Whether the shell header bar element (`.tbw-shell-header`) is rendered. <span class="since-badge" title="Introduced in v2.16.0">v2.16.0+</span> |
| `toolPanelToggle?` | <code>boolean</code> | Whether the grid renders its built-in tool panel toggle button (`button.tbw-toolbar-btn[data-panel-toggle]`) and the auto-inserted `.tbw-toolbar-separator` between custom toolbar contents and the toggle. |
| `lightDomContent?` | <code>HTMLElement[]</code> | Light DOM header content elements (parsed from &lt;tbw-grid-header&gt; children).  Set by ConfigManager during merge |
| `hasToolButtonsContainer?` | <code>boolean</code> | Whether a tool buttons container was found in light DOM.  Set by ConfigManager during merge |

### Property Details

#### visible

Whether the shell header bar element (`.tbw-shell-header`) is rendered.

Set to `false` to drive tool panels entirely from your own UI — for
example, a utility-column header icon whose click handler calls
ShellPlugin.openToolPanel. The header bar (title, toolbar
contents, built-in toggle) is fully suppressed, but the shell body and
any registered tool panels still render and remain openable via the API.

When `false`, a close (✕) button is rendered in the open tool panel
(unless `toolPanel.locked` is `true`, or `toolPanel.mode` is `'dropdown'`,
which already light-dismisses) so the panel can always be dismissed
without the header toggle. With a single panel the ✕ shares the first
accordion header row; with multiple panels it gets its own row at the top.
Overlay panels also close on &lt;kbd&gt;Esc&lt;/kbd&gt;; window-wide click-outside
dismissal additionally requires `toolPanel.closeOnClickOutside: true`.

Unlike `toolPanelToggle: false` (which only removes the built-in toggle
button while keeping the bar), this removes the entire bar element — no
CSS override needed.

**Default:** `true`

---

#### toolPanelToggle

Whether the grid renders its built-in tool panel toggle button
(`button.tbw-toolbar-btn[data-panel-toggle]`) and the auto-inserted
`.tbw-toolbar-separator` between custom toolbar contents and the toggle.

Set to `false` when you want to provide your own toggle button (e.g. a
design-system button styled to match your application). Wire your button
to call ShellPlugin.toggleToolPanel (or `toggleToolPanelSection(id)` for
a specific section). All tool panels remain functional; only the
built-in toggle button and adjacent separator are suppressed.

**Default:** `true`

---
