/**
 * Top-level item definition for the side navigation.
 */
export type SidebarTopLevelItem = {
	/**
	 * Destination URL for the item.
	 */
	url: string;
	/**
	 * Display label for the item.
	 */
	name: string;
	/**
	 * Optional icon name for the item.
	 */
	icon?: string;
	/**
	 * Whether the item is currently selected.
	 */
	selected?: boolean;
	/**
	 * Optional child items.
	 */
	children?: SidebarItem[];
};

/**
 * Side navigation item definition without the icon field.
 */
export type SidebarItem = Exclude<SidebarTopLevelItem, 'icon'>;

/**
 * Header configuration for the side navigation.
 */
export type SidebarHeaderConfig = {
	/**
	 * Header headline text.
	 */
	headline?: string;
	/**
	 * Logo shown when expanded.
	 */
	expandLogo?: string;
	/**
	 * Logo shown when collapsed.
	 */
	collapseLogo?: string;
};

/**
 * Responsive state flags used by the side navigation.
 */
export type ResponsiveBehavior = {
	/**
	 * Whether the sidebar is visible.
	 */
	showSideBar: boolean;
	/**
	 * Whether the backdrop is visible.
	 */
	showBackdrop: boolean;
	/**
	 * Whether the sidebar can be scrolled.
	 */
	canBeScrolled: boolean;
	/**
	 * Whether clicking a link closes the sidebar.
	 */
	showSideBarOnClickLink: boolean;
};

/**
 * Default open behavior for the sidebar.
 */
export type OpenByDefaultType = 'open' | 'close' | 'disableCollapse';
