861bfba85a
- Defter, Plan ve Değerlendirme'de dönem seçici (?donem=) - Kapalı dönem salt okunur; düzeltmedeki dönem düzenlenebilir ve yeniden kapatılır - Hane sahibi için onaylı "Düzeltme için yeniden aç" - Geçmiş dönemler listesi, dönem durum rozeti Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
import type { ReactNode } from 'react'
|
||
import { PageError, PageLoading } from '@/components/page'
|
||
import { NoPeriodCard } from '@/features/period-wizard/no-period-card'
|
||
import { useSelectedPeriod } from '@/lib/period-select'
|
||
import { t } from '@/lib/strings'
|
||
import type { Period } from '@/types/Period'
|
||
|
||
/**
|
||
* Seçili dönemi (`?donem=` ya da açık dönem) yükler; yükleniyor / hata / bulunamadı /
|
||
* dönem yok durumlarını tek yerde gösterir. Dönem varsa `children(dönem, tüm dönemler)`.
|
||
*/
|
||
export function SelectedPeriod({
|
||
empty = <NoPeriodCard />,
|
||
children,
|
||
}: {
|
||
empty?: ReactNode
|
||
children: (period: Period, periods: Period[]) => ReactNode
|
||
}) {
|
||
const sel = useSelectedPeriod()
|
||
if (sel.error) return <PageError message={sel.error.message} onRetry={sel.refetch} />
|
||
if (sel.isPending) return <PageLoading />
|
||
if (sel.period === undefined)
|
||
return (
|
||
<p role="alert" className="rounded-xl bg-muted p-4 text-muted-foreground">
|
||
{t.periods.notFound}
|
||
</p>
|
||
)
|
||
if (sel.period === null) return empty
|
||
return children(sel.period, sel.periods)
|
||
}
|