'use client'; import { useState, useEffect } from 'react'; import { Card } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { RefreshCw } from 'lucide-react'; import { numberingApi, NumberSequence } from '@/lib/api/numbering'; export function SequenceViewer() { const [sequences, setSequences] = useState([]); const [search, setSearch] = useState(''); const [loading, setLoading] = useState(false); const fetchSequences = async () => { setLoading(true); try { const response = await numberingApi.getSequences(); // Handle wrapped response { data: [...] } or direct array const data = Array.isArray(response) ? response : (response as { data?: NumberSequence[] })?.data ?? []; setSequences(data); } catch { console.error('Failed to fetch sequences'); setSequences([]); } finally { setLoading(false); } }; useEffect(() => { fetchSequences(); }, []); const filteredSequences = sequences.filter( (s) => s.year.toString().includes(search) || s.projectId.toString().includes(search) || s.typeId.toString().includes(search) ); return (

Number Counters

setSearch(e.target.value)} />
{filteredSequences.length === 0 && (
No sequences found
)} {filteredSequences.map((seq, index) => (
Year {seq.year} Project: {seq.projectId} Type: {seq.typeId} {seq.disciplineId > 0 && ( Disc: {seq.disciplineId} )}
Counter: {seq.lastNumber} {' '} | Originator: {seq.originatorId} | Recipient:{' '} {seq.recipientOrganizationId === -1 ? 'All' : seq.recipientOrganizationId}
))}
); }