Lists & Navigation

Category Tabs

Horizontal text-tab selector for category filtering and segmented in-screen navigation. Tracks the selected tab internally, calls onTabSelect on press, and drives sibling component filtering through onCategoryFilter - without forcing a full screen change.

Best forIn-screen filtering

Product and menu filters, segmented list views, and category-driven content sections on the same screen.

Sibling filteringonCategoryFilter

Emits the selected category value so connected list or grid components can filter their content automatically.

TierFree

Available on all plans.

What it does

Four things worth knowing

Internal selection with external emission

The component tracks the active tab internally and renders selected/unselected styles automatically. When a tab is pressed, it calls onTabSelect with the full TabItem and onCategoryFilter with the category value for sibling filtering.

Fuzzy matching from activeCategoryFilter

When activeCategoryFilter is set externally (e.g. from a parent player), the component fuzzy-matches it to the nearest existing tab value and highlights the correct tab - even if the value isn’t an exact match.

Text-only tabs - no icons

Each tab renders a label and carries a value used for filtering. An optional screenId can be attached per tab for navigation use cases. No icons are supported.

Builder mode vs. preview mode

When isPreview is false, tab presses are disabled so the block can be dragged on the canvas. Filtering and selection only fire in preview and live runtime.

Builder setup

Find it, drop it, edit the tabs

Where to find itAdd it to any screen

  1. Component picker → Lists & NavigationCategory Tabs.
  2. Drop it above the list or grid it should filter.
  3. Open the edit panel and configure the tabs array.

Before you publishThree things to check

  1. Keep tabs[].value aligned with the category slugs used by connected list or menu components - mismatched values break filtering.
  2. Set selectedValue to the default active tab so the screen opens with a selection already applied.
  3. Test filtering in preview - tab presses are disabled on the canvas.
Category: Lists & NavigationComponent: BuilderCategoryTabsRegistry key: category-tabsTier: Free
Props

Tabs, selection, and layout

Every prop below is set in the property panel. Start with the tabs array and selectedValue, then adjust spacing and typography to match the brand.

PropTypeDefaultDescription
tabsTabItem[]2 example itemsArray of { label, value, screenId? } objects. Keep value aligned with sibling component category slugs.
selectedValuestring’appetizer’Default active tab value. Sets the initial selection on first render.
borderRadiusnumber20Corner rounding for tab pill.
paddingHorizontalnumber16Horizontal padding inside each tab.
paddingVerticalnumber8Vertical padding inside each tab.
spacingnumber8Gap between tabs.
fontSizenumber14Tab label text size.
fontFamilystring’Urbanist-Medium’Font face for tab labels.
fontWeightstring’500’Unselected label weight.
selectedFontWeightstring’600’Selected label weight.
showBorderbooleanfalseShow tab border outlines.
borderWidthnumber1Border stroke width. Only visible when showBorder is on.
Toggles & colours

Make it yours

Every color below is yours to change. The defaults are a neutral starting point - selected tab color is the most impactful change to match your brand.

PropDefaultWhat it controls
backgroundColortransparentStrip background color.
tabBackgroundColortransparentUnselected tab background.
selectedTabBackgroundColor#E8613ASelected tab background - the primary brand color to change.
textColor#666666Unselected label text color.
selectedTextColor#FFFFFFSelected label text color.
borderColor#E0E0E0Unselected tab border. Only visible when showBorder is on.
selectedBorderColortransparentSelected tab border color.
Tips

Common mistakes to avoid

Keep tab values in sync with sibling components

The value field on each tab must match the category slugs used by any connected list or menu component. Mismatched values mean filtering silently does nothing.

Always set a default selectedValue

Without a selectedValue, no tab appears active on load. Set it to the most relevant default category so the screen opens with content already filtered.

Test filtering in preview

Tab presses are disabled on the canvas. Always switch to preview mode to confirm onCategoryFilter is correctly driving sibling component content before publishing.

Change selected tab color first

The default selected background is orange (#E8613A). This is the single highest-impact color change - update it to your brand primary before adjusting anything else.