## Feature Examples

### Size
- description: Control the tab size with the `size` prop: - `medium` (default) is the standard used in common cases. - `small` fits into smaller elements and compact designs. - `tiny` is used for dense layouts.
- example:
```jsx
<StorybookComponents.Stack flexDirection="column" width="200px">
  <VerticalTabs onChange={(/*id*/) => {}}>
    <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
      Medium tab 1
    </VerticalTabs.TabItem>
    <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
      Medium tab 2
    </VerticalTabs.TabItem>
    <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
      Medium tab 3
    </VerticalTabs.TabItem>
  </VerticalTabs>
  <VerticalTabs size="small" onChange={(/*id*/) => {}}>
    <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
      Small tab 1
    </VerticalTabs.TabItem>
    <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
      Small tab 2
    </VerticalTabs.TabItem>
    <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
      Small tab 3
    </VerticalTabs.TabItem>
  </VerticalTabs>
  <VerticalTabs size="tiny" onChange={(/*id*/) => {}}>
    <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
      Tiny tab 1
    </VerticalTabs.TabItem>
    <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
      Tiny tab 2
    </VerticalTabs.TabItem>
    <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
      Tiny tab 3
    </VerticalTabs.TabItem>
  </VerticalTabs>
</StorybookComponents.Stack>;
```

### Skin
- description: `skin` controls the overall visual style of the `VerticalTabs` container and items. - `standard` (default) - `light` - `neutral`
- example:
```jsx
() => {
  const [activeTabs, setActiveTabs] = React.useState({
    standard: 0,
    light: 0,
    neutral: 0,
  });

  const tabItems = [
    { id: 0, label: 'Overview' },
    { id: 1, label: 'Settings' },
    { id: 2, label: 'Billing' },
  ];

  return (
    <Box gap="20px" direction="vertical">
      <Box direction="horizontal" gap="20px">
        <Box width="220px" gap="20px" direction="vertical">
          <Text>Standard</Text>
          <VerticalTabs
            skin="standard"
            activeTabId={activeTabs.standard}
            onChange={(tabId) =>
              setActiveTabs((prevTabs) => ({ ...prevTabs, standard: tabId }))
            }
          >
            {tabItems.map((item) => (
              <VerticalTabs.TabItem key={item.id} id={item.id}>
                {item.label}
              </VerticalTabs.TabItem>
            ))}
          </VerticalTabs>
        </Box>

        <Box width="220px" gap="20px" direction="vertical">
          <Text>Light</Text>
          <VerticalTabs
            skin="light"
            activeTabId={activeTabs.standard}
            onChange={(tabId) =>
              setActiveTabs((prevTabs) => ({ ...prevTabs, standard: tabId }))
            }
          >
            {tabItems.map((item) => (
              <VerticalTabs.TabItem key={item.id} id={item.id}>
                {item.label}
              </VerticalTabs.TabItem>
            ))}
          </VerticalTabs>
        </Box>

        <Box width="220px" gap="20px" direction="vertical">
          <Text>Neutral</Text>
          <VerticalTabs
            skin="neutral"
            activeTabId={activeTabs.standard}
            onChange={(tabId) =>
              setActiveTabs((prevTabs) => ({ ...prevTabs, standard: tabId }))
            }
          >
            {tabItems.map((item) => (
              <VerticalTabs.TabItem key={item.id} id={item.id}>
                {item.label}
              </VerticalTabs.TabItem>
            ))}
          </VerticalTabs>
        </Box>
      </Box>
    </Box>
  );
};
```

### Group title
- description: Group related tabs together under a title by using a `<VerticalTabs.TabsGroup/>` wrapper.
- example:
```jsx
<div style={{ width: 200 }}>
  <VerticalTabs onChange={(/*id*/) => {}}>
    <VerticalTabs.TabsGroup title="Group Title">
      <VerticalTabs.TabItem>Tab 1</VerticalTabs.TabItem>
      <VerticalTabs.TabItem>Tab 2</VerticalTabs.TabItem>
      <VerticalTabs.TabItem>Tab 3</VerticalTabs.TabItem>
    </VerticalTabs.TabsGroup>
  </VerticalTabs>
</div>;
```

### Selected tab
- description: Specify which tab is currently selected with the `activeTabId` prop.
- example:
```jsx
<div style={{ width: 200 }}>
  <VerticalTabs activeTabId={0} onChange={(/*id*/) => {}}>
    <VerticalTabs.TabsGroup title="Group Title">
      <VerticalTabs.TabItem id={0}>Tab 1</VerticalTabs.TabItem>
      <VerticalTabs.TabItem id={1}>Tab 2</VerticalTabs.TabItem>
      <VerticalTabs.TabItem id={2}>Tab 3</VerticalTabs.TabItem>
    </VerticalTabs.TabsGroup>
  </VerticalTabs>
</div>;
```

## Common Use Case Examples

### Sidebar in a custom modal
- description: Place tabs inside a `</CustomModalLayout>` to create a sidebar with structured content.
- example:
```jsx
<CustomModalLayout
  showFooterDivider
  showHeaderDivider
  primaryButtonText="Save"
  secondaryButtonText="Cancel"
  onCloseButtonClick={() => {}}
  title="Account settings"
  removeContentPadding
  content={
    <Box>
      <Box width="200px" direction="vertical" paddingBottom="16px">
        <VerticalTabs size="small" onChange={(/*id*/) => {}}>
          <VerticalTabs.TabsGroup title="Settings">
            <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
              Account info
            </VerticalTabs.TabItem>
            <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
              Login info
            </VerticalTabs.TabItem>
            <VerticalTabs.TabItem suffixIcon={<Icons.ChevronRight />}>
              Email preferences
            </VerticalTabs.TabItem>
          </VerticalTabs.TabsGroup>
        </VerticalTabs>
      </Box>
      <Divider direction="vertical"></Divider>
    </Box>
  }
/>;
```
