@se-studio/markdown-renderer 1.0.151 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @se-studio/markdown-renderer
2
2
 
3
+ ## 1.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add `markdownHeroUtils` helpers for customer hero markdown converters. Built-in `Article hero` export now includes the article title, subtitle, tags, and authors in the markdown body (`component.heading || article.title`).
8
+
3
9
  ## 1.0.151
4
10
 
5
11
  ### Patch Changes
package/README.md CHANGED
@@ -87,6 +87,35 @@ Options:
87
87
  - **articleTypeSlugs**: Article type slugs in Contentful that span multiple URL segments after `articles/`. Pass slugs **longest-first** (e.g. `['resources/news', 'resources/publications']` before single-segment types). The resolver matches the first configured prefix; unmatched paths return 404. In development, unsorted lists throw. Example path: `/api/markdown/articles/resources/news/:tag/:slug/`.
88
88
  - **peopleCustomType**: Contentful custom type for person entries (default `'people'`). Use e.g. `'team'` when your app uses a different content type.
89
89
 
90
+ ### Custom hero converters
91
+
92
+ Built-in `Article hero` export includes the article title as a body heading (`component.heading ?? article.title`). Apps with custom hero components (e.g. `Publications Hero`, `News Hero`) or site-specific title logic should register a `markdownConverter` on the component registration and pass `customConverters` to `MarkdownConverter.convert` and search indexing.
93
+
94
+ Use `buildMarkdownConverters` from `@se-studio/core-ui` to collect converters from registration lists:
95
+
96
+ ```typescript
97
+ import { buildMarkdownConverters } from '@se-studio/core-ui';
98
+ import { componentRegistrationsList, collectionRegistrationsList } from '@/lib/registrations';
99
+
100
+ export const markdownCustomConverters = buildMarkdownConverters(
101
+ componentRegistrationsList,
102
+ collectionRegistrationsList,
103
+ );
104
+ ```
105
+
106
+ For custom converters, compose helpers from `markdownHeroUtils`:
107
+
108
+ ```typescript
109
+ import {
110
+ getArticlePageContext,
111
+ renderMarkdownHeading,
112
+ renderMarkdownVisual,
113
+ resolveArticleHeading,
114
+ } from '@se-studio/markdown-renderer';
115
+ ```
116
+
117
+ Pass `customConverters` in both the markdown API route and search rebuild/index pipelines.
118
+
90
119
  ### `buildMarkdownCanonicalUrl`
91
120
 
92
121
  After `MarkdownExporter.fetchContent`, set the markdown response `Link: rel="canonical"` header from the same public URL logic as HTML metadata and frontmatter `canonical_url` (via `urlCalculators`). Do **not** build the canonical from raw `slugParams` — internal API paths include segments such as `articles/` that are not public when article rewrites map to `/api/markdown/articles/...`.
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownConverter.d.ts","sourceRoot":"","sources":["../src/MarkdownConverter.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAIrE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,wBAAwB,GAAG,MAAM;IAmB5E,OAAO,CAAC,mBAAmB;IAqF3B,OAAO,CAAC,aAAa;IA2DrB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,kBAAkB;IAkD1B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,wBAAwB;IA8BhC,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,WAAW;CAYpB"}
1
+ {"version":3,"file":"MarkdownConverter.d.ts","sourceRoot":"","sources":["../src/MarkdownConverter.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAIrE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,wBAAwB,GAAG,MAAM;IAmB5E,OAAO,CAAC,mBAAmB;IAqF3B,OAAO,CAAC,aAAa;IA2DrB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,kBAAkB;IAgD1B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,wBAAwB;IA8BhC,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;CAYpB"}
@@ -1,6 +1,7 @@
1
1
  import { formatArticleAuthorNames, isPersonLink, orderContentWithHtmlHeroFirst, } from '@se-studio/core-data-types';
2
2
  import yaml from 'js-yaml';
3
3
  import { buildMarkdownCanonicalUrl } from './buildMarkdownCanonicalUrl';
4
+ import { getArticlePageContext, renderMarkdownAuthors, renderMarkdownHeading, renderMarkdownSubtitle, renderMarkdownTags, renderMarkdownVisual, renderVisualToMarkdown, resolveArticleHeading, } from './markdownHeroUtils';
4
5
  import { convertRichTextToMarkdown } from './utils/richTextConverter';
5
6
  import { cleanMarkdownText } from './utils/textUtils';
6
7
  export class MarkdownConverter {
@@ -176,27 +177,25 @@ export class MarkdownConverter {
176
177
  return md;
177
178
  }
178
179
  convertArticleHero(component, context, headingLevel = 2) {
179
- const article = context.contentContext.pageContext?.article;
180
- const articleType = context.contentContext.pageContext?.articleType;
180
+ const { article, articleType } = getArticlePageContext(context);
181
181
  const articleTypeLink = article?.articleType;
182
- // Determine content similar to ArticleHeroComponent
183
182
  const realTag = articleType?.name || articleTypeLink?.name;
184
- // Visual: prefer component visual, fallback to article/type visual
185
- // Note: renderVisual handles both IResponsiveVisual and IVisual
183
+ const realHeading = resolveArticleHeading(component.heading, article);
186
184
  const realVisual = component.visual ||
187
185
  article?.featuredImage ||
188
186
  articleType?.featuredImage ||
189
187
  articleTypeLink?.visual;
190
188
  let md = '';
191
- // Tag/Article Type
189
+ if (realHeading) {
190
+ md += renderMarkdownHeading(realHeading, headingLevel);
191
+ }
192
192
  if (realTag) {
193
193
  md += `**${cleanMarkdownText(realTag)}**\n\n`;
194
194
  }
195
- // Author/Extra info
196
- // ArticleHeroComponent displays icon (visual), postHeading (text), additionalCopy (rich text)
195
+ md += renderMarkdownSubtitle(article?.subtitle);
196
+ md += renderMarkdownTags(article?.tags);
197
197
  if (component.icon) {
198
- // Icon is a visual
199
- md += this.renderVisual(component.icon);
198
+ md += renderVisualToMarkdown(component.icon);
200
199
  }
201
200
  if (component.postHeading) {
202
201
  md += `**${cleanMarkdownText(component.postHeading)}**\n\n`;
@@ -204,8 +203,8 @@ export class MarkdownConverter {
204
203
  if (component.additionalCopy) {
205
204
  md += this.renderAdditionalCopy(component.additionalCopy, context, headingLevel + 1);
206
205
  }
207
- // Visual
208
- md += this.renderVisual(realVisual);
206
+ md += renderMarkdownAuthors(article);
207
+ md += renderMarkdownVisual(realVisual, article?.featuredImage);
209
208
  return md;
210
209
  }
211
210
  convertPersonBio(_component, context, headingLevel = 2) {
@@ -268,22 +267,7 @@ export class MarkdownConverter {
268
267
  : '';
269
268
  }
270
269
  renderVisual(visual) {
271
- if (!visual)
272
- return '';
273
- let image;
274
- // Handle IResponsiveVisual (has .visual property)
275
- if ('visual' in visual) {
276
- image = visual.visual.image;
277
- }
278
- // Handle IVisual (is the visual object itself)
279
- else if (visual.type === 'Visual') {
280
- image = visual.image;
281
- }
282
- if (!image)
283
- return '';
284
- const title = image.name || 'Image';
285
- const url = image.src || image.svgSrc;
286
- return url ? `![${title}](${url})\n\n` : '';
270
+ return renderVisualToMarkdown(visual);
287
271
  }
288
272
  renderLinks(links) {
289
273
  if (!links?.length)
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownConverter.js","sourceRoot":"","sources":["../src/MarkdownConverter.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,wBAAwB,EAcxB,YAAY,EACZ,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,OAAO,iBAAiB;IAC5B,OAAO,CAAC,WAAwB,EAAE,OAAiC;QACjE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAEzE,IAAI,QAAQ,GAAG,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAEvD,0BAA0B;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,mBAAmB,CACzB,IAA4F,EAC5F,IAAgC,EAChC,OAAiC;QAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAE/B,yBAAyB;QACzB,MAAM,UAAU,GAAG,CAAC,IAA+B,EAAE,EAAE;YACrD,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAC5B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,8BAA8B;QAC9B,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,IAAI,KAAK,SAAS,IAAK,IAAqB,CAAC,WAAW,EAAE,CAAC;gBAC7D,OAAQ,IAAqB,CAAC,WAAW,EAAE,IAAI,CAAC;YAClD,CAAC;YACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC3B,OAAQ,IAAyB,CAAC,IAAI,CAAC;YACzC,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QAEF,qBAAqB;QACrB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,GAAG,EAAE;YAC3B,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC;gBAClC,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,yBAAyB,CAC9B,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAC3B;gBACE,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;gBAC7C,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;aAC/C,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,uBAAuB;QACvB,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,wBAAwB,CAAC,IAAoB,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,OAAQ,IAAoB,CAAC,IAAI,CAAC;YACpC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,WAAW,GAA4B;YAC3C,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YACpC,WAAW,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;YAChD,IAAI,EAAE,UAAU,CAAE,IAAqB,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;YAC7E,MAAM,EAAE,SAAS,EAAE;YACnB,QAAQ,EAAE,WAAW,EAAE;YACvB,IAAI,EAAE,OAAO,EAAE;YACf,aAAa,EAAE,eAAe,EAAE;YAChC,MAAM,EAAE,UAAU,EAAE,MAAM;YAC1B,OAAO,EAAE,UAAU,EAAE,OAAO;YAC5B,mDAAmD;YACnD,IAAI,EAAE,IAAI;YACV,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,IAAI;SAClB,CAAC;QAEF,4BAA4B;QAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,OAAiC,EAAE,YAAY,GAAG,CAAC;QACrF,uFAAuF;QACvF,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAwD,CAAC;YAE3E,IAAI,SAAS,CAAC,aAAa,KAAK,cAAc,EAAE,CAAC;gBAC/C,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,4EAA4E;YAC5E,MAAM,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC/E,IAAI,kBAAkB;gBAAE,OAAO,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAEpF,QAAQ,SAAS,CAAC,aAAa,EAAE,CAAC;gBAChC,KAAK,aAAa;oBAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;gBAClE,KAAK,cAAc;oBACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;gBACnE,KAAK,YAAY;oBACf,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;gBACjE;oBACE,OAAO,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,IAA0D,CAAC;YAE9E,MAAM,SAAS,GAAG,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAC1D,IAAI,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACnF,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,8EAA8E;YAC9E,MAAM,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAClF,IAAI,mBAAmB;gBAAE,OAAO,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAEvF,2CAA2C;YAC3C,OAAO,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAe,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAA0B,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,oBAAoB,CAAC,SAA6B;QACxD,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,GAAG,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1C,CAAC;IAEO,iBAAiB,CACvB,IAAiB,EACjB,OAAiC,EACjC,YAAoB;QAEpB,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;QAC9B,IAAI,EAAE,GAAG,EAAE,CAAC;QAEZ,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,EAAE,IAAI,GAAG,aAAa,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC;QACjD,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,EAAE,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAA0B,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CACpF,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,CACpD,MAAM,CAAC;QACV,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,iBAAiB,CACvB,UAA4D,EAC5D,OAAiC,EACjC,aAAa,GAAG,CAAC;QAEjB,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,MAAuC,CAAC;QAC3F,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,eAAe;QACf,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAE9C,sDAAsD;QACtD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,EAAE,IAAI,KAAK,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxD,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,kBAAkB,CACxB,SAA2D,EAC3D,OAAiC,EACjC,YAAY,GAAG,CAAC;QAEhB,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,OAAmC,CAAC;QACxF,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,WAE3C,CAAC;QACd,MAAM,eAAe,GAAG,OAAO,EAAE,WAAW,CAAC;QAE7C,oDAAoD;QACpD,MAAM,OAAO,GAAG,WAAW,EAAE,IAAI,IAAI,eAAe,EAAE,IAAI,CAAC;QAE3D,mEAAmE;QACnE,gEAAgE;QAChE,MAAM,UAAU,GACd,SAAS,CAAC,MAAM;YAChB,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,aAAa;YAC1B,eAAe,EAAE,MAAM,CAAC;QAE1B,IAAI,EAAE,GAAG,EAAE,CAAC;QAEZ,mBAAmB;QACnB,IAAI,OAAO,EAAE,CAAC;YACZ,EAAE,IAAI,KAAK,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAChD,CAAC;QAED,oBAAoB;QACpB,8FAA8F;QAC9F,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACnB,mBAAmB;YACnB,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YAC1B,EAAE,IAAI,KAAK,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC9D,CAAC;QAED,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;YAC7B,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,SAAS;QACT,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,gBAAgB,CACtB,UAA4D,EAC5D,OAAiC,EACjC,YAAY,GAAG,CAAC;QAEhB,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,MAAuC,CAAC;QAC3F,IAAI,CAAC,MAAM,EAAE,GAAG;YAAE,OAAO,EAAE,CAAC;QAE5B,OAAO,GAAG,yBAAyB,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAChE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,CACpD,MAAM,CAAC;IACV,CAAC;IAEO,uBAAuB,CAC7B,SAA2D,EAC3D,OAAiC,EACjC,YAAY,GAAG,CAAC;QAEhB,IAAI,EAAE,GAAG,EAAE,CAAC;QAEZ,wBAAwB;QACxB,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC/C,EAAE,IAAI,GAAG,aAAa,IAAI,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QACvE,CAAC;QAED,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAClD,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACpD,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QACjE,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QACrF,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAExC,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,wBAAwB,CAC9B,UAA8D,EAC9D,OAAiC,EACjC,YAAY,GAAG,CAAC;QAEhB,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC/C,EAAE,IAAI,GAAG,aAAa,IAAI,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;QACxE,CAAC;QAED,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACnD,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACrD,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QAClE,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,6BAA6B,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACnE,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QACtF,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE3C,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,gBAAgB,CAAC,UAAqC;QAC5D,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,CAAC;IAEO,iBAAiB,CAAC,WAAsC;QAC9D,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,CAAC;IAEO,UAAU,CAChB,IAAuD,EACvD,OAAiC,EACjC,YAAY,GAAG,CAAC;QAEhB,OAAO,IAAI;YACT,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAChD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAChD;YACH,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAEO,oBAAoB,CAC1B,cAAiE,EACjE,OAAiC,EACjC,YAAY,GAAG,CAAC;QAEhB,OAAO,cAAc;YACnB,CAAC,CAAC,OAAO,yBAAyB,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CACjE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAChD,EAAE;YACL,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAEO,YAAY,CAAC,MAA+C;QAClE,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,IAAI,KAAuC,CAAC;QAE5C,kDAAkD;QAClD,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACvB,KAAK,GAAI,MAA4B,CAAC,MAAM,CAAC,KAA6B,CAAC;QAC7E,CAAC;QACD,+CAA+C;aAC1C,IAAK,MAAkB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/C,KAAK,GAAI,MAAkB,CAAC,KAA6B,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC;QACpC,MAAM,GAAG,GAAI,KAAkB,CAAC,GAAG,IAAK,KAAmB,CAAC,MAAM,CAAC;QACnE,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;IAEO,WAAW,CACjB,KAEa;QAEb,IAAI,CAAC,KAAK,EAAE,MAAM;YAAE,OAAO,EAAE,CAAC;QAC9B,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,EAAE,IAAI,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC;QACnF,CAAC;QACD,OAAO,GAAG,EAAE,IAAI,CAAC;IACnB,CAAC;CACF"}
1
+ {"version":3,"file":"MarkdownConverter.js","sourceRoot":"","sources":["../src/MarkdownConverter.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * or WordPress fetchers (avoids loading `server-only` from the Contentful REST pipeline).
4
4
  */
5
5
  export { MarkdownConverter } from './MarkdownConverter';
6
+ export * from './markdownHeroUtils';
6
7
  export type { ContentData, IMarkdownExporter, MarkdownConverterContext, MarkdownItemConverter, SiteConfig, } from './types';
7
8
  export { cleanMarkdownText } from './utils/textUtils';
8
9
  //# sourceMappingURL=converter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,cAAc,qBAAqB,CAAC;AACpC,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/converter.js CHANGED
@@ -3,5 +3,6 @@
3
3
  * or WordPress fetchers (avoids loading `server-only` from the Contentful REST pipeline).
4
4
  */
5
5
  export { MarkdownConverter } from './MarkdownConverter';
6
+ export * from './markdownHeroUtils';
6
7
  export { cleanMarkdownText } from './utils/textUtils';
7
8
  //# sourceMappingURL=converter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAQxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,cAAc,qBAAqB,CAAC;AAQpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export * from './buildMarkdownCanonicalUrl';
2
2
  export * from './llmsTxt';
3
3
  export * from './MarkdownConverter';
4
4
  export * from './MarkdownExporter';
5
+ export * from './markdownHeroUtils';
5
6
  export * from './resolveMarkdownParams';
6
7
  export * from './types';
7
8
  export * from './utils/textUtils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ export * from './buildMarkdownCanonicalUrl';
2
2
  export * from './llmsTxt';
3
3
  export * from './MarkdownConverter';
4
4
  export * from './MarkdownExporter';
5
+ export * from './markdownHeroUtils';
5
6
  export * from './resolveMarkdownParams';
6
7
  export * from './types';
7
8
  export * from './utils/textUtils';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type IBaseArticle, type IBaseArticleType, type IResponsiveVisual, type ITagLink, type IVisual } from '@se-studio/core-data-types';
2
+ import type { MarkdownConverterContext } from './types';
3
+ export interface ArticlePageContext {
4
+ article?: IBaseArticle;
5
+ articleType?: IBaseArticleType;
6
+ }
7
+ export declare function getArticlePageContext(context: MarkdownConverterContext): ArticlePageContext;
8
+ export declare function resolveArticleHeading(componentHeading: string | null | undefined, article: IBaseArticle | undefined): string | undefined;
9
+ export declare function renderMarkdownHeading(text: string, headingLevel: number): string;
10
+ export interface RenderMarkdownTagsOptions {
11
+ filter?: (tag: ITagLink) => boolean;
12
+ }
13
+ export declare function renderMarkdownTags(tags: ReadonlyArray<ITagLink> | undefined, options?: RenderMarkdownTagsOptions): string;
14
+ export declare function renderMarkdownAuthors(article: IBaseArticle | undefined): string;
15
+ export declare function renderMarkdownSubtitle(subtitle: string | null | undefined): string;
16
+ export declare function renderMarkdownDate(date: string | Date | null | undefined): string;
17
+ export declare function renderVisualToMarkdown(visual: IResponsiveVisual | IVisual | undefined): string;
18
+ export declare function renderMarkdownVisual(visual: IResponsiveVisual | IVisual | undefined, articleFeaturedImage?: IVisual | undefined): string;
19
+ export declare function renderMarkdownLink(text: string, href: string): string;
20
+ //# sourceMappingURL=markdownHeroUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownHeroUtils.d.ts","sourceRoot":"","sources":["../src/markdownHeroUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAErB,KAAK,iBAAiB,EAEtB,KAAK,QAAQ,EACb,KAAK,OAAO,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGxD,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,wBAAwB,GAAG,kBAAkB,CAM3F;AAED,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC3C,OAAO,EAAE,YAAY,GAAG,SAAS,GAChC,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC;CACrC;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,SAAS,EACzC,OAAO,CAAC,EAAE,yBAAyB,GAClC,MAAM,CAOR;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAI/E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAIlF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CASjF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAe9F;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,GAAG,OAAO,GAAG,SAAS,EAC/C,oBAAoB,CAAC,EAAE,OAAO,GAAG,SAAS,GACzC,MAAM,CAKR;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrE"}
@@ -0,0 +1,84 @@
1
+ import { formatArticleAuthorNames, } from '@se-studio/core-data-types';
2
+ import { cleanMarkdownText } from './utils/textUtils';
3
+ export function getArticlePageContext(context) {
4
+ const pageContext = context.contentContext.pageContext;
5
+ return {
6
+ article: pageContext?.article,
7
+ articleType: pageContext?.articleType,
8
+ };
9
+ }
10
+ export function resolveArticleHeading(componentHeading, article) {
11
+ const resolved = componentHeading || article?.title;
12
+ const cleaned = cleanMarkdownText(resolved);
13
+ return cleaned || undefined;
14
+ }
15
+ export function renderMarkdownHeading(text, headingLevel) {
16
+ const cleaned = cleanMarkdownText(text);
17
+ if (!cleaned)
18
+ return '';
19
+ const prefix = '#'.repeat(Math.max(1, Math.min(6, headingLevel)));
20
+ return `${prefix} ${cleaned}\n\n`;
21
+ }
22
+ export function renderMarkdownTags(tags, options) {
23
+ if (!tags?.length)
24
+ return '';
25
+ const visible = tags.filter((t) => !t.hidden && (options?.filter ? options.filter(t) : true));
26
+ if (!visible.length)
27
+ return '';
28
+ const names = visible.map((t) => cleanMarkdownText(t.name ?? t.title ?? t.slug)).filter(Boolean);
29
+ if (!names.length)
30
+ return '';
31
+ return `${names.map((n) => `**${n}**`).join(' · ')}\n\n`;
32
+ }
33
+ export function renderMarkdownAuthors(article) {
34
+ const names = article ? formatArticleAuthorNames(article) : undefined;
35
+ if (!names)
36
+ return '';
37
+ return `*${cleanMarkdownText(names)}*\n\n`;
38
+ }
39
+ export function renderMarkdownSubtitle(subtitle) {
40
+ const text = cleanMarkdownText(subtitle);
41
+ if (!text)
42
+ return '';
43
+ return `${text}\n\n`;
44
+ }
45
+ export function renderMarkdownDate(date) {
46
+ if (!date)
47
+ return '';
48
+ const formatted = new Date(date).toLocaleDateString('en-US', {
49
+ year: 'numeric',
50
+ month: 'long',
51
+ day: 'numeric',
52
+ timeZone: 'UTC',
53
+ });
54
+ return `${formatted}\n\n`;
55
+ }
56
+ export function renderVisualToMarkdown(visual) {
57
+ if (!visual)
58
+ return '';
59
+ let image;
60
+ if ('visual' in visual) {
61
+ image = visual.visual.image;
62
+ }
63
+ else if (visual.type === 'Visual') {
64
+ image = visual.image;
65
+ }
66
+ if (!image)
67
+ return '';
68
+ const title = image.name || 'Image';
69
+ const url = image.src || image.svgSrc;
70
+ return url ? `![${title}](${url})\n\n` : '';
71
+ }
72
+ export function renderMarkdownVisual(visual, articleFeaturedImage) {
73
+ const resolved = visual ??
74
+ (articleFeaturedImage ? { visual: articleFeaturedImage } : undefined);
75
+ return renderVisualToMarkdown(resolved);
76
+ }
77
+ export function renderMarkdownLink(text, href) {
78
+ const label = cleanMarkdownText(text);
79
+ const url = href.trim();
80
+ if (!label || !url)
81
+ return '';
82
+ return `[${label}](${url})\n\n`;
83
+ }
84
+ //# sourceMappingURL=markdownHeroUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownHeroUtils.js","sourceRoot":"","sources":["../src/markdownHeroUtils.ts"],"names":[],"mappings":"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"}
package/docs/llms.md CHANGED
@@ -74,6 +74,32 @@ const links = buildMarkdownLinksFromAppLinks({
74
74
  });
75
75
  ```
76
76
 
77
+ ## Article hero and custom converters
78
+
79
+ Built-in `Article hero` uses `resolveArticleHeading(component.heading, article)` so the article title appears in the markdown body when the component heading is empty.
80
+
81
+ For site-specific heroes, register `markdownConverter` on the component and pass `customConverters` from `buildMarkdownConverters` (`@se-studio/core-ui`):
82
+
83
+ ```ts
84
+ import { buildMarkdownConverters } from '@se-studio/core-ui';
85
+ import {
86
+ getArticlePageContext,
87
+ renderMarkdownHeading,
88
+ renderMarkdownVisual,
89
+ resolveArticleHeading,
90
+ } from '@se-studio/markdown-renderer';
91
+
92
+ // customConverters.ts
93
+ export const markdownCustomConverters = buildMarkdownConverters(
94
+ componentRegistrationsList,
95
+ collectionRegistrationsList,
96
+ );
97
+
98
+ // In converter.convert(...) and rebuildSearchIndex({ customConverters })
99
+ ```
100
+
101
+ Exported helpers: `getArticlePageContext`, `resolveArticleHeading`, `renderMarkdownHeading`, `renderMarkdownTags`, `renderMarkdownAuthors`, `renderMarkdownSubtitle`, `renderMarkdownDate`, `renderMarkdownVisual`, `renderMarkdownLink`.
102
+
77
103
  ## Markdown API Routes (Next.js)
78
104
 
79
105
  ```ts
@@ -104,7 +130,9 @@ export async function GET(
104
130
  if (!contentData) {
105
131
  return new Response('Content not found', { status: 404 });
106
132
  }
107
- const markdown = converter.convert(contentData, { /* config, siteConfig, urlCalculators */ });
133
+ const markdown = converter.convert(contentData, {
134
+ /* config, siteConfig, urlCalculators, customConverters */
135
+ });
108
136
  const canonicalUrl = buildMarkdownCanonicalUrl(contentData, {
109
137
  canonicalBaseUrl: baseUrl,
110
138
  urlCalculators: converterContext.urlCalculators,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/markdown-renderer",
3
- "version": "1.0.151",
3
+ "version": "1.1.0",
4
4
  "description": "Markdown renderer for Contentful content",
5
5
  "repository": {
6
6
  "type": "git",
@@ -36,7 +36,7 @@
36
36
  "devDependencies": {
37
37
  "@biomejs/biome": "^2.4.16",
38
38
  "@types/js-yaml": "^4.0.9",
39
- "@types/node": "^24.13.1",
39
+ "@types/node": "^24.13.2",
40
40
  "typescript": "^6.0.3",
41
41
  "vitest": "^4.1.8"
42
42
  },