namespace CollabSL.EndPoints.Hubs;
/// Route/navigation sync — broadcast current app route to all participants.
public record RouteSyncPayload(
string UserId,
string Route,
string? ModuleName,
string? EntityId);
/// Cursor position broadcast — high-frequency, no try/catch for performance.
public record CursorPayload(
string UserId,
string CursorColor,
double X,
double Y,
string? ElementId);
/// Form field sync — broadcast a single field value change.
public record FormSyncPayload(
string UserId,
string FormId,
string FieldName,
string? Value);
/// In-session chat message.
public record ChatMessagePayload(
string UserId,
string DisplayName,
string Message,
DateTime SentAt);
/// Drawing/annotation event on the shared canvas.
public record AnnotationPayload(
string UserId,
string CursorColor,
string Action, // "draw" | "erase" | "clear"
string? Data); // JSON-encoded stroke data