import { ReactNode } from "react";

export interface CategoryCardProps {
  href: string;
  icon: ReactNode;
  title: string;
  description: string;
  tech: string[];
  hoverColor: string;
  activeTechColor: string;
}

export interface PageLayoutProps {
  children: ReactNode;
  backLink?: string;
  backLabel?: string;
  maxWidth?: "5xl" | "6xl" | "7xl";
}

export interface Project {
  slug: string;
  category: "web" | "mobile" | "infrastructure";
  title: string;
  subtitle: string;
  role: string;
  duration: string;
  stack: string[];
  metrics: string[];
  description: string;
  engineeringStory: string;
  storyLabel?: string;
  images: string[];
  liveUrl?: string;
  repoUrl?: string;
  mermaidChart?: string;
  isPrivate: boolean;
}

export interface LabService {
  id: string;
  name: string;
  description: string;
  stack: string[];
  visibility: "public" | "tailscale";
  url?: string;
  gitUrl?: string;
  image: string;
  uptimeId?: number;
}

export interface ForgeProject {
  id: string;
  status: "Alpha" | "Beta" | "R&D";
  engine: string;
  description: string;
  imagePath?: string;
  highlights: string[];
  externalLink?: string;
  projectName: string;
  isRecent: boolean;
  currentVersion: string;
  changelog: ChangelogEntry[];
}

export interface ForgeProjectMetadata {
  id: string;
  projectName: string;
  repoName: string;
  status: "Alpha" | "Beta" | "R&D";
  engine: string;
  imagePath?: string;
  description: string;
  highlights: string[];
  externalLink?: string;
}

export interface ChangelogEntry {
  version: string;
  date: string;
  changes: string[];
}
