pagepilot-visual-editor 1.0.28 → 1.0.30
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 +96 -0
- package/README.md +42 -28
- package/dist/PagePilotEditor.d.ts +12 -9
- package/dist/api/ApiClientContext.d.ts +1 -0
- package/dist/api/PagepilotApiClient.d.ts +7 -0
- package/dist/assets/aiChatbotIcon.d.ts +1 -0
- package/dist/blocks-internal/block-container/src/index.d.ts +1 -1
- package/dist/blocks-internal/block-heading/src/index.d.ts +1 -1
- package/dist/blocks-internal/block-list/src/index.d.ts +11 -1
- package/dist/blocks-internal/block-mdx/src/index.d.ts +47 -0
- package/dist/blocks-internal/block-quill/src/index.d.ts +48 -0
- package/dist/editor/PagePreviewDialog.d.ts +14 -0
- package/dist/editor/Topbar.d.ts +3 -1
- package/dist/editor/pageUrls.d.ts +25 -0
- package/dist/editor/publish/PageLiveSuccessDialog.d.ts +9 -0
- package/dist/editor/publish/PagePublishDialog.d.ts +1 -0
- package/dist/editor/publish/PublishAccessibilityPanel.d.ts +8 -0
- package/dist/editor/publish/a11yLinter.d.ts +8 -0
- package/dist/editor/recordDirty.d.ts +16 -0
- package/dist/editor/renderSections.d.ts +2 -2
- package/dist/editor/savePipeline.d.ts +40 -0
- package/dist/editor/types.d.ts +35 -0
- package/dist/editor-sample/App/InspectorDrawer/BehaviourPanel.d.ts +22 -0
- package/dist/editor-sample/App/InspectorDrawer/BrandPanel/BrandColorPalette.d.ts +9 -0
- package/dist/editor-sample/App/InspectorDrawer/BrandPanel/BrandEmptyLink.d.ts +8 -0
- package/dist/editor-sample/App/InspectorDrawer/BrandPanel/BrandPanel.styled.d.ts +22 -0
- package/dist/editor-sample/App/InspectorDrawer/BrandPanel/BrandSection.d.ts +8 -0
- package/dist/editor-sample/App/InspectorDrawer/BrandPanel/EmptyText.d.ts +6 -0
- package/dist/editor-sample/App/InspectorDrawer/BrandPanel/FontDetailsList.d.ts +6 -0
- package/dist/editor-sample/App/InspectorDrawer/BrandPanel/index.d.ts +5 -0
- package/dist/editor-sample/App/InspectorDrawer/BrandPanel/useBrandApply.d.ts +9 -0
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/ResponsiveDeviceTabs.d.ts +0 -2
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/blockStyleClipboard.d.ts +2 -8
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/index.d.ts +1 -4
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/EmailLayoutSidebarPanel.d.ts +2 -1
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/FlexColumns/ColumnSection.d.ts +2 -0
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/FormsPickerSidebarPanel.d.ts +2 -1
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/MdxSidebarPanel.d.ts +7 -0
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/MenuPickerSidebarPanel.d.ts +22 -0
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/QuillSidebarPanel.d.ts +8 -0
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/TextSidebarPanel.d.ts +2 -2
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/AnimationSection.d.ts +7 -5
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/HoverEffectSection.d.ts +1 -1
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/imageSizeUnit.d.ts +19 -0
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/ColorInput/Picker.d.ts +0 -2
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/VariableLinkHint.d.ts +8 -0
- package/dist/editor-sample/App/InspectorDrawer/EditorBehavior.d.ts +8 -2
- package/dist/editor-sample/App/InspectorDrawer/LayersPanelStyles.d.ts +1 -1
- package/dist/editor-sample/App/InspectorDrawer/LayoutPanel/AiSupportedBadge.d.ts +7 -0
- package/dist/editor-sample/App/InspectorDrawer/LayoutPanel/SectionsModal.d.ts +2 -10
- package/dist/editor-sample/App/InspectorDrawer/LayoutPanel/icons/index.d.ts +3 -5
- package/dist/editor-sample/App/InspectorDrawer/LayoutPanel/templateHelpers.d.ts +226 -0
- package/dist/editor-sample/App/InspectorDrawer/LayoutPanel/useDebouncedValue.d.ts +8 -0
- package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/AiFillAllDialog.d.ts +21 -0
- package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/AiGenerateButton.d.ts +14 -0
- package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/ScalarFieldRow.d.ts +4 -1
- package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/VariableGroupDialog.d.ts +19 -0
- package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/VariableGroupList.d.ts +5 -0
- package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/aiFill.d.ts +36 -0
- package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/styles.d.ts +14 -11
- package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/upgradeDialog.d.ts +8 -8
- package/dist/editor-sample/App/InspectorDrawer/behaviourFields.d.ts +30 -0
- package/dist/editor-sample/App/InspectorDrawer/index.d.ts +8 -1
- package/dist/editor-sample/App/InspectorDrawer/publish/BackgroundPanel.d.ts +6 -0
- package/dist/editor-sample/App/InspectorDrawer/renderBehaviourField.d.ts +7 -0
- package/dist/editor-sample/App/TemplatePanel/hooks/useMainBoxStyles.d.ts +2 -1
- package/dist/editor-sample/App/TemplatePanel/index.d.ts +2 -1
- package/dist/editor-sample/App/TemplatePanel/minimap/useMiniMapSync.d.ts +2 -2
- package/dist/editor-sample/App/hooks/page/saveMenuHrefEdits.d.ts +1 -1
- package/dist/editor-sample/App/hooks/page/useSaveHandler.d.ts +1 -0
- package/dist/editor-sample/App/hooks/useAutosave.d.ts +8 -3
- package/dist/editor-sample/App/hooks/useIsTemplateEditorRoute.d.ts +1 -0
- package/dist/editor-sample/App/hooks/useStretch.d.ts +9 -0
- package/dist/editor-sample/App/shared/UploadImage.d.ts +4 -0
- package/dist/editor-sample/App/shared/editor.styles.d.ts +11 -1
- package/dist/editor-sample/documents/blocks/Container/ContainerPropsSchema.d.ts +6 -4
- package/dist/editor-sample/documents/blocks/FormsPicker/FormsPropsSchema.d.ts +33 -2
- package/dist/editor-sample/documents/blocks/List/ListEditor.d.ts +8 -0
- package/dist/editor-sample/documents/blocks/Marquee/MarqueePropsSchema.d.ts +4 -0
- package/dist/editor-sample/documents/blocks/MenuPicker/MenuPropsSchema.d.ts +6 -0
- package/dist/editor-sample/documents/blocks/Table/TableCellEditor.d.ts +2 -1
- package/dist/editor-sample/documents/blocks/Table/TableImportDialog.styles.d.ts +11 -1
- package/dist/editor-sample/documents/blocks/Table/parseClipboardTable.d.ts +7 -0
- package/dist/editor-sample/documents/blocks/TabsBlock/TabsBlockPropsSchema.d.ts +6 -0
- package/dist/editor-sample/documents/blocks/Timer/TimerPropsSchema.d.ts +2 -0
- package/dist/editor-sample/documents/blocks/Timer/variants/CircularProgressView.d.ts +2 -1
- package/dist/editor-sample/documents/blocks/helpers/EditorChildrenIds/AddBlockMenu/blockMenuStyles.d.ts +1 -1
- package/dist/editor-sample/documents/blocks/helpers/EditorChildrenIds/AddBlockMenu/brandButtonDefaults.d.ts +1 -4
- package/dist/editor-sample/documents/blocks/helpers/EditorChildrenIds/AddBlockMenu/buttons.d.ts +0 -6
- package/dist/editor-sample/documents/blocks/helpers/InlineTextToolbar/dialogs/LinkDialog.d.ts +4 -1
- package/dist/editor-sample/documents/blocks/helpers/InlineTextToolbar/hooks/useToolbarCommands.d.ts +16 -4
- package/dist/editor-sample/documents/blocks/helpers/InlineTextToolbar/styles.d.ts +2 -2
- package/dist/editor-sample/documents/blocks/helpers/InlineTextToolbar/types.d.ts +2 -4
- package/dist/editor-sample/documents/blocks/helpers/block-wrappers/EditorBlockWrapper.d.ts +2 -3
- package/dist/editor-sample/documents/blocks/helpers/block-wrappers/TuneMenu.styles.d.ts +17 -0
- package/dist/editor-sample/documents/blocks/helpers/block-wrappers/saveAsTemplateUtils.d.ts +29 -1
- package/dist/editor-sample/documents/blocks/helpers/documentUtils.d.ts +33 -26
- package/dist/editor-sample/documents/blocks/helpers/variableBinding.d.ts +9 -0
- package/dist/editor-sample/documents/editor/EditorBlock.d.ts +2 -6
- package/dist/editor-sample/documents/editor/EditorContext.d.ts +77 -20
- package/dist/editor-sample/documents/editor/LazyEditorBlock.d.ts +1 -0
- package/dist/editor-sample/documents/editor/core.d.ts +492 -390
- package/dist/editor-sample/documents/editor/templateVariables.d.ts +151 -14
- package/dist/editor-sample/documents/editor/useRootFontFamily.d.ts +10 -0
- package/dist/editor-sample/utils/editorStorageKey.d.ts +2 -0
- package/dist/editor-sample/utils/localStoragePref.d.ts +2 -0
- package/dist/email-builder-core/blocks/Container/ContainerPropsSchema.d.ts +1 -1
- package/dist/email-builder-core/blocks/EmailLayout/EmailLayoutReader.d.ts +1 -1
- package/dist/email-builder-core/blocks/TabsBlock/TabsBlockPropsSchema.d.ts +6 -0
- package/dist/email-builder-core/blocks/Timer/variants/CircularProgressView.d.ts +5 -1
- package/dist/email-builder-core/blocks/Timer/variants/DigitalFlipView.d.ts +4 -1
- package/dist/email-builder-core/blocks/Timer/variants/TextInlineView.d.ts +3 -1
- package/dist/email-builder-core/blocks/helpers/blockStyleHelpers.d.ts +22 -0
- package/dist/email-builder-core/renderers/pageScripts.d.ts +0 -1
- package/dist/email-builder-core/renderers/themeTokens.d.ts +5 -126
- package/dist/host-stubs/history.d.ts +5 -0
- package/dist/host-stubs/hooks/useTenantFeatureCutoff.d.ts +8 -0
- package/dist/host-stubs/hooks/useTenantPlan.d.ts +18 -0
- package/dist/host-stubs/i18nAhdDefaults.d.ts +1 -0
- package/dist/host-stubs/modules/auth/authCurrentTenant.d.ts +6 -0
- package/dist/host-stubs/modules/forms/formsService.d.ts +3 -1
- package/dist/host-stubs/modules/forms/useFormsList.d.ts +4 -1
- package/dist/host-stubs/modules/menu/menuService.d.ts +4 -0
- package/dist/host-stubs/modules/page/pageService.d.ts +11 -0
- package/dist/host-stubs/modules/settings/settingsActions.d.ts +2 -0
- package/dist/host-stubs/modules/settings/settingsSelectors.d.ts +4 -0
- package/dist/host-stubs/modules/shared/axios/authAxios.d.ts +16 -0
- package/dist/host-stubs/modules/shared/constants.d.ts +14 -0
- package/dist/host-stubs/modules/store.d.ts +4 -0
- package/dist/host-stubs/modules/template/templateEnumerators.d.ts +19 -0
- package/dist/host-stubs/modules/tour/injectTourIntoPage.d.ts +20 -0
- package/dist/host-stubs/style/icons.d.ts +57 -0
- package/dist/host-stubs/utils/dateFormats.d.ts +1 -0
- package/dist/host-stubs/view/branding/brandDefaultFont.d.ts +3 -1
- package/dist/host-stubs/view/branding/styles/BrandIcons.d.ts +9 -0
- package/dist/host-stubs/view/branding/styles/types.d.ts +76 -0
- package/dist/host-stubs/view/configurations/ConfigurationIcons.d.ts +9 -0
- package/dist/host-stubs/view/demo/DemoIcons.d.ts +9 -0
- package/dist/host-stubs/view/images/Icons.d.ts +6 -0
- package/dist/host-stubs/view/media/MediaGalleryDialog/types.d.ts +47 -0
- package/dist/host-stubs/view/media/MediaGalleryDialog/utils/fileUtils.d.ts +3 -0
- package/dist/host-stubs/view/media/MediaGalleryDialog/utils/mediaTypes.d.ts +9 -0
- package/dist/host-stubs/view/media/MediaGalleryDialog.d.ts +12 -2
- package/dist/host-stubs/view/media/styles/MediaIcons.d.ts +13 -0
- package/dist/host-stubs/view/shared/Confetti.d.ts +5 -0
- package/dist/host-stubs/view/shared/PagePilotLoader.d.ts +2 -0
- package/dist/host-stubs/view/shared/UpgradeDialog/UpgradeDialogContext.d.ts +1 -0
- package/dist/host-stubs/view/shared/common/CopyToClipboard.d.ts +7 -0
- package/dist/host-stubs/view/shared/editors/MdxEditor.d.ts +8 -0
- package/dist/host-stubs/view/shared/editors/QuillEditor.d.ts +3 -0
- package/dist/host-stubs/view/shared/editors/sanitize.d.ts +4 -0
- package/dist/host-stubs/view/shared/editors/types.d.ts +7 -0
- package/dist/host-stubs/view/shared/media/TemplatePreviewMedia.d.ts +29 -0
- package/dist/host-stubs/view/shared/modals/ConfigureDialog.d.ts +7 -0
- package/dist/host-stubs/view/shared/modals/ManageTemplateModal.d.ts +5 -0
- package/dist/host-stubs/view/shared/speech/index.d.ts +17 -0
- package/dist/host-stubs/view/shared/styles/Table.styles.d.ts +3 -0
- package/dist/host-stubs/view/template/form/TemplateFormModal.d.ts +10 -0
- package/dist/host-stubs/view/template/form/fields/types.d.ts +7 -0
- package/dist/{index-DcN8zC8_.js → index-B8pdGALF.js} +86258 -73803
- package/dist/{index-SYmY8c1I.cjs → index-C-KL2oQP.cjs} +1 -1
- package/dist/{index-Cp5AeqH5.js → index-CStZQ7E0.js} +1 -1
- package/dist/index-DVx38kGU.cjs +1553 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/render-core/combineSections.d.ts +33 -3
- package/dist/render-core/dateFormats.d.ts +14 -3
- package/dist/render-core/stubs/pickerEmptyState.d.ts +2 -0
- package/dist/render-core/stubs/styleIcons.d.ts +1 -0
- package/dist/render.cjs +281 -219
- package/dist/render.js +9858 -8266
- package/dist/style.css +1 -1
- package/dist/{xlsx-vznvhtjT.cjs → xlsx-DUs4Mvqq.cjs} +1 -1
- package/dist/{xlsx-Bk2GErZO.js → xlsx-bYU68TCR.js} +1 -1
- package/package.json +1 -1
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/ResponsiveEditingBanner.d.ts +0 -13
- package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/BoxShadowControls.d.ts +0 -19
- package/dist/editor-sample/documents/blocks/AppBannerPicker/appBanner.styled.d.ts +0 -2
- package/dist/email-builder-core/blocks/boxShadowSchema.d.ts +0 -23
- package/dist/index-Br_dDd3Z.cjs +0 -1493
package/CHANGELOG.md
CHANGED
|
@@ -6,7 +6,38 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
### Changed
|
|
10
|
+
- Re-synced the vendored editor (`editor-sample/`, `email-builder-core/`,
|
|
11
|
+
`blocks-internal/`) with ahd-fe `master` (82ec6ec4b). 358 of 453 shared
|
|
12
|
+
files are now byte-identical. The rest differ only where the standalone
|
|
13
|
+
build needs it: pagepilot API wiring, no dayjs / x-date-pickers / lab /
|
|
14
|
+
react-hook-form / react-select dependencies, MUI 6 + zod 4 typing, and
|
|
15
|
+
pagepilot-named i18n keys. Upstream behaviour pulled in includes:
|
|
16
|
+
- Every block sidebar panel re-laid out into ahd-fe's collapsible
|
|
17
|
+
Content / Appearance / Typography / Layout / Spacing / Border / Effects
|
|
18
|
+
sections, with per-device (desktop / tablet / mobile) values and margin.
|
|
19
|
+
- Inline text toolbar: link editing on click, link underline, table row
|
|
20
|
+
background, font-family apply, per-device font sizes.
|
|
21
|
+
- Brand panel (new rail tab, `panels.brand`), Manage Templates dialog,
|
|
22
|
+
variable groups, AI fill for variables (through `apiConfig`), schema
|
|
23
|
+
markup in the SEO panel, Section Library rewrite (global / private
|
|
24
|
+
sources, plan lock, AI badge), resizable / collapsible inspector.
|
|
25
|
+
- Legacy Markdown (Mdx) and Quill blocks render again; their rich editors
|
|
26
|
+
fall back to plain source textareas.
|
|
27
|
+
- Reader: per-device `responsive` resolution and `ahd-<id>` wrapper ids.
|
|
28
|
+
- Host stubs: `@/` imports now resolve like `src/` (vite + tsconfig). The
|
|
29
|
+
English strings for every referenced i18n key are generated from ahd-fe's
|
|
30
|
+
`en.tsx` (`host-stubs/i18nAhdDefaults.ts`). The media gallery stub is a
|
|
31
|
+
working URL picker, so every "Upload / Replace media" button works.
|
|
32
|
+
- `onUpgrade` may now receive ahd-fe's optional `{ title, description }`.
|
|
33
|
+
|
|
9
34
|
### Fixed
|
|
35
|
+
- `renderToStaticHtml` (the `./render` subpath) no longer coerces Progress,
|
|
36
|
+
Breadcrumb, Markdown and Quill blocks to Text — its block allow-list now
|
|
37
|
+
matches the Reader's 41 block types exactly.
|
|
38
|
+
- The `./render` bundle stays MUI / emotion-free: the IFrame block's editor
|
|
39
|
+
placeholder (shown when no URL is set) is stubbed out for Node renders.
|
|
40
|
+
Before, an IFrame without a URL crashed server-side rendering.
|
|
10
41
|
- Re-synced the renderer (`email-builder-core/` + `blocks-internal/`) with
|
|
11
42
|
ahd-fe, so server-side `renderToStaticHtml` output matches what the editor
|
|
12
43
|
publishes on Save. Pages regenerated by ahd-be's `pagebypath?update=true`
|
|
@@ -26,12 +57,77 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
26
57
|
- Published scripts (tabs, carousel, pagination, timer, animation,
|
|
27
58
|
demo-scale) are now referenced by hosted URL, matching ahd-fe, instead of
|
|
28
59
|
being inlined.
|
|
60
|
+
- The `activeStepIndex` prop now also selects that section in the editor
|
|
61
|
+
store. Before, the canvas showed section N while saves wrote the canvas
|
|
62
|
+
into section 0.
|
|
63
|
+
- With `apiConfig`, a single-document record's save sent no content (its
|
|
64
|
+
`contentMetadata` was stripped and there were no sections). It now sends
|
|
65
|
+
one section, as ahd-fe does.
|
|
29
66
|
|
|
30
67
|
### Added
|
|
31
68
|
- `recordType` render option. EmailLayout detects the record type from the
|
|
32
69
|
browser URL, and Node has none, so a page with no authored width rendered
|
|
33
70
|
at 320px. The pageId / pagePath shapes now default to `"page"`. Sync
|
|
34
71
|
callers rendering a page should pass `recordType: "page"`.
|
|
72
|
+
- Editor shell parity with ahd-fe's page editor:
|
|
73
|
+
- **"Page is live" dialog** after a publish through `apiConfig`: the
|
|
74
|
+
live URL plus, when the tenant has its own domain, the preview URL on
|
|
75
|
+
it, each with copy and open buttons.
|
|
76
|
+
- **Accessibility check** in the publish dialog (port of ahd-fe's
|
|
77
|
+
`a11yLinter` + `PublishAccessibilityPanel`).
|
|
78
|
+
- **Plan-gated scheduling** in the publish dialog: below Pro, the date
|
|
79
|
+
fields show "✦ Upgrade" and a date after today opens the upgrade
|
|
80
|
+
prompt. The native date input is kept (no new dependencies).
|
|
81
|
+
- **Pagination script** toggle in the publish dialog's Scripts tab.
|
|
82
|
+
- **Page preview** rebuilt on ahd-fe's `PagePreviewDialog`: syncs the
|
|
83
|
+
current section first, renders inside the `pagePilotStyles.css` +
|
|
84
|
+
`.ahd-page-root` wrapper, shows external sections as anchors, and adds
|
|
85
|
+
"Open live URL" / "Open on your domain" buttons.
|
|
86
|
+
- **Keyboard shortcuts**: Ctrl/Cmd+Z, Ctrl/Cmd+Y and Ctrl/Cmd+Shift+Z for
|
|
87
|
+
undo / redo; Ctrl/Cmd+B toggles bold on a selected Heading.
|
|
88
|
+
- **Built-in Publish ▾ menu** when the host passes no `onPublishMenu`:
|
|
89
|
+
Publish, Live URL (live pages) and Save as Draft.
|
|
90
|
+
- The initial canvas device comes from `record.device`; switching device
|
|
91
|
+
scrolls the selected block back into view.
|
|
92
|
+
- `SaveChangesPayload` gains optional `status`, `sections` (exactly what is
|
|
93
|
+
sent to `upsert-page-item`), `schedule` and `response`. Existing fields
|
|
94
|
+
are unchanged.
|
|
95
|
+
- `combineSections`: `injectPaginationScript` and `rootOverrides` render
|
|
96
|
+
options, plus `externalSectionAnchorHtml` / `wrapSectionsInDocumentShell`
|
|
97
|
+
helpers.
|
|
98
|
+
|
|
99
|
+
### Changed
|
|
100
|
+
- Save Changes and autosave now save with the record's **current status**
|
|
101
|
+
(ahd-fe's `onShowHtml(record.status)`) instead of always `"draft"`, so
|
|
102
|
+
saving a live page keeps it live. Save Draft / Save as Draft still send
|
|
103
|
+
`"draft"`; Publish sends `"live"`.
|
|
104
|
+
- Save / publish HTML now goes through a port of ahd-fe's `useSaveHandler`
|
|
105
|
+
pipeline (`src/editor/savePipeline.ts`): template variables are baked into
|
|
106
|
+
the published HTML while the saved document keeps them editable; page
|
|
107
|
+
records save `<body>` inner HTML only; fonts ship inline
|
|
108
|
+
(`injectFontAssets: true`); `record.bodyBottom` is appended; an existing
|
|
109
|
+
AHD integration snippet is preserved. A single-document record now sends
|
|
110
|
+
one synthesized section to the API, as ahd-fe does.
|
|
111
|
+
- After a successful save or publish the API response is merged back into
|
|
112
|
+
the record (reported through `onUpdateRecord`), the undo history is reset,
|
|
113
|
+
and "Changes saved" shows. Publish now also shows "Changes saved".
|
|
114
|
+
- External (client-side) sections render as an empty `<div id=identifier>`
|
|
115
|
+
anchor on save, publish, preview and in `renderToStaticHtml` (previously
|
|
116
|
+
their stored `content` was used).
|
|
117
|
+
- Switching sections loads the new section with a fresh undo history (like
|
|
118
|
+
ahd-fe's `loadStepDocument`): it no longer marks the editor dirty, and
|
|
119
|
+
Undo can't walk back into another section's document. Adding or deleting
|
|
120
|
+
a section is a single undoable step.
|
|
121
|
+
- Dirty tracking now also covers record-level changes: sections added,
|
|
122
|
+
deleted, renamed, reordered or retyped, edits flushed from other sections,
|
|
123
|
+
and sidebar-edited page fields (SEO meta, head, body bottom, …).
|
|
124
|
+
- Zoom controls are page-only, hidden below the `lg` breakpoint, and show a
|
|
125
|
+
toast at the 25% / 100% limits instead of disabling.
|
|
126
|
+
- Undo, Redo, More, Preview and Publish are disabled while a save runs.
|
|
127
|
+
- The tab-close "Leave site?" prompt is skipped while "Changes saved" shows.
|
|
128
|
+
- The canvas now shows the external-section placeholder for the active
|
|
129
|
+
section (the flag is synced to the editor store and passed to the
|
|
130
|
+
inspector and canvas).
|
|
35
131
|
|
|
36
132
|
## [1.0.27] — 2026-09-21
|
|
37
133
|
|
package/README.md
CHANGED
|
@@ -113,7 +113,7 @@ built-in layout doesn't scale unexpectedly.
|
|
|
113
113
|
* only when template has vars
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
-
- **Left rail** — up to
|
|
116
|
+
- **Left rail** — up to 8 panels: **Style**, **Layout**, **Inspect**, **Layers**, **Variables**, **SEO**, **Brand**, **Pagepilot** (each can be toggled off via the `panels` prop, e.g. `panels={{ brand: false }}`). Brand lists the workspace's brand colours and fonts, as in ahd-fe; the standalone build has no tenant branding source, so it shows ahd-fe's empty state. Variables auto-hides unless a template with fields is applied or a repeatable container is selected. Pagepilot currently renders a "Coming soon" placeholder — the full AI page generator lands in a future release.
|
|
117
117
|
- **Topbar** — every control is individually toggleable via the `topbar` prop. Includes zoom out / zoom-% / zoom in (also driven by Ctrl/Cmd + wheel) / undo / redo / **deselect block** (auto-hidden when nothing is selected) / save / **auto save** (opt-in) / desktop-tablet-mobile / theme / more menu / fullscreen / preview / publish.
|
|
118
118
|
- **Canvas** — the block-based page editor. Click the empty-state "Add first section" or the ⋮ → Add Section. A **minimap** overview (togglable from the 3-dot menu) docks to the bottom-right and lets you click / drag to scroll long pages. Unsaved edits show the browser's native "Leave site?" prompt on tab close or reload.
|
|
119
119
|
- **Block TuneMenu** — appears above any selected block: **drag handle** (native reorder) / move up / move down / delete / **open in Layers** / **edit variables** (template-bound blocks only) / **more menu** (Save as template / Duplicate / Copy / Paste / **Replace** / Hide).
|
|
@@ -277,9 +277,9 @@ type BlockToggles = Partial<Record<BlockKey, boolean>>;
|
|
|
277
277
|
|---|---|---|
|
|
278
278
|
| `onUpdateRecord` | `(record: PageRecord) => void` | Whenever the editor mutates the document, adds/removes/reorders sections, etc. The host owns the record state and should call `setState`/equivalent here. |
|
|
279
279
|
| `onChange` | `(document: any) => void` | Lower-level: fires on every document tree mutation. Use when you only need the canvas document, not the full record. |
|
|
280
|
-
| `onSaveChanges` | `(payload: SaveChangesPayload) => Promise<boolean \| void> \| boolean \| void` | Fires
|
|
280
|
+
| `onSaveChanges` | `(payload: SaveChangesPayload) => Promise<boolean \| void> \| boolean \| void` | Fires on **Save Changes**, autosave, and **Save Draft / Save as Draft**. Receives the full payload (record + document + rendered HTML + `status` + `sections`). Save Changes and autosave keep the record's current `status` (a live page stays live); the draft actions send `"draft"`. Return `true` (or void) for success, `false` to indicate the save failed. |
|
|
281
281
|
| `onPublish` | `(payload: SaveChangesPayload) => Promise<void> \| void` | Fires when the **Publish** button is clicked. Same payload as Save. |
|
|
282
|
-
| `onPublishMenu` | `(anchorEl: HTMLElement, payload: SaveChangesPayload) => void` | Fires when the small ▾ arrow next to Publish is clicked. The host can open any custom popover/menu/dialog anchored to `anchorEl`. **Omit to
|
|
282
|
+
| `onPublishMenu` | `(anchorEl: HTMLElement, payload: SaveChangesPayload) => void` | Fires when the small ▾ arrow next to Publish is clicked. The host can open any custom popover/menu/dialog anchored to `anchorEl`. **Omit it to get the built-in menu**: Publish, **Live URL** (when the page is live and the tenant is known) and **Save as Draft**. |
|
|
283
283
|
| `renderPublish` | `({ payload, onPublish }) => ReactNode` | **Fully replaces** the Publish split-button group with the host's component. When provided, `onPublish` / `onPublishMenu` are ignored — host owns the slot. |
|
|
284
284
|
| `onBack` | `() => void` | Fires when the ← Back button is clicked. |
|
|
285
285
|
| `onTogglePreview` | `(html: string, doc: any) => void` | Optional preview hook. **If provided**, the host owns the preview UI (typically opening its own dialog with `html`). **If omitted**, the editor opens its built-in in-page preview dialog with desktop/tablet/mobile size toggles. |
|
|
@@ -304,9 +304,20 @@ interface SaveChangesPayload {
|
|
|
304
304
|
html: string; // rendered HTML — for multi-section pages, every
|
|
305
305
|
// section's fragment is concatenated inside one
|
|
306
306
|
// <html> shell with viewport meta + base font
|
|
307
|
+
status?: string | null; // status saved with: record's current status for
|
|
308
|
+
// Save Changes / autosave, "draft" / "live" for
|
|
309
|
+
// the draft / publish actions
|
|
310
|
+
sections?: any[]; // sections exactly as sent to upsert-page-item
|
|
311
|
+
// (one synthesized section for single-doc records)
|
|
312
|
+
schedule?: { startDate?: Date | null; endDate?: Date | null };
|
|
313
|
+
// publish-dialog schedule, when submitted
|
|
314
|
+
response?: any; // upsert-page-item response (apiConfig only)
|
|
307
315
|
}
|
|
308
316
|
```
|
|
309
317
|
|
|
318
|
+
`status`, `sections`, `schedule` and `response` are additive — existing
|
|
319
|
+
hosts that destructure `{ record, document, html }` see no change.
|
|
320
|
+
|
|
310
321
|
**Multi-section deduplication.** When `record.sections[]` is present, the
|
|
311
322
|
payload's `record` is stripped down — the record-level `contentMetadata`
|
|
312
323
|
and any empty `behaviour` / `steps` are removed because sections are the
|
|
@@ -591,13 +602,15 @@ Authorization: Bearer ${authToken}
|
|
|
591
602
|
"data": {
|
|
592
603
|
...record, // full record — id, name, slug, tags, groups, tenant, …
|
|
593
604
|
"pageId": "6a43bc20…", // === record.id
|
|
594
|
-
"status": "live" | "draft", //
|
|
605
|
+
"status": "live" | "draft", // record's current status for Save Changes / autosave,
|
|
606
|
+
// "draft" for Save Draft, "live" for Publish
|
|
595
607
|
"sections": [ // rendered sections (source of truth for multi-section pages)
|
|
596
608
|
{
|
|
597
609
|
"title": "Section 1",
|
|
598
610
|
"sectionType": "internal",
|
|
599
611
|
"identifier": "section-1784032010220",
|
|
600
|
-
"content": "<div …>…rendered HTML…</div>",
|
|
612
|
+
"content": "<div …>…rendered HTML…</div>", // <body> inner HTML, variables baked;
|
|
613
|
+
// external sections: <div id="identifier"></div>
|
|
601
614
|
"contentMetadata": {
|
|
602
615
|
"document": { "root": { "type": "EmailLayout", … }, "block-…": {…} }
|
|
603
616
|
}
|
|
@@ -609,7 +622,7 @@ Authorization: Bearer ${authToken}
|
|
|
609
622
|
}
|
|
610
623
|
```
|
|
611
624
|
|
|
612
|
-
**Same shape ahd-fe writes.** The rendered `sections[].content` HTML is what the pagepilot public page-serving layer reads.
|
|
625
|
+
**Same shape ahd-fe writes.** The rendered `sections[].content` HTML is what the pagepilot public page-serving layer reads. After a successful write the editor merges the response back into the record (reported through `onUpdateRecord`), resets the dirty state and undo history, and shows **Changes saved**.
|
|
613
626
|
|
|
614
627
|
**Failure handling.** Any non-2xx response throws inside the editor. Without `onApiError`, the error is logged to `console.error` and the Save button stays visually "dirty" (no state change). Passing `onApiError` lets you surface it to the user:
|
|
615
628
|
|
|
@@ -627,11 +640,14 @@ Authorization: Bearer ${authToken}
|
|
|
627
640
|
|
|
628
641
|
When `apiConfig` is set, clicking **Publish** opens a full dialog instead of firing `onPublish` immediately. The dialog mirrors ahd-fe's `PagePublishDialog`:
|
|
629
642
|
|
|
630
|
-
- **Basic Info** tab: page name, slug, publish date, "All Time Live" toggle, end date (when off).
|
|
643
|
+
- **Basic Info** tab: page name, slug, publish date, "All Time Live" toggle, end date (when off). Scheduling is plan-gated like ahd-fe: below the Pro plan the fields show **✦ Upgrade**, and picking a date after today opens the upgrade prompt (`onUpgrade`, or the built-in upgrade dialog) instead of applying it.
|
|
644
|
+
- **Accessibility check** (Basic Info tab): the active section is linted on open — missing alt text, unlabeled buttons, non-descriptive links, H1 count, skipped heading levels, duplicate landmarks. Findings show in a collapsible warning card; they don't block publishing.
|
|
631
645
|
- **Menu Links** tab: pick a tenant menu (fetched via `apiClient.listMenus`) and append this page as a new item to that menu's `configuration`.
|
|
632
|
-
- **Scripts & Styles** tab:
|
|
646
|
+
- **Scripts & Styles** tab: the stylesheet snippet for responsive styles, plus per-page injection toggles for the tabs, carousel, pagination and animation runtimes (each shown only when the page uses that block). All default on inside `renderToStaticMarkup`; turning one off lets a page opt out.
|
|
633
647
|
- **Save Draft** and **Publish** buttons at the bottom. Both use the same `upsert-page-item` endpoint above; the CTA differs by the `status` field.
|
|
634
648
|
|
|
649
|
+
After a successful publish a **Page is live** dialog shows the live URL (`https://<tenantId>.emtrendz.com/<slug>`) and, when the tenant has its own domain configured (`applications[].ipAddress`), the preview URL on that domain — each with copy and open buttons.
|
|
650
|
+
|
|
635
651
|
If you'd rather keep the direct one-click publish (fires `onPublish` without a dialog), set `apiConfig` to `undefined` — the direct callback flow still works.
|
|
636
652
|
|
|
637
653
|
### Templates + Saved + Section Library
|
|
@@ -715,19 +731,19 @@ All methods send `Content-Type: application/json` + the bearer token automatical
|
|
|
715
731
|
|---|---|
|
|
716
732
|
| **← Back** | Calls `onBack`. The host typically navigates away. |
|
|
717
733
|
| **Page title + status pill** | Display-only. Sourced from `recordTitle` / `recordStatus` (or `record.title / record.name / record.status`). |
|
|
718
|
-
| **Section dropdown** | Only appears when `record.sections.length > 1`. Lets the user pick / edit / delete sections. Switching a section flushes the current canvas edits into the active section, then loads the target section's document
|
|
719
|
-
| **Zoom controls** (− / % / +) | Zoom out, current zoom level (click to reset to 100%), zoom in. Range is 25%–100%;
|
|
720
|
-
| **Undo / Redo** | Hooked to the editor's internal history stack. Buttons disable when there's nothing to undo/redo. A settle-window guard on
|
|
734
|
+
| **Section dropdown** | Only appears when `record.sections.length > 1`. Lets the user pick / edit / delete / reorder sections. Switching a section flushes the current canvas edits into the active section, then loads the target section's document with a **fresh undo history** — switching is navigation, so it never marks the editor dirty and Undo can't walk back into another section's document. Adding or deleting a section is one undoable step. |
|
|
735
|
+
| **Zoom controls** (− / % / +) | Page records only, and hidden below the `lg` breakpoint. Zoom out, current zoom level (click to reset to 100%), zoom in. Range is 25%–100%; clicking past either end shows a toast instead of doing nothing. Users can also hold **Ctrl / Cmd** and scroll on the canvas to zoom cursor-anchored. Hidden together with Undo/Redo via `topbar={{ undo: false }}` (they share the toggle since they sit in the same group). |
|
|
736
|
+
| **Undo / Redo** | Hooked to the editor's internal history stack, plus the global shortcuts **Ctrl/Cmd+Z**, **Ctrl/Cmd+Y** and **Ctrl/Cmd+Shift+Z** (inputs and sidebar rich-text editors keep their native undo). **Ctrl/Cmd+B** toggles bold on a selected Heading. Buttons disable when there's nothing to undo/redo and while a save is running. A settle-window guard on load prevents block-level `useEffect`s (auto-seed, positioning re-measure, etc.) from preloading spurious entries — Undo starts disabled on every fresh load until the user makes a real edit. Every successful save starts a fresh history. |
|
|
721
737
|
| **Deselect Block** ⊟ | Only appears when a block is selected on the canvas. Clears `selectedBlockId` so the block's TuneMenu / handles collapse and the Inspect panel unfocuses. Same behavior as ahd-fe's `TabUnselectedOutlined` button. Hidden entirely via `topbar={{ unselect: false }}`. |
|
|
722
|
-
| **Save Changes** | **Dirty-tracked.** Disabled with tooltip "No unsaved changes" until
|
|
738
|
+
| **Save Changes** | **Dirty-tracked.** Disabled with tooltip "No unsaved changes" until there is something to save — a canvas edit, an edit flushed from another section, a section added / deleted / renamed / reordered, or a sidebar-edited page field (SEO meta, head, body bottom, …); disables again after the save. Saves with the record's **current status** (a live page stays live, as in ahd-fe). Builds the payload (see *Save / Publish payload generation*) and calls `onSaveChanges`. When `apiConfig` is set, the editor **first** persists via `POST /upsert-page-item`, then fires `onSaveChanges` and merges the server response into the record — errors surface via `onApiError`. The browser's "Leave site?" prompt is skipped while **Changes saved** is showing. |
|
|
723
739
|
| **Auto Save** | **Opt-in** — hidden unless `topbar={{ autoSave: true }}`. Bordered label + toggle switch rendered immediately left of Save Changes. While on, the editor re-runs the same handler `Save Changes` uses on a fixed interval (`autoSaveIntervalMs`, default 60s), gated by the same dirty flag — a clean editor never fires. The switch is uncontrolled by default and its checked state is persisted to `localStorage` under `pagepilot.editor.autoSave.v1`; pass `autoSaveEnabled` + `onAutoSaveChange` to control it from the host. Every flip fires `onAutoSaveChange` so hosts can mirror the flag to their own settings. |
|
|
724
|
-
| **Screen size** (Desktop / Tablet / Mobile) | Three-way icon strip that constrains the canvas preview width and keeps the sidebar's per-device tabs in lock-step — switching here also switches which per-device slice the Inspect panel is editing. Hidden via `topbar={{ screenSize: false }}`. |
|
|
740
|
+
| **Screen size** (Desktop / Tablet / Mobile) | Three-way icon strip that constrains the canvas preview width and keeps the sidebar's per-device tabs in lock-step — switching here also switches which per-device slice the Inspect panel is editing, and scrolls the selected block back into view. The initial device comes from `record.device`. Hidden via `topbar={{ screenSize: false }}`. |
|
|
725
741
|
| **Theme toggle** ☀/🌙 | Sun/moon icon flips between the built-in light and dark themes. The choice is persisted in `localStorage` under `pagepilot.editor.mode.v1`, so a page reload keeps the user's preference — even if `props.mode` changes. Hidden automatically when the host passes a custom `theme` prop (no `mode` to flip). |
|
|
726
742
|
| **3-dot menu** ⋮ | Off by default — enable via `topbar.moreMenu`. Contains **+ Add Section** and **Show / Hide Minimap** (the minimap is a click-to-jump / drag-to-scroll canvas overview that docks to the bottom-right corner). |
|
|
727
743
|
| **Fullscreen** ⤢ | Toggles the editor's container via the browser Fullscreen API. Icon swaps to "exit fullscreen" while active; pressing `Esc` exits. |
|
|
728
|
-
| **Preview** ▶ |
|
|
729
|
-
| **Publish** |
|
|
730
|
-
| **Publish ▾** | Calls `onPublishMenu(anchorEl, payload)`
|
|
744
|
+
| **Preview** ▶ | Syncs the current section, then opens the full-screen page preview with desktop/tablet/mobile size toggles (see *Preview*). If `onTogglePreview` is supplied, that callback fires instead. Disabled while saving. |
|
|
745
|
+
| **Publish** | With `apiConfig`: opens the Publish dialog. Without it: calls `onPublish`. Disabled while saving. |
|
|
746
|
+
| **Publish ▾** | Calls `onPublishMenu(anchorEl, payload)` when provided. Otherwise opens the built-in menu: **Publish**, **Live URL** (live pages, tenant known) and **Save as Draft** (saves with `status: "draft"`). |
|
|
731
747
|
|
|
732
748
|
### Block TuneMenu
|
|
733
749
|
|
|
@@ -808,22 +824,20 @@ if the standalone integration model doesn't fit.
|
|
|
808
824
|
|
|
809
825
|
### Preview
|
|
810
826
|
|
|
811
|
-
- **Default behavior** (no `onTogglePreview`): the editor
|
|
812
|
-
- **Custom UI**: pass `onTogglePreview={(html, doc) => myDialog.open(html)}` to skip the built-in dialog and render your own.
|
|
827
|
+
- **Default behavior** (no `onTogglePreview`): the editor first syncs the canvas into its section, then renders the in-memory page the way ahd-fe's page preview does — internal sections through `renderToStaticMarkup`, external sections as their empty `<div id=identifier>` anchors — inside the `pagePilotStyles.css` + `.ahd-page-root` wrapper published pages get. It shows in a full-screen dialog with desktop / tablet / mobile size toggles. When the page is live and the tenant is known, the header adds **Open live URL**; when the tenant has its own domain, **Open on your domain** opens the page there in preview mode.
|
|
828
|
+
- **Custom UI**: pass `onTogglePreview={(html, doc) => myDialog.open(html)}` to skip the built-in dialog and render your own. `html` is the same HTML handed to `onSaveChanges`.
|
|
813
829
|
|
|
814
830
|
### Save / Publish payload generation
|
|
815
831
|
|
|
816
|
-
When the user
|
|
817
|
-
|
|
818
|
-
1. Reads the current canvas document from the internal store.
|
|
819
|
-
2. If the record has `sections`, flushes the canvas document into `sections[activeIndex].contentMetadata.document` so the active section is up-to-date.
|
|
820
|
-
3. Renders every section's document via `renderToStaticMarkup({ rootBlockId: "root", injectElementIds: true, minifyCss: true, includePageCSS: true, lang, skipLink, accessibilityTools })`.
|
|
821
|
-
4. Per-section HTML is written to `section.content` and per-section documents to `section.contentMetadata.document`.
|
|
822
|
-
5. All section fragments are concatenated inside a single HTML document with viewport meta, base font, and canvas color from `EmailLayout`.
|
|
823
|
-
6. **Multi-section payload**: `{ record, html }` with the record's redundant `contentMetadata` / empty `behaviour` / empty `steps` stripped, and the outer `document` key omitted.
|
|
824
|
-
**Single-doc payload**: `{ record, document, html }` where `record.contentMetadata` carries `document` + `html`.
|
|
832
|
+
When the user saves or publishes, the editor does the following before invoking the callback. The pipeline (`src/editor/savePipeline.ts`) is a port of ahd-fe's `useSaveHandler`:
|
|
825
833
|
|
|
826
|
-
|
|
834
|
+
1. Reads the current canvas document from the internal store and prunes orphan blocks.
|
|
835
|
+
2. Keeps an **editable** copy with its template variables (`withPersistedFormFields`) and renders the published HTML from a **baked** copy with every `{{token}}` substituted (`bakeTemplateValues`). Non-active sections bake their own variables.
|
|
836
|
+
3. Renders each section via `renderToStaticMarkup({ rootBlockId: "root", injectElementIds: true, minifyCss: true, includePageCSS: true, injectFontAssets: true, bodyBottomHtml: record.bodyBottom, lang, skipLink, accessibilityTools })` — `lang` / skip-link / accessibility tools come from the active section's root (falling back to `record.lang`). Page records keep only the `<body>` inner HTML.
|
|
837
|
+
4. External (client-side) sections save as an empty `<div id="identifier"></div>` anchor.
|
|
838
|
+
5. Every section gets a `sectionType` and an `identifier`. An AHD integration snippet already on the first internal section (placed by the tour / tooltip publish flow) is preserved.
|
|
839
|
+
6. **Multi-section payload**: `{ record, html, status, sections }` with the record's redundant `contentMetadata` / empty `behaviour` / empty `steps` stripped, and the outer `document` key omitted. `html` wraps all section fragments in one HTML document with viewport meta, base font, and canvas color from `EmailLayout`.
|
|
840
|
+
**Single-doc payload**: `{ record, document, html, status, sections }` where `record.contentMetadata` carries `document` + `html`, and `sections` holds the one section sent to the API.
|
|
827
841
|
|
|
828
842
|
### Themes
|
|
829
843
|
|
|
@@ -2,16 +2,19 @@ import { PagePilotEditorProps } from './editor/types';
|
|
|
2
2
|
/**
|
|
3
3
|
* Standalone page-type visual editor.
|
|
4
4
|
*
|
|
5
|
-
* - **Undo / Redo**: wired directly to the editor's history store
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* `{ record, document
|
|
5
|
+
* - **Undo / Redo**: wired directly to the editor's history store (toolbar
|
|
6
|
+
* buttons plus Ctrl/Cmd+Z, Ctrl/Cmd+Y, Ctrl/Cmd+Shift+Z); buttons disable
|
|
7
|
+
* when their stack is empty or a save is running.
|
|
8
|
+
* - **Save Changes / autosave**: renders every section through the ahd-fe
|
|
9
|
+
* save pipeline (`editor/savePipeline.ts`) and saves with the record's
|
|
10
|
+
* current status; the host gets `{ record, document?, html, status,
|
|
11
|
+
* sections, response? }` through `onSaveChanges`.
|
|
11
12
|
* - **Fullscreen**: requests the editor's container via the Fullscreen API.
|
|
12
|
-
* - **Preview**: renders the
|
|
13
|
-
* `onTogglePreview` if the host provides one
|
|
14
|
-
* - **Publish**:
|
|
13
|
+
* - **Preview**: renders the in-memory page (current section synced) in a
|
|
14
|
+
* full-screen dialog, or calls `onTogglePreview` if the host provides one.
|
|
15
|
+
* - **Publish**: with `apiConfig`, opens the publish dialog (schedule, menu
|
|
16
|
+
* links, scripts, accessibility check) and shows the "Page is live" dialog
|
|
17
|
+
* afterwards; without it, routes the payload to `onPublish`.
|
|
15
18
|
*/
|
|
16
19
|
export declare function PagePilotEditor(props: PagePilotEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
17
20
|
export { setDocument, resetDocument, } from './editor-sample/documents/editor/EditorContext';
|
|
@@ -12,6 +12,7 @@ interface ProviderProps {
|
|
|
12
12
|
children: ReactNode;
|
|
13
13
|
}
|
|
14
14
|
export declare function PagepilotApiClientProvider({ config, globalTemplatesBaseUrl, children, }: ProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare function getActivePagepilotApiClient(): PagepilotApiClient | null;
|
|
15
16
|
export declare function usePagepilotApiClient(): PagepilotApiClient | null;
|
|
16
17
|
export declare function useGlobalTemplatesBaseUrl(): string;
|
|
17
18
|
export {};
|
|
@@ -38,6 +38,13 @@ export declare class PagepilotApiClient {
|
|
|
38
38
|
constructor(cfg: PagepilotApiConfig);
|
|
39
39
|
private headers;
|
|
40
40
|
private buildUrl;
|
|
41
|
+
/**
|
|
42
|
+
* `fetch` an absolute URL with this client's bearer token — for ahd-fe
|
|
43
|
+
* services that live on another origin but share the tenant auth (the
|
|
44
|
+
* form-builder API, the FabAI generate endpoint). Backs the
|
|
45
|
+
* `src/modules/shared/axios/authAxios` host stub.
|
|
46
|
+
*/
|
|
47
|
+
authedFetch(url: string, init?: RequestInit): Promise<Response>;
|
|
41
48
|
private request;
|
|
42
49
|
createPage(data: Record<string, unknown>): Promise<any>;
|
|
43
50
|
updatePage(id: string, data: Record<string, unknown>): Promise<any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const AI_CHATBOT_ICON_URL = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik03LjIyMzYxIDIuMzUyNjFDNy4yOTAyOSAyLjM1MjM1IDcuMzU2OTYgMi4zNTIwOCA3LjQyNTY1IDIuMzUxODJDNy42NDkyMSAyLjM1MTA0IDcuODcyNzcgMi4zNTA3NiA4LjA5NjM0IDIuMzUwNDlDOC4yNTY1OSAyLjM1MDA1IDguNDE2ODUgMi4zNDk1OCA4LjU3NzExIDIuMzQ5MDhDOS4xMDM2NCAyLjM0NzYgOS42MzAxNyAyLjM0Njg2IDEwLjE1NjcgMi4zNDYxNkMxMC4zMzgyIDIuMzQ1ODcgMTAuNTE5NiAyLjM0NTU4IDEwLjcwMTEgMi4zNDUyOEMxMS40NTYxIDIuMzQ0MDkgMTIuMjExMiAyLjM0MzA1IDEyLjk2NjMgMi4zNDI1NEMxMy4xNjIgMi4zNDI0IDEzLjM1NzggMi4zNDIyNyAxMy41NTM2IDIuMzQyMTNDMTMuNjI2NiAyLjM0MjA4IDEzLjYyNjYgMi4zNDIwOCAxMy43MDExIDIuMzQyMDJDMTQuNDg4MiAyLjM0MTQ0IDE1LjI3NTQgMi4zMzk2NSAxNi4wNjI2IDIuMzM3MzRDMTYuODcyIDIuMzM1IDE3LjY4MTQgMi4zMzM3NSAxOC40OTA5IDIuMzMzNUMxOC45NDQ4IDIuMzMzMzQgMTkuMzk4OCAyLjMzMjcxIDE5Ljg1MjcgMi4zMzA5MkMyMC4yODAyIDIuMzI5MjcgMjAuNzA3NyAyLjMyODk3IDIxLjEzNTIgMi4zMjk3QzIxLjI5MTUgMi4zMjk3MyAyMS40NDc4IDIuMzI5MjkgMjEuNjA0MiAyLjMyODMyQzIzLjI2NjIgMi4zMTg1MyAyNC42MTE1IDIuNjgzOTkgMjUuODQzNiAzLjg2NjU3QzI3LjI1MzEgNS4zMzM2OSAyNy4zMjkyIDcuMDk3ODcgMjcuMzI1NiA5LjAxOTg3QzI3LjMyNTcgOS4xOTg2NCAyNy4zMjU4IDkuMzc3NDIgMjcuMzI2IDkuNTU2MkMyNy4zMjYyIDkuOTI5MTcgMjcuMzI1OSAxMC4zMDIxIDI3LjMyNTMgMTAuNjc1MUMyNy4zMjQ1IDExLjEwNTYgMjcuMzI0NyAxMS41MzYxIDI3LjMyNTUgMTEuOTY2NkMyNy4zMjYyIDEyLjM4MjYgMjcuMzI2MiAxMi43OTg1IDI3LjMyNTggMTMuMjE0NUMyNy4zMjU3IDEzLjM5MDkgMjcuMzI1OCAxMy41NjcyIDI3LjMyNjEgMTMuNzQzNkMyNy4zMjY1IDEzLjk4OTQgMjcuMzI1OSAxNC4yMzUzIDI3LjMyNTEgMTQuNDgxMUMyNy4zMjU0IDE0LjU1MzggMjcuMzI1NyAxNC42MjY2IDI3LjMyNiAxNC43MDE1QzI3LjMyNTYgMTQuNzY4NiAyNy4zMjUyIDE0LjgzNTcgMjcuMzI0OCAxNC45MDQ4QzI3LjMyNDcgMTQuOTkxNyAyNy4zMjQ3IDE0Ljk5MTcgMjcuMzI0NiAxNS4wODA1QzI3LjI5NjggMTUuMzQxNiAyNy4yMjQyIDE1LjU0MDQgMjcuMDQxMyAxNS43Mjk4QzI2Ljc4MDUgMTUuODY3NSAyNi41NDA3IDE1LjgzODIgMjYuMjYyMyAxNS43NTY5QzI2LjE5NjcgMTUuNzMxOSAyNi4xMzExIDE1LjcwNjkgMjYuMDYzNSAxNS42ODExQzI1LjY3MjEgMTUuNTQxNCAyNS4yOTkzIDE1LjQ3ODIgMjQuODg2NSAxNS40Mzc4QzI0LjYyOTkgMTUuMzc1MSAyNC41NTkgMTUuMzIxNyAyNC40MDQzIDE1LjEwNTlDMjQuMzYxNCAxNC44Njc5IDI0LjM2NTggMTQuNjMyMSAyNC4zNjc5IDE0LjM5MDhDMjQuMzY3MSAxNC4yODE4IDI0LjM2NzEgMTQuMjgxOCAyNC4zNjYzIDE0LjE3MDZDMjQuMzY1IDEzLjkyOTkgMjQuMzY1NiAxMy42ODkzIDI0LjM2NjEgMTMuNDQ4NkMyNC4zNjU0IDEzLjI4MTEgMjQuMzY0NSAxMy4xMTM1IDI0LjM2MzYgMTIuOTQ1OUMyNC4zNjEzIDEyLjUwNDEgMjQuMzYwNSAxMi4wNjIzIDI0LjM2MDIgMTEuNjIwNEMyNC4zNTk2IDEwLjkxNSAyNC4zNTcxIDEwLjIwOTUgMjQuMzUzNyA5LjUwNDFDMjQuMzUyOCA5LjI1ODM1IDI0LjM1MjkgOS4wMTI2MiAyNC4zNTMgOC43NjY4N0MyNC4zNTI2IDguNjE0NjYgMjQuMzUyMSA4LjQ2MjQ1IDI0LjM1MTUgOC4zMTAyNUMyNC4zNTE4IDguMjQyNjYgMjQuMzUyMSA4LjE3NTA4IDI0LjM1MjQgOC4xMDU0NEMyNC4zNDc2IDcuMjkzNDcgMjQuMjQ4MSA2LjUzMjc1IDIzLjY3ODYgNS45MjA0MkMyMi44NTY0IDUuMTU0MDkgMjEuNzY3NiA1LjI0NDkgMjAuNzE4IDUuMjQ3MjVDMjAuNTc0IDUuMjQ3MDYgMjAuNDI5OSA1LjI0NjgxIDIwLjI4NTkgNS4yNDY1QzE5Ljg5NjMgNS4yNDU4NiAxOS41MDY2IDUuMjQ2MTEgMTkuMTE3IDUuMjQ2NTZDMTguNzA4NCA1LjI0NjkyIDE4LjI5OTggNS4yNDY1OCAxNy44OTEyIDUuMjQ2MzZDMTcuMjA1MSA1LjI0NjEgMTYuNTE5MSA1LjI0NjQ0IDE1LjgzMzEgNS4yNDcxMkMxNS4wNDA5IDUuMjQ3ODkgMTQuMjQ4OCA1LjI0NzY0IDEzLjQ1NjcgNS4yNDY4NkMxMi43NzU1IDUuMjQ2MjEgMTIuMDk0MyA1LjI0NjEyIDExLjQxMzEgNS4yNDY0OUMxMS4wMDY3IDUuMjQ2NzIgMTAuNjAwMyA1LjI0Njc1IDEwLjE5NCA1LjI0NjI4QzkuODExODUgNS4yNDU4NyA5LjQyOTczIDUuMjQ2MTUgOS4wNDc2MiA1LjI0Njk3QzguOTA3NzMgNS4yNDcxNiA4Ljc2NzgzIDUuMjQ3MSA4LjYyNzk0IDUuMjQ2NzlDNy4xNDA5OSA1LjIyMjcxIDcuMTQwOTkgNS4yMjI3MSA1Ljg3Mzk1IDUuOTIwNDJDNS4wOTk4MyA2Ljc1Mjc0IDUuMTk4MzggNy44ODM4MSA1LjIwMDc5IDguOTQ1NzVDNS4yMDA1OSA5LjA4ODI4IDUuMjAwMzQgOS4yMzA4MSA1LjIwMDAzIDkuMzczMzRDNS4xOTkzOSA5Ljc1ODYxIDUuMTk5NjQgMTAuMTQzOSA1LjIwMDA5IDEwLjUyOTFDNS4yMDA0NSAxMC45MzMzIDUuMjAwMTEgMTEuMzM3NiA1LjE5OTg5IDExLjc0MThDNS4xOTk2MyAxMi40MjA0IDUuMTk5OTcgMTMuMDk5MSA1LjIwMDY1IDEzLjc3NzdDNS4yMDE0MiAxNC41NjEgNS4yMDExNyAxNS4zNDQ0IDUuMjAwMzkgMTYuMTI3N0M1LjE5OTc1IDE2LjgwMTYgNS4xOTk2NiAxNy40NzU1IDUuMjAwMDMgMTguMTQ5NUM1LjIwMDI1IDE4LjU1MTQgNS4yMDAyOCAxOC45NTMzIDUuMTk5ODEgMTkuMzU1MkM1LjE5OTQgMTkuNzMzMSA1LjE5OTY5IDIwLjExMSA1LjIwMDUgMjAuNDg5QzUuMjAwNjkgMjAuNjI3MiA1LjIwMDY0IDIwLjc2NTUgNS4yMDAzMiAyMC45MDM4QzUuMTcxNTkgMjIuNDI1NiA1LjE3MTU5IDIyLjQyNTYgNS44NzM5NSAyMy43MjUxQzYuNTUwNDQgMjQuMzU1NiA3LjM4OTM5IDI0LjQwMTUgOC4yNzQ4MSAyNC4zOTY5QzguMzU3ODkgMjQuMzk3IDguNDQwOTggMjQuMzk3MiA4LjUyNjU4IDI0LjM5NzNDOC43MDU3NyAyNC4zOTc2IDguODg0OTYgMjQuMzk3NSA5LjA2NDE1IDI0LjM5NzJDOS4zNDc3MSAyNC4zOTY4IDkuNjMxMjYgMjQuMzk3NCA5LjkxNDgxIDI0LjM5ODRDMTAuNzIwNiAyNC40MDExIDExLjUyNjQgMjQuNDAyNCAxMi4zMzIxIDI0LjQwMTZDMTIuNzc4MyAyNC40MDExIDEzLjIyNDUgMjQuNDAxOSAxMy42NzA3IDI0LjQwNDFDMTMuOTA2NCAyNC40MDUyIDE0LjE0MiAyNC40MDU1IDE0LjM3NzYgMjQuNDA0NUMxNC42Mzk5IDI0LjQwMzUgMTQuOTAyMiAyNC40MDQ3IDE1LjE2NDUgMjQuNDA2M0MxNS4yNDIyIDI0LjQwNTUgMTUuMzE5OSAyNC40MDQ2IDE1LjQgMjQuNDAzOEMxNS45MjY2IDI0LjQxMDIgMTUuOTI2NiAyNC40MTAyIDE2LjIwMTMgMjQuNjE5NEMxNi4zMjkgMjQuNzk4MSAxNi40MzAxIDI0Ljk2OTEgMTYuNTI0IDI1LjE2NzVDMTYuNzMwOCAyNS41Njg2IDE3IDI1Ljg2MTkgMTcuMzE5NiAyNi4xNzc3QzE3LjQ4ODUgMjYuMzg5OSAxNy41MjU2IDI2LjUxOCAxNy41MzcyIDI2Ljc4NjlDMTcuMzc5OCAyNy4xODQyIDE3LjM3OTggMjcuMTg0MiAxNy4xODMzIDI3LjI4MjVDMTcuMDQ2MSAyNy4yODk5IDE2LjkwODYgMjcuMjkyNyAxNi43NzEyIDI3LjI5MzRDMTYuNjgzNCAyNy4yOTQgMTYuNTk1NiAyNy4yOTQ2IDE2LjUwNTEgMjcuMjk1MkMxNi40MDczIDI3LjI5NTUgMTYuMzA5NCAyNy4yOTU4IDE2LjIxMTUgMjcuMjk2MUMxNi4xMDg4IDI3LjI5NjcgMTYuMDA2MSAyNy4yOTczIDE1LjkwMzQgMjcuMjk3OUMxNS41NjUyIDI3LjI5OTggMTUuMjI3IDI3LjMwMDggMTQuODg4OCAyNy4zMDE4QzE0Ljc3MjEgMjcuMzAyMiAxNC42NTU1IDI3LjMwMjYgMTQuNTM4OCAyNy4zMDNDMTQuMDUyNiAyNy4zMDQ1IDEzLjU2NjUgMjcuMzA1OCAxMy4wODAzIDI3LjMwNjZDMTIuMzg1NyAyNy4zMDc4IDExLjY5MTEgMjcuMzEwMSAxMC45OTY0IDI3LjMxNDJDMTAuNTA3MSAyNy4zMTY5IDEwLjAxNzkgMjcuMzE4MyA5LjUyODU1IDI3LjMxODdDOS4yMzY5MyAyNy4zMTg5IDguOTQ1MzQgMjcuMzE5OCA4LjY1MzcyIDI3LjMyMjFDNi42NzI0NiAyNy4zMzcgNS4xNTEyNiAyNy4xNTIxIDMuNjQ4MzcgMjUuNzE4OUMyLjc4MTEgMjQuODA3NiAyLjMwNTg4IDIzLjYyNTMgMi4zMDYxNCAyMi4zNzU0QzIuMzA1ODggMjIuMzA4OCAyLjMwNTYyIDIyLjI0MjEgMi4zMDUzNSAyMi4xNzM0QzIuMzA0NTcgMjEuOTQ5OCAyLjMwNDMgMjEuNzI2MyAyLjMwNDAzIDIxLjUwMjdDMi4zMDM1OCAyMS4zNDI0IDIuMzAzMTEgMjEuMTgyMiAyLjMwMjYyIDIxLjAyMTlDMi4zMDExMyAyMC40OTU0IDIuMzAwMzkgMTkuOTY4OSAyLjI5OTY5IDE5LjQ0MjNDMi4yOTk0IDE5LjI2MDkgMi4yOTkxMSAxOS4wNzk0IDIuMjk4ODEgMTguODk4QzIuMjk3NjIgMTguMTQyOSAyLjI5NjU4IDE3LjM4NzggMi4yOTYwNyAxNi42MzI4QzIuMjk1OTMgMTYuNDM3IDIuMjk1OCAxNi4yNDEyIDIuMjk1NjYgMTYuMDQ1NEMyLjI5NTYzIDE1Ljk5NjggMi4yOTU1OSAxNS45NDgxIDIuMjk1NTYgMTUuODk4QzIuMjk0OTcgMTUuMTEwOCAyLjI5MzE4IDE0LjMyMzYgMi4yOTA4OCAxMy41MzY1QzIuMjg4NTMgMTIuNzI3IDIuMjg3MjggMTEuOTE3NiAyLjI4NzAzIDExLjEwODJDMi4yODY4NyAxMC42NTQyIDIuMjg2MjQgMTAuMjAwMyAyLjI4NDQ1IDkuNzQ2MzJDMi4yODI4IDkuMzE4ODIgMi4yODI1MSA4Ljg5MTM1IDIuMjgzMjMgOC40NjM4NEMyLjI4MzI3IDguMzA3NTIgMi4yODI4MiA4LjE1MTE5IDIuMjgxODUgNy45OTQ4N0MyLjI3NjkgNy4xNTQ2MyAyLjI5NjAxIDYuNDEzOTcgMi41OTk3MyA1LjYxOTU0QzIuNjE5MiA1LjU2ODQgMi42Mzg2NyA1LjUxNzI2IDIuNjU4NzIgNS40NjQ1N0MzLjE4NTQ5IDQuMTk5OTMgNC4xNTI3NSAzLjMxMTczIDUuMzYwNjkgMi43MTY5OUM1Ljk4OTYxIDIuNDY1NTcgNi41NTA2NSAyLjM1MjQ2IDcuMjIzNjEgMi4zNTI2MVoiIGZpbGw9IndoaXRlIi8+DQo8cGF0aCBkPSJNMjUuMDAxNiAxOC4xOTUzQzI1LjE4MyAxOC4yMjE5IDI1LjE4MyAxOC4yMjE5IDI1LjI4NSAxOC4zMjY0QzI1LjQ0MTMgMTguNTc5NCAyNS41MzkyIDE4Ljg0NzEgMjUuNjQ0IDE5LjEyNDhDMjUuNjkyMyAxOS4yNDk0IDI1Ljc0MDYgMTkuMzczOSAyNS43ODkgMTkuNDk4NUMyNS44NjQyIDE5LjY5MzQgMjUuOTM5IDE5Ljg4ODQgMjYuMDEzMSAyMC4wODM3QzI2LjQ4NTggMjEuMzI2NyAyNi45NjMzIDIyLjI3NDcgMjguMjM1IDIyLjg1NzhDMjguNDg5OSAyMi45Njk1IDI4Ljc0NzYgMjMuMDczNyAyOS4wMDU5IDIzLjE3NzRDMjkuMjU3NSAyMy4yNzkxIDI5LjUwOSAyMy4zODA4IDI5Ljc2MDUgMjMuNDgyNkMyOS45MzQzIDIzLjU1MyAzMC4xMDg0IDIzLjYyMjcgMzAuMjgyNiAyMy42OTJDMzAuMzYyNyAyMy43MjQyIDMwLjQ0MjcgMjMuNzU2MyAzMC41MjUyIDIzLjc4OTRDMzAuNTk3MyAyMy44MTgxIDMwLjY2OTQgMjMuODQ2OSAzMC43NDM3IDIzLjg3NjVDMzAuOTE3MyAyMy45NTYyIDMwLjkxNzMgMjMuOTU2MiAzMS4wNTg5IDI0LjA5NzhDMzEuMDY3NyAyNC4yODM2IDMxLjA2NzcgMjQuMjgzNiAzMS4wNTg5IDI0LjQ1MTdDMzAuNDI2OCAyNC43ODc0IDI5Ljc2ODggMjUuMDM5MSAyOS4xMDEgMjUuMjkzOEMyNy44OTkyIDI1Ljc1NzUgMjYuOTQzMiAyNi4yNzMzIDI2LjM5ODkgMjcuNDk3MkMyNi4yMTc2IDI3LjkxNzggMjYuMDQ3NiAyOC4zNDI5IDI1Ljg3NzcgMjguNzY4MUMyNS44MjA0IDI4LjkxMTQgMjUuNzYyOSAyOS4wNTQ1IDI1LjcwNTMgMjkuMTk3NkMyNS42NSAyOS4zMzUyIDI1LjU5NTIgMjkuNDczIDI1LjU0MSAyOS42MTFDMjUuNTE1OSAyOS42NzM3IDI1LjQ5MDcgMjkuNzM2NSAyNS40NjQ4IDI5LjgwMTFDMjUuNDQyOCAyOS44NTY3IDI1LjQyMDggMjkuOTEyMiAyNS4zOTgyIDI5Ljk2OTVDMjUuMzE3NiAzMC4xMjkxIDI1LjI2MDMgMzAuMjI1OSAyNS4xMTIyIDMwLjMyNzZDMjQuOTM0NiAzMC4zMzE1IDI0LjkzNDYgMzAuMzMxNSAyNC43NTgyIDMwLjI1NjhDMjQuNjQ3OSAzMC4wNzgzIDI0LjY0NzkgMzAuMDc4MyAyNC41NTUyIDI5Ljg0MDZDMjQuNTAzMiAyOS43MTA2IDI0LjUwMzIgMjkuNzEwNiAyNC40NTAyIDI5LjU3OEMyNC40MzI2IDI5LjUzMiAyNC40MTQ5IDI5LjQ4NiAyNC4zOTY4IDI5LjQzODZDMjQuMzQyMSAyOS4yOTYyIDI0LjI4NTkgMjkuMTU0NiAyNC4yMjkyIDI5LjAxM0MyNC4xNTQ5IDI4LjgyNzQgMjQuMDgxMSAyOC42NDE1IDI0LjAwOCAyOC40NTUzQzIzLjQ1ODkgMjcuMDY0NCAyMi45MTAxIDI2LjE0NjcgMjEuNTAxNyAyNS41MTM2QzIxLjI5NTQgMjUuNDI5NCAyMS4wODc1IDI1LjM0OTQgMjAuODc5MiAyNS4yNzAzQzIwLjgyNTEgMjUuMjQ5NiAyMC43NzEgMjUuMjI5IDIwLjcxNTMgMjUuMjA3N0MyMC40OTA5IDI1LjEyMjQgMjAuMjY2NiAyNS4wMzczIDIwLjA0MTIgMjQuOTU0N0MxOS44NzQ1IDI0Ljg5MzMgMTkuNzA4NyAyNC44Mjk4IDE5LjU0MyAyNC43NjU5QzE5LjQ2NjIgMjQuNzM4NiAxOS40NjYyIDI0LjczODYgMTkuMzg3OSAyNC43MTA5QzE5LjI0NTkgMjQuNjU1IDE5LjI0NTkgMjQuNjU1IDE5LjAyMzkgMjQuNTIyNUMxOC45NTYxIDI0LjI5NDkgMTguOTU2MSAyNC4yOTQ5IDE4Ljk1MzEgMjQuMDk3OEMxOS4yMDE0IDIzLjg4NTEgMTkuNDc5OCAyMy43NzY0IDE5Ljc4MTEgMjMuNjYwM0MxOS44NjA1IDIzLjYyOSAxOS44NjA1IDIzLjYyOSAxOS45NDE0IDIzLjU5NzFDMjAuMTEwMyAyMy41MzA1IDIwLjI3OTUgMjMuNDY0NSAyMC40NDg2IDIzLjM5ODdDMjIuMzkxMiAyMi42NTg0IDIyLjM5MTIgMjIuNjU4NCAyMy42MjU4IDIxLjAzOUMyMy44MDg4IDIwLjYxIDIzLjk3NTkgMjAuMTc0NyAyNC4xNDMyIDE5LjczOTVDMjQuMjE4OSAxOS41NDQxIDI0LjI5NDkgMTkuMzQ4OCAyNC4zNzEyIDE5LjE1MzZDMjQuNDE4NCAxOS4wMzMgMjQuNDY1MSAxOC45MTIyIDI0LjUxMTQgMTguNzkxM0MyNC41NDMgMTguNzEgMjQuNTQzIDE4LjcxIDI0LjU3NTIgMTguNjI3MUMyNC41OTM2IDE4LjU3OTUgMjQuNjExOSAxOC41MzE4IDI0LjYzMDcgMTguNDgyN0MyNC43MjE5IDE4LjI5MSAyNC43OTExIDE4LjIyNzcgMjUuMDAxNiAxOC4xOTUzWiIgZmlsbD0id2hpdGUiLz4NCjxwYXRoIGQ9Ik0xMS40MTY0IDguNzE1NEMxMS40OTA5IDguNzE1MjEgMTEuNTY1NCA4LjcxNTAzIDExLjY0MjEgOC43MTQ4NEMxMS43MTk1IDguNzE1MzkgMTEuNzk2OSA4LjcxNTk0IDExLjg3NjYgOC43MTY1QzExLjk1NCA4LjcxNTk2IDEyLjAzMTQgOC43MTU0MSAxMi4xMTExIDguNzE0ODRDMTIuMTg1NiA4LjcxNTAzIDEyLjI2IDguNzE1MjEgMTIuMzM2OCA4LjcxNTRDMTIuNDM4NiA4LjcxNTY0IDEyLjQzODYgOC43MTU2NCAxMi41NDI1IDguNzE1ODhDMTIuNzQwOSA4LjczNTY4IDEyLjg0MjkgOC43NjczMyAxMy4wMDkzIDguODc1NzlDMTMuMDg2OCA5LjAyMzAxIDEzLjA4NjggOS4wMjMwMSAxMy4xNDcxIDkuMjA4MzFDMTMuMTcwNSA5LjI3ODYxIDEzLjE5NCA5LjM0ODkxIDEzLjIxODIgOS40MjEzNUMxMy4yNDI3IDkuNDk4MjkgMTMuMjY3MiA5LjU3NTI0IDEzLjI5MjUgOS42NTQ1MkMxMy4zMTg3IDkuNzMzNjggMTMuMzQ1IDkuODEyODMgMTMuMzcyMSA5Ljg5NDM5QzEzLjQ2MTUgMTAuMTY0NCAxMy41NDkxIDEwLjQzNSAxMy42MzY1IDEwLjcwNTZDMTMuNjY5NSAxMC44MDc2IDEzLjcwMjUgMTAuOTA5NiAxMy43MzU2IDExLjAxMTZDMTMuODIzNSAxMS4yODMyIDEzLjkxMTMgMTEuNTU1IDEzLjk5OTEgMTEuODI2N0MxNC4wNzIxIDEyLjA1MjYgMTQuMTQ1MSAxMi4yNzg1IDE0LjIxODIgMTIuNTA0NEMxNC43OTUzIDE0LjI4ODUgMTUuMzcxMyAxNi4wNzMgMTUuOTM4NCAxNy44NjA0QzE2LjAxNjkgMTguMTA3MyAxNi4wOTcgMTguMzUzNiAxNi4xNzgxIDE4LjU5OTZDMTYuMTk4IDE4LjY2MDcgMTYuMjE4IDE4LjcyMTggMTYuMjM4NSAxOC43ODQ4QzE2LjI3NTkgMTguODk5NiAxNi4zMTM4IDE5LjAxNDEgMTYuMzUyMiAxOS4xMjg2QzE2LjQ0NzYgMTkuNDIzNCAxNi41MTE5IDE5LjY3NjYgMTYuNDc4MiAxOS45OTA0QzE2LjQzMTUgMjAuMDYwNSAxNi4zODQ3IDIwLjEzMDYgMTYuMzM2NiAyMC4yMDI4QzE2LjA5MzQgMjAuMjUxMyAxNS44NDUyIDIwLjIzODkgMTUuNTk3NyAyMC4yMzgyQzE1LjUyOTIgMjAuMjQwMiAxNS40NjA3IDIwLjI0MjIgMTUuMzkwMiAyMC4yNDQzQzE0Ljg5NDMgMjAuMjQ1NyAxNC44OTQzIDIwLjI0NTcgMTQuNzEzMyAyMC4wNzA5QzE0LjY4ODMgMTkuOTk3NiAxNC42NjMzIDE5LjkyNDMgMTQuNjM3NiAxOS44NDg4QzE0LjYxNzQgMTkuNzk0IDE0LjU5NzMgMTkuNzM5MiAxNC41NzY1IDE5LjY4MjdDMTQuNTA1OSAxOS40ODcgMTQuNDQwOCAxOS4yOTAxIDE0LjM3NjUgMTkuMDkyMkMxNC4zNTM4IDE5LjAyNDEgMTQuMzMxMSAxOC45NTYgMTQuMzA3OCAxOC44ODU4QzE0LjE0MiAxOC4zODIxIDE0LjE0MiAxOC4zODIxIDE0LjE0MiAxOC4yMjA2QzEyLjY0NjggMTguMjQzOSAxMS4xNTE3IDE4LjI2NzMgOS42MTExOSAxOC4yOTE0QzkuNDI0MjkgMTguODc1NCA5LjIzNzM5IDE5LjQ1OTUgOS4wNDQ4MyAyMC4wNjEyQzguODQxMjMgMjAuMjY0OCA4LjY3NjMyIDIwLjIyMzQgOC4zOTc4NyAyMC4yMjU2QzguMzMyNDkgMjAuMjI1NCA4LjI2NzEgMjAuMjI1MiA4LjE5OTczIDIwLjIyNDlDOC4xMDIwNiAyMC4yMjY3IDguMTAyMDYgMjAuMjI2NyA4LjAwMjQyIDIwLjIyODRDNy45MDg1OSAyMC4yMjg1IDcuOTA4NTkgMjAuMjI4NSA3LjgxMjg1IDIwLjIyODVDNy43NTU1NSAyMC4yMjg3IDcuNjk4MjUgMjAuMjI5IDcuNjM5MjEgMjAuMjI5MkM3LjQ4NzM3IDIwLjIwMjggNy40ODczNyAyMC4yMDI4IDcuMzU2NDEgMjAuMTMwNEM3LjE5NzQ0IDE5Ljg1NzEgNy4zMTQ3NiAxOS41NDE0IDcuMzkxMjIgMTkuMjUyMkM3LjQ0OTIxIDE5LjA1NDYgNy41MTExMiAxOC44NTg3IDcuNTc0MiAxOC42NjI4QzcuNjA5ODUgMTguNTUwMSA3LjYwOTg1IDE4LjU1MDEgNy42NDYyMiAxOC40MzUxQzcuNzI1NTEgMTguMTg1IDcuODA1NTMgMTcuOTM1MSA3Ljg4NTU4IDE3LjY4NTJDNy45NDE4NyAxNy41MDgzIDcuOTk4MTMgMTcuMzMxNSA4LjA1NDM2IDE3LjE1NDZDOC41MjU3NiAxNS42NzM3IDkuMDA0MTEgMTQuMTk0OSA5LjQ4Mjg3IDEyLjcxNjRDOS41MDAyNSAxMi42NjI3IDkuNTE3NjIgMTIuNjA5IDkuNTM1NTMgMTIuNTUzN0M5Ljg0NTk5IDExLjU5NTIgOS44NDU5OSAxMS41OTUyIDkuOTg0MTQgMTEuMTcyOUMxMC4wMDcyIDExLjEwMjQgMTAuMDA3MiAxMS4xMDI0IDEwLjAzMDcgMTEuMDMwNUMxMC4wNjA5IDEwLjkzODMgMTAuMDkxIDEwLjg0NjEgMTAuMTIxMiAxMC43NTRDMTAuMjE1IDEwLjQ2NjggMTAuMzA2MiAxMC4xNzg5IDEwLjM5NjIgOS44OTA1NUMxMC40MTg1IDkuODIwNDEgMTAuNDQwNyA5Ljc1MDI3IDEwLjQ2MzcgOS42NzgwMUMxMC41MDM5IDkuNTUxMjMgMTAuNTQzNCA5LjQyNDIgMTAuNTgxOCA5LjI5Njg4QzEwLjcxMDMgOC44OTY3OSAxMC43MTAzIDguODk2NzkgMTAuODgwOCA4Ljc5MDEyQzExLjA2NTkgOC43MTkzNCAxMS4yMTg0IDguNzE1ODYgMTEuNDE2NCA4LjcxNTRaTTExLjg3NjYgMTEuMjgyOEMxMS42Mzc1IDExLjg1MDEgMTEuNDQ0IDEyLjQyOTIgMTEuMjU2IDEzLjAxNUMxMS4yMjQ3IDEzLjExMjEgMTEuMTkzNCAxMy4yMDkxIDExLjE2MiAxMy4zMDYyQzExLjA5NjkgMTMuNTA4IDExLjAzMTkgMTMuNzA5OCAxMC45NjcxIDEzLjkxMTZDMTAuODg0IDE0LjE3MDYgMTAuODAwNCAxNC40Mjk0IDEwLjcxNjcgMTQuNjg4MUMxMC42NTIyIDE0Ljg4NzggMTAuNTg3OCAxNS4wODc1IDEwLjUyMzYgMTUuMjg3MkMxMC40OTI4IDE1LjM4MjcgMTAuNDYyIDE1LjQ3ODIgMTAuNDMxMSAxNS41NzM3QzEwLjM4ODIgMTUuNzA2NSAxMC4zNDU2IDE1LjgzOTMgMTAuMzAzIDE1Ljk3MjJDMTAuMjc4NyAxNi4wNDc3IDEwLjI1NDQgMTYuMTIzMiAxMC4yMjk0IDE2LjIwMTFDMTAuMTcxIDE2LjM3MTYgMTAuMTcxIDE2LjM3MTYgMTAuMTc3NSAxNi41MjE1QzExLjI5ODkgMTYuNTIxNSAxMi40MjAzIDE2LjUyMTUgMTMuNTc1NiAxNi41MjE1QzEzLjQ1NzMgMTUuOTg1NyAxMy40NTczIDE1Ljk4NTcgMTMuMzA0NCAxNS40NjU5QzEzLjI3OTYgMTUuMzkwMiAxMy4yNTQ3IDE1LjMxNDYgMTMuMjI5MiAxNS4yMzY3QzEzLjIwMjcgMTUuMTU3IDEzLjE3NjIgMTUuMDc3NCAxMy4xNDg5IDE0Ljk5NTNDMTMuMTA3NiAxNC44Njk2IDEzLjEwNzYgMTQuODY5NiAxMy4wNjU0IDE0Ljc0MTJDMTIuOTkyNSAxNC41MTk3IDEyLjkxOTMgMTQuMjk4MyAxMi44NDYgMTQuMDc2OUMxMi43NDMxIDEzLjc2NTkgMTIuNjQwNiAxMy40NTQ3IDEyLjUzODEgMTMuMTQzNUMxMi40ODM3IDEyLjk3ODQgMTIuNDI5MSAxMi44MTMzIDEyLjM3NDUgMTIuNjQ4MkMxMi4yMjQ5IDEyLjE5NTEgMTIuMDgxNSAxMS43NDA4IDExLjk0NzQgMTEuMjgyOEMxMS45MjQgMTEuMjgyOCAxMS45MDA3IDExLjI4MjggMTEuODc2NiAxMS4yODI4WiIgZmlsbD0id2hpdGUiLz4NCjxwYXRoIGQ9Ik0xOS40ODc1IDguNzg3NjZDMTkuNTUwMiA4Ljc4NzQ4IDE5LjYxMyA4Ljc4NzMgMTkuNjc3NyA4Ljc4NzExQzE5Ljc3NjMgOC43ODc5MyAxOS43NzYzIDguNzg3OTMgMTkuODc2OCA4Ljc4ODc3QzE5Ljk0MjUgOC43ODgyMiAyMC4wMDgyIDguNzg3NjcgMjAuMDc1OSA4Ljc4NzExQzIwLjE3MDEgOC43ODczOCAyMC4xNzAxIDguNzg3MzggMjAuMjY2MiA4Ljc4NzY2QzIwLjMyMzkgOC43ODc4MiAyMC4zODE1IDguNzg3OTggMjAuNDQxIDguNzg4MTVDMjAuNTg0OCA4LjgwNjQ3IDIwLjU4NDggOC44MDY0NyAyMC43MjYzIDguOTQ4MDVDMjAuNzQ0MiA5LjEzODY2IDIwLjc0NDIgOS4xMzg2NiAyMC43NDQzIDkuMzg2MDhDMjAuNzQ0NSA5LjQzMTQ5IDIwLjc0NDggOS40NzY5IDIwLjc0NSA5LjUyMzY4QzIwLjc0NTYgOS42NzY1MiAyMC43NDUxIDkuODI5MzQgMjAuNzQ0NyA5Ljk4MjE3QzIwLjc0NDkgMTAuMDkxNSAyMC43NDUxIDEwLjIwMDggMjAuNzQ1NCAxMC4zMTAxQzIwLjc0NjEgMTAuNjA3NCAyMC43NDU4IDEwLjkwNDggMjAuNzQ1NCAxMS4yMDIxQzIwLjc0NSAxMS41MTI4IDIwLjc0NTMgMTEuODIzNSAyMC43NDU2IDEyLjEzNDJDMjAuNzQ1OCAxMi42NTYgMjAuNzQ1NSAxMy4xNzc4IDIwLjc0NDggMTMuNjk5NkMyMC43NDQgMTQuMzAzNiAyMC43NDQzIDE0LjkwNzUgMjAuNzQ1MSAxNS41MTE0QzIwLjc0NTcgMTYuMDI5MyAyMC43NDU4IDE2LjU0NzEgMjAuNzQ1NCAxNy4wNjQ5QzIwLjc0NTIgMTcuMzc0NSAyMC43NDUyIDE3LjY4NDEgMjAuNzQ1NiAxNy45OTM3QzIwLjc0NjEgMTguMjg0NyAyMC43NDU4IDE4LjU3NTcgMjAuNzQ1IDE4Ljg2NjdDMjAuNzQ0OCAxOC45NzM3IDIwLjc0NDggMTkuMDgwNyAyMC43NDUxIDE5LjE4NzdDMjAuNzQ1NSAxOS4zMzM0IDIwLjc0NSAxOS40NzkgMjAuNzQ0MyAxOS42MjQ3QzIwLjc0NDMgMTkuNzA2MyAyMC43NDQyIDE5Ljc4OCAyMC43NDQyIDE5Ljg3MjFDMjAuNzI2MyAyMC4wNjI3IDIwLjcyNjMgMjAuMDYyNyAyMC41ODQ4IDIwLjIwNDNDMjAuNDQxIDIwLjIyMjYgMjAuNDQxIDIwLjIyMjYgMjAuMjY2MiAyMC4yMjMxQzIwLjIwMzQgMjAuMjIzMyAyMC4xNDA2IDIwLjIyMzUgMjAuMDc1OSAyMC4yMjM2QzIwLjAxMDIgMjAuMjIzMSAxOS45NDQ1IDIwLjIyMjUgMTkuODc2OCAyMC4yMjJDMTkuODExMSAyMC4yMjI1IDE5Ljc0NTQgMjAuMjIzMSAxOS42Nzc3IDIwLjIyMzZDMTkuNTgzNSAyMC4yMjM0IDE5LjU4MzUgMjAuMjIzNCAxOS40ODc1IDIwLjIyMzFDMTkuNDI5OCAyMC4yMjI5IDE5LjM3MjEgMjAuMjIyOCAxOS4zMTI3IDIwLjIyMjZDMTkuMTY4OSAyMC4yMDQzIDE5LjE2ODkgMjAuMjA0MyAxOS4wMjczIDIwLjA2MjdDMTkuMDA5NSAxOS44NzIxIDE5LjAwOTUgMTkuODcyMSAxOS4wMDkzIDE5LjYyNDdDMTkuMDA5IDE5LjU1NjYgMTkuMDA5IDE5LjU1NjYgMTkuMDA4NiAxOS40ODcxQzE5LjAwODEgMTkuMzM0MiAxOS4wMDg1IDE5LjE4MTQgMTkuMDA5IDE5LjAyODZDMTkuMDA4OCAxOC45MTkzIDE5LjAwODUgMTguODEgMTkuMDA4MiAxOC43MDA3QzE5LjAwNzYgMTguNDAzMyAxOS4wMDc4IDE4LjEwNiAxOS4wMDgzIDE3LjgwODZDMTkuMDA4NiAxNy40OTc5IDE5LjAwODMgMTcuMTg3MyAxOS4wMDgxIDE2Ljg3NjZDMTkuMDA3OCAxNi4zNTQ3IDE5LjAwODIgMTUuODMyOSAxOS4wMDg4IDE1LjMxMTFDMTkuMDA5NiAxNC43MDcyIDE5LjAwOTQgMTQuMTAzMyAxOS4wMDg2IDEzLjQ5OTNDMTkuMDA3OSAxMi45ODE1IDE5LjAwNzggMTIuNDYzNyAxOS4wMDgyIDExLjk0NThDMTkuMDA4NCAxMS42MzYyIDE5LjAwODUgMTEuMzI2NyAxOS4wMDggMTEuMDE3MUMxOS4wMDc2IDEwLjcyNjEgMTkuMDA3OSAxMC40MzUxIDE5LjAwODcgMTAuMTQ0MUMxOS4wMDg5IDEwLjAzNzEgMTkuMDA4OCA5LjkzMDA1IDE5LjAwODUgOS44MjMwM0MxOS4wMDgxIDkuNjc3MzcgMTkuMDA4NiA5LjUzMTc0IDE5LjAwOTMgOS4zODYwOEMxOS4wMDk0IDkuMzA0NDMgMTkuMDA5NCA5LjIyMjc5IDE5LjAwOTUgOS4xMzg2NkMxOS4wNDA1IDguODA3MSAxOS4xOTEzIDguNzg4NDggMTkuNDg3NSA4Ljc4NzY2WiIgZmlsbD0id2hpdGUiLz4NCjwvc3ZnPg==";
|
|
@@ -2,7 +2,7 @@ import * as z from 'zod';
|
|
|
2
2
|
export declare const ContainerPropsSchema: z.ZodObject<{
|
|
3
3
|
style: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
4
4
|
backgroundColor: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodString, z.ZodString, z.ZodLiteral<"transparent">]>>>>;
|
|
5
|
-
backgroundImage: z.ZodOptional<z.ZodNullable<z.ZodString
|
|
5
|
+
backgroundImage: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodString]>>>;
|
|
6
6
|
backgroundSize: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
7
7
|
backgroundRepeat: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
|
|
8
8
|
repeat: "repeat";
|
|
@@ -132,4 +132,4 @@ export declare const HeadingPropsDefaults: {
|
|
|
132
132
|
readonly openInNewTab: false;
|
|
133
133
|
};
|
|
134
134
|
export declare function Heading({ props, style }: HeadingProps): import("react/jsx-runtime").JSX.Element;
|
|
135
|
-
export declare function getFontSize(level: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'):
|
|
135
|
+
export declare function getFontSize(level: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'): 32 | 24 | 19 | 16 | 13 | 11;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
import { z } from 'zod';
|
|
2
3
|
export declare const UNORDERED_MARKERS: readonly ["disc", "circle", "square", "dash", "arrow", "check", "cross", "none"];
|
|
3
4
|
export declare const ORDERED_MARKERS: readonly ["decimal", "decimal-zero", "lower-alpha", "upper-alpha", "lower-roman", "upper-roman"];
|
|
@@ -86,5 +87,14 @@ export declare const ListPropsDefaults: {
|
|
|
86
87
|
readonly text: "Third list item";
|
|
87
88
|
}];
|
|
88
89
|
};
|
|
89
|
-
|
|
90
|
+
type ListRenderProps = ListProps & {
|
|
91
|
+
/**
|
|
92
|
+
* Optional per-item text override, e.g. to swap in a variable pill chip for
|
|
93
|
+
* an unfilled `{{token}}` on the editor canvas. Returning `undefined` falls
|
|
94
|
+
* through to the default plain/marked-token rendering. Omitted entirely by
|
|
95
|
+
* the published Reader path, which always uses the default.
|
|
96
|
+
*/
|
|
97
|
+
renderItemText?: (item: ListItem, index: number) => ReactNode | undefined;
|
|
98
|
+
};
|
|
99
|
+
export declare function List({ style, props, renderItemText }: ListRenderProps): import("react/jsx-runtime").JSX.Element;
|
|
90
100
|
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const MdxPropsSchema: z.ZodObject<{
|
|
3
|
+
style: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
4
|
+
color: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodString, z.ZodString, z.ZodLiteral<"transparent">]>>>;
|
|
5
|
+
backgroundColor: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodString, z.ZodString, z.ZodLiteral<"transparent">]>>>;
|
|
6
|
+
fontSize: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
7
|
+
fontWeight: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
|
|
8
|
+
400: "400";
|
|
9
|
+
500: "500";
|
|
10
|
+
600: "600";
|
|
11
|
+
700: "700";
|
|
12
|
+
normal: "normal";
|
|
13
|
+
bold: "bold";
|
|
14
|
+
}>>>;
|
|
15
|
+
textAlign: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
|
|
16
|
+
right: "right";
|
|
17
|
+
left: "left";
|
|
18
|
+
center: "center";
|
|
19
|
+
}>>>;
|
|
20
|
+
padding: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
21
|
+
top: z.ZodNumber;
|
|
22
|
+
bottom: z.ZodNumber;
|
|
23
|
+
right: z.ZodNumber;
|
|
24
|
+
left: z.ZodNumber;
|
|
25
|
+
}, z.core.$strip>>>;
|
|
26
|
+
margin: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
27
|
+
top: z.ZodNumber;
|
|
28
|
+
bottom: z.ZodNumber;
|
|
29
|
+
right: z.ZodNumber;
|
|
30
|
+
left: z.ZodNumber;
|
|
31
|
+
}, z.core.$strip>>>;
|
|
32
|
+
}, z.core.$strip>>>;
|
|
33
|
+
props: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
34
|
+
markdown: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
35
|
+
html: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
36
|
+
}, z.core.$strip>>>;
|
|
37
|
+
responsive: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
38
|
+
tablet: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>>;
|
|
39
|
+
mobile: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>>;
|
|
40
|
+
}, z.core.$strip>>>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
export type MdxProps = z.infer<typeof MdxPropsSchema>;
|
|
43
|
+
export declare const MdxPropsDefaults: {
|
|
44
|
+
markdown: string;
|
|
45
|
+
html: string;
|
|
46
|
+
};
|
|
47
|
+
export declare function Mdx({ style, props }: MdxProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const QuillPropsSchema: z.ZodObject<{
|
|
3
|
+
style: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
4
|
+
color: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodString, z.ZodString, z.ZodLiteral<"transparent">]>>>;
|
|
5
|
+
backgroundColor: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodString, z.ZodString, z.ZodLiteral<"transparent">]>>>;
|
|
6
|
+
fontSize: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
7
|
+
fontFamily: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
8
|
+
fontWeight: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
|
|
9
|
+
400: "400";
|
|
10
|
+
500: "500";
|
|
11
|
+
600: "600";
|
|
12
|
+
700: "700";
|
|
13
|
+
normal: "normal";
|
|
14
|
+
bold: "bold";
|
|
15
|
+
}>>>;
|
|
16
|
+
textAlign: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
|
|
17
|
+
right: "right";
|
|
18
|
+
left: "left";
|
|
19
|
+
center: "center";
|
|
20
|
+
}>>>;
|
|
21
|
+
padding: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
22
|
+
top: z.ZodNumber;
|
|
23
|
+
bottom: z.ZodNumber;
|
|
24
|
+
right: z.ZodNumber;
|
|
25
|
+
left: z.ZodNumber;
|
|
26
|
+
}, z.core.$strip>>>;
|
|
27
|
+
margin: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
28
|
+
top: z.ZodNumber;
|
|
29
|
+
bottom: z.ZodNumber;
|
|
30
|
+
right: z.ZodNumber;
|
|
31
|
+
left: z.ZodNumber;
|
|
32
|
+
}, z.core.$strip>>>;
|
|
33
|
+
}, z.core.$strip>>>;
|
|
34
|
+
props: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
35
|
+
text: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
36
|
+
}, z.core.$strip>>>;
|
|
37
|
+
responsive: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
38
|
+
tablet: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>>;
|
|
39
|
+
mobile: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>>;
|
|
40
|
+
}, z.core.$strip>>>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
export type QuillProps = z.infer<typeof QuillPropsSchema>;
|
|
43
|
+
export declare const QuillPropsDefaults: {
|
|
44
|
+
text: string;
|
|
45
|
+
padding: string;
|
|
46
|
+
margin: string;
|
|
47
|
+
};
|
|
48
|
+
export declare function Quill({ style, props }: QuillProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const PAGE_PILOT_STYLES_URL = "https://pagepilot.fabbuilder.com/pagePilotStyles.css";
|
|
2
|
+
/** ahd-fe's `buildPageHtml` — full preview HTML for a page record. */
|
|
3
|
+
export declare function buildPagePreviewHtml(record: any): string;
|
|
4
|
+
export interface PagePreviewDialogProps {
|
|
5
|
+
open: boolean;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
/** The in-memory record to render (current section already synced). */
|
|
8
|
+
record: any;
|
|
9
|
+
/** Live URL, shown only when the page is live. */
|
|
10
|
+
liveUrl?: string | null;
|
|
11
|
+
/** Same page on the tenant's own domain, in preview mode. */
|
|
12
|
+
domainPreviewUrl?: string | null;
|
|
13
|
+
}
|
|
14
|
+
export default function PagePreviewDialog({ open, onClose, record, liveUrl, domainPreviewUrl, }: PagePreviewDialogProps): import("react/jsx-runtime").JSX.Element;
|
package/dist/editor/Topbar.d.ts
CHANGED
|
@@ -31,5 +31,7 @@ export interface TopbarProps {
|
|
|
31
31
|
autoSaveEnabled?: boolean;
|
|
32
32
|
/** Fired when the user toggles the Auto Save switch. */
|
|
33
33
|
onAutoSaveChange?: (enabled: boolean) => void;
|
|
34
|
+
/** Zoom controls are page-only (ahd-fe hides them for other record types). */
|
|
35
|
+
isPageRecord?: boolean;
|
|
34
36
|
}
|
|
35
|
-
export default function Topbar({ toggles, title, recordTitle, recordStatus, onBack, onSave, onPublish, onPublishMenu, publishSlot, onPreview, onToggleFullscreen, isFullscreen, onOpenMoreMenu, sectionsDropdown, mode, onToggleMode, isDirty, isSaving, changesSaved, autoSaveEnabled, onAutoSaveChange, }: TopbarProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
export default function Topbar({ toggles, title, recordTitle, recordStatus, onBack, onSave, onPublish, onPublishMenu, publishSlot, onPreview, onToggleFullscreen, isFullscreen, onOpenMoreMenu, sectionsDropdown, mode, onToggleMode, isDirty, isSaving, changesSaved, autoSaveEnabled, onAutoSaveChange, isPageRecord, }: TopbarProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare const PAGE_STATUS: {
|
|
2
|
+
readonly LIVE: "live";
|
|
3
|
+
readonly DRAFT: "draft";
|
|
4
|
+
readonly UNDER_REVIEW: "under-review";
|
|
5
|
+
};
|
|
6
|
+
export declare const PAGE_CACHE_BUST_PARAM = "v";
|
|
7
|
+
export declare const PAGE_PREVIEW_MODE_PARAM = "mode";
|
|
8
|
+
export declare const PAGE_PREVIEW_MODE_VALUE = "preview";
|
|
9
|
+
type TenantLike = {
|
|
10
|
+
id?: string;
|
|
11
|
+
applications?: Array<{
|
|
12
|
+
ipAddress?: string | null;
|
|
13
|
+
} | null> | null;
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
};
|
|
16
|
+
/** Origin of the tenant's own site (first application with an `ipAddress`). */
|
|
17
|
+
export declare function getTenantSiteOrigin(tenant: TenantLike | null | undefined): string | null;
|
|
18
|
+
/**
|
|
19
|
+
* The page on the default FAB Builder address. `updatedAt` is appended as a
|
|
20
|
+
* cache-buster so a freshly published page never serves a cached copy.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildPageLiveUrl(tenantIdOrTenant: string | TenantLike | null | undefined, slug: string, updatedAt?: string | Date | null): string;
|
|
23
|
+
/** The same page on the tenant's own domain, in preview mode. */
|
|
24
|
+
export declare function buildPageDomainPreviewUrl(tenant: TenantLike | null | undefined, slug: string): string | null;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface PageLiveSuccessDialogProps {
|
|
2
|
+
open: boolean;
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
tenantId: string;
|
|
5
|
+
tenant?: any;
|
|
6
|
+
slug: string;
|
|
7
|
+
}
|
|
8
|
+
export default function PageLiveSuccessDialog({ open, onClose, tenantId, tenant, slug, }: PageLiveSuccessDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { A11yIssue } from './a11yLinter';
|
|
2
|
+
interface PublishAccessibilityPanelProps {
|
|
3
|
+
issues: A11yIssue[];
|
|
4
|
+
errorCount: number;
|
|
5
|
+
warningCount: number;
|
|
6
|
+
}
|
|
7
|
+
export default function PublishAccessibilityPanel({ issues, errorCount, }: PublishAccessibilityPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TEditorConfiguration } from '../../editor-sample/documents/editor/core';
|
|
2
|
+
export type A11ySeverity = 'error' | 'warning';
|
|
3
|
+
export type A11yIssue = {
|
|
4
|
+
severity: A11ySeverity;
|
|
5
|
+
message: string;
|
|
6
|
+
blockId?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function runAccessibilityChecks(document: TEditorConfiguration): A11yIssue[];
|