UNPKG

@ai-growth/nextjs

Version:

Seamlessly integrate Sanity CMS with Next.js applications for automated blog routing and rendering

40 lines (39 loc) 3.13 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ContentHeader = void 0; const jsx_runtime_1 = require("react/jsx-runtime"); const DefaultTemplate_module_css_1 = __importDefault(require("./DefaultTemplate.module.css")); /** * ContentHeader component for displaying content title, type, and metadata */ const ContentHeader = ({ title, contentType, publishedAt, metadata, showMetadata = true, className = '', }) => { const formatDate = (dateString) => { try { const date = new Date(dateString); return date.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric', }); } catch { return dateString; } }; const getContentTypeLabel = (type) => { const labels = { post: 'Blog Post', page: 'Page', article: 'Article', news: 'News', event: 'Event', }; return labels[type] || type.charAt(0).toUpperCase() + type.slice(1); }; return ((0, jsx_runtime_1.jsxs)("header", { className: `${DefaultTemplate_module_css_1.default.contentHeader} ${className}`, children: [(0, jsx_runtime_1.jsx)("div", { className: DefaultTemplate_module_css_1.default.contentTypeBadge, children: (0, jsx_runtime_1.jsx)("span", { className: DefaultTemplate_module_css_1.default.contentTypeLabel, children: getContentTypeLabel(contentType) }) }), (0, jsx_runtime_1.jsx)("h1", { className: DefaultTemplate_module_css_1.default.contentTitle, children: title }), showMetadata && ((0, jsx_runtime_1.jsxs)("div", { className: DefaultTemplate_module_css_1.default.contentMetadata, children: [publishedAt && ((0, jsx_runtime_1.jsx)("div", { className: DefaultTemplate_module_css_1.default.publishedDate, children: (0, jsx_runtime_1.jsx)("time", { dateTime: publishedAt, className: DefaultTemplate_module_css_1.default.dateTime, children: formatDate(publishedAt) }) })), metadata?.description && ((0, jsx_runtime_1.jsx)("div", { className: DefaultTemplate_module_css_1.default.contentDescription, children: (0, jsx_runtime_1.jsx)("p", { className: DefaultTemplate_module_css_1.default.description, children: metadata.description }) })), metadata?.readingTime && ((0, jsx_runtime_1.jsx)("div", { className: DefaultTemplate_module_css_1.default.readingTime, children: (0, jsx_runtime_1.jsxs)("span", { className: DefaultTemplate_module_css_1.default.readingTimeLabel, children: [metadata.readingTime, " min read"] }) })), metadata?.tags && Array.isArray(metadata.tags) && metadata.tags.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: DefaultTemplate_module_css_1.default.contentTags, children: metadata.tags.map((tag, index) => ((0, jsx_runtime_1.jsx)("span", { className: DefaultTemplate_module_css_1.default.tag, children: tag }, index))) }))] }))] })); }; exports.ContentHeader = ContentHeader; exports.default = exports.ContentHeader;