justin.deal/src/lib/types.ts

169 lines
2.8 KiB
TypeScript
Raw Normal View History

/**
* Represents the frontmatter for a project
*/
2025-04-26 23:21:07 -07:00
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
2025-05-03 02:44:08 -07:00
* (eg. https://justin.deal/projects/my-project)
2025-04-26 23:21:07 -07:00
*/
filename: string;
};
/**
* Represents the frontmatter for an article
*/
2025-04-26 23:21:07 -07:00
export type ArticleFrontmatter = {
/**
* The title of the article
*/
title: string;
/**
* The summary description of the article
2025-04-26 23:21:07 -07:00
*/
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
2025-05-03 02:44:08 -07:00
* (eg. https://justin.deal/blog/my-article)
2025-04-26 23:21:07 -07:00
*/
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
*/
icon: 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;
};