'use client' import { useState, useEffect } from 'react' import { formatNumber } from '@ciphera-net/ui' import { getEventPropertyKeys, getEventPropertyValues, type EventPropertyKey, type EventPropertyValue } from '@/lib/api/stats' interface EventPropertiesProps { siteId: string eventName: string dateRange: { start: string; end: string } onClose: () => void } export default function EventProperties({ siteId, eventName, dateRange, onClose }: EventPropertiesProps) { const [keys, setKeys] = useState([]) const [selectedKey, setSelectedKey] = useState(null) const [values, setValues] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { setLoading(true) getEventPropertyKeys(siteId, eventName, dateRange.start, dateRange.end) .then(k => { setKeys(k) if (k.length > 0) setSelectedKey(k[0].key) }) .finally(() => setLoading(false)) }, [siteId, eventName, dateRange.start, dateRange.end]) useEffect(() => { if (!selectedKey) return getEventPropertyValues(siteId, eventName, selectedKey, dateRange.start, dateRange.end) .then(setValues) }, [siteId, eventName, selectedKey, dateRange.start, dateRange.end]) const maxCount = values.length > 0 ? values[0].count : 1 return (

Properties: {eventName.replace(/_/g, ' ')}

{loading ? (
{[1, 2, 3].map(i => (
))}
) : keys.length === 0 ? (

No properties recorded for this event yet.

) : ( <>
{keys.map(k => ( ))}
{values.map(v => (
{v.value} {formatNumber(v.count)}
))}
)}
) }