'use client' import * as React from 'react' import Link from 'next/link' import { useTranslations } from 'next-intl' import { Button } from '@/components/ui/button' import { cn } from '@/lib/utils' import { Users, Plus, TrendingUp, type LucideIcon, } from 'lucide-react' import { SupportLink } from '@/components/ui/support-link' interface EmptyStateProps { icon?: LucideIcon /** * Usually static i18n strings. The empty state is data-ph-unmask chrome in * session replays, so a title or description carrying user data (e.g. an * interpolated search term) must wrap that part in a data-ph-mask element. */ title: React.ReactNode description: React.ReactNode actionLabel?: string actionHref?: string onAction?: () => void secondaryActionLabel?: string secondaryActionHref?: string supportHint?: boolean className?: string children?: React.ReactNode } /** * EmptyState: friendly placeholder shown when there is no data. */ export function EmptyState({ icon: Icon, title, description, actionLabel, actionHref, onAction, secondaryActionLabel, secondaryActionHref, supportHint, className, children, }: EmptyStateProps) { const t = useTranslations('empty') return ( // data-ph-unmask: empty states are static i18n chrome in session replays.
{description}
{supportHint && (