import type { IconDefinition } from "@fortawesome/fontawesome-svg-core";
import type { RawLocation } from "vue-router";

/**
 * Basic color variants for components that only support
 * color-based styling like alerts, badges, and backgrounds (no outline variants).
 */
export type ColorVariant = "primary" | "secondary" | "success" | "danger" | "warning" | "info" | "light" | "dark";

/**
 * Bootstrap Vue variants for styling components.
 * Includes basic color variants plus outline variants for buttons and modals.
 */
export type BootstrapVariant =
    | ColorVariant
    | "link"
    | "outline-primary"
    | "outline-secondary"
    | "outline-success"
    | "outline-danger"
    | "outline-warning"
    | "outline-info"
    | "outline-light"
    | "outline-link"
    | "outline-dark";

/** Bootstrap component sizes */
export type BootstrapSize = "xs" | "sm" | "md" | "lg" | "xl";

/**
 * Represents a breadcrumb item in the BreadcrumbHeading component.
 * Each item can have a title, an optional URL to navigate to, and optional additional text
 * displayed alongside the item.
 */
export interface BreadcrumbItem {
    /**
     * The label of the breadcrumb item.
     */
    title: string;

    /**
     * Optional The URL or route to navigate to when the breadcrumb item is clicked.
     * the item will not be clickable if this is not provided or the current route matches this location.
     */
    to?: RawLocation;

    /**
     * Optional numeric index representing this item's position in navigation history.
     * Used for index-based navigation without router integration.
     * Negative values (e.g., -1) can represent root or special positions.
     */
    index?: number;

    /**
     * Optional additional text displayed above the item.
     */
    superText?: string;

    /**
     * Optional icon to display alongside the breadcrumb item.
     */
    icon?: IconDefinition;
}
