@laconius/cms 0.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.
Files changed (45) hide show
  1. package/LICENSE +73 -0
  2. package/README.md +26 -0
  3. package/lib/module/adapter.js +136 -0
  4. package/lib/module/adapter.js.map +1 -0
  5. package/lib/module/config.js +105 -0
  6. package/lib/module/config.js.map +1 -0
  7. package/lib/module/defaults.js +282 -0
  8. package/lib/module/defaults.js.map +1 -0
  9. package/lib/module/index.js +10 -0
  10. package/lib/module/index.js.map +1 -0
  11. package/lib/module/models.js +29 -0
  12. package/lib/module/models.js.map +1 -0
  13. package/lib/module/normalizer.js +114 -0
  14. package/lib/module/normalizer.js.map +1 -0
  15. package/lib/module/package.json +1 -0
  16. package/lib/module/page.js +223 -0
  17. package/lib/module/page.js.map +1 -0
  18. package/lib/module/queries.js +54 -0
  19. package/lib/module/queries.js.map +1 -0
  20. package/lib/typescript/package.json +1 -0
  21. package/lib/typescript/src/adapter.d.ts +25 -0
  22. package/lib/typescript/src/adapter.d.ts.map +1 -0
  23. package/lib/typescript/src/config.d.ts +84 -0
  24. package/lib/typescript/src/config.d.ts.map +1 -0
  25. package/lib/typescript/src/defaults.d.ts +64 -0
  26. package/lib/typescript/src/defaults.d.ts.map +1 -0
  27. package/lib/typescript/src/index.d.ts +8 -0
  28. package/lib/typescript/src/index.d.ts.map +1 -0
  29. package/lib/typescript/src/models.d.ts +123 -0
  30. package/lib/typescript/src/models.d.ts.map +1 -0
  31. package/lib/typescript/src/normalizer.d.ts +70 -0
  32. package/lib/typescript/src/normalizer.d.ts.map +1 -0
  33. package/lib/typescript/src/page.d.ts +62 -0
  34. package/lib/typescript/src/page.d.ts.map +1 -0
  35. package/lib/typescript/src/queries.d.ts +193 -0
  36. package/lib/typescript/src/queries.d.ts.map +1 -0
  37. package/package.json +69 -0
  38. package/src/adapter.ts +159 -0
  39. package/src/config.ts +119 -0
  40. package/src/defaults.tsx +281 -0
  41. package/src/index.ts +82 -0
  42. package/src/models.ts +120 -0
  43. package/src/normalizer.ts +159 -0
  44. package/src/page.tsx +228 -0
  45. package/src/queries.ts +56 -0
@@ -0,0 +1,64 @@
1
+ import { type MediaContainer } from '@laconius/core';
2
+ import { type StyleProp, type TextStyle, type ViewStyle } from 'react-native';
3
+ import type { CmsLinkTarget, CmsNavigationNode } from './models.js';
4
+ /**
5
+ * Where a CMS link goes. No Laconius package imports `expo-router` or navigates
6
+ * ([chapter 01](../../../docs/spec/01-packages.md)), so the app hands the engine one function and
7
+ * keeps its own routing.
8
+ */
9
+ export declare function useCmsNavigate(): (target: CmsLinkTarget | undefined) => void;
10
+ /** HTML with no DOM: the configured renderer, or tags stripped to a `<Text>`. */
11
+ export declare function CmsHtml({ html, style }: {
12
+ html?: string;
13
+ style?: StyleProp<TextStyle>;
14
+ }): import("react").JSX.Element | null;
15
+ export type BannerProps = {
16
+ title?: string;
17
+ subtitle?: string;
18
+ media?: MediaContainer;
19
+ onPress?: () => void;
20
+ style?: StyleProp<ViewStyle>;
21
+ styles?: {
22
+ container?: StyleProp<ViewStyle>;
23
+ title?: StyleProp<TextStyle>;
24
+ };
25
+ };
26
+ export declare function Banner({ title, subtitle, media, onPress, style, styles }: BannerProps): import("react").JSX.Element;
27
+ export type LinkProps = {
28
+ label: string;
29
+ onPress?: () => void;
30
+ style?: StyleProp<ViewStyle>;
31
+ };
32
+ export declare function Link({ label, onPress, style }: LinkProps): import("react").JSX.Element;
33
+ export type ParagraphProps = {
34
+ title?: string;
35
+ /** HTML, as OCC stores it. */
36
+ content?: string;
37
+ style?: StyleProp<ViewStyle>;
38
+ };
39
+ export declare function Paragraph({ title, content, style }: ParagraphProps): import("react").JSX.Element;
40
+ export type NavigationListProps = {
41
+ node?: CmsNavigationNode;
42
+ onSelect?: (node: CmsNavigationNode) => void;
43
+ style?: StyleProp<ViewStyle>;
44
+ };
45
+ /**
46
+ * One level of a navigation tree. Deeper trees are app chrome — a drawer, a tab bar — built from
47
+ * `useCmsNavigation(uid)`, which is why this default stays a flat list.
48
+ */
49
+ export declare function NavigationList({ node, onSelect, style }: NavigationListProps): import("react").JSX.Element | null;
50
+ export type CarouselProps<T> = {
51
+ items: T[];
52
+ renderItem: (item: T, index: number) => React.ReactElement | null;
53
+ itemWidth?: number;
54
+ title?: string;
55
+ style?: StyleProp<ViewStyle>;
56
+ };
57
+ /** A horizontal `FlatList` with snapping. The first thing to cut if it proves expensive. */
58
+ export declare function Carousel<T>({ items, renderItem, itemWidth, title, style }: CarouselProps<T>): import("react").JSX.Element;
59
+ export declare function CmsBanner(): import("react").JSX.Element;
60
+ export declare function CmsLink(): import("react").JSX.Element;
61
+ export declare function CmsParagraph(): import("react").JSX.Element;
62
+ export declare function CmsNavigation(): import("react").JSX.Element;
63
+ export declare function CmsBannerCarousel(): import("react").JSX.Element | null;
64
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/defaults.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { HOME_PAGE_CONTEXT, type CmsBannerData, type CmsCarouselData, type CmsComponent, type CmsLinkData, type CmsLinkTarget, type CmsNavigationData, type CmsNavigationNode, type CmsPageStructure, type CmsParagraphData, type CmsStructure, type ContentSlot, type ContentSlotComponent, type PageContext, type PageType, } from './models.js';
2
+ export { getComponentKey, normalizeCmsPage, resolveLinkTarget, stripHtml, type OccCmsPage, } from './normalizer.js';
3
+ export { MAX_COMPONENTS_PER_REQUEST, defaultCmsAdapter, defaultCmsConverters, loadCmsComponent, type CmsAdapter, } from './adapter.js';
4
+ export { cmsQueries, useCmsComponent, useCmsNavigation, useCmsPage, } from './queries.js';
5
+ export { CmsComponentByUid, CmsComponentOutlet, CmsPage, CmsPageProvider, CmsSlot, useCmsComponentData, useCmsComponentUid, useCmsPageStructure, type CmsPageProps, type CmsPageProviderProps, type CmsSlotProps, } from './page.js';
6
+ export { Banner, Carousel, CmsBanner, CmsBannerCarousel, CmsHtml, CmsLink, CmsNavigation, CmsParagraph, Link, NavigationList, Paragraph, useCmsNavigate, type BannerProps, type CarouselProps, type LinkProps, type NavigationListProps, type ParagraphProps, } from './defaults.js';
7
+ export { defaultCmsComponents, defaultCmsConfig, defaultCmsEndpoints, defaultCmsLayouts, type CmsComponentMapping, } from './config.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,QAAQ,GACd,MAAM,aAAU,CAAC;AAElB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,KAAK,UAAU,GAChB,MAAM,iBAAc,CAAC;AAEtB,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,cAAW,CAAC;AAEnB,OAAO,EACL,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,UAAU,GACX,MAAM,cAAW,CAAC;AAEnB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,OAAO,EACP,eAAe,EACf,OAAO,EACP,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,WAAQ,CAAC;AAEhB,OAAO,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,aAAa,EACb,YAAY,EACZ,IAAI,EACJ,cAAc,EACd,SAAS,EACT,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,cAAc,GACpB,MAAM,eAAY,CAAC;AAEpB,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,mBAAmB,GACzB,MAAM,aAAU,CAAC"}
@@ -0,0 +1,123 @@
1
+ import type { MediaContainer } from '@laconius/core';
2
+ /**
3
+ * CMS models, ported from Spartacus `core-libs/core/src/model/cms.model.ts` and
4
+ * `core-libs/core/src/cms/model/*` (Apache-2.0, see NOTICE). Divergences:
5
+ * - `enum` becomes a string union, so this module emits nothing at runtime.
6
+ * - `CmsStructure.components` is a record keyed by `uid`, not an array: Laconius looks components
7
+ * up by uid at render time instead of feeding an NgRx entity reducer.
8
+ * - `robots` and the rest of the SEO emitters are dropped ([chapter 06](../../../docs/spec/06-cms-engine.md)).
9
+ */
10
+ export type PageType = 'ContentPage' | 'ProductPage' | 'CategoryPage' | 'CatalogPage';
11
+ /** The sentinel the backend answers to for the base site's homepage. */
12
+ export declare const HOME_PAGE_CONTEXT = "__HOMEPAGE__";
13
+ /** What identifies a page to OCC: a content-page label, or a product / category code. */
14
+ export type PageContext = {
15
+ id: string;
16
+ type?: PageType;
17
+ };
18
+ /** The component reference a slot carries. `key` is the *computed* registry key. */
19
+ export type ContentSlotComponent = {
20
+ uid: string;
21
+ typeCode?: string;
22
+ /** `flexType` for `CMSFlexComponent`, `uid` for `JspIncludeComponent`, else `typeCode`. */
23
+ key: string;
24
+ properties?: Record<string, unknown>;
25
+ };
26
+ export type ContentSlot = {
27
+ position: string;
28
+ properties?: Record<string, unknown>;
29
+ components: ContentSlotComponent[];
30
+ };
31
+ export type CmsPageStructure = {
32
+ pageId?: string;
33
+ name?: string;
34
+ type?: string;
35
+ label?: string;
36
+ template?: string;
37
+ title?: string;
38
+ description?: string;
39
+ properties?: Record<string, unknown>;
40
+ /** Keyed by position. Order here is backend order — the warned fallback, not the contract. */
41
+ slots: Record<string, ContentSlot>;
42
+ };
43
+ /** What the page endpoint normalizes to: the structure plus whatever component data came inlined. */
44
+ export type CmsStructure = {
45
+ page: CmsPageStructure;
46
+ components: Record<string, CmsComponent>;
47
+ };
48
+ /** Every component payload carries these; the rest is per type. */
49
+ export interface CmsComponent {
50
+ uid?: string;
51
+ typeCode?: string;
52
+ name?: string;
53
+ modifiedTime?: string;
54
+ container?: string;
55
+ styleClasses?: string;
56
+ composition?: {
57
+ inner?: string[];
58
+ };
59
+ [key: string]: unknown;
60
+ }
61
+ export interface CmsLinkData extends CmsComponent {
62
+ linkName?: string;
63
+ url?: string;
64
+ external?: string | boolean;
65
+ contentPage?: string;
66
+ contentPageLabelOrId?: string;
67
+ target?: string | boolean;
68
+ }
69
+ export interface CmsBannerData extends CmsComponent {
70
+ headline?: string;
71
+ content?: string;
72
+ /** A single image, or a group keyed by format code. Absolutised on the way in. */
73
+ media?: MediaContainer;
74
+ urlLink?: string;
75
+ external?: string | boolean;
76
+ contentPage?: string;
77
+ product?: string;
78
+ category?: string;
79
+ }
80
+ export interface CmsParagraphData extends CmsComponent {
81
+ title?: string;
82
+ /** HTML. Stripped to plain text unless `cms.htmlRenderer` is configured. */
83
+ content?: string;
84
+ }
85
+ export interface CmsNavigationNode {
86
+ uid?: string;
87
+ title?: string;
88
+ children?: CmsNavigationNode[];
89
+ entries?: {
90
+ itemId?: string;
91
+ itemSuperType?: string;
92
+ itemType?: string;
93
+ }[];
94
+ }
95
+ export interface CmsNavigationData extends CmsComponent {
96
+ navigationNode?: CmsNavigationNode;
97
+ styleClass?: string;
98
+ wrapAfter?: string;
99
+ }
100
+ /** `RotatingImagesComponent`: a space-separated list of banner uids. */
101
+ export interface CmsCarouselData extends CmsComponent {
102
+ banners?: string;
103
+ effect?: string;
104
+ }
105
+ /**
106
+ * Where a CMS link points, resolved from the four mutually exclusive fields OCC uses. Laconius
107
+ * hands this to `cms.onNavigate`; no Laconius package navigates ([chapter 01](../../../docs/spec/01-packages.md)).
108
+ */
109
+ export type CmsLinkTarget = {
110
+ kind: 'url';
111
+ url: string;
112
+ external: boolean;
113
+ } | {
114
+ kind: 'contentPage';
115
+ label: string;
116
+ } | {
117
+ kind: 'product';
118
+ code: string;
119
+ } | {
120
+ kind: 'category';
121
+ code: string;
122
+ };
123
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import type { CmsLinkTarget, CmsStructure } from './models.js';
2
+ /**
3
+ * The registry key, **computed** — not `typeCode`
4
+ * (`core-libs/core/src/occ/adapters/cms/converters/occ-cms-page-normalizer.ts:151`). Miss this and
5
+ * every account page renders blank, because those pages are all `CMSFlexComponent`.
6
+ */
7
+ export declare function getComponentKey(component: {
8
+ typeCode?: string;
9
+ flexType?: string;
10
+ uid?: string;
11
+ }): string;
12
+ type OccComponent = {
13
+ uid?: string;
14
+ typeCode?: string;
15
+ flexType?: string;
16
+ properties?: Record<string, unknown>;
17
+ modifiedtime?: string;
18
+ modifiedTime?: string;
19
+ [key: string]: unknown;
20
+ };
21
+ type OccSlot = {
22
+ position?: string;
23
+ properties?: Record<string, unknown>;
24
+ components?: {
25
+ component?: OccComponent | OccComponent[];
26
+ };
27
+ };
28
+ export type OccCmsPage = {
29
+ uid?: string;
30
+ name?: string;
31
+ typeCode?: string;
32
+ label?: string;
33
+ template?: string;
34
+ title?: string;
35
+ description?: string;
36
+ properties?: Record<string, unknown>;
37
+ contentSlots?: {
38
+ contentSlot?: OccSlot | OccSlot[];
39
+ };
40
+ };
41
+ /**
42
+ * Flattens the OCC page payload into `{ page, components }`.
43
+ *
44
+ * Slot *order* here is backend order, which the layout config overrides
45
+ * ([chapter 06](../../../docs/spec/06-cms-engine.md)). Component `properties` stay on the slot
46
+ * entry and are stripped from the component payload, as in Spartacus.
47
+ */
48
+ export declare function normalizeCmsPage(source: OccCmsPage | undefined): CmsStructure;
49
+ /**
50
+ * The four mutually exclusive link fields OCC uses, in Spartacus' own precedence
51
+ * (`cms-components/content/banner/banner.component.ts:64`). `external` arrives as the string
52
+ * `'true'` about as often as a boolean.
53
+ */
54
+ export declare function resolveLinkTarget(data: {
55
+ url?: string;
56
+ urlLink?: string;
57
+ external?: string | boolean;
58
+ contentPage?: string;
59
+ contentPageLabelOrId?: string;
60
+ product?: string;
61
+ category?: string;
62
+ }): CmsLinkTarget | undefined;
63
+ /**
64
+ * The default HTML story: strip tags, decode the five named entities OCC actually emits, collapse
65
+ * whitespace. Laconius ships no parser — rich text is `cms.htmlRenderer`
66
+ * ([chapter 06](../../../docs/spec/06-cms-engine.md)).
67
+ */
68
+ export declare function stripHtml(html: string | undefined): string;
69
+ export {};
70
+ //# sourceMappingURL=normalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizer.d.ts","sourceRoot":"","sources":["../../../src/normalizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,YAAY,EAGb,MAAM,aAAU,CAAC;AAKlB;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,MAAM,CAIT;AAED,KAAK,YAAY,GAAG;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;KAAE,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAA;KAAE,CAAC;CACtD,CAAC;AAOF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,CA8C7E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,aAAa,GAAG,SAAS,CAU5B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAc1D"}
@@ -0,0 +1,62 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type StyleProp, type ViewStyle } from 'react-native';
3
+ import type { CmsComponent, CmsStructure, ContentSlotComponent, PageContext } from './models.js';
4
+ type PageValue = {
5
+ structure: CmsStructure;
6
+ context: PageContext;
7
+ };
8
+ /**
9
+ * The whole component contract: typed data through a hook, never props
10
+ * ([ADR-0007](../../../docs/adr/0007-two-registries-two-contracts.md)). Props would make a
11
+ * registered replacement depend on what Laconius happens to pass it, and substitutability dies.
12
+ */
13
+ export declare function useCmsComponentData<T extends CmsComponent>(): T;
14
+ /** The uid of the component being rendered, for components that key their own state on it. */
15
+ export declare function useCmsComponentUid(): string;
16
+ /** The page a `<CmsSlot>` reads from, and the context its components are scoped to. */
17
+ export declare function useCmsPageStructure(): PageValue | undefined;
18
+ export type CmsPageProviderProps = {
19
+ context: PageContext;
20
+ children: ReactNode;
21
+ };
22
+ /**
23
+ * Fetches a page and provides it to the `<CmsSlot>`s inside. Suspends: wrap it in `<Suspense>`
24
+ * and an error boundary.
25
+ *
26
+ * A native screen that only *hosts* CMS slots — a PDP, the cart — mounts this around its own
27
+ * layout and places slots where it wants them.
28
+ */
29
+ export declare function CmsPageProvider({ context, children }: CmsPageProviderProps): import("react").JSX.Element;
30
+ export type CmsSlotProps = {
31
+ position: string;
32
+ style?: StyleProp<ViewStyle>;
33
+ /** Rendered when the slot is absent or empty. */
34
+ fallback?: ReactNode;
35
+ };
36
+ export declare function CmsSlot({ position, style, fallback }: CmsSlotProps): import("react").JSX.Element;
37
+ export type CmsPageProps = {
38
+ /** A content-page label, e.g. `/about-us`. Passed as a prop: no Laconius package routes. */
39
+ pageLabel?: string;
40
+ /** For a page that is not a content page. Takes precedence over `pageLabel`. */
41
+ context?: PageContext;
42
+ style?: StyleProp<ViewStyle>;
43
+ slotStyle?: StyleProp<ViewStyle>;
44
+ };
45
+ /**
46
+ * A whole page, top to bottom, in the slot order of `cms.layouts[template]`. It renders no scroll
47
+ * container: the screen owns scrolling, safe areas and refresh control.
48
+ */
49
+ export declare function CmsPage({ pageLabel, context, style, slotStyle }: CmsPageProps): import("react").JSX.Element;
50
+ /** Renders one slot entry through the registry, loading its data if the page did not inline it. */
51
+ export declare function CmsComponentOutlet({ entry }: {
52
+ entry: ContentSlotComponent;
53
+ }): import("react").JSX.Element | null;
54
+ /**
55
+ * Renders a component addressed only by uid — what a carousel does with the banner uids it holds.
56
+ * The registry key comes from the loaded payload, not from a slot entry.
57
+ */
58
+ export declare function CmsComponentByUid({ uid }: {
59
+ uid: string;
60
+ }): import("react").JSX.Element | null;
61
+ export {};
62
+ //# sourceMappingURL=page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/page.tsx"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3E,OAAO,EAA0B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtF,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACZ,MAAM,aAAU,CAAC;AAYlB,KAAK,SAAS,GAAG;IAAE,SAAS,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAOnE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,YAAY,KAAK,CAAC,CAQ/D;AAED,8FAA8F;AAC9F,wBAAgB,kBAAkB,IAAI,MAAM,CAQ3C;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,IAAI,SAAS,GAAG,SAAS,CAE3D;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,oBAAoB,+BAI1E;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAe,EAAE,EAAE,YAAY,+BAmBzE;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,YAAY,+BAU7E;AAgCD,mGAAmG;AACnG,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,oBAAoB,CAAA;CAAE,sCAoB5E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,sCAOzD"}
@@ -0,0 +1,193 @@
1
+ import type { CmsComponent, CmsNavigationData, PageContext } from './models.js';
2
+ /**
3
+ * `queryOptions` factories, so an app can `prefetchQuery` a page without forking Laconius.
4
+ *
5
+ * The page key is **per page**, deliberately unlike Spartacus, which collapses every content page
6
+ * under one `ContentPage` key (`core-libs/core/src/cms/utils/cms-utils.ts:29-31`).
7
+ */
8
+ export declare const cmsQueries: {
9
+ page: (context: PageContext) => import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<import("./models.js").CmsStructure, Error, import("./models.js").CmsStructure, unknown[]>, "queryFn"> & {
10
+ queryFn?: import("@tanstack/react-query").QueryFunction<import("./models.js").CmsStructure, unknown[], never> | undefined;
11
+ } & import("@tanstack/react-query").QueryKeyWithDataTag<unknown[], import("./models.js").CmsStructure, Error>;
12
+ component: (uid: string, context?: PageContext) => import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<CmsComponent, Error, CmsComponent, unknown[]>, "queryFn"> & {
13
+ queryFn?: import("@tanstack/react-query").QueryFunction<CmsComponent, unknown[], never> | undefined;
14
+ } & import("@tanstack/react-query").QueryKeyWithDataTag<unknown[], CmsComponent, Error>;
15
+ };
16
+ /**
17
+ * Suspends. There is no blocking guard: Spartacus' `CmsPageGuard` becomes a non-blocking fetch
18
+ * plus a suspending screen, so the native chrome is on screen while the page loads.
19
+ */
20
+ export declare function useCmsPage(context: PageContext): import("@tanstack/react-query").UseSuspenseQueryResult<import("./models.js").CmsStructure, Error>;
21
+ /** One component by uid. Requests made in the same frame go out as one batched call. */
22
+ export declare function useCmsComponent<T extends CmsComponent>(uid: string, options?: {
23
+ context?: PageContext;
24
+ enabled?: boolean;
25
+ }): import("@tanstack/react-query").UseQueryResult<T, Error>;
26
+ /**
27
+ * The `navigationNode` tree of a `NavigationComponent` / `FooterNavigationComponent` /
28
+ * `CategoryNavigationComponent`, for apps rendering their own chrome from CMS navigation.
29
+ */
30
+ export declare function useCmsNavigation(uid: string): {
31
+ node: import("./models.js").CmsNavigationNode | undefined;
32
+ data: CmsNavigationData;
33
+ error: Error;
34
+ isError: true;
35
+ isPending: false;
36
+ isLoading: false;
37
+ isLoadingError: false;
38
+ isRefetchError: true;
39
+ isSuccess: false;
40
+ isPlaceholderData: false;
41
+ status: "error";
42
+ dataUpdatedAt: number;
43
+ errorUpdatedAt: number;
44
+ failureCount: number;
45
+ failureReason: Error | null;
46
+ errorUpdateCount: number;
47
+ isFetched: boolean;
48
+ isFetchedAfterMount: boolean;
49
+ isFetching: boolean;
50
+ isInitialLoading: boolean;
51
+ isPaused: boolean;
52
+ isRefetching: boolean;
53
+ isStale: boolean;
54
+ isEnabled: boolean;
55
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<CmsNavigationData, Error>>;
56
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
57
+ } | {
58
+ node: import("./models.js").CmsNavigationNode | undefined;
59
+ data: CmsNavigationData;
60
+ error: null;
61
+ isError: false;
62
+ isPending: false;
63
+ isLoading: false;
64
+ isLoadingError: false;
65
+ isRefetchError: false;
66
+ isSuccess: true;
67
+ isPlaceholderData: false;
68
+ status: "success";
69
+ dataUpdatedAt: number;
70
+ errorUpdatedAt: number;
71
+ failureCount: number;
72
+ failureReason: Error | null;
73
+ errorUpdateCount: number;
74
+ isFetched: boolean;
75
+ isFetchedAfterMount: boolean;
76
+ isFetching: boolean;
77
+ isInitialLoading: boolean;
78
+ isPaused: boolean;
79
+ isRefetching: boolean;
80
+ isStale: boolean;
81
+ isEnabled: boolean;
82
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<CmsNavigationData, Error>>;
83
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
84
+ } | {
85
+ node: import("./models.js").CmsNavigationNode | undefined;
86
+ data: undefined;
87
+ error: Error;
88
+ isError: true;
89
+ isPending: false;
90
+ isLoading: false;
91
+ isLoadingError: true;
92
+ isRefetchError: false;
93
+ isSuccess: false;
94
+ isPlaceholderData: false;
95
+ status: "error";
96
+ dataUpdatedAt: number;
97
+ errorUpdatedAt: number;
98
+ failureCount: number;
99
+ failureReason: Error | null;
100
+ errorUpdateCount: number;
101
+ isFetched: boolean;
102
+ isFetchedAfterMount: boolean;
103
+ isFetching: boolean;
104
+ isInitialLoading: boolean;
105
+ isPaused: boolean;
106
+ isRefetching: boolean;
107
+ isStale: boolean;
108
+ isEnabled: boolean;
109
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<CmsNavigationData, Error>>;
110
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
111
+ } | {
112
+ node: import("./models.js").CmsNavigationNode | undefined;
113
+ data: undefined;
114
+ error: null;
115
+ isError: false;
116
+ isPending: true;
117
+ isLoading: true;
118
+ isLoadingError: false;
119
+ isRefetchError: false;
120
+ isSuccess: false;
121
+ isPlaceholderData: false;
122
+ status: "pending";
123
+ dataUpdatedAt: number;
124
+ errorUpdatedAt: number;
125
+ failureCount: number;
126
+ failureReason: Error | null;
127
+ errorUpdateCount: number;
128
+ isFetched: boolean;
129
+ isFetchedAfterMount: boolean;
130
+ isFetching: boolean;
131
+ isInitialLoading: boolean;
132
+ isPaused: boolean;
133
+ isRefetching: boolean;
134
+ isStale: boolean;
135
+ isEnabled: boolean;
136
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<CmsNavigationData, Error>>;
137
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
138
+ } | {
139
+ node: import("./models.js").CmsNavigationNode | undefined;
140
+ data: undefined;
141
+ error: null;
142
+ isError: false;
143
+ isPending: true;
144
+ isLoadingError: false;
145
+ isRefetchError: false;
146
+ isSuccess: false;
147
+ isPlaceholderData: false;
148
+ status: "pending";
149
+ dataUpdatedAt: number;
150
+ errorUpdatedAt: number;
151
+ failureCount: number;
152
+ failureReason: Error | null;
153
+ errorUpdateCount: number;
154
+ isFetched: boolean;
155
+ isFetchedAfterMount: boolean;
156
+ isFetching: boolean;
157
+ isLoading: boolean;
158
+ isInitialLoading: boolean;
159
+ isPaused: boolean;
160
+ isRefetching: boolean;
161
+ isStale: boolean;
162
+ isEnabled: boolean;
163
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<CmsNavigationData, Error>>;
164
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
165
+ } | {
166
+ node: import("./models.js").CmsNavigationNode | undefined;
167
+ data: CmsNavigationData;
168
+ isError: false;
169
+ error: null;
170
+ isPending: false;
171
+ isLoading: false;
172
+ isLoadingError: false;
173
+ isRefetchError: false;
174
+ isSuccess: true;
175
+ isPlaceholderData: true;
176
+ status: "success";
177
+ dataUpdatedAt: number;
178
+ errorUpdatedAt: number;
179
+ failureCount: number;
180
+ failureReason: Error | null;
181
+ errorUpdateCount: number;
182
+ isFetched: boolean;
183
+ isFetchedAfterMount: boolean;
184
+ isFetching: boolean;
185
+ isInitialLoading: boolean;
186
+ isPaused: boolean;
187
+ isRefetching: boolean;
188
+ isStale: boolean;
189
+ isEnabled: boolean;
190
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<CmsNavigationData, Error>>;
191
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
192
+ };
193
+ //# sourceMappingURL=queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/queries.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAU,CAAC;AAE7E;;;;;GAKG;AACH,eAAO,MAAM,UAAU;oBACL,WAAW;;;qBAQV,MAAM,YAAY,WAAW;;;CAK/C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,qGAE9C;AAED,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,CAAC,SAAS,YAAY,EACpD,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,4DAO3D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG3C"}
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "@laconius/cms",
3
+ "version": "0.1.0",
4
+ "description": "Laconius CMS engine: page and component queries, the component registry, <CmsPage> / <CmsSlot>, useCmsComponentData and the content defaults.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "main": "./lib/module/index.js",
8
+ "types": "./lib/typescript/src/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "source": "./src/index.ts",
12
+ "types": "./lib/typescript/src/index.d.ts",
13
+ "default": "./lib/module/index.js"
14
+ },
15
+ "./package.json": "./package.json"
16
+ },
17
+ "files": [
18
+ "src",
19
+ "lib",
20
+ "!**/*.test.*"
21
+ ],
22
+ "sideEffects": false,
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "peerDependencies": {
27
+ "@laconius/core": "0.1.0",
28
+ "@laconius/ui": "0.1.0",
29
+ "@tanstack/react-query": "^5",
30
+ "react": ">=19.0.0",
31
+ "react-native": "*"
32
+ },
33
+ "devDependencies": {
34
+ "@laconius/core": "0.1.0",
35
+ "@laconius/ui": "0.1.0",
36
+ "@tanstack/react-query": "^5.102.8",
37
+ "@types/react": "~19.2.2",
38
+ "react": "19.2.3",
39
+ "react-native": "0.86.3",
40
+ "react-native-builder-bob": "^0.43.0",
41
+ "typescript": "~6.0.3",
42
+ "vitest": "^3.2.4"
43
+ },
44
+ "react-native-builder-bob": {
45
+ "source": "src",
46
+ "output": "lib",
47
+ "targets": [
48
+ [
49
+ "module",
50
+ {
51
+ "esm": true
52
+ }
53
+ ],
54
+ [
55
+ "typescript",
56
+ {
57
+ "project": "tsconfig.build.json"
58
+ }
59
+ ]
60
+ ],
61
+ "exclude": "**/*.test.{ts,tsx}"
62
+ },
63
+ "scripts": {
64
+ "build": "bob build",
65
+ "clean": "rm -rf lib",
66
+ "typecheck": "tsc --noEmit",
67
+ "test": "vitest run"
68
+ }
69
+ }