79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
"use client";
|
|
|
|
import type {
|
|
HousekeepingRouteDefinition,
|
|
HousekeepingSurface,
|
|
HousekeepingWidgetDefinition,
|
|
} from "../../../foundation/contracts";
|
|
import type { HousekeepingPreferences } from "../../../foundation/preferences/schema";
|
|
import type { HousekeepingWidgetLoadResult } from "../../../foundation/registry";
|
|
import { Favorites } from "../../../foundation/shell/favorites";
|
|
import { WidgetGrid } from "../../../foundation/shell/widget-grid";
|
|
import {
|
|
type HousekeepingPreferenceSaver,
|
|
WidgetSettings,
|
|
} from "../../../foundation/shell/widget-settings";
|
|
|
|
const persistPreferences: HousekeepingPreferenceSaver = async (preferences) => {
|
|
const { saveHousekeepingPreferences } = await import(
|
|
"@/actions/housekeeping-preferences"
|
|
);
|
|
return saveHousekeepingPreferences(preferences);
|
|
};
|
|
|
|
export function OperationsPersonalization({
|
|
preferences,
|
|
routes,
|
|
widgets,
|
|
widgetResult,
|
|
surface,
|
|
savePreferences = persistPreferences,
|
|
}: {
|
|
readonly preferences: HousekeepingPreferences;
|
|
readonly routes: readonly HousekeepingRouteDefinition[];
|
|
readonly widgets: readonly HousekeepingWidgetDefinition[];
|
|
readonly widgetResult: HousekeepingWidgetLoadResult;
|
|
readonly surface: HousekeepingSurface;
|
|
readonly savePreferences?: HousekeepingPreferenceSaver;
|
|
}) {
|
|
return (
|
|
<>
|
|
<div className="grid gap-6 xl:grid-cols-2">
|
|
<Favorites
|
|
preferences={preferences}
|
|
routes={routes}
|
|
surface={surface}
|
|
savePreferences={savePreferences}
|
|
labels={{
|
|
title: "Favorites",
|
|
pin: "Pin",
|
|
unpin: "Unpin",
|
|
error: "Preferences could not be saved",
|
|
}}
|
|
/>
|
|
<WidgetSettings
|
|
preferences={preferences}
|
|
widgets={widgets}
|
|
savePreferences={savePreferences}
|
|
labels={{
|
|
title: "Widget settings",
|
|
mandatory: "Mandatory",
|
|
error: "Preferences could not be saved",
|
|
}}
|
|
/>
|
|
</div>
|
|
|
|
<WidgetGrid
|
|
preferences={preferences}
|
|
result={widgetResult}
|
|
savePreferences={savePreferences}
|
|
labels={{
|
|
title: "Widgets",
|
|
partial: "Some widgets are unavailable",
|
|
error: "Widget order could not be saved",
|
|
}}
|
|
/>
|
|
</>
|
|
);
|
|
}
|