diff --git a/apps/blog/src/pages/blog/index.astro b/apps/blog/src/pages/blog/index.astro new file mode 100644 index 0000000..9aa9ca0 --- /dev/null +++ b/apps/blog/src/pages/blog/index.astro @@ -0,0 +1,28 @@ +--- +import { getCollection } from 'astro:content'; +import '../../styles/global.css'; + +const posts = await getCollection('posts'); +const sorted = posts.sort((a, b) => b.data.date.getTime() - a.data.date.getTime()); + +function formatDate(date: Date): string { + const d = String(date.getDate()).padStart(2, '0'); + const m = String(date.getMonth() + 1).padStart(2, '0'); + const y = String(date.getFullYear()).slice(-2); + return `${d}/${m}/${y}`; +} +--- + + +blog - lewis m.w. + +
+
lewis m.w.  mail gh
+
+ +
+ blog +
 `${formatDate(post.data.date)}    ${post.data.title}`).join('\n')} />
+
+ + diff --git a/apps/blog/src/pages/bookmarks/index.astro b/apps/blog/src/pages/bookmarks/index.astro new file mode 100644 index 0000000..63a04d4 --- /dev/null +++ b/apps/blog/src/pages/bookmarks/index.astro @@ -0,0 +1,49 @@ +--- +import '../../styles/global.css'; +import yaml from 'js-yaml'; +import bookmarksRaw from '../../data/bookmarks.yaml?raw'; + +interface Bookmark { + date: string; + title: string; + url: string; +} + +const bookmarks = (yaml.load(bookmarksRaw) as Bookmark[]) + .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()); + +function formatDate(date: Date): string { + const d = String(date.getDate()).padStart(2, '0'); + const m = String(date.getMonth() + 1).padStart(2, '0'); + const y = String(date.getFullYear()).slice(-2); + return `${d}/${m}/${y}`; +} + +function formatBookmarkDate(dateStr: string): string { + const date = new Date(dateStr); + return formatDate(date); +} + +function extractDomain(url: string): string { + try { + const parsed = new URL(url); + return parsed.hostname.replace(/^www\./, ''); + } catch { + return url; + } +} +--- + + +bookmarks - lewis m.w. + +
+
lewis m.w.  mail gh
+
+ +
+ bookmarks +
 `${formatBookmarkDate(b.date)}    ${b.title} (${extractDomain(b.url)})`).join('\n')} />
+
+ + diff --git a/apps/blog/src/pages/guestbook/index.astro b/apps/blog/src/pages/guestbook/index.astro new file mode 100644 index 0000000..a86e6da --- /dev/null +++ b/apps/blog/src/pages/guestbook/index.astro @@ -0,0 +1,74 @@ +--- +import '../../styles/global.css'; +import { getApprovedEntries, type GuestbookEntry } from '../../lib/db'; + +let guestbookEntries: GuestbookEntry[] = []; +try { + guestbookEntries = await getApprovedEntries(); +} catch { + // DB not available during dev without env vars +} + +function formatDate(date: Date): string { + const d = String(date.getDate()).padStart(2, '0'); + const m = String(date.getMonth() + 1).padStart(2, '0'); + const y = String(date.getFullYear()).slice(-2); + return `${d}/${m}/${y}`; +} +--- + + +guestbook - lewis m.w. + +
+
lewis m.w.  mail gh
+
+ +
+ guestbook +
+ {guestbookEntries.map(e => ( +
+ {formatDate(e.createdAt)} + ${e.name}` : e.name} /> {e.message} +
+ ))} +
+ + sign +
+
+
+ + + + diff --git a/apps/blog/src/pages/index.astro b/apps/blog/src/pages/index.astro index ad3566c..bc82599 100644 --- a/apps/blog/src/pages/index.astro +++ b/apps/blog/src/pages/index.astro @@ -74,30 +74,42 @@ function extractDomain(url: string): string {
blog -
 `${formatDate(post.data.date)}    ${post.data.title}`).join('\n')} />
+
 `${formatDate(post.data.date)}    ${post.data.title}`),
+  ...(sorted.length > 10 ? [`+${sorted.length - 10} more`] : [])
+].join('\n')} />
 
txt -
 `${formatDate(f.mtime)}    ${f.name}`).join('\n')} />
+
 `${formatDate(f.mtime)}    ${f.name}`),
+  ...(txtFiles.length > 10 ? [`+${txtFiles.length - 10} more`] : [])
+].join('\n')} />
 
bookmarks -
 `${formatBookmarkDate(b.date)}    ${b.title} (${extractDomain(b.url)})`).join('\n')} />
+
 `${formatBookmarkDate(b.date)}    ${b.title} (${extractDomain(b.url)})`),
+  ...(bookmarks.length > 10 ? [`+${bookmarks.length - 10} more`] : [])
+].join('\n')} />
 
guestbook
- {guestbookEntries.map(e => ( + {guestbookEntries.slice(0, 10).map(e => (
- {formatDate(e.createdAt)} - ${e.name}` : e.name}: ${e.message}`} /> + {formatDate(e.createdAt)} + ${e.name}` : e.name} /> {e.message}
))} +
+ {guestbookEntries.length > 10 && +{guestbookEntries.length - 10} more} + sign +
-
sign