Koala logo Design
Esc
No matches for “
↑↓ navigate open Esc close
Components Activity timeline

Activity timeline

Alternating left/right timeline grouped by day, with sticky day headers and sticky author avatars. Designed for incremental rendering — pass continuation state on the model so appended pages keep the same author on the same side and never duplicate the day header.

<koala-activity-timeline>

Canonical

Today
  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Jane Doe accepted the quote

  2. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Jane Doe added a note

  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Marcus Lee created the quote

Yesterday
  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Marcus Lee set the referrer

The most-used shape. Each author groups on one side of the line. A new author flips the side; day boundaries reset the day-header sticky behaviour but preserve the alternation.

Variants

3 variants
Today
  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Jane Doe accepted the quote

  2. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Jane Doe added a note

  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Marcus Lee created the quote

Yesterday
  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Marcus Lee set the referrer

Default
ShowEntityLink=true
Today
  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Jane Doe edited a note

  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Marcus Lee uploaded a document

Visibility icons
ShowVisibilityIcons=true
Today
  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Jane Doe accepted the quote

  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Marcus Lee created the quote

Scoped
ShowEntityLink=false

States

1 state
Today
  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Jane Doe accepted the quote

  2. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Jane Doe added a note

  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Marcus Lee created the quote

Yesterday
  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Marcus Lee set the referrer

Default
Stateless renderer. Sticky behaviour kicks in when the parent scroll container moves.

Props

ActivityTimelineModel
Property Type Notes
Days IReadOnlyList<ActivityTimelineDay> One group per day, newest-first.
ShowEntityLink bool Hides the entity link on detail pages already scoped to one entity.
ShowVisibilityIcons bool Adds client / partner audience icons next to each timestamp.
StickyHeader ActivityTimelineSticky Top12 drops the sticky offset under a tab strip; None sits flush.
PreviousDate DateOnly? Continuation state from a prior batch; suppresses a duplicate day header.
PreviousUserId Guid? Continuation state; decides whether the first row starts a new person-group.
PreviousPersonGroupIndex int? Continuation state; keeps the side alternation in step.

Do & don't

Today
  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Jane Doe accepted the quote

  2. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Jane Doe added a note

  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Marcus Lee created the quote

Yesterday
  1. @* Dot is a small disc in the line colour with a halo matching the card background. The previous fill (bg-surface-container) was the same colour as the card in light mode, so each dot rendered as white- on-white and only the avatar (with an image) was visible. *@

    Marcus Lee set the referrer

Do Pass the continuation state on load-more renders so the appended batch joins seamlessly with the prior one.
  1. Jane Doe accepted the quote
  2. Marcus Lee created the quote
  3. Marcus Lee set the referrer
Don't Don't render activity as a flat list. The author grouping and day header are what make "what happened here" scannable.