import type { Snippet } from 'svelte'; export type NavItem = { id: string; label: string; icon?: Snippet; /** Right-aligned count/badge (e.g. unread). */ badge?: string | number; disabled?: boolean; /** Nested items (one level of sub-items, indented). */ children?: NavItem[]; }; export type NavSection = { id: string; label?: string; items: NavItem[]; /** Show a collapse chevron on the section header. Default true when labelled. */ collapsible?: boolean; }; /** A bottom "module" button (Outlook-style: Mail / Calendar / People / Tasks). */ export type NavModule = { id: string; label: string; icon?: Snippet; badge?: string | number; }; /** * SvNavPane - an Outlook-style navigation pane: collapsible sections, items with * icons and badge counts, one level of nested sub-items, single-select * highlight, arrow-key navigation, and an icon-only `collapsed` rail. A common * app shell primitive (mail folders, workspace nav, settings). */ import { type EditorDir } from './editor-contract'; type $$ComponentProps = { sections: ReadonlyArray; value?: string | null; onSelect?: (id: string) => void; /** Open section ids (uncontrolled default = all open). */ expandedSections?: string[]; /** Open nested-item ids. */ expandedItems?: string[]; /** Icon-only rail (labels hidden). */ collapsed?: boolean; ariaLabel?: string; dir?: EditorDir; /** Outlook-style bottom module buttons (Mail / Calendar / ...). */ modules?: ReadonlyArray; /** Selected module id. */ moduleValue?: string | null; onModuleSelect?: (id: string) => void; /** How many modules show as full labelled rows; the rest collapse to an icon * rail. Draggable via the splitter. Default: all. */ moduleRows?: number; /** Pane height in px - lets the splitter redistribute space (recommended * when `modules` is set). */ height?: number; }; declare const SvNavPane: import("svelte").Component<$$ComponentProps, {}, "value" | "expandedSections" | "expandedItems" | "moduleValue" | "moduleRows">; type SvNavPane = ReturnType; export default SvNavPane;