forked from
quillmatiq.com/augment
Fork of Chiri for Astro for my blog
1import type { TOCItem, ReadingTime } from './content.types'
2
3// TOC component props interface
4export interface TOCProps {
5 toc?: TOCItem[]
6}
7
8// Post layout props interface (generic, not tied to specific data source)
9export interface PostLayoutProps {
10 title: string
11 pubDate: Date
12 image?: string
13 readingTime?: ReadingTime
14 toc?: TOCItem[]
15}
16
17// Transition props interface
18export interface TransitionProps {
19 type: 'post' | 'page'
20 class?: string
21}
22
23// Layout props interface
24export interface LayoutProps extends TransitionProps {
25 title?: string
26 description?: string
27}
28
29// BaseHead component props interface
30export interface BaseHeadProps {
31 title: string
32 description: string
33}
34
35// ImageOptimizer component props interface
36export interface ImageOptimizerProps {
37 src: string | ImageMetadata
38 alt: string
39 width?: number
40 height?: number
41 quality?: number
42 format?: 'avif' | 'webp' | 'jpeg' | 'png'
43 loading?: 'lazy' | 'eager'
44 decoding?: 'async' | 'sync' | 'auto'
45 class?: string
46 caption?: string
47 priority?: boolean
48}
49
50// FormattedDate component props interface
51export interface FormattedDateProps {
52 date: Date
53 format?: string
54 context?: 'list' | 'post' | 'default'
55}
56
57// GitHub repository data interface
58export interface GitHubRepoData {
59 owner?: {
60 avatar_url: string
61 }
62 description?: string
63 stargazers_count?: number
64 forks_count?: number
65 license?: {
66 spdx_id: string
67 }
68}
69
70// Cached repository data interface
71export interface CachedRepoData {
72 data: GitHubRepoData
73 timestamp: number
74}
75
76// GitHub card UI elements interface
77export interface CardElements {
78 avatar: HTMLElement | null
79 desc: HTMLElement | null
80 stars: HTMLElement | null
81 forks: HTMLElement | null
82 license: HTMLElement | null
83}