diff --git a/apps/dashboard/src/components/integrations/forms/discord-integration.tsx b/apps/dashboard/src/components/integrations/forms/discord-integration.tsx
index 27628f04..ecb46ce9 100644
--- a/apps/dashboard/src/components/integrations/forms/discord-integration.tsx
+++ b/apps/dashboard/src/components/integrations/forms/discord-integration.tsx
@@ -70,6 +70,7 @@ export function DiscordIntegrationForm({
>
diff --git a/apps/dashboard/src/components/integrations/forms/slack-integration.tsx b/apps/dashboard/src/components/integrations/forms/slack-integration.tsx
index aef05480..76f06417 100644
--- a/apps/dashboard/src/components/integrations/forms/slack-integration.tsx
+++ b/apps/dashboard/src/components/integrations/forms/slack-integration.tsx
@@ -54,6 +54,7 @@ export function SlackIntegrationForm({
>
diff --git a/apps/dashboard/src/components/integrations/forms/webhook-integration.tsx b/apps/dashboard/src/components/integrations/forms/webhook-integration.tsx
index 6a52d6ce..2941527e 100644
--- a/apps/dashboard/src/components/integrations/forms/webhook-integration.tsx
+++ b/apps/dashboard/src/components/integrations/forms/webhook-integration.tsx
@@ -59,6 +59,7 @@ export function WebhookIntegrationForm({
>
diff --git a/apps/dashboard/src/components/integrations/integrations.tsx b/apps/dashboard/src/components/integrations/integrations.tsx
index 6c005e57..2edd9421 100644
--- a/apps/dashboard/src/components/integrations/integrations.tsx
+++ b/apps/dashboard/src/components/integrations/integrations.tsx
@@ -1,4 +1,4 @@
-import type { IIntegrationConfig } from '@openpanel/db';
+import type { IIntegrationConfig } from '@openpanel/validation';
import { WebhookIcon } from 'lucide-react';
import {
IntegrationCardLogo,
diff --git a/apps/dashboard/src/components/notifications/notification-rules.tsx b/apps/dashboard/src/components/notifications/notification-rules.tsx
index a32884ef..1bb76fcc 100644
--- a/apps/dashboard/src/components/notifications/notification-rules.tsx
+++ b/apps/dashboard/src/components/notifications/notification-rules.tsx
@@ -4,8 +4,9 @@ import { useAppParams } from '@/hooks/useAppParams';
import { pushModal } from '@/modals';
import { api } from '@/trpc/client';
import { AnimatePresence, motion } from 'framer-motion';
-import { BoxSelectIcon, PlusIcon } from 'lucide-react';
+import { BoxSelectIcon, PencilRulerIcon, PlusIcon } from 'lucide-react';
import { useMemo } from 'react';
+import { FullPageEmptyState } from '../full-page-empty-state';
import {
IntegrationCard,
IntegrationCardLogo,
@@ -25,6 +26,28 @@ export function NotificationRules() {
const isLoading = query.isLoading;
+ if (!isLoading && data.length === 0) {
+ return (
+
+
+ You have not created any rules yet. Create a rule to start getting
+ notifications.
+
+
+
+ );
+ }
+
return (
@@ -48,17 +71,6 @@ export function NotificationRules() {
>
)}
- {!isLoading && data.length === 0 && (
-
-
-
- }
- name="No integrations yet"
- description="Integrations allow you to connect your systems to OpenPanel. You can add them in the available integrations section."
- />
- )}
{data.map((item) => {
return (
diff --git a/apps/dashboard/src/components/notifications/table/index.tsx b/apps/dashboard/src/components/notifications/table/index.tsx
index 6881543d..1c44f8b5 100644
--- a/apps/dashboard/src/components/notifications/table/index.tsx
+++ b/apps/dashboard/src/components/notifications/table/index.tsx
@@ -7,16 +7,15 @@ import type { UseQueryResult } from '@tanstack/react-query';
import { GanttChartIcon } from 'lucide-react';
import type { Dispatch, SetStateAction } from 'react';
-import type { Notification } from '@openpanel/db';
-
+import type { RouterOutputs } from '@/trpc/client';
import { useColumns } from './columns';
type Props =
| {
- query: UseQueryResult;
+ query: UseQueryResult;
}
| {
- query: UseQueryResult;
+ query: UseQueryResult;
cursor: number;
setCursor: Dispatch>;
};
@@ -31,8 +30,8 @@ export const NotificationsTable = ({ query, ...props }: Props) => {
if (data?.length === 0) {
return (
-
- Could not find any events
+
+ Could not find any notifications
{'cursor' in props && props.cursor !== 0 && (