* esm * wip * wip * wip * wip * wip * wip * subscription notice * wip * wip * wip * fix envs * fix: update docker build * fix * esm/types * delete dashboard :D * add patches to dockerfiles * update packages + catalogs + ts * wip * remove native libs * ts * improvements * fix redirects and fetching session * try fix favicon * fixes * fix * order and resize reportds within a dashboard * improvements * wip * added userjot to dashboard * fix * add op * wip * different cache key * improve date picker * fix table * event details loading * redo onboarding completely * fix login * fix * fix * extend session, billing and improve bars * fix * reduce price on 10M
57 lines
1.2 KiB
TypeScript
57 lines
1.2 KiB
TypeScript
import { parseAsStringEnum, useQueryState } from 'nuqs';
|
|
|
|
import { mapKeys } from '@openpanel/validation';
|
|
|
|
import type { ReportChartProps } from '../report-chart/context';
|
|
|
|
export function useOverviewWidget<T extends string>(
|
|
key: string,
|
|
widgets: Record<
|
|
T,
|
|
{ title: string; btn: string; chart: ReportChartProps; hide?: boolean }
|
|
>,
|
|
) {
|
|
const keys = Object.keys(widgets) as T[];
|
|
const [widget, setWidget] = useQueryState<T>(
|
|
key,
|
|
parseAsStringEnum(keys)
|
|
.withDefault(keys[0]!)
|
|
.withOptions({ history: 'push' }),
|
|
);
|
|
return [
|
|
{
|
|
...widgets[widget],
|
|
key: widget,
|
|
},
|
|
setWidget,
|
|
mapKeys(widgets).map((key) => ({
|
|
...widgets[key],
|
|
key,
|
|
})),
|
|
] as const;
|
|
}
|
|
|
|
export function useOverviewWidgetV2<T extends string>(
|
|
key: string,
|
|
widgets: Record<T, { title: string; btn: string; meta?: any }>,
|
|
) {
|
|
const keys = Object.keys(widgets) as T[];
|
|
const [widget, setWidget] = useQueryState<T>(
|
|
key,
|
|
parseAsStringEnum(keys)
|
|
.withDefault(keys[0]!)
|
|
.withOptions({ history: 'push' }),
|
|
);
|
|
return [
|
|
{
|
|
...widgets[widget],
|
|
key: widget,
|
|
},
|
|
setWidget,
|
|
mapKeys(widgets).map((key) => ({
|
|
...widgets[key],
|
|
key,
|
|
})),
|
|
] as const;
|
|
}
|