import { api, LightningElement } from "lwc"; import cx from "classnames"; type ToastVariant = "info" | "error" | "success"; const icons = { info: "info", warning: "warning", success: "success", error: "error" }; export default class extends LightningElement { @api variant: ToastVariant = "info"; @api localStorageKey!: string; private isOpen: boolean = false; connectedCallback() { this.isOpen = window.localStorage.getItem(this.localStorageKey) !== "false"; } private get iconSymbol() { return icons[this.variant] || icons.info; } private get className() { return cx( "container", `status-${this.variant}`, this.isOpen ? "open" : "closed" ); } close() { this.dispatchEvent(new CustomEvent("close")); window.localStorage.setItem(this.localStorageKey, "false"); this.isOpen = false; } }