Eidetic

AI Collaborative Canvas

AI
Results
Governor

Real-time collaborative workspace where humans and AI work together on visual content. Features live cursors, element attribution, AI suggestions, and permission controls for AI editing capabilities.

Minimal Variant

Compact collaborator presence indicator

Y
Y
J
AI editing

Standard Variant

Full canvas with toolbar and collaborators

Collaborative Canvas
Y
1 AI suggestions
100%
You is editing
2 elements

Full Variant

Canvas with collaborator sidebar

Collaborative Canvas

1 suggestions
100%

Canvas area

Click to add elements

People
Y
You (you)
editing
AI Assistants
AI Assistant
viewing

Props

AICollaborativeCanvas component API reference

PropTypeDefaultDescription
collaborators*Collaborator[]List of active collaborators (humans and AI)
elementsCanvasElement[]Canvas elements/objects
currentUserIdstringCurrent user ID (to hide their cursor)
activeTool'select' | 'pan' | 'text' | 'shape' | 'draw' | 'ai_assist''select'Currently selected tool
onToolChange(tool: CanvasTool) => voidCallback when tool changes
onRequestAIAssist(context: { selectedElements?: string[]; area?: Area }) => voidCallback when AI assistance is requested
onElementSelect(elementId: string) => voidCallback when element is selected
onAcceptSuggestion(elementId: string) => voidCallback when AI suggestion is accepted
onRejectSuggestion(elementId: string) => voidCallback when AI suggestion is rejected
aiCanEditbooleanfalseWhether AI has edit permissions
onAIPermissionChange(canEdit: boolean) => voidCallback when AI edit permission changes
showCursorsbooleantrueShow collaborator cursors
showToolbarbooleantrueShow toolbar with tools
variant'minimal' | 'standard' | 'full''standard'Display mode variant
canvasSize{ width: number; height: number }{ width: 800, height: 600 }Canvas dimensions
classNamestringAdditional CSS classes

Collaborator Type

PropTypeDefaultDescription
id*stringUnique collaborator ID
name*stringDisplay name
type*'human' | 'ai'Collaborator type
status*'active' | 'idle' | 'editing' | 'viewing'Current status
color*stringCollaborator color
avatarstringAvatar URL
cursorPosition{ x: number; y: number }Cursor position
activeElementstringCurrently selected element ID

CanvasElement Type

PropTypeDefaultDescription
id*stringUnique element ID
type*'text' | 'shape' | 'image' | 'sticky' | 'drawing' | 'ai_suggestion'Element type
contentstringElement content
position*{ x: number; y: number }Position on canvas
size*{ width: number; height: number }Element dimensions
createdBy*stringCreator ID
lastEditedBystringLast editor ID
isLockedbooleanWhether element is locked
isAISuggestionbooleanWhether this is an AI suggestion
confidencenumberAI confidence (0-100)

Usage

Import and implementation example

import { AICollaborativeCanvas } from '@/blocks/ai-transparency/ai-collaborative-canvas'
export default function DesignTool() {
const [collaborators, setCollaborators] = useState([
{
id: 'user1',
name: 'You',
type: 'human',
status: 'editing',
color: '#10b981',
},
{
id: 'ai1',
name: 'AI Assistant',
type: 'ai',
status: 'viewing',
color: '#6366f1',
},
])
const [elements, setElements] = useState([])
const [aiCanEdit, setAiCanEdit] = useState(false)
const handleAcceptSuggestion = (id: string) => {
// Convert AI suggestion to regular element
}
const handleRequestAIAssist = (context) => {
// Generate AI suggestions
}
return (
<AICollaborativeCanvas
collaborators={collaborators}
elements={elements}
currentUserId="user1"
aiCanEdit={aiCanEdit}
variant="full"
showCursors={true}
showToolbar={true}
onAcceptSuggestion={handleAcceptSuggestion}
onRejectSuggestion={(id) => removeElement(id)}
onAIPermissionChange={setAiCanEdit}
onRequestAIAssist={handleRequestAIAssist}
/>
)
}

Built With

3 components

This block uses the following UI components from the design system:

Features

Built-in functionality

  • Real-time collaboration: See other collaborators cursors and actions live
  • Human-AI distinction: Visual differentiation between human and AI collaborators
  • AI suggestions: Dashed outline for AI-suggested elements with accept/reject actions
  • Permission control: Toggle AI edit permissions with lock/unlock button
  • Tool palette: Select, pan, text, shape, draw, and AI assist tools
  • Live cursors: Show collaborator names and cursor positions
  • Element attribution: Track who created and last edited each element
  • Zoom controls: Zoom in/out with percentage display
  • Collaborator sidebar: Full variant includes detailed collaborator list
  • Grid background: Dot grid for alignment and positioning
  • Status indicators: Show editing/viewing/idle status for each collaborator
  • Dark mode support: Full dark mode with proper contrast

Accessibility

ARIA support and keyboard navigation

ARIA Attributes

All tools use semantic button elementsCollaborator list uses proper list markupCanvas elements are keyboard accessible

Keyboard Navigation

KeyAction
TabNavigate through tools and elements
V, H, T, S, D, ASwitch tools (shortcuts)
Enter / SpaceActivate tools and actions
Arrow keysMove selected elements

Notes

  • Collaborator types indicated by icons and colors
  • AI suggestions have dashed borders and special badges
  • Consider adding aria-live for real-time updates
  • Canvas may need additional screen reader support