import { parseAsStringEnum, useQueryState } from 'nuqs'; import { mapKeys } from '@openpanel/validation'; import type { IChartInput } from '@openpanel/validation'; export function useOverviewWidget( key: string, widgets: Record< T, { title: string; btn: string; chart: IChartInput; hide?: boolean } > ) { const keys = Object.keys(widgets) as T[]; const [widget, setWidget] = useQueryState( key, parseAsStringEnum(keys) .withDefault(keys[0]!) .withOptions({ history: 'push' }) ); return [ { ...widgets[widget], key: widget, }, setWidget, mapKeys(widgets).map((key) => ({ ...widgets[key], key, })), ] as const; }