Fan-out helper: given a notification payload and a presentation policy
placement, push to the appropriate surfaces.
Always pushes to the Zustand notifications store (panel) unless
placement is "silent" or "inline".
Conditionally pushes to the toast bus when placement contains +toast.
The store import is lazy (dynamic) to avoid a circular dependency between
errors.ts and store/notifications.ts. Call sites that already imported
the store can also push directly.
OCP: adding a fourth surface (e.g. status bar) = one new branch here +
one new component. No other callers change.
Fan-out helper: given a notification payload and a presentation policy placement, push to the appropriate surfaces.
"silent"or"inline".+toast.The store import is lazy (dynamic) to avoid a circular dependency between
errors.tsandstore/notifications.ts. Call sites that already imported the store can also push directly.OCP: adding a fourth surface (e.g. status bar) = one new branch here + one new component. No other callers change.