/**
 * Represents a tile record with various properties for display, interaction,
 * and hierarchical relationships.
 *
 * Properties:
 *
 * @property label The display label for the tile.
 * @property value A unique key formatted to represent the hierarchy (e.g., x-x-x...).
 * @property [icon] An optional string for the icon associated with the tile.
 * @property [getIcon] An optional callback function to dynamically retrieve an icon.
 * @property [buttonColor] An optional color for the button.
 * @property [badgeColor] An optional color for the badge.
 * @property [badgeContent] An optional callback function to dynamically retrieve badge content.
 * @property [action] An optional callback function to trigger a specific store action.
 * @property [eventFunc] An optional string to trigger custom events stored in the event map.
 * @property [link] An optional link, either a router link or an external link.
 * @property [linkProp] An optional link param, value returned will be passed as router parameter
 * @property [disabled] An optional flag to mark the tile as disabled.
 * @property [active] An optional flag to mark the tile as active.
 * @property [hide] An optional flag to hide the tile from view
 * @property [childDropdown] An optional flag indicating if the tile has a child dropdown.
 * @property [children] An optional array of child `TileRecord` objects for hierarchical relationships.
 */
export interface TileRecord {
    label: string;
    key: string;
    icon?: string;
    getIcon?: () => string;
    buttonColor?: string;
    badgeColor?: string;
    badgeContent?: () => string;
    action?: (args: TileRecord) => void;
    eventFunc?: string;
    link?: string;
    linkProp?: () => string;
    disabled?: boolean;
    active?: boolean;
    childDropdown?: boolean;
    hide?: boolean;
    children?: TileRecord[];
}
