@dotcms/react 1.2.5-next.7 → 1.2.6-next.1

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 (58) hide show
  1. package/README.md +71 -17
  2. package/_virtual/_commonjsHelpers.esm.js +3 -0
  3. package/_virtual/_style-inject.esm.js +30 -0
  4. package/_virtual/make-built-in.esm.js +3 -0
  5. package/_virtual/new-promise-capability.esm.js +3 -0
  6. package/_virtual/object-define-properties.esm.js +3 -0
  7. package/_virtual/object-define-property.esm.js +3 -0
  8. package/_virtual/object-get-own-property-descriptor.esm.js +3 -0
  9. package/_virtual/object-get-own-property-names.esm.js +3 -0
  10. package/_virtual/object-get-own-property-symbols.esm.js +3 -0
  11. package/_virtual/object-property-is-enumerable.esm.js +3 -0
  12. package/_virtual/shared-store.esm.js +3 -0
  13. package/index.esm.js +9 -7168
  14. package/index.server.d.ts +1 -0
  15. package/index.server.esm.js +8 -0
  16. package/libs/sdk/react/src/lib/next/components/Column/Column.esm.js +50 -0
  17. package/libs/sdk/react/src/lib/next/components/Column/Column.module.css.esm.js +8 -0
  18. package/libs/sdk/react/src/lib/next/components/Container/Container.esm.js +58 -0
  19. package/libs/sdk/react/src/lib/next/components/Container/ContainerFallbacks.esm.js +61 -0
  20. package/libs/sdk/react/src/lib/next/components/Contentlet/Contentlet.esm.js +88 -0
  21. package/libs/sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/DotCMSBlockEditorRenderer.esm.js +46 -0
  22. package/libs/sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/BlockEditorBlock.esm.js +182 -0
  23. package/libs/sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/Code.esm.js +37 -0
  24. package/libs/sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/DotContent.esm.js +47 -0
  25. package/libs/sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/GridBlock.esm.js +47 -0
  26. package/libs/sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/Image.esm.js +22 -0
  27. package/libs/sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/Lists.esm.js +43 -0
  28. package/libs/sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/NoComponentProvided.esm.js +40 -0
  29. package/libs/sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/Table.esm.js +55 -0
  30. package/libs/sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/Texts.esm.js +158 -0
  31. package/libs/sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/Video.esm.js +43 -0
  32. package/libs/sdk/react/src/lib/next/components/DotCMSEditableText/DotCMSEditableText.esm.js +190 -0
  33. package/libs/sdk/react/src/lib/next/components/DotCMSEditableText/utils.esm.js +13 -0
  34. package/libs/sdk/react/src/lib/next/components/DotCMSLayoutBody/DotCMSLayoutBody.esm.js +44 -0
  35. package/libs/sdk/react/src/lib/next/components/DotCMSLayoutBody/DotCMSPageProvider.esm.js +30 -0
  36. package/libs/sdk/react/src/lib/next/components/DotCMSLayoutBody/components/ErrorMessage.esm.js +43 -0
  37. package/libs/sdk/react/src/lib/next/components/DotCMSShow/DotCMSShow.esm.js +49 -0
  38. package/libs/sdk/react/src/lib/next/components/FallbackComponent/FallbackComponent.esm.js +55 -0
  39. package/libs/sdk/react/src/lib/next/components/Row/Row.esm.js +32 -0
  40. package/libs/sdk/react/src/lib/next/components/Row/Row.module.css.esm.js +8 -0
  41. package/libs/sdk/react/src/lib/next/contexts/DotCMSPageContext.esm.js +16 -0
  42. package/libs/sdk/react/src/lib/next/hooks/useAISearch.esm.js +131 -0
  43. package/libs/sdk/react/src/lib/next/hooks/useCheckVisibleContent.esm.js +42 -0
  44. package/libs/sdk/react/src/lib/next/hooks/useDotCMSShowWhen.esm.js +44 -0
  45. package/libs/sdk/react/src/lib/next/hooks/useEditableDotCMSPage.esm.js +133 -0
  46. package/libs/sdk/react/src/lib/next/hooks/useIsDevMode.esm.js +37 -0
  47. package/libs/sdk/react/src/lib/next/hooks/useStyleEditorSchemas.esm.js +15 -0
  48. package/libs/sdk/react/src/lib/next/utils/buildSlots.esm.js +46 -0
  49. package/package.json +2 -1
  50. package/src/index.d.ts +1 -0
  51. package/src/index.server.d.ts +11 -0
  52. package/src/lib/next/components/DotCMSBlockEditorRenderer/DotCMSBlockEditorRenderer.d.ts +2 -1
  53. package/src/lib/next/components/DotCMSBlockEditorRenderer/components/BlockEditorBlock.d.ts +2 -1
  54. package/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/DotContent.d.ts +2 -1
  55. package/src/lib/next/components/DotCMSLayoutBody/DotCMSLayoutBody.d.ts +20 -1
  56. package/src/lib/next/components/DotCMSLayoutBody/DotCMSPageProvider.d.ts +18 -0
  57. package/src/lib/next/contexts/DotCMSPageContext.d.ts +3 -0
  58. package/src/lib/next/utils/buildSlots.d.ts +24 -0
@@ -3,6 +3,7 @@ import { CustomRenderer } from '../DotCMSBlockEditorRenderer';
3
3
  interface BlockEditorBlockProps {
4
4
  content: BlockEditorNode[] | undefined;
5
5
  customRenderers?: CustomRenderer;
6
+ isDevMode?: boolean;
6
7
  }
7
8
  /**
8
9
  * Renders a block editor item based on the provided content and custom renderers.
@@ -11,5 +12,5 @@ interface BlockEditorBlockProps {
11
12
  * @param customRenderers - Optional custom renderers for specific node types.
12
13
  * @returns The rendered block editor item.
13
14
  */
14
- export declare const BlockEditorBlock: ({ content, customRenderers }: BlockEditorBlockProps) => import("react/jsx-runtime").JSX.Element[] | null;
15
+ export declare const BlockEditorBlock: ({ content, customRenderers, isDevMode }: BlockEditorBlockProps) => import("react/jsx-runtime").JSX.Element[] | null;
15
16
  export {};
@@ -3,6 +3,7 @@ import { CustomRenderer } from '../../DotCMSBlockEditorRenderer';
3
3
  interface DotContentProps {
4
4
  customRenderers?: CustomRenderer;
5
5
  node: BlockEditorNode;
6
+ isDevMode?: boolean;
6
7
  }
7
8
  /**
8
9
  * Renders a DotContent component.
@@ -10,5 +11,5 @@ interface DotContentProps {
10
11
  * @param {DotContentProps} props - The props for the DotContent component.
11
12
  * @returns {JSX.Element} The rendered DotContent component.
12
13
  */
13
- export declare const DotContent: ({ customRenderers, node }: DotContentProps) => import("react/jsx-runtime").JSX.Element | null;
14
+ export declare const DotContent: ({ customRenderers, node, isDevMode }: DotContentProps) => import("react/jsx-runtime").JSX.Element | null;
14
15
  export {};
@@ -1,3 +1,4 @@
1
+ import { ReactNode } from 'react';
1
2
  import { DotCMSBasicContentlet, DotCMSPageAsset, DotCMSPageRendererMode } from '@dotcms/types';
2
3
  export interface DotCMSLayoutBodyProps<TContentlet extends DotCMSBasicContentlet = DotCMSBasicContentlet> {
3
4
  page: DotCMSPageAsset;
@@ -5,6 +6,23 @@ export interface DotCMSLayoutBodyProps<TContentlet extends DotCMSBasicContentlet
5
6
  [key: string]: React.ComponentType<TContentlet> | React.ComponentType<any>;
6
7
  };
7
8
  mode?: DotCMSPageRendererMode;
9
+ /**
10
+ * Pre-rendered server component nodes keyed by contentlet identifier.
11
+ * Use this to render Next.js async server components within the layout.
12
+ * Build this map using the `buildSlots` helper.
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * import { buildSlots } from '@dotcms/react';
17
+ *
18
+ * const slots = buildSlots(pageContent.pageAsset.containers, {
19
+ * BlogList: BlogListContainer,
20
+ * });
21
+ *
22
+ * <DotCMSLayoutBody page={pageAsset} components={pageComponents} slots={slots} />
23
+ * ```
24
+ */
25
+ slots?: Record<string, ReactNode>;
8
26
  }
9
27
  /**
10
28
  * DotCMSLayoutBody component renders the layout body for a DotCMS page.
@@ -18,8 +36,9 @@ export interface DotCMSLayoutBodyProps<TContentlet extends DotCMSBasicContentlet
18
36
  * @param {DotCMSPageAsset} props.page - The DotCMS page asset containing the layout information.
19
37
  * @param {Record<string, React.ComponentType<DotCMSContentlet>>} [props.components] - mapping of custom components for content rendering.
20
38
  * @param {DotCMSPageRendererMode} [props.mode='production'] - The renderer mode; defaults to 'production'. Alternate modes might trigger different behaviors.
39
+ * @param {Record<string, ReactNode>} [props.slots] - Pre-rendered server component nodes keyed by contentlet identifier.
21
40
  *
22
41
  * @returns {JSX.Element} The rendered DotCMS page body or an error message if the layout body is missing.
23
42
  *
24
43
  */
25
- export declare const DotCMSLayoutBody: ({ page, components, mode }: DotCMSLayoutBodyProps) => import("react/jsx-runtime").JSX.Element;
44
+ export declare const DotCMSLayoutBody: ({ page, components, mode, slots }: DotCMSLayoutBodyProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { ReactNode } from 'react';
2
+ import { DotCMSPageAsset, DotCMSPageRendererMode } from '@dotcms/types';
3
+ interface DotCMSPageProviderProps {
4
+ page: DotCMSPageAsset;
5
+ components: Record<string, React.ComponentType<any>>;
6
+ mode: DotCMSPageRendererMode;
7
+ slots: Record<string, ReactNode>;
8
+ children: ReactNode;
9
+ }
10
+ /**
11
+ * @internal
12
+ *
13
+ * Client boundary that provides the DotCMS page context to the layout tree.
14
+ * Keeping this separate from DotCMSLayoutBody allows the layout to remain
15
+ * a server component while only the context provider runs on the client.
16
+ */
17
+ export declare function DotCMSPageProvider({ page, components, mode, slots, children }: DotCMSPageProviderProps): import("react/jsx-runtime").JSX.Element;
18
+ export {};
@@ -1,3 +1,4 @@
1
+ import { ReactNode } from 'react';
1
2
  import { DotCMSBasicContentlet, DotCMSPageAsset, DotCMSPageRendererMode } from '@dotcms/types';
2
3
  /**
3
4
  * @internal
@@ -7,11 +8,13 @@ import { DotCMSBasicContentlet, DotCMSPageAsset, DotCMSPageRendererMode } from '
7
8
  * @property {DotCMSPageAsset} pageAsset - The DotCMS page asset
8
9
  * @property {RendererMode} mode - The renderer mode
9
10
  * @property {Record<string, React.ComponentType<DotCMSContentlet>>} userComponents - The user components
11
+ * @property {Record<string, ReactNode>} slots - Pre-rendered server component nodes keyed by contentlet identifier
10
12
  */
11
13
  export interface DotCMSPageContextProps {
12
14
  pageAsset: DotCMSPageAsset;
13
15
  mode: DotCMSPageRendererMode;
14
16
  userComponents: Record<string, React.ComponentType<DotCMSBasicContentlet>>;
17
+ slots?: Record<string, ReactNode>;
15
18
  }
16
19
  /**
17
20
  * The `PageContext` is a React context that provides access to the DotCMS page context.
@@ -0,0 +1,24 @@
1
+ import { ReactNode } from 'react';
2
+ import { DotCMSPageAssetContainers } from '@dotcms/types';
3
+ /**
4
+ * Builds a slots map of pre-rendered server component nodes keyed by contentlet identifier.
5
+ *
6
+ * Use this in Next.js server components to render async server components
7
+ * (e.g., components that fetch data) within a DotCMS page layout. Pass the
8
+ * resulting map to `DotCMSLayoutBody` via the `slots` prop.
9
+ *
10
+ * @public
11
+ * @param containers - The containers map from `pageAsset.containers`
12
+ * @param serverComponents - A map of content type names to async server components
13
+ * @returns A record mapping contentlet identifiers to pre-rendered ReactNodes
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * const slots = buildSlots(pageContent.pageAsset.containers, {
18
+ * BlogList: BlogListContainer,
19
+ * });
20
+ *
21
+ * <DotCMSLayoutBody page={pageAsset} components={pageComponents} slots={slots} />
22
+ * ```
23
+ */
24
+ export declare function buildSlots(containers: DotCMSPageAssetContainers, serverComponents: Record<string, React.ComponentType<any>>): Record<string, ReactNode>;