ViewModel Families Map

one conceptual hierarchy, five idioms, and specialized companions

ViewModel Families Map one conceptual hierarchy, five idioms, and specialized companions ViewModel Families Map one conceptual hierarchy, five idioms, and specialized companions VM family bands Lifecycle base ComponentVMBase Constructed / Disposed message hub hooks Leaf family ComponentVM ComponentVM<M> ReadonlyComponentVM<M> Selectable containers CompositeVM<VM> CompositeVM<M,VM> Current slot Peer containers GroupVM<VM> homogeneous peers no Current Fixed-arity containers AggregateVM1..6 heterogeneous components typed ComponentN slots Recursive container HierarchicalVM<TModel,TVM> Parent / Depth / Path structural messages Forwarding decorators ForwardingComponentVM ForwardingCompositeVM instrumentation / overrides Specialized companions Lifecycle VM: AsyncResourceVM Coordinators: Form / Discriminator Notification / Confirmation Capability overlays selection / expansion CRUD / dialog / paging 22 micro-interfaces State helpers DerivedProperty ExpandableState / SearchableState AsyncResourceVM Paging helpers PagedComposition TokenPagedComposition filtered/scored views Services + messages MessageHub IDialogService INotificationHub PropertyChangedMessage Flavor surface C# PascalCase, Python/Rust snake_case methods, TypeScript/Swift camelCase; flavor idioms remain documented. Reading note VMx keeps containers, decorators, helpers, and specialized VMs as separate families so host apps can compose only the primitives they need. extends injects / posts

Five idioms

  • Leaf, composite, group, aggregate, and hierarchical shapes are distinct on purpose.
  • Forwarding decorators and specialized companions stay outside the core container split.
  • This is the same family map every flavor implements.

Behavior overlays

  • Capabilities describe what a VM can do, not what it is.
  • State helpers and paging helpers compose beside the VM family instead of inflating the inheritance tree.
  • Form, dialog, notification, and discriminator behaviors remain opt-in surfaces.

Docs use

  • This map is the quick orientation diagram for contributors reading the spec index.
  • It complements the class architecture map by grouping primitives into usage families.
  • The Notes Workspace diagrams later show how the families combine in practice.