Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.velt.dev/llms.txt

Use this file to discover all available pages before exploring further.

New to wireframes? Start with UI Customization Concepts and the Template Variables overview.

Overview

The Activity Logs wireframe exposes the variables below. Use them inside any <velt-activity-log-...-wireframe> tag via three forms:
You want to…UseExample
Display a value as text<velt-data field="var" /><velt-data field="dateGroup.displayLabel" />
Hide / show conditionallyvelt-if="{var}"velt-if="{isEnabled} && {isOpen}"
Toggle a CSS classvelt-class="'cls': {var}"velt-class="'is-open': {isOpen}"
All variables are mapped — reference them by their short name. You do not need the componentConfig. prefix.

App State

App-wide values resolved from the shared signal.
VariableTypeDescriptionExample
userUserCurrently identified end-user.<velt-data field="user.name" />
darkModebooleanDark mode active (global config or per-instance attribute).velt-class="'theme-dark': {darkMode}"

Data State

Activity feed data: the raw list, filtered list, date grouping, and active filter.
VariableTypeDescriptionExample
allActivitiesActivityRecord[] | nullFull unfiltered activity feed. null while loading.velt-if="{allActivities.length} > 0"
filteredActivitiesActivityRecord[] | nullActivities after activeFilter is applied.<velt-data field="filteredActivities.length" />
groupedActivitiesActivityDateGroup[]Activities bucketed by calendar date for display.<velt-data field="groupedActivities.0.displayLabel" />
virtualScrollItemsActivityScrollItem[]Flattened list the virtual scroller iterates over. Read individual items via the iteration context.Iterated internally.
activeFilter'all' | ActivityFeatureTypeCurrently selected filter value.velt-class="'filter-active': {activeFilter} !== 'all'"
availableFiltersActivityFilterOption[]All filter options shown in the dropdown.<velt-data field="availableFilters.length" />

UI State

Per-instance UI flags driven by the component itself.
VariableTypeDescriptionExample
isOpenbooleanActivity Log panel is open.velt-class="'is-open': {isOpen}"
darkModebooleanDark mode is active (driven by global config or per-instance attribute).velt-class="'theme-dark': {darkMode}"
variantstringPer-instance variant tag set on the host element.<velt-data field="variant" />
expandedGroupsSet<string>Date-group keys currently expanded past the truncation limit.Internal — used to compute group visibility.
defaultVisibleCountnumberItems shown per date-group before “Show more” appears. Defaults to 5.<velt-data field="defaultVisibleCount" />
filterDropdownOpenbooleanFilter dropdown menu is open.velt-class="'open': {filterDropdownOpen}"

Feature State

Capability flags toggled via SDK config.
VariableTypeDescriptionExample
isEnabledbooleanActivity Log feature is enabled in the SDK.velt-if="{isEnabled}"

Common Props

Every Activity Log primitive accepts:
React PropHTML AttributeTypeDefaultDescription
defaultConditiondefault-conditionboolean | "true" | "false"trueWhen false, the component always renders regardless of internal state.
Signal inputs (for parent-child component composition):
  • [componentConfigSignal] — shared config signal (filtered activities, date groups, virtual scroll items, available filters).
  • [parentLocalUIState] — per-instance UI state signal (darkMode, variant).
The root <velt-activity-log> element additionally accepts attributes that map onto config and local UI state values: dark-mode, variant, is-open, etc.

Context-Specific Variables

These are only resolvable inside the nested wireframe tags noted in the Available in column. Each is injected by the iteration primitive that owns the tag.
VariableTypeAvailable inExample
dateGroupActivityDateGroup<velt-activity-log-list-date-group-wireframe>, *-date-group-label, *-list-show-more<velt-data field="dateGroup.displayLabel" />
activityActivityRecord<velt-activity-log-list-item-wireframe> and all its descendants<velt-data field="activity.user.name" />
filterActivityFilterOption<velt-activity-log-header-filter-content-item-wireframe>, *-icon, *-label<velt-data field="filter.label" />
isActivebooleanSame tags as filter. true when this row matches activeFilter.velt-class="'selected': {isActive}"
isExpandedboolean<velt-activity-log-list-show-more-wireframe>velt-class="'expanded': {isExpanded}"
remainingCountnumber<velt-activity-log-list-show-more-wireframe>. Items still hidden in the date-group.<velt-data field="remainingCount" />
Aliases: activityactivityRecord, filterfilterOption. Either name resolves; the friendly short form is preferred.

Type Reference

Types referenced by the variables above are documented in Data Models:
TypeDescription
ActivityRecordCore activity log object (id, featureType, actionType, actionUser, timestamp, etc.).
ActivityDateGroupDate-bucketed group with dateKey, displayLabel, activities, and totalCount.
ActivityScrollItemDiscriminated union ('date-header' / 'activity' / 'show-more') for the virtual-scroll list.
ActivityFilterOptionFilter dropdown option with label, value, and optional icon.
ActivityFeatureTypeUnion of feature area strings ('comment', 'recorder', 'reaction', 'crdt', 'custom').
UserIdentified end-user object.

Subcomponents

Each subcomponent below has its own wireframe tag. The tables show extra variables beyond the common set, the shouldShow condition, and host CSS classes.

activity-log (root)

  • Public element: <velt-activity-log>
  • Wireframe tag: <velt-activity-log-wireframe>
PropertyValue
Extra variablesNone — root only sees common variables.
shouldShowisEnabled === true && isOpen === true
Host classvelt-activity-log--container (always present)
<VeltActivityLogWireframe velt-if="{isEnabled} && {isOpen}">
  <VeltActivityLogWireframe.Header />
  <VeltActivityLogWireframe.List />
  <VeltActivityLogWireframe.Empty />
  <VeltActivityLogWireframe.Loading />
</VeltActivityLogWireframe>

activity-log-loading

Skeleton loader shown while activities are being fetched.
  • Public element: <velt-activity-log-loading>
  • Wireframe tag: <velt-activity-log-loading-wireframe>
PropertyValue
Extra variablesNone.
shouldShowallActivities === null
Host classvelt-activity-log-loading--container

activity-log-empty

Empty-state shown when activities load but the filtered list is empty.
  • Public element: <velt-activity-log-empty>
  • Wireframe tag: <velt-activity-log-empty-wireframe>
PropertyValue
Extra variablesNone beyond common variables.
shouldShowfilteredActivities !== null && filteredActivities.length === 0
Host classvelt-activity-log-empty--container
<VeltActivityLogWireframe.Empty velt-if="{filteredActivities.length} === 0">
  <p>No activity yet — be the first to start a thread.</p>
</VeltActivityLogWireframe.Empty>

activity-log-header

Header bar with title, filter trigger, and close button.
  • Public element: <velt-activity-log-header>
  • Wireframe tag: <velt-activity-log-header-wireframe>
  • Children: *-header-title, *-header-filter, *-header-close-button
PropertyValue
Extra variablesNone beyond common variables.

activity-log-header-title

Header title text.
  • Public element: <velt-activity-log-header-title>
  • Wireframe tag: <velt-activity-log-header-title-wireframe>
PropertyValue
Extra variablesNone.

activity-log-header-close-button

Close button.
  • Public element: <velt-activity-log-header-close-button>
  • Wireframe tag: <velt-activity-log-header-close-button-wireframe>
PropertyValue
Extra variablesNone.

activity-log-header-filter

Filter dropdown wrapper. Contains trigger and content children.
  • Public element: <velt-activity-log-header-filter>
  • Wireframe tag: <velt-activity-log-header-filter-wireframe>
  • Children:
    • *-header-filter-trigger — opens the dropdown.
      • *-header-filter-trigger-icon
      • *-header-filter-trigger-label
    • *-header-filter-content — the open menu.
      • *-header-filter-content-item (per-filter row, iterated over availableFilters).
        • *-header-filter-content-item-icon, *-header-filter-content-item-label.
PropertyValue
Extra variablesNone beyond common variables.

activity-log-header-filter-content-item

A single filter row inside the dropdown menu.
  • Public element: <velt-activity-log-header-filter-content-item>
  • Wireframe tag: <velt-activity-log-header-filter-content-item-wireframe>
VariableTypeExample
filterActivityFilterOption<velt-data field="filter.label" />
filter.valuestringvelt-class="'selected': {filter.value} === {activeFilter}"
filter.iconstring | undefined<velt-data field="filter.icon" />
isActivebooleanvelt-class="'selected': {isActive}"
<VeltActivityLogWireframe.Header.Filter.Content.Item
  velt-class="'selected': {isActive}">
  <VeltActivityLogWireframe.Header.Filter.Content.Item.Icon />
  <VeltActivityLogWireframe.Header.Filter.Content.Item.Label />
</VeltActivityLogWireframe.Header.Filter.Content.Item>

activity-log-list

Virtual-scroll list container. Iterates virtualScrollItems and dispatches each entry to the appropriate child.
  • Public element: <velt-activity-log-list>
  • Wireframe tag: <velt-activity-log-list-wireframe>
  • Children: *-list-date-group, *-list-item, *-list-show-more
PropertyValue
Extra variablesNone beyond common variables.

activity-log-list-date-group

A date header row.
  • Public element: <velt-activity-log-list-date-group>
  • Wireframe tag: <velt-activity-log-list-date-group-wireframe>
  • Children: *-list-date-group-label
VariableTypeExample
dateGroupActivityDateGroup<velt-data field="dateGroup.displayLabel" />
dateGroup.dateKeystring<velt-data field="dateGroup.dateKey" />
dateGroup.totalCountnumber<velt-data field="dateGroup.totalCount" />

activity-log-list-item

A single activity row. Composes avatar, icon, content, and time sub-components.
  • Public element: <velt-activity-log-list-item>
  • Wireframe tag: <velt-activity-log-list-item-wireframe>
  • Children:
    • *-list-item-avatar — user avatar.
    • *-list-item-icon — action-type icon.
    • *-list-item-content — main content row.
      • *-list-item-content-user — actor name.
      • *-list-item-content-action — action verb ('commented', 'reacted', …).
      • *-list-item-content-target — target object label.
      • *-list-item-content-detail — optional detail snippet.
    • *-list-item-time — relative timestamp.
VariableTypeExample
activityActivityRecord<velt-data field="activity.action" />
activity.userUser<velt-data field="activity.user.name" />
activity.user.userIdstringvelt-if="{activity.user.userId} === {user.userId}"
activity.timestampnumber<velt-data field="activity.timestamp" />
activity.featureType'comment' | 'recorder' | 'reaction' | 'crdt'velt-class="'is-{activity.featureType}': true"
activity.targetanyShape varies by activity type.
<VeltActivityLogWireframe.List.Item
  velt-class="'mine': {activity.user.userId} === {user.userId}">
  <VeltActivityLogWireframe.List.Item.Icon />
  <VeltActivityLogWireframe.List.Item.Content />
  <VeltActivityLogWireframe.List.Item.Time />
</VeltActivityLogWireframe.List.Item>

activity-log-list-show-more

“Show more” expand row at the end of a collapsed date-group.
  • Public element: <velt-activity-log-list-show-more>
  • Wireframe tag: <velt-activity-log-list-show-more-wireframe>
VariableTypeExample
dateGroupActivityDateGroup<velt-data field="dateGroup.totalCount" />
isExpandedbooleanvelt-class="'expanded': {isExpanded}"
remainingCountnumber<velt-data field="remainingCount" />
PropertyValue
shouldShowdateGroup.totalCount > defaultVisibleCount
<VeltActivityLogWireframe.List.ShowMore velt-if="{remainingCount} > 0">
  <span>Show <velt-data field="remainingCount" /> more</span>
</VeltActivityLogWireframe.List.ShowMore>

Deeply-Nested Wireframe Tags

Each tag below has its own <velt-activity-log-...-wireframe> registration and inherits context variables from its parent.

Header filter sub-components

TagNotesExample
<velt-activity-log-header-filter-trigger-wireframe>The closed-state pill (filter button).velt-class="'open': {filterDropdownOpen}"
<velt-activity-log-header-filter-trigger-icon-wireframe>Icon inside the trigger.<velt-data field="activeFilter" />
<velt-activity-log-header-filter-trigger-label-wireframe>Label inside the trigger (“All”, “Comments”, etc.).<velt-data field="activeFilter" />
<velt-activity-log-header-filter-content-wireframe>The opened menu wrapper.velt-class="'menu-open': {filterDropdownOpen}"
<velt-activity-log-header-filter-content-item-icon-wireframe>Per-row tick icon (rendered when isActive).velt-class="'visible': {isActive}"
<velt-activity-log-header-filter-content-item-label-wireframe>Per-row label.<velt-data field="filter.label" />

List-item sub-components

TagNotesExample
<velt-activity-log-list-date-group-label-wireframe>Date heading inside a date-group row.<velt-data field="dateGroup.displayLabel" />
<velt-activity-log-list-item-avatar-wireframe>Avatar of the activity actor.<velt-data field="activity.user.photoUrl" />
<velt-activity-log-list-item-icon-wireframe>Action-type icon (comment / recorder / reaction).velt-class="'icon-{activity.featureType}': true"
<velt-activity-log-list-item-time-wireframe>Relative timestamp (“2m ago”).<velt-data field="activity.timestamp" />
<velt-activity-log-list-item-content-wireframe>Wrapper for the row’s text content.Composes the four sub-components below.
<velt-activity-log-list-item-content-user-wireframe>Actor-name fragment.<velt-data field="activity.user.name" />
<velt-activity-log-list-item-content-action-wireframe>Action verb (“commented”, “reacted”…).<velt-data field="activity.action" />
<velt-activity-log-list-item-content-target-wireframe>Target-object label.<velt-data field="activity.target.label" />
<velt-activity-log-list-item-content-detail-wireframe>Optional detail snippet.<velt-data field="activity.detail" />

Putting it together

A typical activity row that highlights actions taken by the current user and shows a relative timestamp:
<VeltActivityLogWireframe.List.Item>
  <div
    velt-class="'mine': {activity.user.userId} === {user.userId}"
    velt-class-recorder="{activity.featureType} === 'recorder'"
  >
    <velt-data field="activity.user.name" />
    <velt-data field="activity.action" />
    <velt-data velt-if="{activity.target}" field="activity.target.label" />
    <time><velt-data field="activity.timestamp" /></time>
  </div>
</VeltActivityLogWireframe.List.Item>