@roottale/cms-renderer-next 0.47.0 → 0.51.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.
Files changed (40) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/dist/blog-filter-BKCGM0qd.d.ts +29 -0
  3. package/dist/{chunk-6MFHA555.js → chunk-27RT6B3O.js} +1 -1
  4. package/dist/chunk-27RT6B3O.js.map +1 -0
  5. package/dist/chunk-2QU4JU46.js +3927 -0
  6. package/dist/chunk-2QU4JU46.js.map +1 -0
  7. package/dist/chunk-4RQ3SEDL.js +106 -0
  8. package/dist/chunk-4RQ3SEDL.js.map +1 -0
  9. package/dist/{chunk-OMXEU4LS.js → chunk-QYNEOFL7.js} +140 -136
  10. package/dist/chunk-QYNEOFL7.js.map +1 -0
  11. package/dist/{chunk-FUA5H6JE.js → chunk-U2IM6OCQ.js} +46 -2
  12. package/dist/chunk-U2IM6OCQ.js.map +1 -0
  13. package/dist/cms-public.css +137 -18
  14. package/dist/concerns-client.d.ts +1 -1
  15. package/dist/expertise-client.d.ts +1 -1
  16. package/dist/expertise-client.js +1 -1
  17. package/dist/hero-carousel-client.js +1 -1
  18. package/dist/routes.d.ts +377 -21
  19. package/dist/routes.js +273 -106
  20. package/dist/routes.js.map +1 -1
  21. package/dist/seo-asset-hosts.d.ts +36 -0
  22. package/dist/seo-asset-hosts.js +391 -0
  23. package/dist/seo-asset-hosts.js.map +1 -0
  24. package/dist/server.d.ts +34 -216
  25. package/dist/server.js +7 -7
  26. package/dist/{site-config-Dicv57oY.d.ts → site-config-DNpvlqA5.d.ts} +201 -201
  27. package/dist/spaces-client.d.ts +1 -1
  28. package/dist/team-expanding-stage-client.d.ts +1 -1
  29. package/dist/team-expanding-stage-client.js +1 -1
  30. package/dist/templates.d.ts +64 -25
  31. package/dist/templates.js +14 -7
  32. package/dist/templates.js.map +1 -1
  33. package/package.json +7 -2
  34. package/dist/chunk-6MFHA555.js.map +0 -1
  35. package/dist/chunk-FUA5H6JE.js.map +0 -1
  36. package/dist/chunk-FZK3EXYZ.js +0 -103
  37. package/dist/chunk-FZK3EXYZ.js.map +0 -1
  38. package/dist/chunk-OMXEU4LS.js.map +0 -1
  39. package/dist/chunk-ZHXYCABN.js +0 -3584
  40. package/dist/chunk-ZHXYCABN.js.map +0 -1
package/dist/server.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import { ReactElement, ReactNode } from 'react';
2
2
  import { CmsPostContent, RootTaleTheme, CmsPostType } from '@roottale/cms-client/server';
3
3
  export { RootTaleTheme } from '@roottale/cms-client/server';
4
- import { Block, BindingResolver, RouteCollection } from '@roottale/cms-core';
5
4
  export { R as RootTaleCssVars, t as themeToCssVars } from './theme-css-vars-CD3jcEkp.js';
5
+ import { Block, BindingResolver, RouteCollection } from '@roottale/cms-core';
6
+ export { a as BlogCategory, B as BlogCategoryWithCount, c as collectCategories, b as collectCategoriesWithCounts, d as defaultCategoryHref, f as filterPostsByCategory } from './blog-filter-BKCGM0qd.js';
6
7
  import '@roottale/ui-react/theme';
7
8
 
8
9
  /**
@@ -189,283 +190,100 @@ declare function renderBoundBlocks(blocks: readonly Block[], opts?: {
189
190
  resolver?: BindingResolver;
190
191
  }): ReactElement[];
191
192
 
192
- /**
193
- * `RootTaleBlogList` 카테고리 필터 — 순수 헬퍼(서버 필터, client JS 불요).
194
- *
195
- * SSR-only 정책 유지: 필터는 `?category=<slug>` URL 파라미터로 동작하고(칩 =
196
- * 서버 렌더 `<a>` 링크), consumer 가 searchParams 의 category 를 `activeCategory`
197
- * 로 주입한다. hydration 없이 SEO 친화 + 공유 가능한 URL.
198
- */
199
-
200
- interface BlogCategory {
201
- name: string;
202
- slug: string;
203
- }
204
- interface BlogCategoryWithCount extends BlogCategory {
205
- count: number;
206
- }
207
- /**
208
- * 글 목록에 등장하는 카테고리를 slug 기준 unique 로 수집. 서버가 보내는 정렬
209
- * (category → name asc)을 보존하기 위해 처음 등장 순서를 유지한다.
210
- */
211
- declare function collectCategories(posts: CmsPostContent[]): BlogCategory[];
212
- declare function collectCategoriesWithCounts(posts: CmsPostContent[]): BlogCategoryWithCount[];
213
- /** activeSlug 가 비면 전체 반환. 아니면 그 카테고리를 가진 글만. */
214
- declare function filterPostsByCategory(posts: CmsPostContent[], activeSlug: string | null | undefined): CmsPostContent[];
215
- /** 기본 카테고리 링크: 전체 → `/blog`, 특정 → `/blog/categories/<slug>`. */
216
- declare function defaultCategoryHref(slug: string | null): string;
217
-
218
- /**
219
- * `@roottale/cms-renderer-next/server` — RootTale CMS public-render React Server Components.
220
- *
221
- * Drop into any RSC-capable framework (Next.js App Router, Astro server islands,
222
- * React Router server). Single-line import, SSR-only, no `'use client'` boundary.
223
- *
224
- * ```tsx
225
- * import { RootTaleBlogList } from "@roottale/cms-renderer-next/server";
226
- *
227
- * export default function BlogPage() {
228
- * return <RootTaleBlogList apiKey={process.env.ROOTTALE_API_KEY!} />;
229
- * }
230
- * ```
231
- *
232
- * Customer site MUST keep `apiKey` server-side. Browser bundle ships zero
233
- * RootTale credentials (ADR-0023 §5.1 #15).
234
- *
235
- * Design tokens auto-apply via the CSS import below. Customers can override
236
- * any class with their own CSS or Tailwind utilities — scoped selectors use
237
- * `:where()` to keep specificity at zero (ADR-0023 §5.1 #10).
238
- */
239
-
240
- /**
241
- * RootTaleBlogList/Post 가 받는 theme prop 의 평가 결과:
242
- * - `RootTaleTheme` 객체 → 그대로 CSS 변수로 주입
243
- * - `null` → override 없음 (cms-public.css fallback 그대로)
244
- * - `undefined` → API key 로 자동 fetch (mysite.roottale.com 의 admin /design)
245
- */
246
193
  type RootTaleThemeInput = RootTaleTheme | null | undefined;
247
- /**
248
- * RootTale 디자인 토큰을 CSS 변수로 자식 트리에 주입한다. 외부 사이트가
249
- * 여러 RootTale 컴포넌트를 한 레이아웃에 묶을 때, 컴포넌트마다 같은 토큰을
250
- * fetch 하지 않도록 부모에서 한 번만 fetch 해서 전달하는 용도.
251
- *
252
- * ```tsx
253
- * const theme = await fetchTheme({ apiKey });
254
- * <RootTaleThemeProvider theme={theme}>
255
- * <RootTaleBlogList apiKey={apiKey} theme={null} />
256
- * <RootTaleBlogPost apiKey={apiKey} slugOrId="..." theme={null} />
257
- * </RootTaleThemeProvider>
258
- * ```
259
- *
260
- * 자식 RootTale 컴포넌트가 `theme={null}` 을 받으면 자체 주입을 건너뛰고
261
- * 부모의 변수를 그대로 상속. 자식이 `theme` 을 지정하면 자식 변수가 우선.
262
- */
263
194
  declare function RootTaleThemeProvider(props: {
264
- theme: RootTaleTheme | null | undefined;
265
- children: ReactNode;
195
+ readonly theme: RootTaleTheme | null | undefined;
196
+ readonly children: ReactNode;
266
197
  }): ReactElement;
198
+
267
199
  type RootTaleBlogListProps = {
268
200
  apiKey: string;
269
201
  baseUrl?: string;
270
202
  limit?: number;
271
- /** Filter by post type (`post` or `page`). Default = `post` only (blog list 의도). */
203
+ /** Filter by post type (`post` or `page`). Default = `post` only. */
272
204
  type?: CmsPostType;
273
- /**
274
- * Build a customer-side URL for a single post. Defaults to `/blog/${slug}`,
275
- * 또는 `collections` 를 주면 글의 섹션 basePath 기준(`/notice/${slug}` 등).
276
- */
277
205
  postHref?: (post: CmsPostContent) => string;
278
- /** Rendered when the tenant has no published posts yet. */
279
206
  emptyMessage?: string;
280
- /**
281
- * 단일 섹션(stream)으로 스코프 (ADR-0060). `collections` 와 함께 줘야 동작한다.
282
- * 예: `collection="notice"` → 공지 섹션 글만 렌더. **미지정 = 전체** 글(레거시
283
- * 단일 블로그). 이 prop 없이 다중 스트림 사이트에서 쓰면 공지·블로그가 한 목록에
284
- * 섞여 나오므로(`/blog` 에 공지가 새어 들어옴), 섹션을 나눈 사이트는 각 목록
285
- * 페이지에서 반드시 `collection` 으로 스코프해야 한다.
286
- *
287
- * **서버 필터** (`blog-list-collection-scope.md` §2②) — `collections` 와 함께
288
- * 주면 api-core `collection_key=` 파라미터로 fetch 단계에서부터 그 섹션 글만
289
- * 가져온다(limit 이 스트림 밖 글에 낭비되지 않음). `postsForCollection` 클라이언트
290
- * 필터는 방어선으로 남아 있다 — 판정 시맨틱은 두 층 모두 `resolvePostCollection`
291
- * 동일 정의.
292
- */
293
207
  collection?: string;
294
- /**
295
- * 섹션 정의 (ADR-0060). `collection` 스코프와 collection-aware `postHref`(글을
296
- * 소속 섹션 basePath 로 라우팅) 해석에 쓰인다. admin 에서 동적으로 받으려면
297
- * `fetchCollections()` 결과를 넘긴다(`collections.md` 참고).
298
- */
299
208
  collections?: readonly RouteCollection[];
300
209
  /**
301
- * **네거티브** 스코프 — `collections` 와 함께 주면 어느 스트림에도 안 속한
302
- * ("미소속") 글만 렌더한다(`postsNotInAnyCollection`, `blog-list-collection-scope.md`
303
- * §2①). `collection`(포지티브) 과 배타적이며 **동시 지정은 throw**. `collections`
304
- * 없이 `excludeCollections` 만 주는 것도 **throw**(조용한 no-op 금지, fail-closed).
305
- *
306
- * **적용 조건 한정** — `/blog` 가 *선언 컬렉션이 아닌*(미소속 글이 `/blog` 를 받는)
307
- * 사이트에서만 쓴다. **`blog` 자체가 선언 컬렉션인 사이트(예: kjmtax — 글의
308
- * `collectionKey === "blog"`) 는 반대로 포지티브 `collection="blog"` 가 정경로다.**
309
- * 그런 사이트에 `excludeCollections` 를 적용하면 블로그 글까지 전부 "소속 글"로
310
- * 걸려 제외되므로 목록이 비게 된다 — 동시 지정 throw 로는 이 오적용을 못 잡는다.
210
+ * `collection`과 배타적이다. `collections` 없이 지정해도 예외를 던진다.
311
211
  */
312
212
  excludeCollections?: boolean;
313
- /**
314
- * 카테고리 필터 칩을 목록 위에 렌더. SSR-only — 칩은 `<a>` 링크이고
315
- * `?category=<slug>` URL 파라미터로 동작한다(client JS 불요). consumer 는
316
- * searchParams 의 category 를 `activeCategory` 로 주입.
317
- */
318
213
  showCategoryFilter?: boolean;
319
- /** 현재 선택 카테고리 slug. 미지정/빈 값 = 전체. searchParams 에서 주입. */
320
214
  activeCategory?: string;
321
- /**
322
- * 카테고리 칩 링크 URL 빌더. `null` = "전체" 칩. 기본 `?category=<slug>`
323
- * (전체 = `?`). 별도 라우트(`/blog/category/<slug>`)를 쓰려면 override.
324
- */
325
215
  categoryHref?: (slug: string | null) => string;
326
- /** "전체" 칩 라벨. 기본 "전체". */
327
216
  allCategoriesLabel?: string;
328
- /**
329
- * 작가 slug 로 글을 필터 — 작가 아카이브(/blog/author/{slug}) 페이지용. 지정 시
330
- * 그 작가의 발행 글(post)만 fetch 한다. `fetchAuthors` 로 작가 메타(이름·소개)를
331
- * 따로 가져와 페이지 헤더에 쓴다.
332
- */
333
217
  author?: string;
334
- /**
335
- * RootTale 디자인 토큰. 생략 시 admin /design 에서 저장한 값을 자동 fetch.
336
- * `null` 을 명시하면 자동 fetch 도 건너뛰고 CSS fallback 사용 (부모
337
- * `<RootTaleThemeProvider>` 가 변수를 이미 설정한 경우 유용).
338
- */
339
218
  theme?: RootTaleThemeInput;
340
- /**
341
- * ADR-0052 A안 (W4-6 PR C1) — 언어판 필터(`fetchPosts` 의 `locale` 그대로 전달).
342
- * 미지정 시 서버가 사이트 기본 locale 반환(하위호환). cms-i18n 기본 문자열
343
- * (`emptyMessage`/`allCategoriesLabel` 미지정 시)의 locale 해석에도 쓰인다.
344
- */
345
219
  locale?: string;
346
220
  };
347
221
  declare function RootTaleBlogList(props: RootTaleBlogListProps): Promise<ReactElement>;
222
+
348
223
  type RootTaleBlogCategoriesProps = {
349
224
  apiKey: string;
350
225
  baseUrl?: string;
351
226
  limit?: number;
352
- /** Build a customer-side URL for a category. Defaults to `/blog/categories/<slug>`. */
353
227
  categoryHref?: (slug: string) => string;
354
- /** Rendered when no categories are attached to published posts yet. */
355
228
  emptyMessage?: string;
356
- /**
357
- * 단일 섹션으로 스코프 (ADR-0060). `collections` 와 함께 줘야 동작. 그 섹션의
358
- * `categories`(주제 allowlist) 안에서, 그 섹션에 귀속된 글의 카테고리만 집계한다.
359
- * 미지정 = 전체 글의 카테고리.
360
- */
361
229
  collection?: string;
362
- /** 섹션 정의 (ADR-0060). `collection` 스코프에 필요. */
363
230
  collections?: readonly RouteCollection[];
364
- /** See `RootTaleBlogListProps['theme']`. */
365
- theme?: RootTaleThemeInput;
366
- /** See `RootTaleBlogListProps['locale']`. */
231
+ theme?: RootTaleTheme | null | undefined;
367
232
  locale?: string;
368
233
  };
369
234
  declare function RootTaleBlogCategories(props: RootTaleBlogCategoriesProps): Promise<ReactElement>;
235
+
370
236
  type RootTaleBlogPostProps = {
371
237
  apiKey: string;
372
238
  slugOrId: string;
373
239
  baseUrl?: string;
374
- /** Rendered when the slug is not found or not published. */
375
240
  notFoundElement?: ReactElement;
376
- /**
377
- * 글 제목 `<h1>` 표시 여부. 페이지가 제목을 직접 출력할 때는 false.
378
- * 요약·발행일·작성자 등 나머지 헤더 정보는 그대로 유지한다.
379
- */
380
241
  showTitle?: boolean;
381
- /**
382
- * When true, prepends an auto-derived `<RootTaleTableOfContents>` before
383
- * the article body (H2-H4 headings only). Default: false — keep markup
384
- * stable for customers who already control their own layout.
385
- */
386
242
  showTableOfContents?: boolean;
387
- /** Title shown above the TOC (only when `showTableOfContents`). */
388
243
  tableOfContentsTitle?: string;
389
- /**
390
- * 글 하단에 같은 카테고리 최근 글을 N개 노출 (0 = off, 기본 0 — 기존 마크업 보존).
391
- * 현재 글에 카테고리가 없거나 후보가 없으면 렌더되지 않는다.
392
- */
393
244
  relatedPostsCount?: number;
394
- /** 관련 글 섹션 제목. 기본 "관련 글". */
395
245
  relatedPostsTitle?: string;
396
- /** 관련 글 링크 빌더 — 미지정 시 collections 라우팅 또는 `/blog/{slug}`. */
397
246
  postHref?: (post: CmsPostContent) => string;
398
- /** 다중 스트림 라우팅(ADR-0060) — 관련 글 링크 해석에 사용. */
399
247
  collections?: readonly RouteCollection[];
400
- /**
401
- * W5-2 — 양식(필드 그룹) 스칼라 값을 연관 박스 아래 정보 패널로 렌더.
402
- * 라벨·타입은 서버 동봉 `fieldsMeta` 를 사용 — 렌더러는 vertical 지식 없음.
403
- * relationship 계열은 연관 박스가 담당하므로 제외. 표시할 값이 하나도 없으면
404
- * 패널 자체 미렌더(빈 껍데기 금지). 기본 false — 기존 소비자 마크업 불변.
405
- */
406
248
  showFieldFacts?: boolean;
407
- /** See `RootTaleBlogListProps['theme']`. */
408
249
  theme?: RootTaleThemeInput;
409
- /** See `RootTaleBlogListProps['locale']`. `fetchPost`/관련 글 fetch 양쪽에 적용. */
410
250
  locale?: string;
251
+ authorHref?: (slug: string) => string;
252
+ breadcrumb?: BlogPostBreadcrumbOptions;
411
253
  };
254
+ interface BlogPostBreadcrumbOptions {
255
+ siteUrl?: string;
256
+ homeLabel?: string;
257
+ homeHref?: string;
258
+ listLabel?: string;
259
+ listHref?: string;
260
+ showCategory?: boolean;
261
+ categoryHref?: (slug: string) => string;
262
+ }
263
+
412
264
  declare function RootTaleBlogPost(props: RootTaleBlogPostProps): Promise<ReactElement>;
265
+
413
266
  declare function RootTaleFaqJsonLd({ doc, }: {
414
- doc: unknown;
267
+ readonly doc: unknown;
415
268
  }): ReactElement | null;
269
+
416
270
  type RootTalePageProps = {
417
271
  apiKey: string;
418
- /** Page slug (kebab-case) or UUIDv7 id. */
419
272
  slugOrId: string;
420
273
  baseUrl?: string;
421
- /** Rendered when the slug is not found or not published. */
422
274
  notFoundElement?: ReactElement;
423
- /**
424
- * Render the page title as `<h1>`. Default true — set false when the
425
- * customer layout already owns the heading.
426
- */
427
275
  showTitle?: boolean;
428
- /** See `RootTaleBlogListProps['theme']`. */
429
276
  theme?: RootTaleThemeInput;
430
- /** See `RootTaleBlogListProps['locale']`. */
431
277
  locale?: string;
432
278
  };
433
- /**
434
- * 고정 페이지(posts type='page') 렌더러 — RootTaleBlogPost 의 경량판.
435
- * 날짜·작성자·author card·blog settings 등 블로그 chrome 없이
436
- * 제목 + 본문만 그린다. 회사 소개·서비스·이용약관 류의 페이지 용도.
437
- *
438
- * ```tsx
439
- * // app/[slug]/page.tsx
440
- * export default async function CmsPage({ params }) {
441
- * const { slug } = await params;
442
- * return <RootTalePage apiKey={process.env.ROOTTALE_API_KEY!} slugOrId={slug} />;
443
- * }
444
- * ```
445
- */
446
279
  declare function RootTalePage(props: RootTalePageProps): Promise<ReactElement>;
447
- /**
448
- * Minimal Tiptap doc renderer. Walks the Tiptap doc tree and emits semantic
449
- * HTML. This is intentionally tiny — richer extensions (image asset URL
450
- * resolution, TableOfContents, FloatingCta) belong in followup §5.7 #5.
451
- *
452
- * Browser-side sanitization is unnecessary here because output is rendered
453
- * server-side from data the customer-trusted API returned. If the customer
454
- * site federates with untrusted authors later, layer a sanitizer in front
455
- * of this component.
456
- */
457
- declare function RenderTiptap({ doc, fields, apiKey, baseUrl, }: {
458
- doc: Record<string, unknown>;
459
- /**
460
- * ADR-0041 D3 — 공개 API `post.fields` (포맷된 커스텀 필드 값). 전달 시
461
- * 블록 바인딩(`roottale/field`)을 필드 값으로 치환 — 값 없으면 본문이
462
- * fallback 으로 그대로 렌더. astro `renderTiptapDoc(doc, { fields })` 동등.
463
- */
464
- fields?: Record<string, unknown> | null;
465
- /** Enables cms-bound section nodes (`blog-list`, `lead-form`, `contact`). */
466
- apiKey?: string;
467
- /** Optional RootTale API base URL for cms-bound section fetches. */
468
- baseUrl?: string;
469
- }): ReactElement;
470
280
 
471
- export { type BlogCategory, type BlogCategoryWithCount, type CtaButton, type CtaButtonType, type FloatingCtaPosition, type LeadFormVertical, RenderTiptap, RootTaleBlogCategories, type RootTaleBlogCategoriesProps, RootTaleBlogList, type RootTaleBlogListProps, RootTaleBlogPost, type RootTaleBlogPostProps, RootTaleFaqJsonLd, RootTaleFloatingCta, type RootTaleFloatingCtaProps, RootTaleLeadForm, type RootTaleLeadFormProps, RootTalePage, type RootTalePageProps, RootTalePostCard, type RootTalePostCardProps, RootTaleTableOfContents, type RootTaleTableOfContentsProps, type RootTaleThemeInput, RootTaleThemeProvider, type TocEntry, attachHeadingIds, collectCategories, collectCategoriesWithCounts, defaultCategoryHref, extractToc, filterPostsByCategory, headingToId, renderBlock, renderBlocks, renderBoundBlocks };
281
+ type RenderTiptapProps = {
282
+ readonly doc: Record<string, unknown>;
283
+ readonly fields?: Record<string, unknown> | null;
284
+ readonly apiKey?: string;
285
+ readonly baseUrl?: string;
286
+ };
287
+ declare function RenderTiptap({ doc, fields, apiKey, baseUrl, }: RenderTiptapProps): ReactElement;
288
+
289
+ export { type BlogPostBreadcrumbOptions, type CtaButton, type CtaButtonType, type FloatingCtaPosition, type LeadFormVertical, RenderTiptap, RootTaleBlogCategories, type RootTaleBlogCategoriesProps, RootTaleBlogList, type RootTaleBlogListProps, RootTaleBlogPost, type RootTaleBlogPostProps, RootTaleFaqJsonLd, RootTaleFloatingCta, type RootTaleFloatingCtaProps, RootTaleLeadForm, type RootTaleLeadFormProps, RootTalePage, type RootTalePageProps, RootTalePostCard, type RootTalePostCardProps, RootTaleTableOfContents, type RootTaleTableOfContentsProps, type RootTaleThemeInput, RootTaleThemeProvider, type TocEntry, attachHeadingIds, extractToc, headingToId, renderBlock, renderBlocks, renderBoundBlocks };
package/dist/server.js CHANGED
@@ -17,24 +17,24 @@ import {
17
17
  renderBlocks,
18
18
  renderBoundBlocks,
19
19
  themeToCssVars
20
- } from "./chunk-ZHXYCABN.js";
20
+ } from "./chunk-2QU4JU46.js";
21
+ import "./chunk-VG6UUF4D.js";
22
+ import "./chunk-QYNEOFL7.js";
21
23
  import "./chunk-U5AKACPN.js";
22
24
  import "./chunk-LEHHSI6G.js";
23
- import "./chunk-6MFHA555.js";
24
- import "./chunk-FZK3EXYZ.js";
25
+ import "./chunk-27RT6B3O.js";
26
+ import "./chunk-YLSQAT6B.js";
27
+ import "./chunk-4RQ3SEDL.js";
25
28
  import "./chunk-K62RR4UQ.js";
26
29
  import "./chunk-H46JUIHZ.js";
27
30
  import "./chunk-ZL2NA3QT.js";
28
- import "./chunk-VG6UUF4D.js";
29
31
  import {
30
32
  collectCategories,
31
33
  collectCategoriesWithCounts,
32
34
  defaultCategoryHref,
33
35
  filterPostsByCategory
34
- } from "./chunk-FUA5H6JE.js";
36
+ } from "./chunk-U2IM6OCQ.js";
35
37
  import "./chunk-UM37DOIK.js";
36
- import "./chunk-OMXEU4LS.js";
37
- import "./chunk-YLSQAT6B.js";
38
38
  export {
39
39
  RenderTiptap,
40
40
  RootTaleBlogCategories,