import type { Snippet } from 'svelte'; import type { WidgetCatalogItem } from '../../molecules/WidgetPicker/WidgetPicker.svelte'; import type { DashboardWidgetMeta } from '../DashboardGrid/DashboardGrid.svelte'; import type { GridDensity } from '../../../utils/layoutGrid.js'; import type { AutosaveStatus } from '../../molecules/AutosaveIndicator/AutosaveIndicator.svelte'; import { type GridItem } from '../../../utils/layoutGrid.js'; export type DashboardBuilderWidgetType = 'stats' | 'chart' | 'activity' | 'goals' | 'list' | 'notes' | 'usage' | 'team' | 'calendar'; export interface DashboardBuilderWidget extends DashboardWidgetMeta { type: DashboardBuilderWidgetType; } export type DashboardBuilderSidebarTab = 'catalog' | 'canvas'; interface DashboardBuilderPageProps { title?: string; description?: string; layout?: GridItem[]; widgets?: DashboardBuilderWidget[]; catalog?: WidgetCatalogItem[]; editable?: boolean; showPicker?: boolean; showToolbar?: boolean; showStats?: boolean; showSave?: boolean; cols?: number; rowHeight?: number; gap?: number; compact?: boolean; showGrid?: boolean; density?: GridDensity | 'custom'; sidebarTab?: DashboardBuilderSidebarTab; saveStatus?: AutosaveStatus; lastSaved?: string; class?: string; /** Custom body override per widget */ render?: Snippet<[DashboardBuilderWidget, GridItem]>; onchange?: (layout: GridItem[]) => void; onwidgetschange?: (widgets: DashboardBuilderWidget[]) => void; onsave?: (payload: { layout: GridItem[]; widgets: DashboardBuilderWidget[]; }) => void; onreset?: () => void; } declare const DashboardBuilderPage: import("svelte").Component; type DashboardBuilderPage = ReturnType; export default DashboardBuilderPage;