Skip to content

Configuration ​

All options live on the top-level card config (type: custom:tabdeck-card) except per-tab options, which live on each entry of tabs.

Top-level options ​

OptionTypeDefaultDescription
tabslistrequired*The tabs to show. See Per-tab options. *Optional when auto_tabs is set.
auto_tabsmap—Generate a tab per item from a Jinja list (template + optional tab_template), or from a built-in source (areas, labels, floors, domains, devices, todo, calendars, cameras, zones; with domains, exclude, content: tiles). See Dynamic tabs.
default_tabnumber | string0Tab shown first. A number is a 0-based index; a string matches a tab name.
presetdefault | ios | material | glass | minimal | rail—A bundle of styling options; explicit keys override it. See Style presets.
positiontop | bottom | left | righttopWhere the tab bar sits relative to the content.
styleunderline | pill | segmented | boxed | textunderlineVisual style of the tab bar. See Extra bar styles.
tab_displayboth | icon | label | active | dotsbothShow icons, labels, both — or icons with only the selected tab expanded. See Tab display mode.
tab_display_narrow / narrow_widthboth | icon | label | active | dots / px— / 450Display mode when the card is narrower than narrow_width. See Responsive layouts.
splitnumber | {min_width, columns}—At or above this card width, show all tabs side by side (no bar). See Responsive layouts.
alignstart | center | end | justifystartHow tabs are distributed along the bar. See Tab alignment.
badge_displaytext | dottextRender badges as text or a dot. See Badge display mode.
badge_format{precision, unit, max}—Default numeric badge formatting for every tab. See Badges.
transitionnone | fade | slide | scale | flip | risenoneAnimate content on tab switch. See Panel transitions.
transition_narrowas transition—Transition used instead on cards narrower than narrow_width (e.g. none on phones). See Panel transitions.
transition_duration / transition_easingms / CSS easing180 / easeLength and curve of the panel animation. See Panel transitions.
indicator_sizenumber (1–16)3Underline indicator thickness in px. See Indicator thickness.
accent_indicatorbooleantrueColour the indicator by the selected tab's accent. See Accent indicator.
scrollableauto | true | falseautoWhether the bar scrolls horizontally when tabs overflow. auto scrolls only when needed.
stickybooleanfalsePin the bar while content scrolls. See Sticky tab bar.
collapsible / start_collapsedbooleanfalseTap the active tab to fold the content away / start folded. See Collapsible deck.
scroll_spybooleanfalseStack all tabs as sections; the bar scrolls to and tracks them. See Scroll-spy.
scroll_buttons / overflow_menubooleanfalseScroll arrows / ⋯ jump-menu when the bar overflows. See Scroll buttons.
swipe_mousebooleanfalseChange tabs by mouse drag (desktop).
unmount_hiddenbooleanfalseKeep only the active tab's card mounted. See Performance.
unload_afternumber (minutes)—Free a tab's card when it hasn't been opened for this long; it's rebuilt when opened again. See Performance.
header_cards / footer_cardslist of card configs—Cards shown above the bar / below the content on every tab. See Content layout.
content_heightauto | tallest | lengthautoKeep the tallest tab's height, or a fixed height that scrolls inside. See Content layout.
content_max_heightlength—Content taller than this scrolls inside the card.
fullscreenbooleanfalseFull-screen button in the bar: opens the active tab over the whole window. See Content layout.
swipe_peekbooleanfalseWhile swiping, the content follows the finger and the next tab slides in. See Content layout.
headerbooleanfalseShow the active tab's title above the content. See Content header.
aria_labelstringTabsAccessible name for the tab bar (screen readers).
remembernone | browser | url | entitynoneHow the selected tab is remembered. See Navigation & Persistence.
lazybooleanfalseWhen true, a tab's card is only built the first time it becomes visible.
animatedbooleantrueAnimate the selection indicator as it moves between tabs.
swipebooleanfalseAllow left/right swipe gestures to change tabs (mobile).
auto_rotatenumber | {interval, resume_after}—Cycle tabs every N seconds; pauses after interaction. See Auto-rotate & idle return.
idle_returnnumber (seconds)—Return to the default tab after inactivity. See Auto-rotate & idle return.
alert_firstbooleanfalseAlerting tabs move to the front. See Alert pulse.
alert_snoozenumber (minutes)—Long-press an alerting tab to silence its pulse. See Alert pulse.
default_by_time / default_by_devicemap—Starting tab by time of day / by browser. See Remote control & events.
remote_entityentity id—Switch to the tab named by this entity's state when it changes. See Remote control & events.
remote_event / fire_event / event_idboolean / boolean / stringfalse / false / —Switch on tabdeck_select events; fire tabdeck_tab_changed (admin users). See Remote control & events.
edit_mode_revealbooleantrueShow hidden tabs (faded) and pause rotation while editing the dashboard. See Edit mode helpers.
dockbooleanfalsePin the bar to the bottom of the screen as phone-style navigation. See Dock.
content_arrowsbooleanfalse‹ › buttons beside the content to step between tabs. See Dots & arrows.
hide_barbooleanfalseRender only the content, no tab bar. See Grouped tabs.
searchbooleanfalse🔍 quick-switch filter over the tabs. See Search & shortcuts.
hotkeysbooleanfalseKeyboard shortcuts: 1–9, [ ], /. See Search & shortcuts.
historybooleanfalseBack button returns to the previous tab. See Back button.
customizebooleanfalseEach person can reorder/hide tabs, saved per browser. See Arrange tabs.
rail_expandbooleanfalseLeft/right bars: icons until hovered or focused, then labels, over the content. See Expanding side rail.
stylesmap—CSS variables/properties applied to the card. See Theming.

Legacy: options.defaultTabIndex is still accepted as a fallback for default_tab.

Per-tab options ​

Each item in tabs:

OptionTypeDefaultDescription
cardcard configrequired*Any Lovelace card configuration. (*Not needed for a tap_action tab.)
cardslist of card configs—Multiple cards, auto-stacked. See Multiple cards per tab. *Either card or cards.
layout / columns / min_column_widthmasonry / number / px— / 2 / —Balance cards into columns like HA's masonry view. See Content layout.
layout: sections / sections / max_columnslist / number— / 4Titled groups of cards like HA's sections view (title, icon, badges, column_span, cards). See Content layout.
backgroundstring—Content background while the tab is open: colour, gradient or image path / URL (may be a template). See Content layout.
namestring—Tab label. Falls back to Tab N when omitted.
subtitlestring—Secondary text under the label. See Tab subtitles.
iconstring (mdi)—Tab icon, e.g. mdi:lightbulb.
accentstring (CSS colour)—Accent colour for the tab (indicator + selected state).
colorstring (CSS colour)—Fixed label/icon colour for the tab. See Per-tab colour.
badgestring—An entity id (shows its state) or a Jinja template. See Badges.
badge_format{precision, unit, max}—Numeric badge formatting (overrides the top-level default). See Badges.
badge (count form){count, state, area}—Count matching entities without Jinja. See Badges.
badge_iconicon—An icon as the badge. See Badges.
ring / ring_max / ring_colorentity / template / number, number, colour— / 100 / —Progress ring around the icon. See Badges.
area / floor / label / domainsid / list—No card needed: tiles of the entities there. See Dynamic tabs.
pin / pin_timeoutstring / minutes—Ask for a code before the tab opens (not security). See PIN-locked tabs.
disabledbooleanfalseShow the tab greyed-out and non-selectable. See Disabled tabs.
fabbooleanfalseRender the tab as a raised round action button. See Floating action tabs.
children / children_display / children_optionslist / string / object— / row / —Sub-tabs as a second row or a ▾ menu. See Grouped tabs.
card_sizenumber—getCardSize() hint (rows) for this tab, so masonry sizing is stable across tab switches.
tap_actionaction—Tap runs this action instead of opening the tab (navigation tabs; no card needed). See Navigation & action tabs.
enter_action / leave_actionaction—HA action when the tab becomes / stops being active. See Tab-change actions.
hold_action / badge_actionaction—HA action on tab long-press / badge click. See Tab & badge actions.
visibilitylist of conditions—Conditions for showing the tab (supports and/or/not). See Tab Visibility.
stylesmap—CSS properties applied to the card while this tab is active (over the top-level styles). See Theming.
alertlist of conditions—While all are met, the tab pulses in the alert colour. See Alert pulse.

name, subtitle, icon, accent, color and background also accept a Jinja template that renders live. See State-driven icons, names & colours.

Full example ​

yaml
type: custom:tabdeck-card
position: top
style: pill
default_tab: Climate
remember: url
animated: true
swipe: true
lazy: true
tabs:
  - name: Climate
    icon: mdi:thermostat
    accent: "#e8743b"
    card:
      type: thermostat
      entity: climate.living_room

  - name: Cameras
    icon: mdi:cctv
    badge: binary_sensor.motion_any   # shows on/off
    card:
      type: picture-glance
      entities: []
      camera_image: camera.driveway

  - name: Guests
    icon: mdi:account-group
    visibility:
      - condition: state
        entity: input_boolean.guest_mode
        state: "on"
    card:
      type: entities
      entities:
        - input_boolean.guest_wifi

See also ​