UNPKG

claritykit-svelte

Version:

A comprehensive Svelte component library focused on accessibility, ADHD-optimized design, developer experience, and full SSR compatibility

172 lines 4.82 kB
import type { HTMLAttributes } from 'svelte/elements'; export type IntegrationType = 'notion' | 'kanban' | 'github' | 'jira' | 'slack' | 'discord' | 'custom'; export type SyncStatus = 'connected' | 'disconnected' | 'connecting' | 'syncing' | 'error' | 'pending'; export interface IntegrationConfig { id: string; name: string; type: IntegrationType; status: SyncStatus; config: { apiKey?: string; apiSecret?: string; workspace?: string; database?: string; board?: string; channel?: string; webhook?: string; credentials?: Record<string, any>; description?: string; [key: string]: any; }; features?: Array<{ id: string; name: string; description: string; enabled: boolean; config?: Record<string, any>; }>; syncHistory?: Array<{ timestamp: Date; success: boolean; itemsSynced: number; duration: number; error?: string; }>; metadata?: { lastSync?: Date; totalSynced?: number; errorCount?: number; rateLimitRemaining?: number; version?: string; }; } export interface SyncResult { success: boolean; itemsProcessed: number; itemsCreated: number; itemsUpdated: number; itemsDeleted: number; errors: Array<{ item: string; error: string; }>; duration: number; metadata?: Record<string, any>; } export interface ProjectIntegrationPanelProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onConnect' | 'onDisconnect'> { /** * List of available integrations */ integrations: IntegrationConfig[]; /** * Currently active integration tab */ activeIntegration?: string | null; /** * Show sync history for integrations * @default true */ showSyncHistory?: boolean; /** * Enable automatic syncing * @default false */ autoSync?: boolean; /** * Sync interval in milliseconds * @default 300000 (5 minutes) */ syncInterval?: number; /** * Maximum retry attempts for failed syncs * @default 3 */ maxRetries?: number; /** * Callback when connecting an integration */ onConnect?: (integration: IntegrationConfig) => void | Promise<void>; /** * Callback when disconnecting an integration */ onDisconnect?: (integrationId: string) => void | Promise<void>; /** * Callback when syncing an integration */ onSync?: (integrationId: string) => Promise<SyncResult>; /** * Callback when updating integration config */ onConfigUpdate?: (integrationId: string, config: IntegrationConfig) => void; } export interface NotionIntegration extends IntegrationConfig { type: 'notion'; config: { apiKey: string; workspace: string; databases: Array<{ id: string; name: string; type: 'projects' | 'tasks' | 'notes' | 'resources'; }>; syncDirection: 'bidirectional' | 'to-notion' | 'from-notion'; fieldMappings: Record<string, string>; }; } export interface KanbanIntegration extends IntegrationConfig { type: 'kanban'; config: { boardId: string; boardName: string; lists: Array<{ id: string; name: string; position: number; }>; cardTemplate: { titleField: string; descriptionField: string; labelsField?: string; assigneeField?: string; }; }; } export interface GitHubIntegration extends IntegrationConfig { type: 'github'; config: { token: string; owner: string; repo: string; defaultBranch: string; issueLabels: string[]; prTemplate?: string; webhookSecret?: string; }; } export interface IntegrationEvent { id: string; integrationId: string; type: 'item-created' | 'item-updated' | 'item-deleted' | 'sync-completed' | 'error'; timestamp: Date; data: { itemType?: string; itemId?: string; changes?: Record<string, any>; error?: string; }; } export interface AgentIntegrationContext { /** * Oracle can use integrations to fetch external data */ fetchExternalContext: (integration: IntegrationConfig) => Promise<any>; /** * Architect can create projects in external systems */ createExternalProject: (integration: IntegrationConfig, project: any) => Promise<string>; /** * Scribe can sync notes to external systems */ syncNotesToExternal: (integration: IntegrationConfig, notes: any[]) => Promise<SyncResult>; } //# sourceMappingURL=types.d.ts.map