@rkosafo/cai.components
Version:
This package is under development and not ready for public use.
142 lines (141 loc) • 3.63 kB
TypeScript
import type { Snippet } from 'svelte';
export interface ChatEntrySkeletonProps {
isMobile?: boolean;
messageCount?: number;
}
export interface ChatHeaderOverflowAction {
id: string;
label: string;
icon?: string;
}
export type CaseToggleType = 'follow' | 'unfollow';
export interface ChatHeaderProps {
logoUrl?: string;
caseTitle?: string;
user?: {
name: string;
profileImageUrl?: string;
initials: string;
};
caseTypes?: string;
assignedTo?: string;
showAssignedTo?: boolean;
showFollowCaseButton?: boolean;
showBackArrow?: boolean;
overflowActionsList?: ChatHeaderOverflowAction[];
showOverflowActionButton?: boolean;
caseStatus?: string;
isFollowingCase?: boolean;
showFollowOverflowAction?: boolean;
showCloseOverflowAction?: boolean;
onCloseCase?: () => void;
onOverflowActionClicked?: (val: ChatHeaderOverflowAction) => void;
onToggleFollowCase?: (val: CaseToggleType) => void;
onBackArrowClicked?: () => void;
leadingWidget?: Snippet;
trailingWidget?: Snippet;
caseDetailsWidget?: Snippet;
}
export interface ISlashCommand {
name: string;
cmdK: string;
hint: string;
viewer: string;
}
export interface IMentionableItem {
id: string | number;
name: string;
avatar?: string;
}
export interface RichTextProps {
value?: string;
placeholder?: string;
loading?: boolean;
slashCommands?: ISlashCommand[];
mentionableItems?: IMentionableItem[];
onSend?: () => void;
onSlash?: (val: ISlashCommand) => void;
onMention?: (val: IMentionableItem) => void;
class?: string;
}
export type CommandListType = 'slash' | 'mention';
export interface PreviewPageSrc {
name: string;
content: string;
file: string;
}
export interface PreviewPageProps {
open: boolean;
fullImage?: boolean;
showActions?: boolean;
title: string;
src?: PreviewPageSrc;
onGetImage?: (val: PreviewPageSrc) => void;
}
export interface ICaseCategory {
id: number;
name: string;
description: string;
assignedTo: number[];
visibleTo: number[];
canClose: number[];
autoAssign: boolean;
parentId?: number;
items?: ICaseCategory[];
}
export interface CategorySelectorClicked {
selected: ICaseCategory;
list: string[] | null;
}
export interface CategorySelectorProps {
items?: ICaseCategory[];
options?: ICaseCategory[];
onClick?: (val: CategorySelectorClicked) => void;
}
export interface DraggableWindowProps {
title: string;
isOpen: boolean;
isCollapsed: boolean;
width?: string;
height?: string;
x?: number;
y?: number;
minWidth?: string;
minHeight?: string;
zIndex?: number;
onBringToFront?: () => void;
}
export interface ChatInputMessage {
content: string;
contentType: 'text';
files: File[];
mentions: any[];
}
export interface ChatInputProps {
clearMessage?: boolean;
hideLoad?: boolean;
slashCommands?: ISlashCommand[];
mentionableItems?: IMentionableItem[];
onMessage?: (val: ChatInputMessage) => void;
onSlash?: (val: ISlashCommand) => void;
previewPageTitle?: string;
class?: string;
}
export interface ChatEntryMessage {
mine: boolean;
message: string;
files?: string[];
user?: {
firstName: string;
id: number | string;
surname: string;
otherNames?: string;
staffNumber?: string;
};
}
export interface ChatEntryPageProps {
message: ChatEntryMessage;
time: string;
userId: number | string;
textBorder?: boolean;
}