import { FullPageEmptyState } from '@/components/full-page-empty-state'; import FullPageLoadingState from '@/components/full-page-loading-state'; import { IntegrationCardSkeleton } from '@/components/integrations/integration-card'; import { RuleCard } from '@/components/notifications/rule-card'; import { Button } from '@/components/ui/button'; import { useTRPC } from '@/integrations/trpc/react'; import { pushModal } from '@/modals'; import { useQuery } from '@tanstack/react-query'; import { createFileRoute } from '@tanstack/react-router'; import { AnimatePresence, motion } from 'framer-motion'; import { PencilRulerIcon, PlusIcon } from 'lucide-react'; import { useMemo } from 'react'; export const Route = createFileRoute( '/_app/$organizationId/$projectId/notifications/_tabs/rules', )({ component: Component, loader: async ({ context, params }) => { await context.queryClient.prefetchQuery( context.trpc.notification.rules.queryOptions({ projectId: params.projectId, }), ); }, pendingComponent: FullPageLoadingState, }); function Component() { const { projectId } = Route.useParams(); const trpc = useTRPC(); const query = useQuery( trpc.notification.rules.queryOptions({ projectId, }), ); const data = useMemo(() => { return query.data || []; }, [query.data]); 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 (
{isLoading && ( <> )} {data.map((item) => { return ( ); })}
); }