#299 added a network dashboard widget alongside the existing single-site "Who's Online" widget. Both widgets render an overlapping avatar stack, and #299's follow-up commit shares the PHP rendering (wp_presence_render_avatar_stack() in includes/functions.php), but the CSS and the client-side Heartbeat-update JS are still separate copies.
Each widget class defines its own .presence-avatar-stack CSS block (same properties, different container ID prefix and image size), and its own inline buildAvatarStack() JS function (same z-index logic, different image size: 20px for the network widget, 24px for the single-site widget).
Consolidating these means deciding how the two widgets share a script/style asset rather than each carrying an inline copy generated by wp_add_inline_script()/wp_add_inline_style().
#299 added a network dashboard widget alongside the existing single-site "Who's Online" widget. Both widgets render an overlapping avatar stack, and #299's follow-up commit shares the PHP rendering (wp_presence_render_avatar_stack() in includes/functions.php), but the CSS and the client-side Heartbeat-update JS are still separate copies.
Each widget class defines its own .presence-avatar-stack CSS block (same properties, different container ID prefix and image size), and its own inline buildAvatarStack() JS function (same z-index logic, different image size: 20px for the network widget, 24px for the single-site widget).
Consolidating these means deciding how the two widgets share a script/style asset rather than each carrying an inline copy generated by wp_add_inline_script()/wp_add_inline_style().