"""Federation page utilities — serializers, actor helpers, social page builder.""" from __future__ import annotations def _serialize_actor(actor) -> dict | None: """Serialize an actor profile to a dict for sx defcomps.""" from services.federation_page import _serialize_actor as _impl return _impl(actor) def _serialize_timeline_item(item) -> dict: """Serialize a timeline item DTO to a dict for sx defcomps.""" from services.federation_page import _serialize_timeline_item as _impl return _impl(item) def _serialize_remote_actor(a) -> dict: """Serialize a remote actor DTO to a dict for sx defcomps.""" from services.federation_page import _serialize_remote_actor as _impl return _impl(a) async def _social_page(ctx: dict, actor, *, content: str, title: str = "Rose Ash", meta_html: str = "") -> str: """Build a full social page with social header (non-defpage routes).""" from shared.sx.helpers import render_to_sx_with_env, full_page_sx from markupsafe import escape env = {"actor": _serialize_actor(actor) if actor else None} header_rows = await render_to_sx_with_env("layouts/social-layout-full", env) return await full_page_sx(ctx, header_rows=header_rows, content=content, meta_html=meta_html or f'