import type { LucideIcon } from 'lucide-vue-next';
import type { Config } from 'ziggy-js';

export interface Auth {
  user: User;
  roles: string[];
  permissions: string[];
}

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

export interface NavItem {
  title: string;
  href: string;
  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;
  ziggy: Config & { location: string };
  sidebarOpen: boolean;
  translations?: {
    permissions?: Record<string, string>;
    [key: string]: any;
  };
};

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

export interface App {
  name: string;
  url: string;
  current_url: string;
  full_url: string;
  title: string;
  description: string;
  keywords: string;
  admin_email: string;
  phone: string;
  fax: string;
  gtm_code: string;
  favicon: string;
  logo: string;
}

export type BreadcrumbItemType = BreadcrumbItem;
