Demo
Usage
Import the Divider component and place it between components you want separated. Most of the time you will want to use the divider in a <Flex> component.
Before
After
import { Flex, Text, Divider } from '@aws-amplify/ui-react';
export const DefaultDividerExample = () => (
  <Flex direction="column">
    <Text>Before</Text>
    <Divider />
    <Text>After</Text>
  </Flex>
);
Orientation
Horizontal (default)
Before
After
import { Flex, Text, Divider } from '@aws-amplify/ui-react';
export const HorizontalDividerExample = () => (
  <Flex direction="column">
    <Text>Before</Text>
    <Divider orientation="horizontal" />
    <Text>After</Text>
  </Flex>
);
Vertical
Before
After
import { Flex, Text, Divider } from '@aws-amplify/ui-react';
export const VerticalDividerExample = () => (
  <Flex direction="row" justifyContent="space-around">
    <Text>Before</Text>
    <Divider orientation="vertical" />
    <Text>After</Text>
  </Flex>
);
Sizes
Available options are small, large, and none (default).
import { Flex, Divider } from '@aws-amplify/ui-react';
export const DividerSizesExample = () => (
  <Flex direction="column">
    <Divider size="small" />
    <Divider />
    <Divider size="large" />
  </Flex>
);
Label
Before
After
import { Flex, Text, Divider } from '@aws-amplify/ui-react';
export const LabelExample = () => (
  <Flex direction="column">
    <Text>Before</Text>
    <Divider label="OR" />
    <Text>After</Text>
  </Flex>
);
Customization
Theme
You can customize the appearance of all Divider components in your application with a Theme.
Divider Theme Source
import { Divider, Flex, ThemeProvider, Theme } from '@aws-amplify/ui-react';
const theme: Theme = {
  name: 'divider-theme',
  tokens: {
    components: {
      divider: {
        borderStyle: { value: 'dotted' },
        borderColor: { value: '{colors.blue.80}' },
        borderWidth: { value: '{borderWidths.small}' },
        label: {
          color: { value: '{colors.white}' },
          backgroundColor: { value: '{colors.blue.80}' },
        },
        large: {
          borderWidth: { value: '{borderWidths.large}' },
        },
      },
    },
  },
};
export const DividerThemeExample = () => (
  <ThemeProvider theme={theme} colorMode="light">
    <Flex direction="column" gap="3rem">
      <Divider label="Default" />
      <Divider size="large" label="Large" />
    </Flex>
  </ThemeProvider>
);
CSS
You can set the Amplify CSS variables or use the built-in .amplify-divider class to customize all Dividers in your application as well.
/* styles.css */
[data-amplify-theme] {
  --amplify-components-divider-border-style: dashed;
}
/* OR */
.amplify-divider {
  border-style: dashed;
}
To replace all the Divider styling, unset it:
.amplify-divider {
  all: unset;
  /* Add your styling here*/
}
Target classes
| Class | Description | 
|---|---|
amplify-divider | Top level element that wraps the Divider primitive | 
amplify-divider--label | Class applied to the label of the Divider component | 
--amplify-components-divider-border-color--amplify-components-divider-border-style--amplify-components-divider-border-width--amplify-components-divider-label-background-color--amplify-components-divider-label-color--amplify-components-divider-label-font-size--amplify-components-divider-label-padding-inline--amplify-components-divider-large-border-width--amplify-components-divider-opacity--amplify-components-divider-small-border-width
Local styling
To override styling on a specific Divider, you can use (in order of increasing specificity): a class selector, data attributes, or style props.
Using a class selector:
import { Flex, Divider } from '@aws-amplify/ui-react';
const css = `.custom-divider {
  border-style: dashed;
}`;
export const DividerClassNameExample = () => (
  <Flex direction="column">
    <style>{css}</style>
    <Divider className="custom-divider" />
  </Flex>
);
Using style props:
import { Flex, Divider, useTheme } from '@aws-amplify/ui-react';
export const DividerStylePropsExample = () => {
  const { tokens } = useTheme();
  return (
    <Flex direction="column">
      <Divider
        border={`${tokens.borderWidths.large} solid ${tokens.colors.primary[80]}`}
      />
      <Divider border="5px solid pink" borderRadius="10px" />
    </Flex>
  );
};
Default theme
import type {
  DesignTokenProperties,
  OutputVariantKey,
} from '../types/designToken';
type DividerSizeTokens<Output> = DesignTokenProperties<'borderWidth', Output>;
export type DividerTokens<Output extends OutputVariantKey> =
  DesignTokenProperties<
    'borderStyle' | 'borderColor' | 'borderWidth' | 'opacity',
    Output
  > & {
    label?: DesignTokenProperties<
      'color' | 'paddingInline' | 'fontSize' | 'backgroundColor',
      Output
    >;
    small?: DividerSizeTokens<Output>;
    large?: DividerSizeTokens<Output>;
  };
export const divider: Required<DividerTokens<'default'>> = {
  borderStyle: { value: 'solid' },
  borderColor: { value: '{colors.border.primary.value}' },
  borderWidth: { value: '{borderWidths.medium.value}' },
  label: {
    color: { value: '{colors.font.tertiary.value}' },
    paddingInline: { value: '{space.medium.value}' },
    fontSize: { value: '{fontSizes.small.value}' },
    backgroundColor: { value: '{colors.background.primary.value}' },
  },
  small: {
    borderWidth: { value: '{borderWidths.small.value}' },
  },
  large: {
    borderWidth: { value: '{borderWidths.large.value}' },
  },
  opacity: {
    value: '{opacities.60.value}',
  },
};