import { InertiaLinkProps } from '@inertiajs/vue3';
import type { LucideIcon } from 'lucide-vue-next';

export interface Auth {
    user: User;
}

export interface BreadcrumbItem {
    title: string;
    href: string;
}

export interface NavItem {
    title: string;
    href: NonNullable<InertiaLinkProps['href']>;
    icon?: LucideIcon;
    isActive?: boolean;
}

export type AppPageProps<T extends Record<string, unknown> = Record<string, unknown>> = T & {
    name: string;
    quote: { message: string; author: string };
    auth: Auth;
    sidebarOpen: boolean;
};

export interface User {
    id: number;
    name: string;
    email: string;
    avatar?: string;
    email_verified_at: string | null;
    created_at: string;
    updated_at: string;
}

export type BreadcrumbItemType = BreadcrumbItem;

export interface GlobalProperties {
    continents_with_tours: Continent[];
}

export interface Continent {
    id: number
    name: string
    internal_name: string
}

export interface Country {
    id: number
    name: string
    internal_name: string
    continent: Continent;
}

export interface Tour {
    id: number
    name: string
    internal_name: string
    length: number
    price: number
    level: string
    short_description: string
    countries: ?Country[]
}
