Problem
The codebase imports both react-hot-toast and sonner — two competing toast libraries coexist with inconsistent styling and usage patterns.
Proposed Solution
Create frontend/cntr/Toast/toast.ts — a unified toast abstraction wrapping sonner. Exports: showSuccess(message: string): void, showError(message: string): void, showInfo(message: string): void, showLoading(message: string): string | number, dismissToast(id: string | number): void. All 5 functions route through Sonner with ManageHub styling defaults. All implementation must live inside frontend/cntr/.
Acceptance Criteria
Problem
The codebase imports both
react-hot-toastandsonner— two competing toast libraries coexist with inconsistent styling and usage patterns.Proposed Solution
Create
frontend/cntr/Toast/toast.ts— a unified toast abstraction wrappingsonner. Exports:showSuccess(message: string): void,showError(message: string): void,showInfo(message: string): void,showLoading(message: string): string | number,dismissToast(id: string | number): void. All 5 functions route through Sonner with ManageHub styling defaults. All implementation must live insidefrontend/cntr/.Acceptance Criteria
frontend/cntr/Toast/toast.tssonner— notreact-hot-toastshowErrorhas no auto-dismiss (duration:Infinity)showSuccessandshowInfoauto-dismiss after 4000msfrontend/cntr/Toast/toast.test.tsverifying each function calls the correctsonnermethod