Skip to main content

Common Examples

import { useState } from "react";
import { SegmentedControl } from "@servicetitan/anvil2";
import MenuIcon from "@servicetitan/anvil2/assets/icons/material/round/menu.svg";

const ExampleComponent = () => {
  const [selected, setSelected] = useState("level 2");

  return (
    <Flex direction="column">
      <SegmentedControl selected={selected} onChange={setSelected}>
        <SegmentedControl.Segment value="level 1" icon={MenuIcon}>
          Level 1
        </SegmentedControl.Segment>
        <SegmentedControl.Segment value="level 2" icon={MenuIcon}>
          Level 2
        </SegmentedControl.Segment>
        <SegmentedControl.Segment value="level 3" icon={MenuIcon}>
          Level 3
        </SegmentedControl.Segment>
        <SegmentedControl.Segment value="level 4" icon={MenuIcon}>
          Level 4
        </SegmentedControl.Segment>
      </SegmentedControl>
    </Flex>
  );
};

SegmentedControl components

The Anvil2 segmented control is made up of a SegmentedControl component and multiple child SegmentedControl.Segment components. Similar to a group of radio inputs, each SegmentedControl.Segment will need a unique value string that will be passed into the SegmentedControl’s onChange function when it is selected.

Tooltip Example

The SegmentedControl.Segment components can be wrapped in the Anvil2 Tooltip.Trigger component to display a tooltip on focus and hover. This is required for accessibility when only using an icon.
Last modified on January 23, 2026