Files
how2ice 005cf56baf
Some checks failed
No response / noResponse (push) Has been cancelled
CI / Continuous releases (push) Has been cancelled
CI / test-dev (macos-latest) (push) Has been cancelled
CI / test-dev (ubuntu-latest) (push) Has been cancelled
CI / test-dev (windows-latest) (push) Has been cancelled
Maintenance / main (push) Has been cancelled
Scorecards supply-chain security / Scorecards analysis (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
init project
2025-12-12 14:26:25 +09:00

61 lines
1.6 KiB
TypeScript

import * as React from 'react';
import NotificationsContext from './NotificationsContext';
export interface ShowNotificationOptions {
/**
* The key to use for deduping notifications. If not provided, a unique key will be generated.
*/
key?: string;
/**
* The severity of the notification. When provided, the snackbar will show an alert with the
* specified severity.
*/
severity?: 'info' | 'warning' | 'error' | 'success';
/**
* The duration in milliseconds after which the notification will automatically close.
*/
autoHideDuration?: number;
/**
* The text to display on the action button.
*/
actionText?: React.ReactNode;
/**
* The callback to call when the action button is clicked.
*/
onAction?: () => void;
}
export interface ShowNotification {
/**
* Show a snackbar in the application.
*
* @param message The message to display in the snackbar.
* @param options Options for the snackbar.
* @returns The key that represents the notification. Useful for programmatically
* closing it.
*/
(message: React.ReactNode, options?: ShowNotificationOptions): string;
}
export interface CloseNotification {
/**
* Close a snackbar in the application.
*
* @param key The key of the notification to close.
*/
(key: string): void;
}
interface UseNotifications {
show: ShowNotification;
close: CloseNotification;
}
export default function useNotifications(): UseNotifications {
const notificationsContext = React.useContext(NotificationsContext);
if (!notificationsContext) {
throw new Error('Notifications context was used without a provider.');
}
return notificationsContext;
}