Phara UI v2.x

Timeline

A vertical timeline composed of three parts: Timeline (wrapper), TimelineItem (row), and TimelineIndicator (dot/icon). The connector line hides automatically on the last item.

Basic

Default gray dot indicators with no props required. The connector line between items disappears automatically on the last entry.

  • Application submitted

    Your application has been received.

  • Under review

    Our team is reviewing your submission.

  • Decision pending

    Final decision will be made within 3 business days.

Blade
<x-ui::timeline>
    <x-ui::timeline-item>
        <x-ui::heading level="6">Application submitted</x-ui::heading>
        <x-ui::text variant="muted">Your application has been received.</x-ui::text>
    </x-ui::timeline-item>

    <x-ui::timeline-item>
        <x-ui::heading level="6">Under review</x-ui::heading>
        <x-ui::text variant="muted">Our team is reviewing your submission.</x-ui::text>
    </x-ui::timeline-item>

    <x-ui::timeline-item>
        <x-ui::heading level="6">Decision pending</x-ui::heading>
        <x-ui::text variant="muted">Final decision will be made within 3 business days.</x-ui::text>
    </x-ui::timeline-item>
</x-ui::timeline>
Colors

Eight indicator colors: zinc (default), blue, green, yellow, red, purple, lime, and sky.

  • Zinc

  • Blue

  • Green

  • Yellow

  • Red

  • Purple

  • Lime

  • Sky

Blade
<x-ui::timeline>
    <x-ui::timeline-item>
        <x-slot:indicator><x-ui::timeline-indicator color="zinc" /></x-slot:indicator>
        <x-ui::text>Zinc</x-ui::text>
    </x-ui::timeline-item>
    <x-ui::timeline-item>
        <x-slot:indicator><x-ui::timeline-indicator color="blue" /></x-slot:indicator>
        <x-ui::text>Blue</x-ui::text>
    </x-ui::timeline-item>
    <x-ui::timeline-item>
        <x-slot:indicator><x-ui::timeline-indicator color="green" /></x-slot:indicator>
        <x-ui::text>Green</x-ui::text>
    </x-ui::timeline-item>
    ...
</x-ui::timeline>
Indicator Variants

Three visual styles โ€” solid (filled), outline (bordered), and ring (filled with outer glow). Works across all colors.

Solid

  • Blue

  • Green

  • Red

Outline

  • Blue

  • Green

  • Red

Ring

  • Blue

  • Green

  • Red

Blade
{{-- Solid (default) --}}
<x-ui::timeline-indicator color="blue" variant="solid" />

{{-- Outline --}}
<x-ui::timeline-indicator color="blue" variant="outline" />

{{-- Ring --}}
<x-ui::timeline-indicator color="blue" variant="ring" />
With Icons

Pass an icon prop to the indicator to replace the default dot with a Heroicon. Icons are rendered solid at 16ร—16.

  • Account created

    Welcome aboard.

  • Email verified

    Your email address has been confirmed.

  • Two-factor enabled

    Your account is now more secure.

  • Profile completion

    Complete your profile to unlock all features.

Blade
<x-ui::timeline>
    <x-ui::timeline-item>
        <x-slot:indicator>
            <x-ui::timeline-indicator color="green" icon="check" />
        </x-slot:indicator>
        <x-ui::heading level="6">Account created</x-ui::heading>
        <x-ui::text variant="muted">Welcome aboard.</x-ui::text>
    </x-ui::timeline-item>

    <x-ui::timeline-item>
        <x-slot:indicator>
            <x-ui::timeline-indicator color="blue" icon="envelope" />
        </x-slot:indicator>
        <x-ui::heading level="6">Email verified</x-ui::heading>
        <x-ui::text variant="muted">Your email address has been confirmed.</x-ui::text>
    </x-ui::timeline-item>

    <x-ui::timeline-item>
        <x-slot:indicator>
            <x-ui::timeline-indicator color="purple" icon="shield-check" />
        </x-slot:indicator>
        <x-ui::heading level="6">Two-factor enabled</x-ui::heading>
        <x-ui::text variant="muted">Your account is now more secure.</x-ui::text>
    </x-ui::timeline-item>

    <x-ui::timeline-item>
        <x-slot:indicator>
            <x-ui::timeline-indicator color="zinc" variant="outline" icon="clock" />
        </x-slot:indicator>
        <x-ui::heading level="6">Profile completion</x-ui::heading>
        <x-ui::text variant="muted">Complete your profile to unlock all features.</x-ui::text>
    </x-ui::timeline-item>
</x-ui::timeline>
With Dates

The date prop renders a small timestamp above the item's content โ€” ideal for changelogs, audit logs, and version histories.

  • v2.0 Released

    Major redesign with new component library.

  • v1.5 Stable

    Performance improvements and bug fixes.

  • v1.0 Launch

    Initial public release.

Blade
<x-ui::timeline>
    <x-ui::timeline-item date="May 7, 2025">
        <x-slot:indicator>
            <x-ui::timeline-indicator color="blue" variant="ring" icon="star" />
        </x-slot:indicator>
        <x-ui::heading level="6">v2.0 Released</x-ui::heading>
        <x-ui::text variant="muted">Major redesign with new component library.</x-ui::text>
    </x-ui::timeline-item>

    <x-ui::timeline-item date="March 12, 2025">
        <x-slot:indicator>
            <x-ui::timeline-indicator color="green" icon="check" />
        </x-slot:indicator>
        <x-ui::heading level="6">v1.5 Stable</x-ui::heading>
        <x-ui::text variant="muted">Performance improvements and bug fixes.</x-ui::text>
    </x-ui::timeline-item>

    <x-ui::timeline-item date="January 3, 2025">
        <x-slot:indicator>
            <x-ui::timeline-indicator color="zinc" />
        </x-slot:indicator>
        <x-ui::heading level="6">v1.0 Launch</x-ui::heading>
        <x-ui::text variant="muted">Initial public release.</x-ui::text>
    </x-ui::timeline-item>
</x-ui::timeline>
Activity Feed

A social-style activity feed using avatars as custom indicators via the indicator slot.

  • JD

    Jane Doe commented on Dashboard redesign

    "Looks great! The new layout feels much cleaner."

  • Alex Kim joined the team.

  • SW

    Sam Wong closed issue #42 Navigation bug

  • New release v1.8.2 was deployed to production.

Blade
<x-ui::timeline>
    <x-ui::timeline-item date="2 minutes ago">
        <x-slot:indicator>
            <x-ui::avatar name="Jane Doe" size="sm" />
        </x-slot:indicator>
        <p class="text-sm">
            <span class="font-medium text-zinc-900 dark:text-white">Jane Doe</span>
            <span class="text-zinc-500 dark:text-zinc-400"> commented on </span>
            <span class="font-medium text-zinc-900 dark:text-white">Dashboard redesign</span>
        </p>
        <x-ui::text variant="muted" class="mt-1">"Looks great! The new layout feels much cleaner."</x-ui::text>
    </x-ui::timeline-item>

    <x-ui::timeline-item date="15 minutes ago">
        <x-slot:indicator>
            <x-ui::timeline-indicator color="green" icon="user-plus" />
        </x-slot:indicator>
        <p class="text-sm text-zinc-500 dark:text-zinc-400">
            <span class="font-medium text-zinc-900 dark:text-white">Alex Kim</span>
            joined the team.
        </p>
    </x-ui::timeline-item>

    <x-ui::timeline-item date="1 hour ago">
        <x-slot:indicator>
            <x-ui::avatar name="Sam Wong" size="sm" />
        </x-slot:indicator>
        <p class="text-sm">
            <span class="font-medium text-zinc-900 dark:text-white">Sam Wong</span>
            <span class="text-zinc-500 dark:text-zinc-400"> closed issue </span>
            <span class="font-medium text-zinc-900 dark:text-white">#42 Navigation bug</span>
        </p>
    </x-ui::timeline-item>

    <x-ui::timeline-item date="3 hours ago">
        <x-slot:indicator>
            <x-ui::timeline-indicator color="blue" icon="arrow-up-tray" />
        </x-slot:indicator>
        <p class="text-sm text-zinc-500 dark:text-zinc-400">
            New release <span class="font-medium text-zinc-900 dark:text-white">v1.8.2</span> was deployed to production.
        </p>
    </x-ui::timeline-item>
</x-ui::timeline>
Order Tracking

Mixing completed (colored) and pending (outline) indicators to show progress through a multi-step process.

Order #ORD-2025-0412
  • Order placed

    Payment confirmed. Order processing has begun.

  • Packed

    Your items have been packed and are ready for pickup.

  • In transit

    Your package is on its way. Estimated arrival: May 8.

  • Out for delivery

    Pending

  • Delivered

    Pending

Blade
<x-ui::card>
    <x-ui::heading level="6" class="mb-6">Order #ORD-2025-0412</x-ui::heading>

    <x-ui::timeline>
        <x-ui::timeline-item date="May 5 ยท 9:14 AM">
            <x-slot:indicator>
                <x-ui::timeline-indicator color="green" variant="ring" icon="check" />
            </x-slot:indicator>
            <x-ui::heading level="6">Order placed</x-ui::heading>
            <x-ui::text variant="muted">Payment confirmed. Order processing has begun.</x-ui::text>
        </x-ui::timeline-item>

        <x-ui::timeline-item date="May 5 ยท 3:48 PM">
            <x-slot:indicator>
                <x-ui::timeline-indicator color="green" variant="ring" icon="check" />
            </x-slot:indicator>
            <x-ui::heading level="6">Packed</x-ui::heading>
            <x-ui::text variant="muted">Your items have been packed and are ready for pickup.</x-ui::text>
        </x-ui::timeline-item>

        <x-ui::timeline-item date="May 6 ยท 8:02 AM">
            <x-slot:indicator>
                <x-ui::timeline-indicator color="blue" variant="ring" icon="truck" />
            </x-slot:indicator>
            <x-ui::heading level="6">In transit</x-ui::heading>
            <x-ui::text variant="muted">Your package is on its way. Estimated arrival: May 8.</x-ui::text>
        </x-ui::timeline-item>

        <x-ui::timeline-item date="Estimated May 8">
            <x-slot:indicator>
                <x-ui::timeline-indicator color="zinc" variant="outline" icon="home" />
            </x-slot:indicator>
            <x-ui::heading level="6" class="text-zinc-400 dark:text-zinc-500">Out for delivery</x-ui::heading>
            <x-ui::text variant="muted">Pending</x-ui::text>
        </x-ui::timeline-item>

        <x-ui::timeline-item>
            <x-slot:indicator>
                <x-ui::timeline-indicator color="zinc" variant="outline" icon="check-circle" />
            </x-slot:indicator>
            <x-ui::heading level="6" class="text-zinc-400 dark:text-zinc-500">Delivered</x-ui::heading>
            <x-ui::text variant="muted">Pending</x-ui::text>
        </x-ui::timeline-item>
    </x-ui::timeline>
</x-ui::card>