@endora-commerce/page-builder-admin 0.100.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/LICENSE +21 -0
- package/README.md +49 -0
- package/dist/chrome/AssetPickers.d.ts +16 -0
- package/dist/chrome/AssetPickers.d.ts.map +1 -0
- package/dist/chrome/AssetPickers.js +112 -0
- package/dist/chrome/AssetPickers.js.map +1 -0
- package/dist/chrome/CatalogPickers.d.ts +6 -0
- package/dist/chrome/CatalogPickers.d.ts.map +1 -0
- package/dist/chrome/CatalogPickers.js +310 -0
- package/dist/chrome/CatalogPickers.js.map +1 -0
- package/dist/chrome/ColorPaletteModal.d.ts +11 -0
- package/dist/chrome/ColorPaletteModal.d.ts.map +1 -0
- package/dist/chrome/ColorPaletteModal.js +82 -0
- package/dist/chrome/ColorPaletteModal.js.map +1 -0
- package/dist/chrome/ColorPaletteProvider.d.ts +7 -0
- package/dist/chrome/ColorPaletteProvider.d.ts.map +1 -0
- package/dist/chrome/ColorPaletteProvider.js +40 -0
- package/dist/chrome/ColorPaletteProvider.js.map +1 -0
- package/dist/chrome/PageBuilderHeaderActions.d.ts +52 -0
- package/dist/chrome/PageBuilderHeaderActions.d.ts.map +1 -0
- package/dist/chrome/PageBuilderHeaderActions.js +242 -0
- package/dist/chrome/PageBuilderHeaderActions.js.map +1 -0
- package/dist/chrome/PageBuilderOverlayBridge.d.ts +10 -0
- package/dist/chrome/PageBuilderOverlayBridge.d.ts.map +1 -0
- package/dist/chrome/PageBuilderOverlayBridge.js +25 -0
- package/dist/chrome/PageBuilderOverlayBridge.js.map +1 -0
- package/dist/chrome/QuickTooltip.d.ts +8 -0
- package/dist/chrome/QuickTooltip.d.ts.map +1 -0
- package/dist/chrome/QuickTooltip.js +33 -0
- package/dist/chrome/QuickTooltip.js.map +1 -0
- package/dist/chrome/action-bar-target.d.ts +12 -0
- package/dist/chrome/action-bar-target.d.ts.map +1 -0
- package/dist/chrome/action-bar-target.js +37 -0
- package/dist/chrome/action-bar-target.js.map +1 -0
- package/dist/chrome/cms-page-builder-api.d.ts +21 -0
- package/dist/chrome/cms-page-builder-api.d.ts.map +1 -0
- package/dist/chrome/cms-page-builder-api.js +50 -0
- package/dist/chrome/cms-page-builder-api.js.map +1 -0
- package/dist/chrome/page-builder-data.d.ts +5 -0
- package/dist/chrome/page-builder-data.d.ts.map +1 -0
- package/dist/chrome/page-builder-data.js +12 -0
- package/dist/chrome/page-builder-data.js.map +1 -0
- package/dist/email/EmailBuilderActionBar.d.ts +8 -0
- package/dist/email/EmailBuilderActionBar.d.ts.map +1 -0
- package/dist/email/EmailBuilderActionBar.js +91 -0
- package/dist/email/EmailBuilderActionBar.js.map +1 -0
- package/dist/email/EmailEditorPane.d.ts +42 -0
- package/dist/email/EmailEditorPane.d.ts.map +1 -0
- package/dist/email/EmailEditorPane.js +637 -0
- package/dist/email/EmailEditorPane.js.map +1 -0
- package/dist/email/EmailRichTextField.d.ts +14 -0
- package/dist/email/EmailRichTextField.d.ts.map +1 -0
- package/dist/email/EmailRichTextField.js +45 -0
- package/dist/email/EmailRichTextField.js.map +1 -0
- package/dist/email/EmailRowLayoutPicker.d.ts +8 -0
- package/dist/email/EmailRowLayoutPicker.d.ts.map +1 -0
- package/dist/email/EmailRowLayoutPicker.js +17 -0
- package/dist/email/EmailRowLayoutPicker.js.map +1 -0
- package/dist/email/EmailVariableFields.d.ts +13 -0
- package/dist/email/EmailVariableFields.d.ts.map +1 -0
- package/dist/email/EmailVariableFields.js +49 -0
- package/dist/email/EmailVariableFields.js.map +1 -0
- package/dist/email/EmailVariablesProvider.d.ts +15 -0
- package/dist/email/EmailVariablesProvider.d.ts.map +1 -0
- package/dist/email/EmailVariablesProvider.js +54 -0
- package/dist/email/EmailVariablesProvider.js.map +1 -0
- package/dist/email/email-builder-plugin.d.ts +6 -0
- package/dist/email/email-builder-plugin.d.ts.map +1 -0
- package/dist/email/email-builder-plugin.js +14 -0
- package/dist/email/email-builder-plugin.js.map +1 -0
- package/dist/email/email-template-layout.d.ts +16 -0
- package/dist/email/email-template-layout.d.ts.map +1 -0
- package/dist/email/email-template-layout.js +55 -0
- package/dist/email/email-template-layout.js.map +1 -0
- package/dist/email/email-templates-api.d.ts +14 -0
- package/dist/email/email-templates-api.d.ts.map +1 -0
- package/dist/email/email-templates-api.js +54 -0
- package/dist/email/email-templates-api.js.map +1 -0
- package/dist/email/index.d.ts +33 -0
- package/dist/email/index.d.ts.map +1 -0
- package/dist/email/index.js +33 -0
- package/dist/email/index.js.map +1 -0
- package/dist/email/insert-at-cursor.d.ts +8 -0
- package/dist/email/insert-at-cursor.d.ts.map +1 -0
- package/dist/email/insert-at-cursor.js +12 -0
- package/dist/email/insert-at-cursor.js.map +1 -0
- package/dist/email/variables.d.ts +20 -0
- package/dist/email/variables.d.ts.map +1 -0
- package/dist/email/variables.js +41 -0
- package/dist/email/variables.js.map +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/package.json +69 -0
- package/tailwind.css +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EACL,eAAe,EACf,WAAW,GAIZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,GAElB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Insert `snippet` into `value` at `start`…`end` (selection). Returns next value + caret. */
|
|
2
|
+
export declare function insertAtCursor(value: string, snippet: string, start: number, end?: number): {
|
|
3
|
+
value: string;
|
|
4
|
+
selectionStart: number;
|
|
5
|
+
selectionEnd: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function varSnippet(key: string): string;
|
|
8
|
+
//# sourceMappingURL=insert-at-cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert-at-cursor.d.ts","sourceRoot":"","sources":["../../src/email/insert-at-cursor.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAc,GAClB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAMjE;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Insert `snippet` into `value` at `start`…`end` (selection). Returns next value + caret. */
|
|
2
|
+
export function insertAtCursor(value, snippet, start, end = start) {
|
|
3
|
+
const safeStart = Math.max(0, Math.min(start, value.length));
|
|
4
|
+
const safeEnd = Math.max(safeStart, Math.min(end, value.length));
|
|
5
|
+
const next = value.slice(0, safeStart) + snippet + value.slice(safeEnd);
|
|
6
|
+
const caret = safeStart + snippet.length;
|
|
7
|
+
return { value: next, selectionStart: caret, selectionEnd: caret };
|
|
8
|
+
}
|
|
9
|
+
export function varSnippet(key) {
|
|
10
|
+
return `{{var ${key}}}`;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=insert-at-cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert-at-cursor.js","sourceRoot":"","sources":["../../src/email/insert-at-cursor.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,OAAe,EACf,KAAa,EACb,MAAc,KAAK;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,SAAS,GAAG,IAAI,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The e-mail builder's own variable vocabulary — the part that belongs to no
|
|
3
|
+
* module (feature 091, P5b; `admin-component-contribution.md` Z1.2).
|
|
4
|
+
*
|
|
5
|
+
* `newsletterVariables` and `NEWSLETTER_BASE_VARIABLES` are **not** here: a
|
|
6
|
+
* subscriber e-mail, an unsubscribe URL and a web-view URL are `newsletter`'s
|
|
7
|
+
* domain vocabulary, all three of their consumers are `newsletter`'s own
|
|
8
|
+
* screens, and they live in `admin/src/modules/newsletter/email-variables.ts`.
|
|
9
|
+
* What stays is what any e-mail builder needs whichever module opened it: the
|
|
10
|
+
* branding pair the preview resolves, the two template snippets, and the merge.
|
|
11
|
+
*/
|
|
12
|
+
import type { EmailVariableDescriptor } from '@endora-commerce/contracts';
|
|
13
|
+
export interface EmailVariableItem extends EmailVariableDescriptor {
|
|
14
|
+
/** When set, insert this instead of `{{var key}}` (e.g. if/for snippets). */
|
|
15
|
+
snippet?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const BRANDING_VARIABLES: EmailVariableItem[];
|
|
18
|
+
export declare const COMMON_SNIPPETS: EmailVariableItem[];
|
|
19
|
+
export declare function mergeEmailVariables(declared: readonly EmailVariableDescriptor[] | undefined, extras?: readonly EmailVariableItem[]): EmailVariableItem[];
|
|
20
|
+
//# sourceMappingURL=variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../src/email/variables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE1E,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,EAajD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAa9C,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,GAAG,SAAS,EACxD,MAAM,GAAE,SAAS,iBAAiB,EAAO,GACxC,iBAAiB,EAAE,CAOrB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export const BRANDING_VARIABLES = [
|
|
2
|
+
{
|
|
3
|
+
key: 'branding.logoUrl',
|
|
4
|
+
label: 'Brand logo URL',
|
|
5
|
+
description: 'Resolved header logo for the current sales channel',
|
|
6
|
+
sampleValue: 'https://cdn.example/logo.png',
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
key: 'branding.accentColor',
|
|
10
|
+
label: 'Brand accent color',
|
|
11
|
+
description: 'Accent color used by buttons and highlights',
|
|
12
|
+
sampleValue: '#1f2937',
|
|
13
|
+
},
|
|
14
|
+
];
|
|
15
|
+
export const COMMON_SNIPPETS = [
|
|
16
|
+
{
|
|
17
|
+
key: 'snippet.if',
|
|
18
|
+
label: 'If block',
|
|
19
|
+
description: 'Conditional section',
|
|
20
|
+
snippet: '{{if path}}\n…\n{{/if}}',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
key: 'snippet.for',
|
|
24
|
+
label: 'For loop',
|
|
25
|
+
description: 'Iterate a list (e.g. order.items)',
|
|
26
|
+
snippet: '{{for item in order.items}}\n{{var item.name}}\n{{/for}}',
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
export function mergeEmailVariables(declared, extras = []) {
|
|
30
|
+
const byKey = new Map();
|
|
31
|
+
for (const v of BRANDING_VARIABLES)
|
|
32
|
+
byKey.set(v.key, v);
|
|
33
|
+
for (const v of declared ?? [])
|
|
34
|
+
byKey.set(v.key, { ...v });
|
|
35
|
+
for (const v of extras)
|
|
36
|
+
byKey.set(v.key, v);
|
|
37
|
+
for (const v of COMMON_SNIPPETS)
|
|
38
|
+
byKey.set(v.key, v);
|
|
39
|
+
return [...byKey.values()];
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.js","sourceRoot":"","sources":["../../src/email/variables.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD;QACE,GAAG,EAAE,kBAAkB;QACvB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,oDAAoD;QACjE,WAAW,EAAE,8BAA8B;KAC5C;IACD;QACE,GAAG,EAAE,sBAAsB;QAC3B,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,6CAA6C;QAC1D,WAAW,EAAE,SAAS;KACvB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAwB;IAClD;QACE,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,yBAAyB;KACnC;IACD;QACE,GAAG,EAAE,aAAa;QAClB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,0DAA0D;KACpE;CACF,CAAC;AAEF,MAAM,UAAU,mBAAmB,CACjC,QAAwD,EACxD,SAAuC,EAAE;IAEzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAA6B,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,kBAAkB;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,QAAQ,IAAI,EAAE;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3D,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,eAAe;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@endora-commerce/page-builder-admin` — the admin-side page-builder **chrome**:
|
|
3
|
+
* the header actions, the asset and catalog field factories, the colour palette,
|
|
4
|
+
* the component overlay bridge, the action-bar target and the empty-canvas
|
|
5
|
+
* predicate.
|
|
6
|
+
*
|
|
7
|
+
* ## Why this is a package and not a directory in `cms`
|
|
8
|
+
*
|
|
9
|
+
* Every file behind this barrel lived in `admin/src/modules/cms/components/`
|
|
10
|
+
* and named `cms` nowhere — 1887 lines that `cms`, `blog` and `invoices` all
|
|
11
|
+
* render, in `cms` because `cms` was the first builder written and for no other
|
|
12
|
+
* reason (D-192; `admin-component-contribution.md` Z1.2). `cms` owning it is the
|
|
13
|
+
* inversion D-192 refused, one hop out: `transactional_emails` would have had to
|
|
14
|
+
* depend on `cms` in order to build an e-mail.
|
|
15
|
+
*
|
|
16
|
+
* The kit refuses it for two reasons of **shape** that survive repairing every
|
|
17
|
+
* reach: R7, because every file here is a Puck component or field factory and
|
|
18
|
+
* the kit is what all 66 module packages' admin layers compile against, so
|
|
19
|
+
* `@measured/puck` would sit behind the admin design system for every one of
|
|
20
|
+
* them; and R5, because the kit publishes what the admin already uses rather
|
|
21
|
+
* than arriving as a barrel.
|
|
22
|
+
*
|
|
23
|
+
* So: a fourth member of the `page-builder` family beside
|
|
24
|
+
* `@endora-commerce/page-builder-core`, `@endora-commerce/cms-components` and
|
|
25
|
+
* `@endora-commerce/email-components`, in D-108's one `linked` group.
|
|
26
|
+
*
|
|
27
|
+
* ## Two subpaths
|
|
28
|
+
*
|
|
29
|
+
* `.` is this — the chrome any builder composes. `./email` is the e-mail builder
|
|
30
|
+
* that composes it, which `newsletter` and `transactional_emails` render.
|
|
31
|
+
*
|
|
32
|
+
* `admin/src` keeps a re-export shim at each old `modules/cms/components/…`
|
|
33
|
+
* path, so `cms`' own screens reach these bindings by the specifier they always
|
|
34
|
+
* used and the forwarding is the identity rather than a copy — which matters
|
|
35
|
+
* here more than it does for a stateless helper: `ColorPaletteProvider` is a
|
|
36
|
+
* React context and `action-bar-target` is a module-scoped store, and two copies
|
|
37
|
+
* of either are a `null` context and an action bar that never updates.
|
|
38
|
+
*/
|
|
39
|
+
export { emptyPageBuilderData, isEmptyPageBuilderData } from './chrome/page-builder-data.js';
|
|
40
|
+
export { getActionBarTarget, getHoverActionBarTarget, getSelectedActionBarTarget, setHoverActionBarTarget, setSelectedActionBarTarget, useActionBarTarget, } from './chrome/action-bar-target.js';
|
|
41
|
+
export type { ActionBarTarget } from './chrome/action-bar-target.js';
|
|
42
|
+
export { QuickTooltip, wrapQuickTooltip } from './chrome/QuickTooltip.js';
|
|
43
|
+
export { PageBuilderOverlayBridge } from './chrome/PageBuilderOverlayBridge.js';
|
|
44
|
+
export { PageBuilderHeaderActions, PageBuilderHeaderShell, PageBuilderTemplateActions, } from './chrome/PageBuilderHeaderActions.js';
|
|
45
|
+
export type { ApplyTemplateOption } from './chrome/PageBuilderHeaderActions.js';
|
|
46
|
+
export { createImageAssetField, createImageSourceField, createImageUrlField, createSlideImageField, createVideoAssetField, inputClassName, pickerButtonClass, } from './chrome/AssetPickers.js';
|
|
47
|
+
export type { SlideImageValue } from './chrome/AssetPickers.js';
|
|
48
|
+
export { createCategorySlugField, createCategorySlugsField, createProductSlugField, createProductSlugsField, } from './chrome/CatalogPickers.js';
|
|
49
|
+
export { PageBuilderColorPaletteProvider } from './chrome/ColorPaletteProvider.js';
|
|
50
|
+
export { ColorPaletteModal } from './chrome/ColorPaletteModal.js';
|
|
51
|
+
export { getPageBuilderColorPalette, getPageBuilderDescriptor, putPageBuilderColorPalette, } from './chrome/cms-page-builder-api.js';
|
|
52
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,kCAAkC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@endora-commerce/page-builder-admin` — the admin-side page-builder **chrome**:
|
|
3
|
+
* the header actions, the asset and catalog field factories, the colour palette,
|
|
4
|
+
* the component overlay bridge, the action-bar target and the empty-canvas
|
|
5
|
+
* predicate.
|
|
6
|
+
*
|
|
7
|
+
* ## Why this is a package and not a directory in `cms`
|
|
8
|
+
*
|
|
9
|
+
* Every file behind this barrel lived in `admin/src/modules/cms/components/`
|
|
10
|
+
* and named `cms` nowhere — 1887 lines that `cms`, `blog` and `invoices` all
|
|
11
|
+
* render, in `cms` because `cms` was the first builder written and for no other
|
|
12
|
+
* reason (D-192; `admin-component-contribution.md` Z1.2). `cms` owning it is the
|
|
13
|
+
* inversion D-192 refused, one hop out: `transactional_emails` would have had to
|
|
14
|
+
* depend on `cms` in order to build an e-mail.
|
|
15
|
+
*
|
|
16
|
+
* The kit refuses it for two reasons of **shape** that survive repairing every
|
|
17
|
+
* reach: R7, because every file here is a Puck component or field factory and
|
|
18
|
+
* the kit is what all 66 module packages' admin layers compile against, so
|
|
19
|
+
* `@measured/puck` would sit behind the admin design system for every one of
|
|
20
|
+
* them; and R5, because the kit publishes what the admin already uses rather
|
|
21
|
+
* than arriving as a barrel.
|
|
22
|
+
*
|
|
23
|
+
* So: a fourth member of the `page-builder` family beside
|
|
24
|
+
* `@endora-commerce/page-builder-core`, `@endora-commerce/cms-components` and
|
|
25
|
+
* `@endora-commerce/email-components`, in D-108's one `linked` group.
|
|
26
|
+
*
|
|
27
|
+
* ## Two subpaths
|
|
28
|
+
*
|
|
29
|
+
* `.` is this — the chrome any builder composes. `./email` is the e-mail builder
|
|
30
|
+
* that composes it, which `newsletter` and `transactional_emails` render.
|
|
31
|
+
*
|
|
32
|
+
* `admin/src` keeps a re-export shim at each old `modules/cms/components/…`
|
|
33
|
+
* path, so `cms`' own screens reach these bindings by the specifier they always
|
|
34
|
+
* used and the forwarding is the identity rather than a copy — which matters
|
|
35
|
+
* here more than it does for a stateless helper: `ColorPaletteProvider` is a
|
|
36
|
+
* React context and `action-bar-target` is a module-scoped store, and two copies
|
|
37
|
+
* of either are a `null` context and an action bar that never updates.
|
|
38
|
+
*/
|
|
39
|
+
export { emptyPageBuilderData, isEmptyPageBuilderData } from './chrome/page-builder-data.js';
|
|
40
|
+
export { getActionBarTarget, getHoverActionBarTarget, getSelectedActionBarTarget, setHoverActionBarTarget, setSelectedActionBarTarget, useActionBarTarget, } from './chrome/action-bar-target.js';
|
|
41
|
+
export { QuickTooltip, wrapQuickTooltip } from './chrome/QuickTooltip.js';
|
|
42
|
+
export { PageBuilderOverlayBridge } from './chrome/PageBuilderOverlayBridge.js';
|
|
43
|
+
export { PageBuilderHeaderActions, PageBuilderHeaderShell, PageBuilderTemplateActions, } from './chrome/PageBuilderHeaderActions.js';
|
|
44
|
+
export { createImageAssetField, createImageSourceField, createImageUrlField, createSlideImageField, createVideoAssetField, inputClassName, pickerButtonClass, } from './chrome/AssetPickers.js';
|
|
45
|
+
export { createCategorySlugField, createCategorySlugsField, createProductSlugField, createProductSlugsField, } from './chrome/CatalogPickers.js';
|
|
46
|
+
export { PageBuilderColorPaletteProvider } from './chrome/ColorPaletteProvider.js';
|
|
47
|
+
export { ColorPaletteModal } from './chrome/ColorPaletteModal.js';
|
|
48
|
+
export { getPageBuilderColorPalette, getPageBuilderDescriptor, putPageBuilderColorPalette, } from './chrome/cms-page-builder-api.js';
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,kCAAkC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@endora-commerce/page-builder-admin",
|
|
3
|
+
"version": "0.100.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"endora": {
|
|
6
|
+
"type": "admin-ui"
|
|
7
|
+
},
|
|
8
|
+
"description": "The admin-side page-builder chrome and the e-mail builder (feature 091, P5b; D-192). `.` is the editor chrome `cms`, `blog` and `invoices` render — header actions, asset and catalog field factories, the colour palette, the overlay bridge and the action-bar target — which named `cms` nowhere and lived there only because `cms` was the first builder written. `./email` is the e-mail builder those same primitives compose, which `newsletter` and `transactional_emails` render. A fourth member of the `page-builder` family, in D-108's one `linked` group.",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/endora-commerce/endora-commerce.git",
|
|
13
|
+
"directory": "packages/page-builder-admin"
|
|
14
|
+
},
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"default": "./dist/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./email": {
|
|
24
|
+
"types": "./dist/email/index.d.ts",
|
|
25
|
+
"default": "./dist/email/index.js"
|
|
26
|
+
},
|
|
27
|
+
"./tailwind.css": "./tailwind.css",
|
|
28
|
+
"./package.json": "./package.json"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist",
|
|
32
|
+
"tailwind.css"
|
|
33
|
+
],
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=22.18.0"
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"@measured/puck": "*",
|
|
39
|
+
"lucide-react": "^1.11.0",
|
|
40
|
+
"react": "^19.0.0",
|
|
41
|
+
"react-dom": "^19.0.0",
|
|
42
|
+
"@endora-commerce/admin-kit": "0.100.0",
|
|
43
|
+
"@endora-commerce/cms-components": "^0.100.0",
|
|
44
|
+
"@endora-commerce/contracts": "0.100.0",
|
|
45
|
+
"@endora-commerce/email-components": "^0.100.0",
|
|
46
|
+
"@endora-commerce/page-builder-core": "^0.100.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@measured/puck": "^0.20.2",
|
|
50
|
+
"@types/node": "^22.9.0",
|
|
51
|
+
"@types/react": "^19.2.14",
|
|
52
|
+
"@types/react-dom": "^19.2.3",
|
|
53
|
+
"lucide-react": "^1.11.0",
|
|
54
|
+
"react": "^19.2.5",
|
|
55
|
+
"react-dom": "^19.2.5",
|
|
56
|
+
"typescript": "^5.9.3",
|
|
57
|
+
"vite": "^7.3.2",
|
|
58
|
+
"@endora-commerce/admin-kit": "0.100.0",
|
|
59
|
+
"@endora-commerce/cms-components": "^0.100.0",
|
|
60
|
+
"@endora-commerce/contracts": "0.100.0",
|
|
61
|
+
"@endora-commerce/email-components": "^0.100.0",
|
|
62
|
+
"@endora-commerce/page-builder-core": "^0.100.0"
|
|
63
|
+
},
|
|
64
|
+
"scripts": {
|
|
65
|
+
"build": "tsc -p tsconfig.build.json",
|
|
66
|
+
"typecheck": "tsc -p tsconfig.json",
|
|
67
|
+
"lint": "eslint src"
|
|
68
|
+
}
|
|
69
|
+
}
|
package/tailwind.css
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* @endora-commerce/page-builder-admin — AUTO-GENERATED by `pnpm --filter backend run manifests:generate`.
|
|
2
|
+
*
|
|
3
|
+
* The `@source` directives this package asks its host to scan
|
|
4
|
+
* (`specs/110-instance-repository/contracts/admin-stylesheet-composition.md` R1).
|
|
5
|
+
* They resolve relative to **this file**, so they hold wherever the package is
|
|
6
|
+
* installed — a workspace link here, `node_modules` in a client's instance.
|
|
7
|
+
*
|
|
8
|
+
* The `dist` line is what a published tarball ships and is what an instance
|
|
9
|
+
* scans; the `src` line is inert there and is what keeps `pnpm --filter admin
|
|
10
|
+
* run dev` reading source in this repository. Do not edit: run
|
|
11
|
+
* `pnpm --filter backend run manifests:generate`.
|
|
12
|
+
*/
|
|
13
|
+
@source "./dist";
|
|
14
|
+
@source "./src";
|