diff --git a/src/divider/divider.mdx b/src/divider/divider.mdx
new file mode 100644
index 000000000..6e7f91f31
--- /dev/null
+++ b/src/divider/divider.mdx
@@ -0,0 +1,31 @@
+import { Canvas, Controls, Meta, Subtitle, Title } from '@storybook/addon-docs/blocks'
+
+import * as DividerStories from './divider.stories'
+
+
+
+
+
+Horizontal rule that separates content.
+
+## Basic usage
+
+`Divider` renders an `
` with the given `weight`, and defaults to `tertiary`.
+
+
+
+### API
+
+
+
+## Weights
+
+The weight sets the line color. Ordered by contrast against the background: `secondary` is the
+faintest, then `primary`, then `tertiary`.
+
+
+
+## Dividers between stacked items
+
+`Stack` draws the same dividers between its children through its own `dividers` prop. Prefer that
+over placing a `Divider` between each item.
diff --git a/src/divider/divider.stories.tsx b/src/divider/divider.stories.tsx
new file mode 100644
index 000000000..bca1ad529
--- /dev/null
+++ b/src/divider/divider.stories.tsx
@@ -0,0 +1,47 @@
+import * as React from 'react'
+
+import { Stack } from '../stack'
+import { Text } from '../text'
+
+import { Divider } from './divider'
+
+import type { Meta, StoryObj } from '@storybook/react-vite'
+
+const weights = ['primary', 'secondary', 'tertiary'] as const
+
+const meta = {
+ title: '📐 Layout/Divider',
+ component: Divider,
+ parameters: {
+ badges: ['accessible'],
+ figma: {
+ path: 'Web › Components / Todoist › Dividers › Divider',
+ url: 'https://www.figma.com/design/LYlWNzvhMDh907l07mPPQk/Product-Library---Web?node-id=1751-25739',
+ },
+ },
+} satisfies Meta
+
+export default meta
+
+type Story = StoryObj
+
+export const Default: Story = {
+ args: {
+ weight: 'tertiary',
+ },
+}
+
+export const Weights: Story = {
+ render: () => (
+
+ {weights.map((weight) => (
+
+
+ {weight}
+
+
+
+ ))}
+
+ ),
+}