mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-05 10:42:04 +00:00
Dispatchers see a one-line banner and a one-time toast while a Reactive/Emergency work order is past half of its SEV response window; the banner opens the board on exactly those work orders and dismisses for the session. Missed deadlines stay in the notification center until acknowledged, and Clear all skips them.
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import { isDismissable } from "@/domain/notifications/utils/visible-notification-sections";
|
|
import type { NotificationCenter } from "./use-notification-center";
|
|
|
|
type NotificationFeedActionsProps = {
|
|
center: NotificationCenter;
|
|
};
|
|
|
|
export function NotificationFeedActions({ center }: NotificationFeedActionsProps) {
|
|
const hasUnread = center.unreadIds.size > 0;
|
|
// Rows that need acknowledging are never cleared, so they alone do not enable "Clear all".
|
|
const hasItems = center.sections.some((section) => section.items.some(isDismissable));
|
|
|
|
return (
|
|
<>
|
|
<button
|
|
type="button"
|
|
onClick={center.markAllRead}
|
|
disabled={!hasUnread}
|
|
className="cursor-pointer transition-opacity disabled:cursor-not-allowed disabled:opacity-50"
|
|
style={{ fontSize: 12, fontWeight: 500, color: "var(--color-primary)" }}
|
|
>
|
|
Mark all read
|
|
</button>
|
|
<button
|
|
type="button"
|
|
onClick={center.dismissAll}
|
|
disabled={!hasItems}
|
|
className="cursor-pointer transition-opacity disabled:cursor-not-allowed disabled:opacity-50"
|
|
style={{ fontSize: 12, fontWeight: 500, color: "var(--color-text-muted)" }}
|
|
>
|
|
Clear all
|
|
</button>
|
|
</>
|
|
);
|
|
}
|