export interface ElementRef {
element: HTMLElement | DocumentFragment;
styles?: string;
events?: {
load?: () => void;
destroy?: () => void;
recalculate?: () => void;
resize?: () => void;
[key: string]: any;
};
}
export interface ComponentRef {
element: HTMLElement | DocumentFragment;
styles?: string;
events?: {
load?: () => void;
destroy?: () => void;
recalculate?: () => void;
resize?: () => void;
[key: string]: any;
};
}
export interface SlotConfig {
required?: boolean;
allowedElements?: string[];
deprecated?: string;
replacement?: string;
}
export type SlotConfiguration = Record;
export interface ComponentEventDetail {
tagName: string;
element: HTMLElement;
timestamp?: number;
}
export interface ComponentReadyDetail extends ComponentEventDetail {
shadowRoot: ShadowRoot;
ref?: any;
}
export interface ComponentErrorDetail extends ComponentEventDetail {
type: 'validation' | 'initialization' | 'runtime';
message: string;
details?: any;
}
export interface ComponentResizeDetail extends ComponentEventDetail {
previousSize?: {
width: number;
height: number;
};
currentSize: {
width: number;
height: number;
};
source?: 'attribute' | 'window' | 'manual';
}
export type CreateComponentFunction = (element: HTMLElement) => ComponentRef;
export type ComponentRegistration = () => void;
export type ComponentFactory = (props: TProps) => TReturn;
export interface ThemeProps {
isThemeLight?: boolean;
isThemeDark?: boolean;
isThemeMaryland?: boolean;
}
export interface VisualStateProps {
isVisualOpen?: boolean;
isShowIcon?: boolean;
isTransparent?: boolean;
isBordered?: boolean;
}
export interface LayoutProps {
isFixed?: boolean;
isHidden?: boolean;
isAlignmentRight?: boolean;
isFullImage?: boolean;
}
export interface BaseContentProps {
headline?: HTMLElement | null;
text?: HTMLElement | null;
actions?: HTMLElement | null;
}
export interface ExtendedContentProps extends BaseContentProps {
eyebrow?: HTMLElement | null;
image?: HTMLElement | null;
content?: HTMLElement | null;
}
export interface ComponentConfiguration {
tagName: string;
slots?: SlotConfiguration;
createComponent: CreateComponentFunction;
attributes?: any | any[];
beforeConnect?: (ref: ComponentRef, shadow: ShadowRoot) => void;
afterConnect?: (ref: ComponentRef, shadow?: ShadowRoot) => void;
onReady?: (ref: ComponentRef) => void;
}
export interface ComponentEvents {
callback?: (shadow?: ShadowRoot) => void;
close?: (options?: {
hasAnimation?: boolean;
}) => void;
hide?: () => void;
load?: () => void;
loadAnimation?: () => void;
open?: (options?: {
hasAnimation?: boolean;
}) => void;
resize?: () => void;
setPosition?: (options?: {
value?: number | null;
}) => void;
show?: () => void;
size?: () => void;
}
export interface TypedComponentRef {
element: HTMLElement | DocumentFragment;
styles?: string;
events?: ComponentEvents & Record;
}
export interface AttributeElementRef {
element: HTMLElement | DocumentFragment;
styles?: string;
events?: {
load?: () => void;
destroy?: () => void;
recalculate?: () => void;
resize?: () => void;
[key: string]: any;
};
}
declare global {
interface HTMLElementEventMap {
'component:ready': CustomEvent;
'component:error': CustomEvent;
'component:resize': CustomEvent;
'accordion:open': CustomEvent;
'accordion:close': CustomEvent;
'modal:show': CustomEvent;
'modal:hide': CustomEvent;
}
}
//# sourceMappingURL=_types.d.ts.map