> ## Documentation Index
> Fetch the complete documentation index at: https://www.beeq.design/llms.txt
> Use this file to discover all available pages before exploring further.

# Divider

> A divider visually separates related content so users can scan layout groups, sections, and lists more easily.

export const CodeLivePreview = ({code, children, height, removePadding = false, mode = 'shadow'}) => {
  const previewRef = useRef(null);
  const BEEQ_ESM_URL = 'https://esm.sh/@beeq/core/dist/beeq/beeq.esm.js';
  const BEEQ_CSS_URL = 'https://esm.sh/@beeq/core/dist/beeq/beeq.css';
  const BEEQ_ICONS_URL = 'https://esm.sh/@beeq/core/dist/beeq/svg';
  const ensureParentBeeqRuntime = () => {
    if (document.querySelector('script[data-beeq-parent-runtime]')) return;
    const script = document.createElement('script');
    script.type = 'module';
    script.src = BEEQ_ESM_URL;
    script.dataset.beeqParentRuntime = BEEQ_ICONS_URL;
    document.head.appendChild(script);
  };
  const executeSnippetScripts = (root, runtimeWindow, previewRootArg, skipAttr) => {
    root.querySelectorAll('script').forEach(oldScript => {
      if (skipAttr && oldScript.hasAttribute(skipAttr)) return;
      if (oldScript.src) {
        const newScript = runtimeWindow.document.createElement('script');
        newScript.src = oldScript.src;
        oldScript.replaceWith(newScript);
        return;
      }
      runtimeWindow.Function('previewRoot', oldScript.textContent || '')(previewRootArg);
      oldScript.remove();
    });
  };
  const syncIframeMode = iframeDoc => {
    const root = document.documentElement;
    const explicitMode = root.getAttribute('bq-mode');
    const isDark = root.classList.contains('dark');
    const resolvedMode = explicitMode || (isDark ? 'dark' : 'light');
    iframeDoc.documentElement.setAttribute('bq-mode', resolvedMode);
    iframeDoc.body.setAttribute('bq-mode', resolvedMode);
  };
  useEffect(() => {
    if (mode === 'shadow') ensureParentBeeqRuntime();
  }, [mode]);
  useEffect(() => {
    const container = previewRef.current;
    if (!container) return;
    if (removePadding) container.style.padding = '0';
    container.innerHTML = '';
    if (mode === 'iframe') {
      const iframe = document.createElement('iframe');
      iframe.className = 'preview-iframe';
      iframe.style.width = '100%';
      iframe.style.border = '0';
      iframe.style.display = 'block';
      iframe.style.minHeight = height ?? '0px';
      iframe.setAttribute('title', 'Live code preview');
      iframe.setAttribute('loading', 'lazy');
      iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin');
      container.appendChild(iframe);
      const iframeDoc = iframe.contentDocument;
      const iframeWin = iframe.contentWindow;
      if (!iframeDoc || !iframeWin) return;
      iframeDoc.open();
      iframeDoc.write(['<!doctype html>', '<html>', '<head>', '  <meta charset="utf-8" />', '  <meta name="viewport" content="width=device-width, initial-scale=1" />', '  <style>html,body{margin:0;padding:0;min-height:100%;}</style>', `  <link rel="stylesheet" href="${BEEQ_CSS_URL}" />`, `  <script type="module" src="${BEEQ_ESM_URL}" data-beeq-iframe-runtime="${BEEQ_ICONS_URL}"></script>`, '</head>', '<body>', code, '</body>', '</html>'].join('\n'));
      iframeDoc.close();
      syncIframeMode(iframeDoc);
      const modeObserver = new MutationObserver(() => syncIframeMode(iframeDoc));
      modeObserver.observe(document.documentElement, {
        attributes: true,
        attributeFilter: ['class', 'bq-mode']
      });
      executeSnippetScripts(iframeDoc, iframeWin, iframeDoc, 'data-beeq-iframe-runtime');
      return () => modeObserver.disconnect();
    }
    const shadowRoot = container.shadowRoot ?? container.attachShadow({
      mode: 'open'
    });
    if (!shadowRoot.adoptedStyleSheets.length) {
      const fixSheet = new CSSStyleSheet();
      fixSheet.replaceSync(`
        bq-dropdown::part(panel),
        bq-panel::part(panel),
        bq-select::part(panel),
        bq-date-picker::part(panel) { z-index: 9999; }
        bq-tooltip::part(panel) { position: absolute; }
      `);
      shadowRoot.adoptedStyleSheets = [fixSheet];
    }
    shadowRoot.innerHTML = [`<link rel="stylesheet" href="${BEEQ_CSS_URL}">`, code].join('');
    executeSnippetScripts(shadowRoot, window, shadowRoot);
    return undefined;
  }, [code, mode, height]);
  return <div className="code-live-preview not-prose">
      {}
      <div className="preview" ref={previewRef} style={{
    minHeight: height
  }} />

      {}
      {children && <div className="code">{children}</div>}
    </div>;
};

export const CardTile = ({title, href, imageLightSrc, imageDarkSrc, children, enableImgZoom}) => {
  if (!href) {
    return <div className="card-tile block font-normal group relative my-2 ring-2 ring-transparent rounded-2xl overflow-hidden w-full">
        {imageLightSrc && <img className="w-full m-0 block dark:hidden" src={imageLightSrc} alt={title} {...enableImgZoom ? {
      zoom: true
    } : {
      noZoom: true
    }} />}
        {imageDarkSrc && <img className="w-full m-0 hidden dark:block" src={imageDarkSrc} alt={title} {...enableImgZoom ? {
      zoom: true
    } : {
      noZoom: true
    }} />}
        {title && <h2 className="mt-4 mb-2 px-6 text-base font-semibold">{title}</h2>}
        <div className="px-6 pb-5">{children}</div>
      </div>;
  }
  return <a href={href} className="card-tile block font-normal group relative my-2 ring-2 ring-transparent rounded-2xl overflow-hidden w-full cursor-pointer">
      {imageLightSrc && <img className="w-full m-0 block dark:hidden" src={imageLightSrc} alt={title} noZoom />}
      {imageDarkSrc && <img className="w-full m-0 hidden dark:block" src={imageDarkSrc} alt={title} noZoom />}
      {title && <h2 className="mt-4 mb-2 px-6 text-base font-semibold">{title}</h2>}
      <div className="px-6 pb-5">{children}</div>
    </a>;
};

<Frame className="px-4 py-4" caption="Divider component overview">
  <img className="block dark:hidden" src="https://mintcdn.com/beeq/7l4gei1h0AEi0HPD/components/images/divider/divider-overview-light.svg?fit=max&auto=format&n=7l4gei1h0AEi0HPD&q=85&s=49f51d8a2402bc2bf47bf9fa7f663429" alt="BEEQ Divider component overview" width="322" height="210" data-path="components/images/divider/divider-overview-light.svg" />

  <img className="hidden dark:block" src="https://mintcdn.com/beeq/7l4gei1h0AEi0HPD/components/images/divider/divider-overview-dark.svg?fit=max&auto=format&n=7l4gei1h0AEi0HPD&q=85&s=5f80890c11494e32ea0896518862f0c7" alt="BEEQ Divider component overview" width="322" height="210" data-path="components/images/divider/divider-overview-dark.svg" />
</Frame>

A divider creates a visual break between related pieces of content. Use it to clarify grouping without adding another heading, card, or container.

## When to use

<CardGroup cols={2}>
  <Card>
    <span className="flex items-center mr-2 text-lg font-medium" role="heading">
      <Icon className="mr-2" icon="thumbs-up" iconType="solid" size={20} color="var(--bq-stroke--success)" />

      Use dividers when
    </span>

    * Content groups need a subtle visual boundary
    * A list or page section needs clearer scanning
    * Related items sit close together and spacing alone is not enough
    * Horizontal or vertical separation improves the layout hierarchy
  </Card>

  <Card>
    <span className="flex items-center mr-2 text-lg font-medium" role="heading">
      <Icon className="mr-2" icon="thumbs-down" iconType="solid" size={20} color="var(--bq-stroke--danger)" />

      Do not use dividers when
    </span>

    * Whitespace already separates the content clearly
    * The divider adds clutter without improving comprehension
    * A heading, card, or layout change would explain the grouping better
    * Users need a semantic landmark or navigational structure
  </Card>
</CardGroup>

## Patterns

### Full-bleed and inset

A **full-bleed** divider runs edge-to-edge across its container. This is the default (`stroke-basis="0"`) and suits top-level page and card section breaks where content is not indented.

An **inset** divider sets `stroke-basis` to the pixel offset of the content below it — typically the width of a list item's leading avatar or icon. The stroke starts at that offset rather than the container edge, keeping it visually aligned with the text column. Use this pattern in rich lists and inbox-style data rows.

### List rows

Place a divider between repeated items in dense views — inboxes, contact lists, or data tables — when row boundaries would otherwise blur together and impair scanning.

### Title separation

A divider with slot content and `title-alignment="start"` doubles as a lightweight section label. Use this pattern when a heading (`<h2>`, `<h3>`) would add too much visual weight but the group still needs a short name.

## Anatomy

<Frame className="px-4 py-4" caption="Divider anatomy">
  <img className="block dark:hidden" src="https://mintcdn.com/beeq/7l4gei1h0AEi0HPD/components/images/divider/divider-anatomy-light.svg?fit=max&auto=format&n=7l4gei1h0AEi0HPD&q=85&s=ca1fafa6e9b75a0353fd5d0f480df55f" alt="BEEQ Divider anatomy" width="520" height="72" data-path="components/images/divider/divider-anatomy-light.svg" />

  <img className="hidden dark:block" src="https://mintcdn.com/beeq/7l4gei1h0AEi0HPD/components/images/divider/divider-anatomy-dark.svg?fit=max&auto=format&n=7l4gei1h0AEi0HPD&q=85&s=4cd7c3faf203d531597d096ee1c14415" alt="BEEQ Divider anatomy" width="520" height="72" data-path="components/images/divider/divider-anatomy-dark.svg" />
</Frame>

| Part  | Element | Description                                      |
| ----- | ------- | ------------------------------------------------ |
| **1** | Stroke  | The visual line that separates content           |
| **2** | Text    | Optional text content placed in the default slot |

## Design guidelines

### Orientation

<CardGroup cols={2}>
  <CardTile title="Horizontal divider" imageLightSrc="/components/images/divider/divider-type-horizontal-light.svg" imageDarkSrc="/components/images/divider/divider-type-horizontal-dark.svg">
    Use horizontal dividers to separate stacked content, sections, list rows, or blocks inside a page.
  </CardTile>

  <CardTile title="Vertical divider" imageLightSrc="/components/images/divider/divider-type-vertical-light.svg" imageDarkSrc="/components/images/divider/divider-type-vertical-dark.svg">
    Use vertical dividers between side-by-side controls or columns when spacing alone does not show the relationship clearly.
  </CardTile>
</CardGroup>

### Placement

<CardGroup cols={2}>
  <CardTile title="Divide Group" imageLightSrc="/components/images/divider/divider-group-light.svg" imageDarkSrc="/components/images/divider/divider-group-dark.svg">
    For a clearer representation of elements dependent on specific categories or criteria, the divider plays a crucial role in delineating sections.
  </CardTile>

  <CardTile title="Inside dense lists" imageLightSrc="/components/images/divider/divider-placement-list-light.svg" imageDarkSrc="/components/images/divider/divider-placement-list-dark.svg">
    Use dividers in dense lists when repeated items need stronger row boundaries for scanning.
  </CardTile>
</CardGroup>

### Sizing

<Note>
  Divider strokes default to a thin line. Increase `stroke-thickness` only when the divider must match a stronger visual treatment in the surrounding layout.
</Note>

## Usage

### Default

The simplest use — no attributes or slot content required. The divider renders as a full-width horizontal line.

<CodeLivePreview
  mode="shadow"
  code={`
<bq-divider></bq-divider>
`}
>
  <CodeGroup>
    ```html HTML icon="html5" theme={"theme":{"light":"one-light","dark":"night-owl"}}
    <bq-divider></bq-divider>
    ```

    ```jsx React icon="react" theme={"theme":{"light":"one-light","dark":"night-owl"}}
    import { BqDivider } from "@beeq/react";

    <BqDivider />
    ```

    ```ts Angular icon="angular" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    import { Component } from "@angular/core";
    import { BqDivider } from "@beeq/angular/standalone";

    @Component({
      selector: "app-root",
      standalone: true,
      imports: [BqDivider],
      template: `
        <bq-divider></bq-divider>
      `,
    })
    export class AppComponent {}
    ```

    ```vue Vue icon="vuejs" theme={"theme":{"light":"one-light","dark":"night-owl"}}
    <script setup lang="ts">
    import { BqDivider } from "@beeq/vue";
    </script>

    <template>
      <BqDivider />
    </template>
    ```
  </CodeGroup>
</CodeLivePreview>

### Vertical

Set `orientation="vertical"` when the divider separates side-by-side content, such as adjacent actions or columns.

<CodeLivePreview
  mode="shadow"
  code={`
<style>
.divider--vertical-example {
  display: flex;
  align-items: center;
  justify-content: center;
  block-size: 120px;
  gap: var(--bq-spacing-m);
}
</style>
<div class="divider--vertical-example">
<span>Left</span>
<bq-divider orientation="vertical"></bq-divider>
<span>Right</span>
</div>
`}
>
  <CodeGroup>
    ```css styles.css icon="css" theme={"theme":{"light":"one-light","dark":"night-owl"}}
    .divider--vertical-example {
      display: flex;
      align-items: center;
      justify-content: center;
      block-size: 120px;
      gap: var(--bq-spacing-m);
    }
    ```

    ```html HTML icon="html5" theme={"theme":{"light":"one-light","dark":"night-owl"}}
    <div class="divider--vertical-example">
      <span>Left</span>
      <bq-divider orientation="vertical"></bq-divider>
      <span>Right</span>
    </div>
    ```

    ```jsx React icon="react" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    import { BqDivider } from "@beeq/react";
    import "./styles.css";

    <div className="divider--vertical-example">
      <span>Left</span>
      <BqDivider orientation="vertical" />
      <span>Right</span>
    </div>
    ```

    ```ts Angular icon="angular" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    import { Component } from "@angular/core";
    import { BqDivider } from "@beeq/angular/standalone";

    @Component({
      selector: "app-root",
      standalone: true,
      imports: [BqDivider],
      template: `
        <div class="divider--vertical-example">
          <span>Left</span>
          <bq-divider orientation="vertical"></bq-divider>
          <span>Right</span>
        </div>
      `,
      styles: [`
        .divider--vertical-example {
          display: flex;
          align-items: center;
          justify-content: center;
          block-size: 120px;
          gap: var(--bq-spacing-m);
        }
      `],
    })
    export class AppComponent {}
    ```

    ```vue Vue icon="vuejs" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    <script setup lang="ts">
    import { BqDivider } from "@beeq/vue";
    </script>

    <template>
      <div class="divider--vertical-example">
        <span>Left</span>
        <BqDivider orientation="vertical" />
        <span>Right</span>
      </div>
    </template>


    <style>
      .divider--vertical-example {
        display: flex;
        align-items: center;
        justify-content: center;
        block-size: 120px;
        gap: var(--bq-spacing-m);
      }
    </style>
    ```
  </CodeGroup>
</CodeLivePreview>

<Tip>
  When using a vertical divider, ensure the container has enough height for the stroke to render and sufficient horizontal padding so the line does not feel cramped.
</Tip>

## Options

### Dashed

Use `dashed` for a lighter visual boundary. Adjust `stroke-dash-width`, `stroke-dash-gap`, and `stroke-linecap` when the dash pattern needs to match the surrounding interface.

<CodeLivePreview
  mode="shadow"
  code={`
<bq-divider
dashed
stroke-dash-width="12"
stroke-dash-gap="7"
stroke-linecap="butt"
></bq-divider>
`}
>
  <CodeGroup>
    ```html HTML icon="html5" theme={"theme":{"light":"one-light","dark":"night-owl"}}
    <bq-divider
      dashed
      stroke-dash-width="12"
      stroke-dash-gap="7"
      stroke-linecap="butt"
    ></bq-divider>
    ```

    ```jsx React icon="react" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    import { BqDivider } from "@beeq/react";

    <BqDivider
      dashed
      strokeDashWidth={12}
      strokeDashGap={7}
      strokeLinecap="butt"
    />
    ```

    ```ts Angular icon="angular" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    import { Component } from "@angular/core";
    import { BqDivider } from "@beeq/angular/standalone";

    @Component({
      selector: "app-root",
      standalone: true,
      imports: [BqDivider],
      template: `
        <bq-divider
          dashed
          stroke-dash-width="12"
          stroke-dash-gap="7"
          stroke-linecap="butt"
          ></bq-divider>
      `,
    })
    export class AppComponent {}
    ```

    ```vue Vue icon="vuejs" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    <script setup lang="ts">
    import { BqDivider } from "@beeq/vue";
    </script>

    <template>
      <BqDivider
        dashed
        :strokeDashWidth="12"
        :strokeDashGap="7"
        strokeLinecap="butt"
      />
    </template>
    ```
  </CodeGroup>
</CodeLivePreview>

### Title alignment

Use `title-alignment` to place title content at the start, middle, or end of the divider.

<CodeLivePreview
  mode="shadow"
  code={`
<style>
bq-divider {
  white-space: nowrap;
}
</style>
<bq-divider title-alignment="start">
Text start
</bq-divider>
<bq-divider title-alignment="middle">
Text middle
</bq-divider>
<bq-divider title-alignment="end">
Text end
</bq-divider>
`}
>
  <CodeGroup>
    ```css styles.css icon="css" theme={"theme":{"light":"one-light","dark":"night-owl"}}
    bq-divider {
      white-space: nowrap;
    }
    ```

    ```html HTML icon="html5" theme={"theme":{"light":"one-light","dark":"night-owl"}}
    <bq-divider title-alignment="start">Text start</bq-divider>
    <bq-divider title-alignment="middle">Text middle</bq-divider>
    <bq-divider title-alignment="end">Text end</bq-divider>
    ```

    ```jsx React icon="react" theme={"theme":{"light":"one-light","dark":"night-owl"}}
    import { BqDivider } from "@beeq/react";
    import "./styles.css";

    <BqDivider titleAlignment="start">Text start</BqDivider>
    <BqDivider titleAlignment="middle">Text middle</BqDivider>
    <BqDivider titleAlignment="end">Text end</BqDivider>
    ```

    ```ts Angular icon="angular" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    import { Component } from "@angular/core";
    import { BqDivider } from "@beeq/angular/standalone";

    @Component({
      selector: "app-root",
      standalone: true,
      imports: [BqDivider],
      template: `
        <bq-divider title-alignment="start">Text start</bq-divider>
        <bq-divider title-alignment="middle">Text middle</bq-divider>
        <bq-divider title-alignment="end">Text end</bq-divider>
      `,
      styles: [`
        bq-divider {
          white-space: nowrap;
        }
      `],
    })
    export class AppComponent {}
    ```

    ```vue Vue icon="vuejs" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    <script setup lang="ts">
    import { BqDivider } from "@beeq/vue";
    </script>

    <template>
      <BqDivider titleAlignment="start">Text start</BqDivider>
      <BqDivider titleAlignment="middle">Text middle</BqDivider>
      <BqDivider titleAlignment="end">Text end</BqDivider>
    </template>


    <style>
      bq-divider {
        white-space: nowrap;
      }
      </style>
    ```
  </CodeGroup>
</CodeLivePreview>

### Stroke

Use stroke attributes to match the divider to a specific visual treatment. Set `stroke-basis` to create an **inset** divider — give it the pixel width of the leading icon or avatar in your list so the line starts at the text column rather than the container edge.

<CodeLivePreview
  mode="shadow"
  code={`
<bq-divider
stroke-color="stroke--brand"
stroke-thickness="2"
stroke-basis="96"
title-alignment="start"
>
Section
</bq-divider>
`}
>
  <CodeGroup>
    ```html HTML icon="html5" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    <bq-divider
      stroke-color="stroke--brand"
      stroke-thickness="2"
      stroke-basis="96"
      title-alignment="start"
    >
      Section
    </bq-divider>
    ```

    ```jsx React icon="react" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    import { BqDivider } from "@beeq/react";

    <BqDivider
      strokeColor="stroke--brand"
      strokeThickness={2}
      strokeBasis={96}
      titleAlignment="start"
    >
      Section
    </BqDivider>
    ```

    ```ts Angular icon="angular" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    import { Component } from "@angular/core";
    import { BqDivider } from "@beeq/angular/standalone";

    @Component({
      selector: "app-root",
      standalone: true,
      imports: [BqDivider],
      template: `
        <bq-divider
          stroke-color="stroke--brand"
          stroke-thickness="2"
          stroke-basis="96"
          title-alignment="start"
          >
          Section
        </bq-divider>
      `,
    })
    export class AppComponent {}
    ```

    ```vue Vue icon="vuejs" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
    <script setup lang="ts">
    import { BqDivider } from "@beeq/vue";
    </script>

    <template>
      <BqDivider
        strokeColor="stroke--brand"
        :strokeThickness="2"
        :strokeBasis="96"
        titleAlignment="start"
      >
        Section
      </BqDivider>
    </template>
    ```
  </CodeGroup>
</CodeLivePreview>

## Best practices

<CardGroup cols={2}>
  <Card>
    <span className="flex items-center mr-2 text-lg font-medium" role="heading">
      <Icon className="mr-2" icon="check" iconType="solid" size={20} color="var(--bq-stroke--success)" />

      Do
    </span>

    Use dividers to clarify groups that already belong together.
  </Card>

  <Card>
    <span className="flex items-center mr-2 text-lg font-medium" role="heading">
      <Icon className="mr-2" icon="xmark" iconType="solid" size={20} color="var(--bq-stroke--danger)" />

      Don't
    </span>

    Do not use dividers to force unrelated content into the same section.
  </Card>

  <Card>
    <span className="flex items-center mr-2 text-lg font-medium" role="heading">
      <Icon className="mr-2" icon="check" iconType="solid" size={20} color="var(--bq-stroke--success)" />

      Do
    </span>

    Prefer spacing first, then add a divider when the boundary still needs emphasis.
  </Card>

  <Card>
    <span className="flex items-center mr-2 text-lg font-medium" role="heading">
      <Icon className="mr-2" icon="xmark" iconType="solid" size={20} color="var(--bq-stroke--danger)" />

      Don't
    </span>

    Do not add repeated dividers that make the layout feel busy.
  </Card>

  <Card>
    <span className="flex items-center mr-2 text-lg font-medium" role="heading">
      <Icon className="mr-2" icon="check" iconType="solid" size={20} color="var(--bq-stroke--success)" />

      Do
    </span>

    Use title content only when the label helps users understand the next group.
  </Card>

  <Card>
    <span className="flex items-center mr-2 text-lg font-medium" role="heading">
      <Icon className="mr-2" icon="xmark" iconType="solid" size={20} color="var(--bq-stroke--danger)" />

      Don't
    </span>

    Do not use divider title content as a replacement for a real heading.
  </Card>

  <Card>
    <span className="flex items-center mr-2 text-lg font-medium" role="heading">
      <Icon className="mr-2" icon="check" iconType="solid" size={20} color="var(--bq-stroke--success)" />

      Do
    </span>

    Keep stroke color and thickness consistent with the surrounding hierarchy.
  </Card>

  <Card>
    <span className="flex items-center mr-2 text-lg font-medium" role="heading">
      <Icon className="mr-2" icon="xmark" iconType="solid" size={20} color="var(--bq-stroke--danger)" />

      Don't
    </span>

    Do not rely on color or line style as the only way to communicate meaning.
  </Card>
</CardGroup>

## Accessibility

* Divider strokes are rendered as SVG lines with `aria-hidden="true"`, so assistive technologies ignore the decorative line.
* Content passed into the default slot remains available to assistive technologies.
* Use slot content only for short labels that help identify the following group.
* Do not rely on a divider alone to communicate page structure. Use headings, landmarks, or list semantics when users need navigation or hierarchy.
* Keep vertical dividers out of the keyboard focus order unless nearby interactive content already provides a clear path.

## API reference

### Properties

| Property          | Attribute           | Description                                                                                                            | Type                            | Default             |
| ----------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ------------------- |
| `dashed`          | `dashed`            | If `true`, the divider uses a dashed pattern                                                                           | `boolean`                       | `false`             |
| `orientation`     | `orientation`       | The divider orientation                                                                                                | `'horizontal' \| 'vertical'`    | `'horizontal'`      |
| `strokeBasis`     | `stroke-basis`      | Minimum pixel offset before the stroke starts; set to the width of a leading icon or avatar to create an inset divider | `number`                        | `0`                 |
| `strokeColor`     | `stroke-color`      | Stroke color token from the palette                                                                                    | `string`                        | `'stroke--primary'` |
| `strokeDashGap`   | `stroke-dash-gap`   | Gap between dashes when `dashed` is set                                                                                | `number`                        | `7`                 |
| `strokeDashWidth` | `stroke-dash-width` | Width of each dash when `dashed` is set                                                                                | `number`                        | `12`                |
| `strokeLinecap`   | `stroke-linecap`    | Line cap style when `dashed` is set                                                                                    | `'butt' \| 'round' \| 'square'` | `'butt'`            |
| `strokeThickness` | `stroke-thickness`  | Stroke thickness, in pixels                                                                                            | `number`                        | `1`                 |
| `titleAlignment`  | `title-alignment`   | Alignment of title content on the divider axis                                                                         | `'end' \| 'middle' \| 'start'`  | `'middle'`          |

### Slots

| Slot        | Description                                              |
| ----------- | -------------------------------------------------------- |
| *(default)* | Optional title content displayed between divider strokes |

### Shadow parts

| Part              | Description                                   |
| ----------------- | --------------------------------------------- |
| `base`            | The component's internal wrapper              |
| `dash-end`        | The internal SVG wrapper for the end stroke   |
| `dash-end-line`   | The line element for the end stroke           |
| `dash-start`      | The internal SVG wrapper for the start stroke |
| `dash-start-line` | The line element for the start stroke         |

### CSS custom properties

| Variable                      | Description                                       | Default                     |
| ----------------------------- | ------------------------------------------------- | --------------------------- |
| `--bq-divider--color`         | Divider color                                     | `var(--bq-stroke--primary)` |
| `--bq-divider--title-marginX` | Space between title content and delimiter strokes | `var(--bq-spacing-m)`       |

<Tip>
  Learn more about [styling with shadow parts](/guides/styles#component-shadow-dom-parts) and [CSS custom properties](/guides/styles#global-css-custom-properties).
</Tip>

## Resources

<CardGroup cols={2}>
  <Card horizontal title="Interactive playground" icon="code" href="https://storybook.beeq.design/?path=/story/components-divider--default">
    Explore divider variants and states in Storybook
  </Card>

  <Card horizontal title="Source code" icon="github" href="https://github.com/Endava/BEEQ/tree/main/packages/beeq/src/components/divider">
    View the component source on GitHub
  </Card>
</CardGroup>
