/**
 * Represents the frontmatter for a project
 */
export type ProjectFrontmatter = {
  /**
   * The title of the project
   */
  title: string;

  /**
   * The description of the project
   */
  description: string;

  /**
   * The tags of the project
   * (eg. ["JavaScript", "React", "Node.js"])
   */
  tags?: string[];

  /**
   * The GitHub URL of the project
   */
  githubUrl?: string;

  /**
   * The live URL of the project
   */
  liveUrl?: string;

  /**
   * Whether the project should be featured on the homepage
   */
  featured?: boolean;

  /**
   * The date the project was created or started in W3C format
   * (this will determine the sort order of the projects)
   */
  timestamp: string;

  /**
   * The URL of the project on the website
   * (eg. https://justin.deal/projects/my-project)
   */
  filename: string;
};

/**
 * Represents the frontmatter for an article
 */
export type ArticleFrontmatter = {
  /**
   * The title of the article
   */
  title: string;

  /**
   * The summary description of the article
   */
  description: string;

  /**
   * The tags of the article
   * (eg. ["JavaScript", "React", "Node.js"])
   */
  tags?: string[];

  /**
   * The estimated time to read the article in minutes
   */
  time: number;

  /**
   * Whether the article should be featured on the homepage
   */
  featured: boolean;

  /**
   * The timestamp the article was published in W3C format
   */
  timestamp: string;

  /**
   * The URL of the article on the website
   * (eg. https://justin.deal/blog/my-article)
   */
  filename: string;
};

/**
 * Represents a service in the homelab
 */
export type Service = {
  /**
   * The name of the service
   */
  name: string;
  
  /**
   * The URL to the service
   */
  link: string;
  
  /**
   * The URL to the service icon (light version)
   * Used in dark theme
   */
  icon: string;
  
  /**
   * The URL to the dark version of the service icon
   * Used in light theme
   */
  iconDark?: string;
  
  /**
   * Alternative text for the service icon
   */
  alt: string;
  
  /**
   * Tags associated with the service for filtering and categorization
   */
  tags?: string[];
};

/**
 * Represents a category of services in the homelab
 */
export type ServiceCategory = {
  [category: string]: Service[];
};

/**
 * Represents a social media profile
 */
export type SocialMedia = {
  /**
   * The name of the social media platform
   */
  name: string;
  
  /**
   * The URL to your profile
   */
  url: string;
  
  /**
   * The URL to the dark version of the icon from selfh.st/icons
   * Used in light theme
   */
  iconDark: string;
  
  /**
   * The URL to the light version of the icon from selfh.st/icons
   * Used in dark theme
   */
  iconLight: string;
  
  /**
   * Alternative text for the icon
   */
  alt: string;
  
  /**
   * Whether to show this social media profile in the footer
   */
  showInFooter?: boolean;
  
  /**
   * Whether to show this social media profile on the about page
   */
  showInAbout?: boolean;
};
