mds components
mds:timeline
An event timeline — an open version of a Flux Pro component.
The rail runs down the leading edge, so it sits on the right in RTL and the left in LTR.
-
Order placed
-
Payment confirmed
-
Delivered
<mds:timeline>
<mds:timeline.item>
<mds:timeline.indicator>
<flux:icon icon="shopping-bag" variant="micro" />
</mds:timeline.indicator>
<mds:timeline.content>
<flux:heading>Order placed</flux:heading>
</mds:timeline.content>
</mds:timeline.item>
<mds:timeline.item>
<mds:timeline.indicator>
<flux:icon icon="banknotes" variant="micro" />
</mds:timeline.indicator>
<mds:timeline.content>
<flux:heading>Payment confirmed <flux:badge size="sm" color="lime">Online</flux:badge></flux:heading>
</mds:timeline.content>
</mds:timeline.item>
<mds:timeline.item>
<mds:timeline.indicator color="green">
<flux:icon icon="check" variant="micro" />
</mds:timeline.indicator>
<mds:timeline.content>
<flux:heading>Delivered</flux:heading>
</mds:timeline.content>
</mds:timeline.item>
</mds:timeline>
Numbered steps
status marks each item complete, current or incomplete.
-
1Cart
Review the items and finalize quantities.
-
2Shipping
Pick the address and a delivery window.
-
3Payment
<mds:timeline size="lg" align="start">
<mds:timeline.item status="complete">
<mds:timeline.indicator>1</mds:timeline.indicator>
<mds:timeline.content>
<flux:heading>Cart</flux:heading>
<flux:text>Review the items and finalize quantities.</flux:text>
</mds:timeline.content>
</mds:timeline.item>
<mds:timeline.item status="current">
<mds:timeline.indicator>2</mds:timeline.indicator>
<mds:timeline.content>
<flux:heading>Shipping</flux:heading>
<flux:text>Pick the address and a delivery window.</flux:text>
</mds:timeline.content>
</mds:timeline.item>
<mds:timeline.item status="incomplete">
<mds:timeline.indicator>3</mds:timeline.indicator>
<mds:timeline.content>
<flux:heading>Payment</flux:heading>
</mds:timeline.content>
</mds:timeline.item>
</mds:timeline>
Horizontal
-
Paid
-
Packed
-
Shipping
-
Delivered
<mds:timeline horizontal>
<mds:timeline.item status="complete">
<mds:timeline.indicator><flux:icon icon="credit-card" variant="micro" /></mds:timeline.indicator>
<mds:timeline.content><flux:heading>Paid</flux:heading></mds:timeline.content>
</mds:timeline.item>
<mds:timeline.item status="complete">
<mds:timeline.indicator><flux:icon icon="archive-box" variant="micro" /></mds:timeline.indicator>
<mds:timeline.content><flux:heading>Packed</flux:heading></mds:timeline.content>
</mds:timeline.item>
<mds:timeline.item status="current">
<mds:timeline.indicator><flux:icon icon="truck" variant="micro" /></mds:timeline.indicator>
<mds:timeline.content><flux:heading>Shipping</flux:heading></mds:timeline.content>
</mds:timeline.item>
<mds:timeline.item status="incomplete">
<mds:timeline.indicator><flux:icon icon="home" variant="micro" /></mds:timeline.indicator>
<mds:timeline.content><flux:heading>Delivered</flux:heading></mds:timeline.content>
</mds:timeline.item>
</mds:timeline>
Indicator alignment
With long content, align decides where the dot sits: start, baseline, center (the default) or end.
-
1Submit documents
Upload a photo of your ID and your latest certificate so our team can review your file.
<mds:timeline align="baseline">
<mds:timeline.item>
<mds:timeline.indicator>1</mds:timeline.indicator>
<mds:timeline.content>
<flux:heading>Submit documents</flux:heading>
<flux:text>Upload a photo of your ID and your latest certificate so our team can review your file.</flux:text>
</mds:timeline.content>
</mds:timeline.item>
</mds:timeline>
Full-width blocks
A block spans the whole row instead of sitting beside an indicator — for a quoted reply or an embedded card.
-
Mahdi left a comment
-
Support replied
Your parcel ships from the Tehran warehouse today.
<mds:timeline>
<mds:timeline.item>
<mds:timeline.indicator><flux:icon icon="chat-bubble-left-right" variant="micro" /></mds:timeline.indicator>
<mds:timeline.content>
<flux:heading>Mahdi <flux:text inline>left a comment</flux:text></flux:heading>
</mds:timeline.content>
</mds:timeline.item>
<mds:timeline.item>
<mds:timeline.block class="overflow-hidden rounded-xl border border-zinc-200 bg-zinc-50 dark:border-white/10 dark:bg-white/5">
<mds:timeline.subgrid class="p-3">
<flux:avatar size="xs" circle src="https://picsum.photos/seed/user/64/64" />
<div class="space-y-1">
<flux:heading>Support <flux:text inline>replied</flux:text></flux:heading>
<flux:text>Your parcel ships from the Tehran warehouse today.</flux:text>
</div>
</mds:timeline.subgrid>
</mds:timeline.block>
</mds:timeline.item>
</mds:timeline>
In RTL
On this RTL preview the rail sits on the right with no extra props — it follows the leading edge. The timeline has no digits or built-in strings of its own, so nothing reads config('mds.persian_digits'); the date here is mds:jalali-date with :fa="true".
-
سفارش ثبت شد
-
پرداخت تأیید شد
-
تحویل شد
<mds:timeline>
<mds:timeline.item>
<mds:timeline.indicator>
<flux:icon icon="shopping-bag" variant="micro" />
</mds:timeline.indicator>
<mds:timeline.content>
<flux:heading>سفارش ثبت شد</flux:heading>
<flux:text><mds:jalali-date :date="now()->subDays(4)" :fa="true" /></flux:text>
</mds:timeline.content>
</mds:timeline.item>
<mds:timeline.item>
<mds:timeline.indicator>
<flux:icon icon="banknotes" variant="micro" />
</mds:timeline.indicator>
<mds:timeline.content>
<flux:heading>پرداخت تأیید شد <flux:badge size="sm" color="lime">آنلاین</flux:badge></flux:heading>
</mds:timeline.content>
</mds:timeline.item>
<mds:timeline.item>
<mds:timeline.indicator color="green">
<flux:icon icon="check" variant="micro" />
</mds:timeline.indicator>
<mds:timeline.content>
<flux:heading>تحویل شد</flux:heading>
</mds:timeline.content>
</mds:timeline.item>
</mds:timeline>
Reference
mds:timeline
| Prop | Description |
|---|---|
| horizontal | Lays the timeline out along the inline axis. Default: false. |
| align | Indicator alignment: start, baseline, center, end. Default: center. |
| size | Options: lg. |
mds:timeline.item
| Prop | Description |
|---|---|
| status | Options: complete, current, incomplete. |
| align | Overrides the timeline's alignment for this item. |
| size | Overrides the timeline's size for this item. |
mds:timeline.indicator
| Prop | Description |
|---|---|
| color | Any Tailwind color. |
| variant | Options: bare for no chrome around the glyph. |
| status | Overrides the item's status for this indicator. |
mds:timeline.content
The text beside an indicator.
mds:timeline.block
A row that spans the full width, with no indicator.
mds:timeline.subgrid
Aligns nested content with the timeline's own columns.