type AlertButtonStyle = 'default' | 'contrast' | 'neutral' | 'info' | 'warning' | 'danger' | 'success' const getColorsForNormalVariant = (style: AlertButtonStyle) => { switch (style) { case 'default': return 'bg-default text-text' case 'contrast': return 'bg-default text-contrast' case 'neutral': return 'bg-default text-neutral' case 'info': return 'bg-default text-info' case 'warning': return 'bg-default text-warning' case 'danger': return 'bg-default text-danger' case 'success': return 'bg-default text-success' } } const getColorsForPrimaryVariant = (style: AlertButtonStyle) => { switch (style) { case 'default': return 'bg-default text-foreground' case 'contrast': return 'bg-contrast text-text' case 'neutral': return 'bg-neutral text-neutral-contrast' case 'info': return 'bg-info text-info-contrast' case 'warning': return 'bg-warning text-warning-contrast' case 'danger': return 'bg-danger text-danger-contrast' case 'success': return 'bg-success text-success-contrast' } } type AlertButton = { text: string style: AlertButtonStyle action: () => void primary?: boolean } export class SKAlert { private title?: string private text: string private buttons: AlertButton[] private element!: HTMLDivElement private onElement!: HTMLElement constructor({ title, text, buttons }: { title?: string; text: string; buttons?: AlertButton[] }) { this.title = title this.text = text this.buttons = buttons || [] } buttonsString() { const genButton = function (buttonDesc: AlertButton, index: number) { return ` ` } const buttonString = this.buttons .map(function (buttonDesc, index) { return genButton(buttonDesc, index) }) .join('') const str = `
${this.text}
` : '' const template = `