+
+
+ {message}
+
+
+ {action && (
+
+ )}
+
+
+ {() => }
+
+
+
+ );
+};
diff --git a/src/ui/notification/notification.model.ts b/src/ui/notification/notification.model.ts
new file mode 100644
index 0000000..28392d8
--- /dev/null
+++ b/src/ui/notification/notification.model.ts
@@ -0,0 +1,20 @@
+import { ReactNode } from 'react';
+
+export type NotificationStatus =
+ | 'default'
+ | 'success'
+ | 'warning'
+ | 'error'
+ | 'info';
+
+export type Notification = {
+ id: string;
+ message: ReactNode;
+ action?: NotificationAction;
+ status?: NotificationStatus;
+};
+
+export type NotificationAction = {
+ label: string;
+ onClick: () => void;
+};
diff --git a/src/ui/notification/notification.spec.tsx b/src/ui/notification/notification.spec.tsx
new file mode 100644
index 0000000..03625d6
--- /dev/null
+++ b/src/ui/notification/notification.spec.tsx
@@ -0,0 +1,80 @@
+import React, { ReactNode } from 'react';
+import { screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+
+import { useNotifications } from '../../context';
+import { renderWithProviders } from '../../utils';
+import { Button } from '../button';
+import { Typography } from '../typography';
+import { NotificationAction } from './notification.model';
+
+type TestComponentProps = {
+ message: ReactNode;
+ action?: NotificationAction;
+};
+
+const TestComponent = ({ message, action }: TestComponentProps) => {
+ const { addNotification } = useNotifications();
+
+ return (
+