Decision tree).
Components
| Primitive | Wireframe | |
|---|---|---|
| Activity log | VeltActivityLog | VeltActivityLogWireframe |
Config props
None feature-specific: Activity Log has no dedicated config props. Primitive props onVeltActivityLog: darkMode, shadowDom, variant, useDummyData (render sample data while styling).
CSS: stateful classes
Host/structural classes to target (override with!important, R9b): velt-activity-log--container, velt-activity-log-loading--container, velt-activity-log-empty--container. Theme with --velt-* as usual. State-dependent styling is done with velt-class toggles in the wireframe (there’s no large built-in stateful-class table for this feature).
Wireframes: slot trees + tokens
velt-if/velt-class/velt-data): {isEnabled}, {isOpen}, {darkMode}, {allActivities} (null = loading), {filteredActivities}, {groupedActivities}, {activeFilter} ('all' | a feature type), {availableFilters}, {expandedGroups}, {defaultVisibleCount} (default 5), {filterDropdownOpen}. Inside iteration: {dateGroup} (.dateKey/.displayLabel/.totalCount), {activity} (alias {activityRecord}: .user/.timestamp/.featureType/.action/.target/.detail), {filter} (alias {filterOption}), {isActive}, {isExpanded}, {remainingCount}. (See Wireframe variables.)
Headless hooks
useAllActivities(config?)→ActivityRecord[] | null(reactive;null= still loading).useActivityUtils()→ the activity element for imperative control.
useAllActivities() and rendering your own rows.

