@se-studio/core-ui 1.0.183 → 1.2.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,80 @@
1
1
  # @se-studio/core-ui
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 31b2200: Add first-class support for managing redirects from Contentful.
8
+
9
+ Editors can now create `redirect` entries (via new content type) using reference pickers for existing Pages/Articles/etc. (for "from" and "to") or raw paths/URLs, plus a status code dropdown (301/302/etc.), active flag, and notes. This makes redirects easy for non-technical users without requiring them to know or type exact slugs.
10
+
11
+ Redirects use the simple rebuild pattern (already proven by A/B tests):
12
+
13
+ - Publish in Contentful → webhook triggers a Vercel Deploy Hook.
14
+ - Build fetches current published redirects (via `getRedirectsWithErrors` / `getRedirectMap` on the helpers from `createAppHelpers`) and bakes a static map (using the new pure `buildRedirectMap`).
15
+ - Middleware performs exact (or lightly normalized) lookups against the baked data with zero runtime cost or external calls.
16
+
17
+ Key additions:
18
+
19
+ - `IRedirect` type + `isRedirect` guard.
20
+ - `BaseRedirectSkeleton`, `baseRedirectConverter` (resolves reference links to concrete `fromPath`/`to` using existing `resolveLink` + project `urlCalculators`).
21
+ - `contentfulRedirectsRest`, revalidation `RedirectTag`, and `buildRedirectMap` / `RedirectMap` types (exported from `@se-studio/contentful-rest-api`).
22
+ - `getRedirectsWithErrors` and `getRedirectMap` (convenience) exposed additively via `createAppHelpers` (like banners).
23
+ - Two Contentful migration scripts: `18-create-redirect-content-type.js` (full CT with rich help text for the picker UX) and `19-remove-redirectTo-fields.js` (cleans up legacy per-page `redirectTo` fields on page/pageVariant).
24
+ - New `@se-studio/skills` entry `se-marketing-sites-redirects` (the canonical guide, including CT spec, migration instructions, generate script example, static middleware example + A/B composition, deploy hook webhook setup, testing, and preview notes).
25
+ - Minimal demo in `example-empty` (middleware + `/api/redirects` route exercising the new helpers at runtime for easy local verification; production apps follow the baked recipe in the skill).
26
+ - Light updates to CLAUDE.md, vercel-setup skill, CONTENT_MODEL.md, and related docs.
27
+
28
+ The model and helpers are forward-compatible if a faster (e.g. Edge Config) path is added later. Legacy `redirectTo` fields are left untouched for now (removal is optional via the migration).
29
+
30
+ This is a new feature (minor bumps).
31
+
32
+ ### Patch Changes
33
+
34
+ - Complete support and documentation for filtered full article lists (#51) + fix client boundary regression (#52).
35
+
36
+ - Re-export `filterRelatedArticles` and `RelatedArticlesOptions` **only** from `@se-studio/core-ui/server` (removed from the main barrel). This keeps the primary `@se-studio/core-ui` entry fully client-safe for common imports (`cn`, `TrackedLink`, `AnalyticsProvider`, `Visual`, etc.). The main barrel no longer transitively pulls `'server-only'`.
37
+
38
+ - `getAllArticleLinks(options)` now fully supports the article listing filter fields (`articleTypeSlugs`/`Ids`, `tagSlugs`/`Ids`, `tagType*`, `authorSlugs`/`Ids` + `strictAuthorMatch`, `before`/`after`, `excludeArticleIds`, `count`, `allowUnindexed`) for News Grids, Publications Lists, person-scoped lists, tag filters, etc. The wrapper delegates to the enhanced `filterRelatedArticles` (OR semantics, slug support, strict author mode, distinct tag scoring, etc.).
39
+
40
+ - Added / expanded docs and examples in core-ui and contentful-rest-api READMEs + llms.md, CMS_INFRASTRUCTURE.md, SERVER_CLIENT_BOUNDARIES.md, the `se-marketing-sites-lib-cms-structure` skill (showing the `getAllArticleLinks({ articleTypeSlugs, strictAuthorMatch, ... })` pattern), and this repo's GitHub issues status tracker (new #51 entry + updated upgrade table).
41
+
42
+ - No changes to runtime behavior for existing bare `getAll*Links()` or `getRelated*` callers (sitemaps, search indexing, llms routes, etc. unaffected). Consumers should import filter symbols from the `/server` subpath when using them directly.
43
+
44
+ This finishes the implementation + docs for the DX improvement requested in #51 (reusable core filtering for full article collections instead of per-site `.filter()` shims). The boundary fix prevents the server-only error that appeared in any app importing from core-ui after the initial #51 changes.
45
+
46
+ - Updated dependencies [31b2200]
47
+ - Updated dependencies
48
+ - @se-studio/core-data-types@1.2.0
49
+ - @se-studio/contentful-rest-api@1.3.0
50
+
51
+ ## 1.1.0
52
+
53
+ ### Minor Changes
54
+
55
+ - feat: support slug-based and tag type filtering for related articles (plus strict author matching)
56
+
57
+ **@se-studio/contentful-rest-api**
58
+
59
+ - Extended `RelatedArticlesOptions` and `filterRelatedArticles` with `articleTypeSlugs`, `tagSlugs`, `tagTypeIds`/`tagTypeSlugs`, `authorSlugs`, and `strictAuthorMatch` (OR semantics with the existing ID-based filters).
60
+ - Tag scoring now correctly counts _distinct_ tags (prevents double-counting when the same tag matches via both an ID and a slug).
61
+ - Updated logging and the `@example` in the JSDoc.
62
+
63
+ **@se-studio/core-ui**
64
+
65
+ - Extended `LinkFetchOptions` (used by `getAll*Links` and `FetchHelpers` / `rendererConfig.fetchHelpers`) with the full set of related article filter fields. Added clear JSDoc noting that the article-specific filters only take effect for `getAllArticleLinks`.
66
+ - `createAppHelpers` now wraps `getAllArticleLinks` so that when any filter criteria (IDs or slugs for types/tags/authors/tagTypes, `strictAuthorMatch`, `excludeArticleIds`, `before`/`after`, `count`) are passed, it fetches the base list then runs it through `filterRelatedArticles` (preserving `errors` and correctly handling `allowUnindexed`).
67
+ - Re-exported `RelatedArticlesOptions` and `filterRelatedArticles` from `@se-studio/core-ui` for convenient use in apps.
68
+ - Added comprehensive tests covering the new filter combinations and the `getAllArticleLinks` wrapper integration.
69
+ - Minor hygiene improvements (import ordering per surgical changes guideline, one-line note that internal `getRelatedArticles`/`getRelatedPeople` now benefit from the richer filter).
70
+
71
+ This enables much more flexible "related content" collections and custom article lists directly from `fetchHelpers.getAllArticleLinks(...)` (or the app helpers) without duplicating filtering/ranking logic.
72
+
73
+ ### Patch Changes
74
+
75
+ - Updated dependencies
76
+ - @se-studio/contentful-rest-api@1.2.0
77
+
3
78
  ## 1.0.183
4
79
 
5
80
  ### Patch Changes
@@ -282,6 +282,7 @@ Error panels (unknown types, render errors) are shown when `!buildInformation.is
282
282
 
283
283
  - **`hidden` entities:** Entity fetchers (`getPageWithErrors`, `getArticleWithErrors`, etc.) return `null` data when the entity has `hidden === true` in production. Callers treat `null` as `notFound()`. In non-production environments, hidden entities are returned normally so content authors can preview them.
284
284
  - **`indexed` filtering:** Link fetchers (`getAllPageLinks`, `getAllArticleLinks`, etc.) exclude entries with `indexed === false` by default. Pass `{ allowUnindexed: true }` (via `LinkFetchOptions`) to include them. This applies in all environments. `filterRelatedArticles` and `getRelatedPeople` apply the same rule.
285
+ - **Full-list article filtering (`getAllArticleLinks`):** Pass article filter criteria directly: `articleTypeSlugs`/`articleTypeIds`, `tagSlugs`/`tagIds`, `tagType*`, `authorSlugs`/`authorIds` + `strictAuthorMatch: true` (hard filter for person pages), `before`/`after`, `excludeArticleIds`, `count`. The wrapper in `createAppHelpers` runs the base list through `filterRelatedArticles` (after indexed filtering). Use for News Grids / Publications Lists / ArticleFilter collections that need the *complete* matching set (client-side search UI, "latest N" on indexes, person-scoped lists). See also `getRelatedArticles` for limited related sets driven by collection `links`.
285
286
  - **Related Articles tag criteria (`getRelatedArticles`):** Tag filters are taken from tag links in the collection `links` or `contents`. When none are set, `applyFallbackCriteria` uses `pageContext.tag.id` (tag index pages), then `pageContext.article.tags` (article detail pages). Explicit CMS tag links always win. When `tagIds` reach `filterRelatedArticles`, articles must match at least one tag (OR semantics).
286
287
  - **`buildPageMetadata`** calls `notFound()` when `model.hidden === true` in production, providing a second safety net at the metadata layer.
287
288
 
@@ -352,7 +353,7 @@ See the example apps in this monorepo for complete working implementations:
352
353
  - `externalComponentMap`, `embeddedExternalComponentMap` – External/embed maps (optional).
353
354
  - `visualComponentRenderer`, `internalLinkRenderer` – Renderers for Visual and Internal Link types.
354
355
  - `previewHelpers` – **Required.** Preview helpers for Contentful live preview (pass from app cms-server).
355
- - `fetchHelpers` – Helpers for data fetching in collections (`getRelatedArticles`, `getRelatedPeople`, `getAllArticleLinks`, `getAllTagLinks`, `getAllPersonLinks`, etc.). Link fetchers accept optional `LinkFetchOptions` (pass `{ allowUnindexed: true }` to include unindexed entries).
356
+ - `fetchHelpers` – Helpers for data fetching in collections (`getRelatedArticles`, `getRelatedPeople`, `getAllArticleLinks`, `getAllTagLinks`, `getAllPersonLinks`, etc.). Link fetchers accept optional `LinkFetchOptions` (pass `{ allowUnindexed: true }` to include unindexed entries; pass articleType*/tag*/author* criteria for pre-filtered full lists via `getAllArticleLinks`). Import advanced filter symbols from `@se-studio/core-ui/server` when needed in server collections.
356
357
  - `defaultComponentRenderer`, `defaultCollectionRenderer` – Fallback renderers for unmapped types.
357
358
 
358
359
  ## Future Enhancements
package/README.md CHANGED
@@ -411,10 +411,15 @@ const previewConfig = mergeCmsRendererConfig(
411
411
  #### Utilities
412
412
  - **`buildPageMetadata`** - Generates Next.js metadata object from CMS page model
413
413
  - **`handleCmsError`** - Error handling utility for CMS operations
414
- - **`getRelatedArticles`** - Fetches related articles for collections: manual articles from `contents`, then filtered/ranked results from `contentfulAllArticleLinks`. Tag criteria come from collection tag links, or fall back to `pageContext.tag`, then the current article's tags on article detail pages
414
+ - **`getRelatedArticles`** - Fetches related articles for collections (limited sets): manual articles from `contents`, then filtered/ranked results from `contentfulAllArticleLinks` via `filterRelatedArticles`. Tag criteria come from collection tag links, or fall back to `pageContext.tag`, then the current article's tags on article detail pages. See also full-list filtering via `getAllArticleLinks` (below).
415
415
  - **`getRelatedPeople`** - Utility to fetch related people for collections
416
416
  - **`cn`** - Utility function for merging Tailwind CSS classes
417
417
 
418
+ #### Server-only exports (import from `@se-studio/core-ui/server`)
419
+ - **`createAppHelpers`** — Factory for `getAll*Links`, `getPageWithErrors`, `getRelatedArticles`, `getSitemapEntries` (when configured), etc. Wire with your converterContext + buildOptions.
420
+ - **`filterRelatedArticles`** + **`RelatedArticlesOptions`** — Re-export of the pure article list filter/ranker (articleType/tag/author/tagType slugs+ids, strict author mode, scoring, dates, etc.). Use in collection renderers or custom full-list logic (e.g. News Grids, person-scoped Publications lists). `getAllArticleLinks(options)` on the helpers already applies these filters when you pass `articleTypeSlugs`, `strictAuthorMatch`, etc.
421
+ - **`getRelatedArticles`** / **`getRelatedPeople`** (also re-exported here for server collections)
422
+
418
423
  #### Sitemap Utilities
419
424
  - **`buildSitemap`** - Builds a Next.js sitemap from multiple async sources; calls each source in parallel, deduplicates by URL, and converts to `MetadataRoute.Sitemap`
420
425
  - **`sitemapToXml`** - Converts a `MetadataRoute.Sitemap` array to sitemap XML string for Route Handlers (e.g. `/sitemap-unindexed.xml`)
@@ -427,6 +432,7 @@ const previewConfig = mergeCmsRendererConfig(
427
432
  - **`MarketingSiteSitemapConfig`** - Config for `getSitemapEntries` when using createAppHelpers (optional articlesSlug when enableArticleTypeIndex, tagsSlug, enableArticleTypeIndex, other feature flags, optional additionalSources)
428
433
  - **`AppHelpersWithSitemap`** - Return type of `createAppHelpers` when `marketingSiteSitemap` is provided; use when you need to type helpers that include `getSitemapEntries`
429
434
  - **`SitemapEntry`**, **`SitemapSource`**, **`GenerateSitemapOptions`** - Types for building custom sitemap sources
435
+ - **`LinkFetchOptions`** - Options for all `getAll*Links` helpers (and `rendererConfig.fetchHelpers`). Article-specific keys (`articleTypeSlugs`, `tagSlugs`, `authorSlugs`, `strictAuthorMatch`, `tagType*`, `before`/`after`, `count`, `excludeArticleIds`) only affect `getAllArticleLinks` (delegated to `filterRelatedArticles` after the raw fetch + indexed filter).
430
436
 
431
437
  For detailed JSDoc documentation on all exports, see the TypeScript declaration files (`.d.ts`) in the package.
432
438
 
@@ -28,9 +28,40 @@ export type PreviewHelpers = {
28
28
  * Options for link fetcher functions.
29
29
  * All FetchOptions fields are optional (buildOptions fills defaults internally).
30
30
  * Pass `allowUnindexed` to opt in to receiving entries with indexed === false.
31
+ *
32
+ * Note: Article filter criteria fields (articleType*, tag*, author*, tagType*, strictAuthorMatch,
33
+ * excludeArticleIds, before, after, count) only affect getAllArticleLinks (via filterRelatedArticles).
34
+ * They are accepted (for convenience) on other getAll*Links signatures but are ignored there.
31
35
  */
32
36
  export type LinkFetchOptions = Partial<FetchOptions> & {
37
+ /** Pass `allowUnindexed: true` to opt in to receiving entries with indexed === false. */
33
38
  allowUnindexed?: boolean;
39
+ /** Filter to articles matching any of these article type IDs (OR). Only affects getAllArticleLinks. */
40
+ articleTypeIds?: string[];
41
+ /** Filter to articles matching any of these article type slugs (OR). Only affects getAllArticleLinks. */
42
+ articleTypeSlugs?: string[];
43
+ /** Filter to articles matching any of these tag IDs (OR); articles with more matches rank higher. Only affects getAllArticleLinks. */
44
+ tagIds?: string[];
45
+ /** Filter to articles matching any of these tag slugs (OR); articles with more matches rank higher. Only affects getAllArticleLinks. */
46
+ tagSlugs?: string[];
47
+ /** Filter to articles that have at least one tag belonging to any of these tag type IDs. Only affects getAllArticleLinks. */
48
+ tagTypeIds?: string[];
49
+ /** Filter to articles that have at least one tag belonging to any of these tag type slugs. Only affects getAllArticleLinks. */
50
+ tagTypeSlugs?: string[];
51
+ /** Filter/rank by author IDs - articles with matching authors are ranked higher. Only affects getAllArticleLinks. */
52
+ authorIds?: string[];
53
+ /** Filter/rank by author slugs - articles with matching authors are ranked higher. Only affects getAllArticleLinks. */
54
+ authorSlugs?: string[];
55
+ /** When true, authorIds/authorSlugs become a hard filter (exclude non-matching) rather than just a ranking boost. Only affects getAllArticleLinks. */
56
+ strictAuthorMatch?: boolean;
57
+ /** Articles to exclude from results. Only affects getAllArticleLinks. */
58
+ excludeArticleIds?: string[];
59
+ /** Only include articles published before this date. Only affects getAllArticleLinks. */
60
+ before?: Date;
61
+ /** Only include articles published after this date. Only affects getAllArticleLinks. */
62
+ after?: Date;
63
+ /** Maximum number of results to return (after filter/score/sort; undefined = all). Only affects getAllArticleLinks. */
64
+ count?: number;
34
65
  };
35
66
  /** Fetch helpers for components that need to load data (avoids circular cms-server imports) */
36
67
  export type FetchHelpers = {
@@ -1 +1 @@
1
- {"version":3,"file":"CmsRendererConfig.d.ts","sourceRoot":"","sources":["../src/CmsRendererConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CmsRendererConfig.d.ts","sourceRoot":"","sources":["../src/CmsRendererConfig.ts"],"names":[],"mappings":"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"}
@@ -24,8 +24,8 @@ import 'server-only';
24
24
  * } = helpers;
25
25
  * ```
26
26
  */
27
- import type { ArticleTypeFetchOptions, BaseConverterContext, CmsResponse, ContentfulConfig, FetchOptions, IContentfulCollection, IContentfulPerson, IFetchedTemplate, TagFetchOptions } from '@se-studio/contentful-rest-api';
28
- import type { BaseCollectionContent, IArticleLink, IArticleTypeLink, IBanner, IBaseArticle, IBaseArticleType, IBaseCustomType, IBasePage, IBaseTag, IContentContext, IInternalLink, IPersonLink } from '@se-studio/core-data-types';
27
+ import type { ArticleTypeFetchOptions, BaseConverterContext, CmsResponse, ContentfulConfig, FetchOptions, IContentfulCollection, IContentfulPerson, IFetchedTemplate, RedirectMap, TagFetchOptions } from '@se-studio/contentful-rest-api';
28
+ import type { BaseCollectionContent, IArticleLink, IArticleTypeLink, IBanner, IBaseArticle, IBaseArticleType, IBaseCustomType, IBasePage, IBaseTag, IContentContext, IInternalLink, IPersonLink, IRedirect } from '@se-studio/core-data-types';
29
29
  import type { LinkFetchOptions } from './CmsRendererConfig';
30
30
  import type { BreadcrumbLookup } from './utils/breadcrumbUtils';
31
31
  import type { IBuildInformation } from './utils/buildPageMetadata';
@@ -80,6 +80,12 @@ export interface AppHelpers<TPage, TArticle, TArticleType, TTag, TPerson, TCusto
80
80
  getRelatedArticles: (information: TCollection, contentContext: IContentContext, count: number | undefined, options?: FetchOptions) => Promise<CmsResponse<IArticleLink[]>>;
81
81
  getRelatedPeople: (information: TCollection, contentContext: IContentContext, count: number, options?: FetchOptions) => Promise<CmsResponse<IPersonLink[]>>;
82
82
  getBannersWithErrors: (options?: FetchOptions) => Promise<CmsResponse<IBanner[] | null>>;
83
+ getRedirectsWithErrors: (options?: FetchOptions) => Promise<CmsResponse<IRedirect[] | null>>;
84
+ /**
85
+ * Convenience: fetch redirects and immediately return the baked map (active only,
86
+ * references resolved). Perfect for build-time generation scripts.
87
+ */
88
+ getRedirectMap: (options?: FetchOptions) => Promise<RedirectMap>;
83
89
  getPageWithErrors: (slug: string, options?: FetchOptions) => Promise<CmsResponse<TPage | null>>;
84
90
  getArticleWithErrors: (articleTypeSlug: string, slug: string, options?: FetchOptions) => Promise<CmsResponse<TArticle | null>>;
85
91
  getArticleTypeWithErrors: (slug: string, options?: Partial<ArticleTypeFetchOptions>) => Promise<CmsResponse<TArticleType | null>>;
@@ -1 +1 @@
1
- {"version":3,"file":"app-helpers.d.ts","sourceRoot":"","sources":["../src/app-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-helpers.d.ts","sourceRoot":"","sources":["../src/app-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import 'server-only';
2
- import { contentfulAllArticleLinks, contentfulAllArticleTypeLinks, contentfulAllPageLinks, contentfulAllPersonLinks, contentfulAllTagLinks, contentfulArticleRest, contentfulArticleTypeRest, contentfulBannerRest, contentfulCustomTypeRest, getBreadcrumbLookup as contentfulGetBreadcrumbLookup, contentfulPageRest, contentfulPersonRest, contentfulTagRest, contentfulTemplateRest, } from '@se-studio/contentful-rest-api';
2
+ import { buildRedirectMap, contentfulAllArticleLinks, contentfulAllArticleTypeLinks, contentfulAllPageLinks, contentfulAllPersonLinks, contentfulAllTagLinks, contentfulArticleRest, contentfulArticleTypeRest, contentfulBannerRest, contentfulCustomTypeRest, getBreadcrumbLookup as contentfulGetBreadcrumbLookup, contentfulPageRest, contentfulPersonRest, contentfulRedirectsRest, contentfulTagRest, contentfulTemplateRest, filterRelatedArticles, } from '@se-studio/contentful-rest-api';
3
3
  import { getRelatedArticles as coreGetRelatedArticles, getRelatedPeople as coreGetRelatedPeople, } from './utils/componentUtils';
4
4
  import { createMarketingSiteSitemapEntries, } from './utils/marketingSiteSitemap';
5
5
  import { coreGetPreviewAssetIdProps, coreGetPreviewFieldIdProps, coreGetPreviewParentProps, } from './utils/previewUtils';
@@ -38,7 +38,45 @@ export function createAppHelpers(config) {
38
38
  };
39
39
  }
40
40
  const getAllPageLinks = createLinksFetcher(contentfulAllPageLinks);
41
- const getAllArticleLinks = createLinksFetcher(contentfulAllArticleLinks);
41
+ const _getAllArticleLinksBase = createLinksFetcher(contentfulAllArticleLinks);
42
+ const getAllArticleLinks = async (options) => {
43
+ const { articleTypeIds, articleTypeSlugs, tagIds, tagSlugs, tagTypeIds, tagTypeSlugs, authorIds, authorSlugs, strictAuthorMatch, excludeArticleIds, before, after, count, ...baseOptions } = options ?? {};
44
+ const response = await _getAllArticleLinksBase(baseOptions);
45
+ const hasFilterCriteria = articleTypeIds?.length ||
46
+ articleTypeSlugs?.length ||
47
+ tagIds?.length ||
48
+ tagSlugs?.length ||
49
+ tagTypeIds?.length ||
50
+ tagTypeSlugs?.length ||
51
+ authorIds?.length ||
52
+ authorSlugs?.length ||
53
+ excludeArticleIds?.length ||
54
+ before != null ||
55
+ after != null ||
56
+ count != null ||
57
+ strictAuthorMatch != null;
58
+ if (!hasFilterCriteria)
59
+ return response;
60
+ return {
61
+ data: filterRelatedArticles(response.data, {
62
+ allowUnindexed: true, // indexed filtering already applied by _getAllArticleLinksBase
63
+ articleTypeIds,
64
+ articleTypeSlugs,
65
+ tagIds,
66
+ tagSlugs,
67
+ tagTypeIds,
68
+ tagTypeSlugs,
69
+ authorIds,
70
+ authorSlugs,
71
+ strictAuthorMatch,
72
+ excludeArticleIds,
73
+ before,
74
+ after,
75
+ count,
76
+ }),
77
+ errors: response.errors,
78
+ };
79
+ };
42
80
  const getAllTagLinks = createLinksFetcher(contentfulAllTagLinks);
43
81
  const getAllPersonLinks = createLinksFetcher(contentfulAllPersonLinks);
44
82
  const getAllArticleTypeLinks = createLinksFetcher(contentfulAllArticleTypeLinks);
@@ -71,6 +109,7 @@ export function createAppHelpers(config) {
71
109
  // ============================================================================
72
110
  // Related Content Helpers
73
111
  // ============================================================================
112
+ // getRelated* now also support slug-based/tagType/strictAuthorMatch criteria via the enriched filterRelatedArticles
74
113
  /**
75
114
  * Get related articles for a collection.
76
115
  * Uses the generic core helper with project-specific config.
@@ -102,6 +141,15 @@ export function createAppHelpers(config) {
102
141
  const fullOptions = buildOptions(options);
103
142
  return contentfulBannerRest(converterContext, getConfig(fullOptions.preview), fullOptions);
104
143
  },
144
+ getRedirectsWithErrors(options) {
145
+ const fullOptions = buildOptions(options);
146
+ return contentfulRedirectsRest(converterContext, getConfig(fullOptions.preview), fullOptions);
147
+ },
148
+ async getRedirectMap(options) {
149
+ const res = await this.getRedirectsWithErrors(options);
150
+ // Filter to only successful data; buildRedirectMap is defensive.
151
+ return buildRedirectMap(res.data ?? []);
152
+ },
105
153
  /**
106
154
  * Fetch a page from Contentful by slug (returns full CmsResponse for internal use)
107
155
  *
@@ -1 +1 @@
1
- {"version":3,"file":"app-helpers.js","sourceRoot":"","sources":["../src/app-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-helpers.js","sourceRoot":"","sources":["../src/app-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import 'server-only';
2
+ export type { RelatedArticlesOptions } from '@se-studio/contentful-rest-api';
3
+ export { filterRelatedArticles } from '@se-studio/contentful-rest-api';
2
4
  export type { AppHelpers, AppHelpersConfig, AppHelpersWithSitemap, } from '../app-helpers';
3
5
  export { createAppHelpers } from '../app-helpers';
4
6
  export { getRelatedArticles, getRelatedPeople } from '../utils/componentUtils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,iCAAiC,EACjC,8BAA8B,EAC9B,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,iCAAiC,EACjC,8BAA8B,EAC9B,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import 'server-only';
2
+ export { filterRelatedArticles } from '@se-studio/contentful-rest-api';
2
3
  export { createAppHelpers } from '../app-helpers';
3
4
  export { getRelatedArticles, getRelatedPeople } from '../utils/componentUtils';
4
5
  export { createRouteHandlers } from './route-handlers';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAOrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgBvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAMvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgBvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
package/docs/llms.md CHANGED
@@ -172,13 +172,14 @@ These are server-only — do NOT import in `'use client'` files or component reg
172
172
  ```ts
173
173
  import { createRouteHandlers } from '@se-studio/core-ui/server';
174
174
  import { getRelatedArticles, getRelatedPeople } from '@se-studio/core-ui/server';
175
+ import { filterRelatedArticles, type RelatedArticlesOptions } from '@se-studio/core-ui/server';
175
176
  import { getSizingInformation } from '@se-studio/core-ui/server';
176
177
  import type { CmsRouteConfig } from '@se-studio/core-ui/server';
177
178
  ```
178
179
 
179
180
  `CmsRouteConfig.requireArticleContent` (default `true`): set to `false` on article detail routes to allow metadata/template-only articles without body components.
180
181
 
181
- `getRelatedArticles` tag criteria: explicit tag links in the collection → `pageContext.tag` → `pageContext.article.tags`. Pass via `rendererConfig.fetchHelpers.getRelatedArticles` in collections (do not import `cms-server` in registrations). For all people (e.g. team index collections), use `rendererConfig.fetchHelpers.getAllPersonLinks?.()` — returns `CmsResponse<IPersonLink[]>` including resolved `bio` when set.
182
+ `getRelatedArticles` tag criteria: explicit tag links in the collection → `pageContext.tag` → `pageContext.article.tags`. Pass via `rendererConfig.fetchHelpers.getRelatedArticles` in collections (do not import `cms-server` in registrations). For full-list cases (News Grids, Publications Lists, person-scoped or tag-filtered indexes) use `rendererConfig.fetchHelpers.getAllArticleLinks?.({ articleTypeSlugs: [...], tagSlugs: [...], authorIds: [...], strictAuthorMatch: true, ... })` — the wrapper applies `filterRelatedArticles` (OR semantics, scoring, indexed rules). Import `filterRelatedArticles` / `RelatedArticlesOptions` (and the richer `LinkFetchOptions`) from `@se-studio/core-ui/server`. For all people (e.g. team index collections), use `rendererConfig.fetchHelpers.getAllPersonLinks?.()` — returns `CmsResponse<IPersonLink[]>` including resolved `bio` when set.
182
183
 
183
184
  ## Server/Client Rules
184
185
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/core-ui",
3
- "version": "1.0.183",
3
+ "version": "1.2.0",
4
4
  "description": "Shared React UI component library with Tailwind CSS v4 for SE Studio applications",
5
5
  "repository": {
6
6
  "type": "git",
@@ -75,8 +75,8 @@
75
75
  "mustache": "4.2.0",
76
76
  "server-only": "0.0.1",
77
77
  "tailwind-merge": "^3.6.0",
78
- "@se-studio/contentful-rest-api": "1.1.2",
79
- "@se-studio/core-data-types": "1.1.2"
78
+ "@se-studio/contentful-rest-api": "1.3.0",
79
+ "@se-studio/core-data-types": "1.2.0"
80
80
  },
81
81
  "devDependencies": {
82
82
  "@biomejs/biome": "^2.4.16",