import { useCallback } from 'react'; import { getAnalytics } from '../core/AnalyticsManager'; import type { UserTraits } from '../types'; /** * Primary hook for accessing analytics methods inside components. * * ```tsx * const { track, screen, identify, reset } = useAnalytics(); * * const handlePurchase = () => { * track('purchase_completed', { amount: 49.99, currency: 'USD' }); * }; * ``` */ export function useAnalytics() { const track = useCallback((event: string, properties?: Record) => { getAnalytics().track(event, properties); }, []); const screen = useCallback((name: string, properties?: Record) => { getAnalytics().screen(name, properties); }, []); const identify = useCallback((userId: string, traits?: UserTraits) => { return getAnalytics().identify(userId, traits); }, []); const group = useCallback((groupId: string, traits?: Record) => { return getAnalytics().group(groupId, traits); }, []); const alias = useCallback((newId: string, previousId?: string) => { return getAnalytics().alias(newId, previousId); }, []); const reset = useCallback(() => { return getAnalytics().reset(); }, []); const flush = useCallback(() => { return getAnalytics().flush(); }, []); const optOut = useCallback(() => { getAnalytics().optOut(); }, []); const optIn = useCallback(() => { getAnalytics().optIn(); }, []); return { track, screen, identify, group, alias, reset, flush, optOut, optIn }; }