claritykit-svelte
Version:
A comprehensive Svelte component library focused on accessibility, ADHD-optimized design, developer experience, and full SSR compatibility
105 lines • 4.7 kB
TypeScript
/**
* Crisis Mode Detection and Management Utility
*
* Provides crisis mode detection, automatic switching, and simplified interface patterns
* for therapeutic components in high-stress or overwhelmed states.
*/
export interface CrisisMode {
enabled: boolean;
severity: 'mild' | 'moderate' | 'severe';
triggers: CrisisTrigger[];
adaptations: CrisisAdaptation[];
timestamp: Date;
}
export interface CrisisTrigger {
type: 'user-reported' | 'behavioral' | 'biometric' | 'time-based' | 'external';
value: any;
confidence: number;
timestamp: Date;
}
export interface CrisisAdaptation {
componentType: string;
adaptation: 'simplify' | 'hide' | 'emphasize' | 'redirect';
parameters: Record<string, any>;
}
export interface CrisisModeConfig {
autoDetect: boolean;
userOverride: boolean;
adaptationLevel: 'minimal' | 'moderate' | 'maximum';
timeoutMinutes: number;
emergencyContacts: boolean;
}
/**
* Crisis mode detection patterns
*/
export declare const crisisDetectionPatterns: {
rapidClicking: (clickCount: number, timeWindow: number) => boolean;
taskSwitching: (switchCount: number, timeWindow: number) => boolean;
errorRepeating: (errorCount: number, timeWindow: number) => boolean;
hesitationPattern: (hoverTime: number, clickDelay: number) => boolean;
abandonmentPattern: (partialInputs: number, timeWindow: number) => boolean;
lateNightUsage: () => boolean;
keyboardMashing: (keyPressRate: number) => boolean;
mouseShaking: (movementVariance: number) => boolean;
};
/**
* Activate crisis mode with specified trigger
*/
export declare function activateCrisisMode(trigger: CrisisTrigger, severity?: CrisisMode['severity']): void;
/**
* Deactivate crisis mode
*/
export declare function deactivateCrisisMode(reason?: 'user' | 'timeout' | 'external'): void;
/**
* Check if crisis mode is currently active
*/
export declare function isCrisisModeActive(): boolean;
/**
* Get current crisis mode severity
*/
export declare function getCrisisModeSeverity(): CrisisMode['severity'] | null;
/**
* Get crisis mode state (reactive)
*/
export declare function getCrisisModeState(): CrisisMode;
/**
* Update crisis mode configuration
*/
export declare function updateCrisisConfig(newConfig: Partial<CrisisModeConfig>): void;
/**
* Monitor behavioral patterns for crisis detection
*/
export declare function monitorBehavioralPatterns(): void;
/**
* Get crisis mode adaptations for a specific component type
*/
export declare function getAdaptationsForComponent(componentType: string): CrisisAdaptation[];
/**
* Apply crisis mode styles to component
*/
export declare function applyCrisisModeStyles(baseClasses: string, componentType: string): string;
/**
* Check if a component should be shown in crisis mode
*/
export declare function shouldShowInCrisisMode(componentType: string, importance?: 'essential' | 'important' | 'optional'): boolean;
/**
* Get simplified options for crisis mode
*/
export declare function getSimplifiedOptions<T>(options: T[], componentType: string): T[];
/**
* Manual crisis mode toggle for user control
*/
export declare function toggleCrisisMode(): void;
/**
* Report user crisis state
*/
export declare function reportCrisisState(severity: CrisisMode['severity'], userInput?: string): void;
/**
* Initialize crisis mode monitoring
*/
export declare function initializeCrisisMode(config?: Partial<CrisisModeConfig>): void;
/**
* Crisis mode CSS classes that should be added to global styles
*/
export declare const crisisModeCSSClasses = "\n .ck-crisis-simple {\n --ck-space: 1.5;\n --ck-text-scale: 1.2;\n --ck-shadow: none;\n --ck-radius: 0.25rem;\n }\n \n .ck-crisis-large-text {\n --ck-text-scale: 1.4;\n font-weight: var(--ck-font-medium);\n }\n \n .ck-crisis-high-contrast {\n --ck-bg-primary: #ffffff;\n --ck-bg-secondary: #f8f9fa;\n --ck-text-primary: #000000;\n --ck-border: #333333;\n }\n \n .ck-crisis-hidden {\n display: none !important;\n }\n \n .ck-crisis-emphasized {\n border: 2px solid var(--ck-accent);\n background: color-mix(in srgb, var(--ck-accent) 10%, transparent);\n box-shadow: 0 0 0 4px color-mix(in srgb, var(--ck-accent) 20%, transparent);\n }\n \n .ck-crisis-calming {\n --ck-accent: #4ecdc4;\n --ck-success: #45b7aa;\n --ck-bg-secondary: color-mix(in srgb, #4ecdc4 5%, transparent);\n }\n \n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n";
//# sourceMappingURL=crisis-mode.d.ts.map