'use client'; import { useQuery } from '@tanstack/react-query'; import { apiFetch } from '@/lib/api/client'; import type { DateRange, LeadSourceAttributionData, MetricBase, OccupancyTimelineData, PipelineFunnelData, RevenueBreakdownData, } from '@/lib/services/analytics.service'; interface MetricResponse { metric: MetricBase; range: DateRange; data: T; } export function useAnalyticsMetric(metric: MetricBase, range: DateRange) { return useQuery({ queryKey: ['analytics', metric, range], queryFn: async () => { const res = await apiFetch>( `/api/v1/analytics?metric=${metric}&range=${range}`, ); return res.data; }, staleTime: 60_000, retry: 2, }); } export const useFunnel = (range: DateRange) => useAnalyticsMetric('pipeline_funnel', range); export const useOccupancy = (range: DateRange) => useAnalyticsMetric('occupancy_timeline', range); export const useRevenue = (range: DateRange) => useAnalyticsMetric('revenue_breakdown', range); export const useLeadSource = (range: DateRange) => useAnalyticsMetric('lead_source_attribution', range);