aura-glass
Version:
A comprehensive glassmorphism design system for React applications with 142+ production-ready components
92 lines • 2.69 kB
TypeScript
import React from "react";
export interface CollaborationUser {
id: string;
name: string;
email: string;
avatar?: string;
color: string;
cursor?: {
x: number;
y: number;
elementId?: string;
};
selection?: {
elementId: string;
start: number;
end: number;
};
lastActive: number;
}
export interface CollaborationComment {
id: string;
userId: string;
content: string;
position: {
x: number;
y: number;
elementId?: string;
};
timestamp: number;
resolved?: boolean;
replies?: CollaborationComment[];
}
export interface CollaborationEdit {
id: string;
userId: string;
type: "insert" | "delete" | "replace";
elementId: string;
position: number;
content: string;
timestamp: number;
}
export interface CollaborationActivity {
id: string;
userId: string;
type: "join" | "leave" | "edit" | "comment" | "cursor_move";
description: string;
timestamp: number;
metadata?: any;
}
interface CollaborationContextType {
currentUser: CollaborationUser | null;
users: CollaborationUser[];
setCurrentUser: (user: CollaborationUser) => void;
updateCursor: (position: {
x: number;
y: number;
elementId?: string;
}) => void;
updateSelection: (selection: {
elementId: string;
start: number;
end: number;
}) => void;
comments: CollaborationComment[];
addComment: (comment: Omit<CollaborationComment, "id" | "timestamp">) => void;
resolveComment: (commentId: string) => void;
replyToComment: (commentId: string, reply: Omit<CollaborationComment, "id" | "timestamp" | "position">) => void;
edits: CollaborationEdit[];
applyEdit: (edit: Omit<CollaborationEdit, "id" | "timestamp">) => void;
activities: CollaborationActivity[];
isConnected: boolean;
connectionStatus: "connecting" | "connected" | "disconnected" | "reconnecting";
showCursors: boolean;
showComments: boolean;
showActivity: boolean;
toggleCursors: () => void;
toggleComments: () => void;
toggleActivity: () => void;
}
export declare const useCollaboration: () => CollaborationContextType;
interface CollaborationProviderProps {
children: React.ReactNode;
roomId: string;
enableRealTime?: boolean;
maxUsers?: number;
className?: string;
"data-testid"?: string;
}
export declare const CollaborationProvider: React.FC<CollaborationProviderProps>;
export declare const GlassCollaborationProvider: React.FC<CollaborationProviderProps>;
export {};
//# sourceMappingURL=GlassCollaborationProvider.d.ts.map