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.
Files changed (180) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/README.md +42 -28
  3. package/dist/PagePilotEditor.d.ts +12 -9
  4. package/dist/api/ApiClientContext.d.ts +1 -0
  5. package/dist/api/PagepilotApiClient.d.ts +7 -0
  6. package/dist/assets/aiChatbotIcon.d.ts +1 -0
  7. package/dist/blocks-internal/block-container/src/index.d.ts +1 -1
  8. package/dist/blocks-internal/block-heading/src/index.d.ts +1 -1
  9. package/dist/blocks-internal/block-list/src/index.d.ts +11 -1
  10. package/dist/blocks-internal/block-mdx/src/index.d.ts +47 -0
  11. package/dist/blocks-internal/block-quill/src/index.d.ts +48 -0
  12. package/dist/editor/PagePreviewDialog.d.ts +14 -0
  13. package/dist/editor/Topbar.d.ts +3 -1
  14. package/dist/editor/pageUrls.d.ts +25 -0
  15. package/dist/editor/publish/PageLiveSuccessDialog.d.ts +9 -0
  16. package/dist/editor/publish/PagePublishDialog.d.ts +1 -0
  17. package/dist/editor/publish/PublishAccessibilityPanel.d.ts +8 -0
  18. package/dist/editor/publish/a11yLinter.d.ts +8 -0
  19. package/dist/editor/recordDirty.d.ts +16 -0
  20. package/dist/editor/renderSections.d.ts +2 -2
  21. package/dist/editor/savePipeline.d.ts +40 -0
  22. package/dist/editor/types.d.ts +35 -0
  23. package/dist/editor-sample/App/InspectorDrawer/BehaviourPanel.d.ts +22 -0
  24. package/dist/editor-sample/App/InspectorDrawer/BrandPanel/BrandColorPalette.d.ts +9 -0
  25. package/dist/editor-sample/App/InspectorDrawer/BrandPanel/BrandEmptyLink.d.ts +8 -0
  26. package/dist/editor-sample/App/InspectorDrawer/BrandPanel/BrandPanel.styled.d.ts +22 -0
  27. package/dist/editor-sample/App/InspectorDrawer/BrandPanel/BrandSection.d.ts +8 -0
  28. package/dist/editor-sample/App/InspectorDrawer/BrandPanel/EmptyText.d.ts +6 -0
  29. package/dist/editor-sample/App/InspectorDrawer/BrandPanel/FontDetailsList.d.ts +6 -0
  30. package/dist/editor-sample/App/InspectorDrawer/BrandPanel/index.d.ts +5 -0
  31. package/dist/editor-sample/App/InspectorDrawer/BrandPanel/useBrandApply.d.ts +9 -0
  32. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/ResponsiveDeviceTabs.d.ts +0 -2
  33. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/blockStyleClipboard.d.ts +2 -8
  34. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/index.d.ts +1 -4
  35. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/EmailLayoutSidebarPanel.d.ts +2 -1
  36. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/FlexColumns/ColumnSection.d.ts +2 -0
  37. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/FormsPickerSidebarPanel.d.ts +2 -1
  38. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/MdxSidebarPanel.d.ts +7 -0
  39. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/MenuPickerSidebarPanel.d.ts +22 -0
  40. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/QuillSidebarPanel.d.ts +8 -0
  41. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/TextSidebarPanel.d.ts +2 -2
  42. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/AnimationSection.d.ts +7 -5
  43. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/HoverEffectSection.d.ts +1 -1
  44. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/imageSizeUnit.d.ts +19 -0
  45. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/ColorInput/Picker.d.ts +0 -2
  46. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/VariableLinkHint.d.ts +8 -0
  47. package/dist/editor-sample/App/InspectorDrawer/EditorBehavior.d.ts +8 -2
  48. package/dist/editor-sample/App/InspectorDrawer/LayersPanelStyles.d.ts +1 -1
  49. package/dist/editor-sample/App/InspectorDrawer/LayoutPanel/AiSupportedBadge.d.ts +7 -0
  50. package/dist/editor-sample/App/InspectorDrawer/LayoutPanel/SectionsModal.d.ts +2 -10
  51. package/dist/editor-sample/App/InspectorDrawer/LayoutPanel/icons/index.d.ts +3 -5
  52. package/dist/editor-sample/App/InspectorDrawer/LayoutPanel/templateHelpers.d.ts +226 -0
  53. package/dist/editor-sample/App/InspectorDrawer/LayoutPanel/useDebouncedValue.d.ts +8 -0
  54. package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/AiFillAllDialog.d.ts +21 -0
  55. package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/AiGenerateButton.d.ts +14 -0
  56. package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/ScalarFieldRow.d.ts +4 -1
  57. package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/VariableGroupDialog.d.ts +19 -0
  58. package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/VariableGroupList.d.ts +5 -0
  59. package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/aiFill.d.ts +36 -0
  60. package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/styles.d.ts +14 -11
  61. package/dist/editor-sample/App/InspectorDrawer/VariablesPanel/upgradeDialog.d.ts +8 -8
  62. package/dist/editor-sample/App/InspectorDrawer/behaviourFields.d.ts +30 -0
  63. package/dist/editor-sample/App/InspectorDrawer/index.d.ts +8 -1
  64. package/dist/editor-sample/App/InspectorDrawer/publish/BackgroundPanel.d.ts +6 -0
  65. package/dist/editor-sample/App/InspectorDrawer/renderBehaviourField.d.ts +7 -0
  66. package/dist/editor-sample/App/TemplatePanel/hooks/useMainBoxStyles.d.ts +2 -1
  67. package/dist/editor-sample/App/TemplatePanel/index.d.ts +2 -1
  68. package/dist/editor-sample/App/TemplatePanel/minimap/useMiniMapSync.d.ts +2 -2
  69. package/dist/editor-sample/App/hooks/page/saveMenuHrefEdits.d.ts +1 -1
  70. package/dist/editor-sample/App/hooks/page/useSaveHandler.d.ts +1 -0
  71. package/dist/editor-sample/App/hooks/useAutosave.d.ts +8 -3
  72. package/dist/editor-sample/App/hooks/useIsTemplateEditorRoute.d.ts +1 -0
  73. package/dist/editor-sample/App/hooks/useStretch.d.ts +9 -0
  74. package/dist/editor-sample/App/shared/UploadImage.d.ts +4 -0
  75. package/dist/editor-sample/App/shared/editor.styles.d.ts +11 -1
  76. package/dist/editor-sample/documents/blocks/Container/ContainerPropsSchema.d.ts +6 -4
  77. package/dist/editor-sample/documents/blocks/FormsPicker/FormsPropsSchema.d.ts +33 -2
  78. package/dist/editor-sample/documents/blocks/List/ListEditor.d.ts +8 -0
  79. package/dist/editor-sample/documents/blocks/Marquee/MarqueePropsSchema.d.ts +4 -0
  80. package/dist/editor-sample/documents/blocks/MenuPicker/MenuPropsSchema.d.ts +6 -0
  81. package/dist/editor-sample/documents/blocks/Table/TableCellEditor.d.ts +2 -1
  82. package/dist/editor-sample/documents/blocks/Table/TableImportDialog.styles.d.ts +11 -1
  83. package/dist/editor-sample/documents/blocks/Table/parseClipboardTable.d.ts +7 -0
  84. package/dist/editor-sample/documents/blocks/TabsBlock/TabsBlockPropsSchema.d.ts +6 -0
  85. package/dist/editor-sample/documents/blocks/Timer/TimerPropsSchema.d.ts +2 -0
  86. package/dist/editor-sample/documents/blocks/Timer/variants/CircularProgressView.d.ts +2 -1
  87. package/dist/editor-sample/documents/blocks/helpers/EditorChildrenIds/AddBlockMenu/blockMenuStyles.d.ts +1 -1
  88. package/dist/editor-sample/documents/blocks/helpers/EditorChildrenIds/AddBlockMenu/brandButtonDefaults.d.ts +1 -4
  89. package/dist/editor-sample/documents/blocks/helpers/EditorChildrenIds/AddBlockMenu/buttons.d.ts +0 -6
  90. package/dist/editor-sample/documents/blocks/helpers/InlineTextToolbar/dialogs/LinkDialog.d.ts +4 -1
  91. package/dist/editor-sample/documents/blocks/helpers/InlineTextToolbar/hooks/useToolbarCommands.d.ts +16 -4
  92. package/dist/editor-sample/documents/blocks/helpers/InlineTextToolbar/styles.d.ts +2 -2
  93. package/dist/editor-sample/documents/blocks/helpers/InlineTextToolbar/types.d.ts +2 -4
  94. package/dist/editor-sample/documents/blocks/helpers/block-wrappers/EditorBlockWrapper.d.ts +2 -3
  95. package/dist/editor-sample/documents/blocks/helpers/block-wrappers/TuneMenu.styles.d.ts +17 -0
  96. package/dist/editor-sample/documents/blocks/helpers/block-wrappers/saveAsTemplateUtils.d.ts +29 -1
  97. package/dist/editor-sample/documents/blocks/helpers/documentUtils.d.ts +33 -26
  98. package/dist/editor-sample/documents/blocks/helpers/variableBinding.d.ts +9 -0
  99. package/dist/editor-sample/documents/editor/EditorBlock.d.ts +2 -6
  100. package/dist/editor-sample/documents/editor/EditorContext.d.ts +77 -20
  101. package/dist/editor-sample/documents/editor/LazyEditorBlock.d.ts +1 -0
  102. package/dist/editor-sample/documents/editor/core.d.ts +492 -390
  103. package/dist/editor-sample/documents/editor/templateVariables.d.ts +151 -14
  104. package/dist/editor-sample/documents/editor/useRootFontFamily.d.ts +10 -0
  105. package/dist/editor-sample/utils/editorStorageKey.d.ts +2 -0
  106. package/dist/editor-sample/utils/localStoragePref.d.ts +2 -0
  107. package/dist/email-builder-core/blocks/Container/ContainerPropsSchema.d.ts +1 -1
  108. package/dist/email-builder-core/blocks/EmailLayout/EmailLayoutReader.d.ts +1 -1
  109. package/dist/email-builder-core/blocks/TabsBlock/TabsBlockPropsSchema.d.ts +6 -0
  110. package/dist/email-builder-core/blocks/Timer/variants/CircularProgressView.d.ts +5 -1
  111. package/dist/email-builder-core/blocks/Timer/variants/DigitalFlipView.d.ts +4 -1
  112. package/dist/email-builder-core/blocks/Timer/variants/TextInlineView.d.ts +3 -1
  113. package/dist/email-builder-core/blocks/helpers/blockStyleHelpers.d.ts +22 -0
  114. package/dist/email-builder-core/renderers/pageScripts.d.ts +0 -1
  115. package/dist/email-builder-core/renderers/themeTokens.d.ts +5 -126
  116. package/dist/host-stubs/history.d.ts +5 -0
  117. package/dist/host-stubs/hooks/useTenantFeatureCutoff.d.ts +8 -0
  118. package/dist/host-stubs/hooks/useTenantPlan.d.ts +18 -0
  119. package/dist/host-stubs/i18nAhdDefaults.d.ts +1 -0
  120. package/dist/host-stubs/modules/auth/authCurrentTenant.d.ts +6 -0
  121. package/dist/host-stubs/modules/forms/formsService.d.ts +3 -1
  122. package/dist/host-stubs/modules/forms/useFormsList.d.ts +4 -1
  123. package/dist/host-stubs/modules/menu/menuService.d.ts +4 -0
  124. package/dist/host-stubs/modules/page/pageService.d.ts +11 -0
  125. package/dist/host-stubs/modules/settings/settingsActions.d.ts +2 -0
  126. package/dist/host-stubs/modules/settings/settingsSelectors.d.ts +4 -0
  127. package/dist/host-stubs/modules/shared/axios/authAxios.d.ts +16 -0
  128. package/dist/host-stubs/modules/shared/constants.d.ts +14 -0
  129. package/dist/host-stubs/modules/store.d.ts +4 -0
  130. package/dist/host-stubs/modules/template/templateEnumerators.d.ts +19 -0
  131. package/dist/host-stubs/modules/tour/injectTourIntoPage.d.ts +20 -0
  132. package/dist/host-stubs/style/icons.d.ts +57 -0
  133. package/dist/host-stubs/utils/dateFormats.d.ts +1 -0
  134. package/dist/host-stubs/view/branding/brandDefaultFont.d.ts +3 -1
  135. package/dist/host-stubs/view/branding/styles/BrandIcons.d.ts +9 -0
  136. package/dist/host-stubs/view/branding/styles/types.d.ts +76 -0
  137. package/dist/host-stubs/view/configurations/ConfigurationIcons.d.ts +9 -0
  138. package/dist/host-stubs/view/demo/DemoIcons.d.ts +9 -0
  139. package/dist/host-stubs/view/images/Icons.d.ts +6 -0
  140. package/dist/host-stubs/view/media/MediaGalleryDialog/types.d.ts +47 -0
  141. package/dist/host-stubs/view/media/MediaGalleryDialog/utils/fileUtils.d.ts +3 -0
  142. package/dist/host-stubs/view/media/MediaGalleryDialog/utils/mediaTypes.d.ts +9 -0
  143. package/dist/host-stubs/view/media/MediaGalleryDialog.d.ts +12 -2
  144. package/dist/host-stubs/view/media/styles/MediaIcons.d.ts +13 -0
  145. package/dist/host-stubs/view/shared/Confetti.d.ts +5 -0
  146. package/dist/host-stubs/view/shared/PagePilotLoader.d.ts +2 -0
  147. package/dist/host-stubs/view/shared/UpgradeDialog/UpgradeDialogContext.d.ts +1 -0
  148. package/dist/host-stubs/view/shared/common/CopyToClipboard.d.ts +7 -0
  149. package/dist/host-stubs/view/shared/editors/MdxEditor.d.ts +8 -0
  150. package/dist/host-stubs/view/shared/editors/QuillEditor.d.ts +3 -0
  151. package/dist/host-stubs/view/shared/editors/sanitize.d.ts +4 -0
  152. package/dist/host-stubs/view/shared/editors/types.d.ts +7 -0
  153. package/dist/host-stubs/view/shared/media/TemplatePreviewMedia.d.ts +29 -0
  154. package/dist/host-stubs/view/shared/modals/ConfigureDialog.d.ts +7 -0
  155. package/dist/host-stubs/view/shared/modals/ManageTemplateModal.d.ts +5 -0
  156. package/dist/host-stubs/view/shared/speech/index.d.ts +17 -0
  157. package/dist/host-stubs/view/shared/styles/Table.styles.d.ts +3 -0
  158. package/dist/host-stubs/view/template/form/TemplateFormModal.d.ts +10 -0
  159. package/dist/host-stubs/view/template/form/fields/types.d.ts +7 -0
  160. package/dist/{index-DcN8zC8_.js → index-B8pdGALF.js} +86258 -73803
  161. package/dist/{index-SYmY8c1I.cjs → index-C-KL2oQP.cjs} +1 -1
  162. package/dist/{index-Cp5AeqH5.js → index-CStZQ7E0.js} +1 -1
  163. package/dist/index-DVx38kGU.cjs +1553 -0
  164. package/dist/index.cjs +1 -1
  165. package/dist/index.js +1 -1
  166. package/dist/render-core/combineSections.d.ts +33 -3
  167. package/dist/render-core/dateFormats.d.ts +14 -3
  168. package/dist/render-core/stubs/pickerEmptyState.d.ts +2 -0
  169. package/dist/render-core/stubs/styleIcons.d.ts +1 -0
  170. package/dist/render.cjs +281 -219
  171. package/dist/render.js +9858 -8266
  172. package/dist/style.css +1 -1
  173. package/dist/{xlsx-vznvhtjT.cjs → xlsx-DUs4Mvqq.cjs} +1 -1
  174. package/dist/{xlsx-Bk2GErZO.js → xlsx-bYU68TCR.js} +1 -1
  175. package/package.json +1 -1
  176. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/ResponsiveEditingBanner.d.ts +0 -13
  177. package/dist/editor-sample/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/BoxShadowControls.d.ts +0 -19
  178. package/dist/editor-sample/documents/blocks/AppBannerPicker/appBanner.styled.d.ts +0 -2
  179. package/dist/email-builder-core/blocks/boxShadowSchema.d.ts +0 -23
  180. package/dist/index-Br_dDd3Z.cjs +0 -1493
@@ -19,8 +19,39 @@ declare const FormsPropsSchema: z.ZodObject<{
19
19
  }, z.core.$strip>;
20
20
  export default FormsPropsSchema;
21
21
  export type FormsPickerPropsType = z.infer<typeof FormsPropsSchema>;
22
+ type TBlockSpacing = {
23
+ top: number;
24
+ right: number;
25
+ bottom: number;
26
+ left: number;
27
+ };
28
+ /** The per-corner shape the sidebar's RadiusInput authors. */
29
+ export type FormsPickerRadius = {
30
+ topLeft: number;
31
+ topRight: number;
32
+ bottomRight: number;
33
+ bottomLeft: number;
34
+ };
35
+ /**
36
+ * The block's `style` bag, documented rather than enforced.
37
+ *
38
+ * The zod schema declares `style` as `z.object({}).passthrough()`, so every value
39
+ * arrives typed as `unknown` and nothing is validated. These members therefore
40
+ * record the shapes the renderers actually read and must stay assignable from
41
+ * that passthrough type — hence the `unknown` arm on each. `borderRadius` in
42
+ * particular has three live shapes: the per-corner object written today, plus
43
+ * legacy `number` and CSS-`string` values that saved documents may still hold.
44
+ * All three are resolved by `formatBorderRadius` in blockStyleHelpers.
45
+ */
46
+ export type FormsPickerStyle = {
47
+ padding?: TBlockSpacing | string | null | unknown;
48
+ margin?: TBlockSpacing | string | null | unknown;
49
+ backgroundColor?: string | null | unknown;
50
+ borderRadius?: number | string | FormsPickerRadius | null | unknown;
51
+ [key: string]: unknown;
52
+ };
22
53
  export type FormsPickerProps = {
23
- style?: any;
54
+ style?: FormsPickerStyle | null;
24
55
  props?: {
25
56
  formId: string;
26
57
  formName?: string;
@@ -31,5 +62,5 @@ export type FormsPickerProps = {
31
62
  heightMobile?: string;
32
63
  autoHeight?: boolean;
33
64
  alignment?: 'left' | 'center' | 'right';
34
- };
65
+ } | null;
35
66
  };
@@ -0,0 +1,8 @@
1
+ import { default as React } from 'react';
2
+ import { ListProps } from '../../../../blocks-internal/block-list/src/index.tsx';
3
+ type ListEditorProps = {
4
+ style?: ListProps['style'];
5
+ props?: ListProps['props'];
6
+ };
7
+ declare const ListEditor: React.FC<ListEditorProps>;
8
+ export default ListEditor;
@@ -1,5 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  declare const MarqueePropsSchema: z.ZodObject<{
3
+ responsive: z.ZodNullable<z.ZodOptional<z.ZodObject<{
4
+ tablet: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>>;
5
+ mobile: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>>;
6
+ }, z.core.$strip>>>;
3
7
  style: z.ZodNullable<z.ZodOptional<z.ZodObject<{
4
8
  backgroundColor: z.ZodNullable<z.ZodOptional<z.ZodString>>;
5
9
  borderColor: z.ZodNullable<z.ZodOptional<z.ZodString>>;
@@ -52,6 +52,12 @@ declare const MenuPropsSchema: z.ZodObject<{
52
52
  bottom: z.ZodNumber;
53
53
  left: z.ZodNumber;
54
54
  }, z.core.$strip>>>;
55
+ blockMargin: z.ZodNullable<z.ZodOptional<z.ZodObject<{
56
+ top: z.ZodNumber;
57
+ right: z.ZodNumber;
58
+ bottom: z.ZodNumber;
59
+ left: z.ZodNumber;
60
+ }, z.core.$strip>>>;
55
61
  gap: z.ZodDefault<z.ZodString>;
56
62
  showIcons: z.ZodDefault<z.ZodBoolean>;
57
63
  iconSize: z.ZodDefault<z.ZodString>;
@@ -6,6 +6,7 @@ type Props = {
6
6
  isHeader: boolean;
7
7
  onCommit: (html: string) => void;
8
8
  onContextMenu: (e: React.MouseEvent<HTMLDivElement>, row: number, col: number) => void;
9
+ onPaste?: (e: React.ClipboardEvent<HTMLDivElement>, row: number, col: number) => boolean;
9
10
  };
10
- export default function TableCellEditor({ html, row, col, isHeader, onCommit, onContextMenu, }: Props): import("react/jsx-runtime").JSX.Element;
11
+ export default function TableCellEditor({ html, row, col, isHeader, onCommit, onContextMenu, onPaste, }: Props): import("react/jsx-runtime").JSX.Element;
11
12
  export {};
@@ -2,7 +2,7 @@ export declare const StyledDialog: import('@emotion/styled').StyledComponent<imp
2
2
  export declare const StyledDialogTitle: import('@emotion/styled').StyledComponent<import('@mui/material').DialogTitleOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "top" | "bottom" | "right" | "left" | "padding" | "margin" | "style" | "lineHeight" | "children" | "className" | "fontSize" | "fontFamily" | "fontWeight" | "fontStyle" | "textAlign" | "marginBottom" | "width" | "height" | "borderRadius" | "borderColor" | "gap" | "p" | "color" | "flex" | "display" | "position" | "border" | "paddingBottom" | "align" | "bgcolor" | "borderTop" | "px" | "boxShadow" | "overflow" | "variant" | "paddingX" | "paddingY" | "marginX" | "marginY" | "maxWidth" | "maxHeight" | "classes" | "sx" | "letterSpacing" | "order" | "visibility" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "boxSizing" | "columnGap" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "marginBlockEnd" | "marginBlockStart" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "minHeight" | "minWidth" | "paddingBlockEnd" | "paddingBlockStart" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "rowGap" | "textOverflow" | "textTransform" | "whiteSpace" | "borderBottom" | "borderLeft" | "borderRight" | "gridArea" | "gridColumn" | "gridRow" | "marginBlock" | "marginInline" | "paddingBlock" | "paddingInline" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "py" | "typography" | "displayPrint" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
3
3
  export declare const CloseButton: import('@emotion/styled').StyledComponent<import('@mui/material').SvgIconOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').SVGProps<SVGSVGElement>, "style" | "children" | "className" | "fontSize" | "color" | "classes" | "htmlColor" | "inheritViewBox" | "shapeRendering" | "sx" | "titleAccess" | "viewBox"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
4
4
  export declare const TabsBar: import('@emotion/styled').StyledComponent<import('@mui/system').BoxOwnProps<import('@mui/material').Theme> & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import('@mui/system').BoxOwnProps<import('@mui/material').Theme>> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
5
- export declare const StyledTabs: import('@emotion/styled').StyledComponent<import('@mui/material').TabsOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "value" | "style" | "children" | "className" | "orientation" | "textColor" | "action" | "variant" | "slots" | "classes" | "sx" | "aria-label" | "aria-labelledby" | "onChange" | "slotProps" | "allowScrollButtonsMobile" | "centered" | "indicatorColor" | "ScrollButtonComponent" | "scrollButtons" | "selectionFollowsFocus" | "TabIndicatorProps" | "TabScrollButtonProps" | "visibleScrollbar"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
5
+ export declare const StyledTabs: import('@emotion/styled').StyledComponent<import('@mui/material').TabsOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "value" | "style" | "children" | "className" | "orientation" | "textColor" | "action" | "variant" | "classes" | "sx" | "aria-label" | "aria-labelledby" | "onChange" | "slots" | "slotProps" | "allowScrollButtonsMobile" | "centered" | "indicatorColor" | "ScrollButtonComponent" | "scrollButtons" | "selectionFollowsFocus" | "TabIndicatorProps" | "TabScrollButtonProps" | "visibleScrollbar"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
6
6
  export declare const StyledDialogContent: import('@emotion/styled').StyledComponent<import('@mui/material').DialogContentProps & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
7
7
  export declare const HelperText: import('@emotion/styled').StyledComponent<import('@mui/material').TypographyOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "top" | "bottom" | "right" | "left" | "padding" | "margin" | "style" | "lineHeight" | "children" | "className" | "fontSize" | "fontFamily" | "fontWeight" | "fontStyle" | "textAlign" | "marginBottom" | "width" | "height" | "borderRadius" | "borderColor" | "gap" | "p" | "color" | "flex" | "display" | "position" | "border" | "paddingBottom" | "align" | "bgcolor" | "borderTop" | "px" | "boxShadow" | "overflow" | "variant" | "paddingX" | "paddingY" | "marginX" | "marginY" | "maxWidth" | "maxHeight" | "classes" | "sx" | "letterSpacing" | "order" | "visibility" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "boxSizing" | "columnGap" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "marginBlockEnd" | "marginBlockStart" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "minHeight" | "minWidth" | "paddingBlockEnd" | "paddingBlockStart" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "rowGap" | "textOverflow" | "textTransform" | "whiteSpace" | "borderBottom" | "borderLeft" | "borderRight" | "gridArea" | "gridColumn" | "gridRow" | "marginBlock" | "marginInline" | "paddingBlock" | "paddingInline" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "py" | "typography" | "displayPrint" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
8
8
  export declare const FileSummaryText: import('@emotion/styled').StyledComponent<import('@mui/material').TypographyOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "top" | "bottom" | "right" | "left" | "padding" | "margin" | "style" | "lineHeight" | "children" | "className" | "fontSize" | "fontFamily" | "fontWeight" | "fontStyle" | "textAlign" | "marginBottom" | "width" | "height" | "borderRadius" | "borderColor" | "gap" | "p" | "color" | "flex" | "display" | "position" | "border" | "paddingBottom" | "align" | "bgcolor" | "borderTop" | "px" | "boxShadow" | "overflow" | "variant" | "paddingX" | "paddingY" | "marginX" | "marginY" | "maxWidth" | "maxHeight" | "classes" | "sx" | "letterSpacing" | "order" | "visibility" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "boxSizing" | "columnGap" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "marginBlockEnd" | "marginBlockStart" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "minHeight" | "minWidth" | "paddingBlockEnd" | "paddingBlockStart" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "rowGap" | "textOverflow" | "textTransform" | "whiteSpace" | "borderBottom" | "borderLeft" | "borderRight" | "gridArea" | "gridColumn" | "gridRow" | "marginBlock" | "marginInline" | "paddingBlock" | "paddingInline" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "py" | "typography" | "displayPrint" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
@@ -16,4 +16,14 @@ export declare const PasteTextFieldSx: {
16
16
  export declare const UploadDropzone: import('@emotion/styled').StyledComponent<import('@mui/system').BoxOwnProps<import('@mui/material').Theme> & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import('@mui/system').BoxOwnProps<import('@mui/material').Theme>> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
17
17
  export declare const UploadIcon: import('@emotion/styled').StyledComponent<import('@mui/material').SvgIconOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').SVGProps<SVGSVGElement>, "style" | "children" | "className" | "fontSize" | "color" | "classes" | "htmlColor" | "inheritViewBox" | "shapeRendering" | "sx" | "titleAccess" | "viewBox"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
18
18
  export declare const ChooseFileLabel: import('@emotion/styled').StyledComponent<import('@mui/material').TypographyOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "top" | "bottom" | "right" | "left" | "padding" | "margin" | "style" | "lineHeight" | "children" | "className" | "fontSize" | "fontFamily" | "fontWeight" | "fontStyle" | "textAlign" | "marginBottom" | "width" | "height" | "borderRadius" | "borderColor" | "gap" | "p" | "color" | "flex" | "display" | "position" | "border" | "paddingBottom" | "align" | "bgcolor" | "borderTop" | "px" | "boxShadow" | "overflow" | "variant" | "paddingX" | "paddingY" | "marginX" | "marginY" | "maxWidth" | "maxHeight" | "classes" | "sx" | "letterSpacing" | "order" | "visibility" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "boxSizing" | "columnGap" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "marginBlockEnd" | "marginBlockStart" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "minHeight" | "minWidth" | "paddingBlockEnd" | "paddingBlockStart" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "rowGap" | "textOverflow" | "textTransform" | "whiteSpace" | "borderBottom" | "borderLeft" | "borderRight" | "gridArea" | "gridColumn" | "gridRow" | "marginBlock" | "marginInline" | "paddingBlock" | "paddingInline" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "py" | "typography" | "displayPrint" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
19
+ export declare const SheetPickerWrap: import('@emotion/styled').StyledComponent<import('@mui/system').BoxOwnProps<import('@mui/material').Theme> & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import('@mui/system').BoxOwnProps<import('@mui/material').Theme>> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
20
+ export declare const SheetPickerCard: import('@emotion/styled').StyledComponent<import('@mui/system').BoxOwnProps<import('@mui/material').Theme> & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import('@mui/system').BoxOwnProps<import('@mui/material').Theme>> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme> & {
21
+ selected?: boolean;
22
+ }, {}, {}>;
23
+ export declare const SheetPickerLabel: import('@emotion/styled').StyledComponent<import('@mui/material').TypographyOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "top" | "bottom" | "right" | "left" | "padding" | "margin" | "style" | "lineHeight" | "children" | "className" | "fontSize" | "fontFamily" | "fontWeight" | "fontStyle" | "textAlign" | "marginBottom" | "width" | "height" | "borderRadius" | "borderColor" | "gap" | "p" | "color" | "flex" | "display" | "position" | "border" | "paddingBottom" | "align" | "bgcolor" | "borderTop" | "px" | "boxShadow" | "overflow" | "variant" | "paddingX" | "paddingY" | "marginX" | "marginY" | "maxWidth" | "maxHeight" | "classes" | "sx" | "letterSpacing" | "order" | "visibility" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "boxSizing" | "columnGap" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "marginBlockEnd" | "marginBlockStart" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "minHeight" | "minWidth" | "paddingBlockEnd" | "paddingBlockStart" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "rowGap" | "textOverflow" | "textTransform" | "whiteSpace" | "borderBottom" | "borderLeft" | "borderRight" | "gridArea" | "gridColumn" | "gridRow" | "marginBlock" | "marginInline" | "paddingBlock" | "paddingInline" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "py" | "typography" | "displayPrint" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme> & {
24
+ selected?: boolean;
25
+ }, {}, {}>;
26
+ export declare const SheetPickerMeta: import('@emotion/styled').StyledComponent<import('@mui/material').TypographyOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "top" | "bottom" | "right" | "left" | "padding" | "margin" | "style" | "lineHeight" | "children" | "className" | "fontSize" | "fontFamily" | "fontWeight" | "fontStyle" | "textAlign" | "marginBottom" | "width" | "height" | "borderRadius" | "borderColor" | "gap" | "p" | "color" | "flex" | "display" | "position" | "border" | "paddingBottom" | "align" | "bgcolor" | "borderTop" | "px" | "boxShadow" | "overflow" | "variant" | "paddingX" | "paddingY" | "marginX" | "marginY" | "maxWidth" | "maxHeight" | "classes" | "sx" | "letterSpacing" | "order" | "visibility" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "boxSizing" | "columnGap" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "marginBlockEnd" | "marginBlockStart" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "minHeight" | "minWidth" | "paddingBlockEnd" | "paddingBlockStart" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "rowGap" | "textOverflow" | "textTransform" | "whiteSpace" | "borderBottom" | "borderLeft" | "borderRight" | "gridArea" | "gridColumn" | "gridRow" | "marginBlock" | "marginInline" | "paddingBlock" | "paddingInline" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "py" | "typography" | "displayPrint" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme> & {
27
+ selected?: boolean;
28
+ }, {}, {}>;
19
29
  export declare const StyledDialogActions: import('@emotion/styled').StyledComponent<import('@mui/material').DialogActionsProps & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
@@ -3,6 +3,10 @@ export type ParsedTable = {
3
3
  columns: number;
4
4
  cells: string[];
5
5
  };
6
+ export type NamedTable = {
7
+ name: string;
8
+ table: ParsedTable;
9
+ };
6
10
  export declare function parseClipboardTable(clipboard: DataTransfer | null): ParsedTable | null;
7
11
  /**
8
12
  * Parse pasted-in text from the Import dialog's textarea — not a live
@@ -10,7 +14,10 @@ export declare function parseClipboardTable(clipboard: DataTransfer | null): Par
10
14
  * by sniffing for a `<table`/`<tr` tag; otherwise tries Markdown, then CSV/TSV.
11
15
  */
12
16
  export declare function parseTableString(input: string): ParsedTable | null;
17
+ /** Every non-empty sheet in the workbook, in file order — caller picks one if there's more than one. */
18
+ export declare function readExcelFileAllSheets(file: File): Promise<NamedTable[]>;
13
19
  export declare function readExcelFile(file: File): Promise<ParsedTable | null>;
20
+ export declare function readWordFileAllTables(file: File): Promise<NamedTable[]>;
14
21
  export declare function readWordFile(file: File): Promise<ParsedTable | null>;
15
22
  export declare function mergePastedTable(existing: string[], existingRows: number, existingCols: number, pasted: ParsedTable, atRow: number, atCol: number, maxRows?: number, maxCols?: number): {
16
23
  rows: number;
@@ -12,6 +12,12 @@ declare const TabsBlockPropsSchema: z.ZodObject<{
12
12
  style: z.ZodNullable<z.ZodOptional<z.ZodObject<{
13
13
  backgroundColor: z.ZodNullable<z.ZodOptional<z.ZodString>>;
14
14
  borderColor: z.ZodNullable<z.ZodOptional<z.ZodString>>;
15
+ borderWidth: z.ZodNullable<z.ZodOptional<z.ZodObject<{
16
+ top: z.ZodNumber;
17
+ right: z.ZodNumber;
18
+ bottom: z.ZodNumber;
19
+ left: z.ZodNumber;
20
+ }, z.core.$strip>>>;
15
21
  borderRadius: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodObject<{
16
22
  topLeft: z.ZodNumber;
17
23
  topRight: z.ZodNumber;
@@ -5,6 +5,7 @@ declare const TimerPropsSchema: z.ZodObject<{
5
5
  textColor: z.ZodNullable<z.ZodOptional<z.ZodString>>;
6
6
  accentColor: z.ZodNullable<z.ZodOptional<z.ZodString>>;
7
7
  numberColor: z.ZodNullable<z.ZodOptional<z.ZodString>>;
8
+ numberFontWeight: z.ZodNullable<z.ZodOptional<z.ZodString>>;
8
9
  borderColor: z.ZodNullable<z.ZodOptional<z.ZodString>>;
9
10
  borderRadius: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodObject<{
10
11
  topLeft: z.ZodNumber;
@@ -39,6 +40,7 @@ declare const TimerPropsSchema: z.ZodObject<{
39
40
  showZeros: "showZeros";
40
41
  }>>;
41
42
  expiredMessage: z.ZodDefault<z.ZodString>;
43
+ showConfetti: z.ZodDefault<z.ZodBoolean>;
42
44
  }, z.core.$strip>>>;
43
45
  }, z.core.$strip>;
44
46
  export type TimerProps = z.infer<typeof TimerPropsSchema>;
@@ -5,6 +5,7 @@ type Props = {
5
5
  accentColor?: string | null;
6
6
  textColor?: string | null;
7
7
  numberColor?: string | null;
8
+ numberFontWeight?: string | null;
8
9
  };
9
- export default function CircularProgressView({ parts, showLabels, accentColor, textColor, numberColor }: Props): import("react/jsx-runtime").JSX.Element;
10
+ export default function CircularProgressView({ parts, showLabels, accentColor, textColor, numberColor, numberFontWeight }: Props): import("react/jsx-runtime").JSX.Element;
10
11
  export {};
@@ -1,5 +1,5 @@
1
1
  import { SxProps, Theme } from '@mui/material';
2
- export declare const BLOCK_MENU_MIN_WIDTH = "420px";
2
+ export declare const BLOCK_MENU_MIN_WIDTH = "480px";
3
3
  export declare const menuRootSx: (theme: Theme) => SxProps<Theme>;
4
4
  export declare const searchHeaderSx: (theme: Theme) => SxProps<Theme>;
5
5
  export declare const scrollAreaSx: (theme: Theme) => SxProps<Theme>;
@@ -1,7 +1,4 @@
1
- type BrandButton = Record<string, any>;
2
- type BrandingConfig = {
3
- button?: BrandButton;
4
- };
1
+ import { BrandButton, BrandingConfig } from '../../../../../../host-stubs/view/branding/styles/types';
5
2
  type ButtonBlockData = {
6
3
  props: Record<string, any>;
7
4
  style: Record<string, any>;
@@ -2,12 +2,6 @@ import { default as React } from 'react';
2
2
  import { TEditorBlock } from '../../../../editor/core';
3
3
  type TButtonProps = {
4
4
  label: string;
5
- /**
6
- * Palette section this tile belongs to. Used by BlocksPanel to group
7
- * tiles under section headers ("Layout", "Content", "Media",
8
- * "Interaction", "Integration") and by BlocksMenu's category tabs. Order
9
- * and header labels come from `BlockCategories.ts`.
10
- */
11
5
  category: string;
12
6
  icon: React.JSX.Element;
13
7
  block: () => TEditorBlock;
@@ -9,6 +9,9 @@ type Props = {
9
9
  * links always get target="_blank" since the previous "Open in new
10
10
  * window" UI was removed. */
11
11
  defaultNewWindow?: boolean;
12
+ /** The existing link's underline state — prefills the checkbox when editing.
13
+ * Fresh links default to underlined. */
14
+ defaultUnderline?: boolean;
12
15
  /** Flip title + button label to edit mode when standing on an existing link. */
13
16
  isEditing?: boolean;
14
17
  onClose: () => void;
@@ -18,5 +21,5 @@ type Props = {
18
21
  onRemove?: () => void;
19
22
  };
20
23
  /** Insert Link modal — matches the sidebar's Summernote dialog. */
21
- export declare function LinkDialog({ open, defaultText, defaultUrl, defaultNewWindow, isEditing, onClose, onInsert, onRemove, }: Props): import("react/jsx-runtime").JSX.Element;
24
+ export declare function LinkDialog({ open, defaultText, defaultUrl, defaultNewWindow, defaultUnderline, isEditing, onClose, onInsert, onRemove, }: Props): import("react/jsx-runtime").JSX.Element;
22
25
  export {};
@@ -7,6 +7,7 @@ export type SavedLinkInfo = {
7
7
  text: string;
8
8
  url: string;
9
9
  newWindow: boolean;
10
+ underline: boolean;
10
11
  };
11
12
  export type ToolbarCommandsApi = {
12
13
  /** Currently saved selection range (latest one observed inside the editor). */
@@ -27,10 +28,9 @@ export type ToolbarCommandsApi = {
27
28
  /**
28
29
  * Set the font size for the current selection at the given device slot.
29
30
  * Writes `data-fs-<device>="<px>"` on a wrapping <span> so responsive CSS
30
- * rules (see the Text block renderer + responsiveFontSizeCss.ts) can pick
31
- * the correct size per preview device / breakpoint. Preserves any
32
- * pre-existing device markers on the same range so setting Mobile doesn't
33
- * clobber Desktop.
31
+ * rules (see the Text/Heading/Button/Html renderers) can pick the correct
32
+ * size per preview device / breakpoint. Preserves any pre-existing device
33
+ * markers on the same range so setting Mobile doesn't clobber Desktop.
34
34
  */
35
35
  applyFontSize: (px: number, device: FontSizeDevice) => void;
36
36
  /**
@@ -40,6 +40,16 @@ export type ToolbarCommandsApi = {
40
40
  * intact.
41
41
  */
42
42
  clearFontSize: (device: FontSizeDevice) => void;
43
+ /**
44
+ * Set the CSS font-family on the current selection. Uses a Range-based
45
+ * wrap that mutates only style.fontFamily on either the enclosing
46
+ * responsive span (fast path) or a fresh wrapping <span>. Does NOT go
47
+ * through execCommand('fontName'), which produces a <font face>
48
+ * element and — depending on how the browser restructures the DOM
49
+ * around existing `<span data-fs-*>` wrappers — can drop the
50
+ * responsive font-size markers as a side effect.
51
+ */
52
+ applyFontFamily: (value: string) => void;
43
53
  /** Set CSS line-height on every block-level ancestor the current selection
44
54
  * touches. Pass an empty string to clear back to the inherited default. */
45
55
  applyLineHeight: (value: string) => void;
@@ -65,6 +75,8 @@ export type ToolbarCommandsApi = {
65
75
  handleTableDeleteColumn: () => void;
66
76
  /** Delete the whole table at the caret. */
67
77
  handleTableDelete: () => void;
78
+ /** Set (or clear, with 'transparent') the background color of the current cell's row. */
79
+ handleTableRowBackground: (color: string) => void;
68
80
  handleInsertCode: () => void;
69
81
  handleInsertHorizontalRule: () => void;
70
82
  handleSpeechResult: (text: string) => void;
@@ -3,12 +3,12 @@ export declare const iconSx: {
3
3
  readonly fontSize: 18;
4
4
  };
5
5
  export declare const btnBase: React.CSSProperties;
6
- export declare const btnActive: React.CSSProperties;
6
+ export declare function getBtnActive(theme: import('@mui/material/styles').Theme): React.CSSProperties;
7
7
  export declare const popoverStyle: React.CSSProperties;
8
8
  export declare const menuListStyle: React.CSSProperties;
9
9
  export declare const menuItemStyle: React.CSSProperties;
10
10
  /** Hover-tint applied to icon-style buttons. */
11
- export declare const HOVER_TINT = "rgba(15,23,42,0.06)";
11
+ export declare function getHoverTint(theme: import('@mui/material/styles').Theme): string;
12
12
  export declare const TOOLBAR_Z_INDEX = 1400;
13
13
  export declare const TOOLBAR_POPOVER_Z_INDEX = 1410;
14
14
  export declare const TOOLBAR_DIALOG_Z_INDEX = 1500;
@@ -2,7 +2,6 @@ export type ToolbarPosition = {
2
2
  top: number;
3
3
  left: number;
4
4
  };
5
- export declare const LINK_COLOR = "#2563eb";
6
5
  export type FormatSnapshot = {
7
6
  bold: boolean;
8
7
  italic: boolean;
@@ -19,9 +18,6 @@ export type FormatSnapshot = {
19
18
  blockLabel: string;
20
19
  fontName: string;
21
20
  fontSize: string;
22
- /** Per-device font-size override read from the nearest wrapping
23
- * `<span data-fs-*>` at the caret. Empty string means no override for
24
- * that device — the block-level `fontSize` shows through. */
25
21
  fontSizeDesktop: string;
26
22
  fontSizeTablet: string;
27
23
  fontSizeMobile: string;
@@ -44,4 +40,6 @@ export type LinkInsertParams = {
44
40
  text: string;
45
41
  url: string;
46
42
  newWindow: boolean;
43
+ underline: boolean;
47
44
  };
45
+ export declare const LINK_COLOR = "#2563eb";
@@ -2,6 +2,5 @@ import { default as React } from 'react';
2
2
  type TEditorBlockWrapperProps = {
3
3
  children: React.JSX.Element;
4
4
  };
5
- declare function EditorBlockWrapperImpl({ children }: TEditorBlockWrapperProps): import("react/jsx-runtime").JSX.Element;
6
- declare const EditorBlockWrapper: React.MemoExoticComponent<typeof EditorBlockWrapperImpl>;
7
- export default EditorBlockWrapper;
5
+ export default function EditorBlockWrapper({ children }: TEditorBlockWrapperProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,17 @@
1
+ import { SxProps, Theme } from '@mui/material';
2
+ export declare const TUNE_MENU_HEIGHT = 44;
3
+ export declare const TUNE_MENU_Z_INDEX = 1200;
4
+ export declare const pillSx: (theme: Theme) => SxProps<Theme>;
5
+ export declare const pillPositionedSx: (theme: Theme, position: {
6
+ top: number;
7
+ left: number;
8
+ }) => SxProps<Theme>;
9
+ export declare const pillHiddenSx: (theme: Theme) => SxProps<Theme>;
10
+ export declare const iconButtonSx: (theme: Theme) => SxProps<Theme>;
11
+ export declare const dangerIconButtonSx: (theme: Theme) => SxProps<Theme>;
12
+ export declare const dividerSx: (theme: Theme) => SxProps<Theme>;
13
+ export declare const iconSx: {
14
+ readonly fontSize: 18;
15
+ };
16
+ export declare const dragHandleSx: (theme: Theme) => SxProps<Theme>;
17
+ export declare const overflowMenuSx: (theme: Theme) => SxProps<Theme>;
@@ -75,8 +75,15 @@ export declare function toAuthoringField(field: FormField, blockIds: Set<string>
75
75
  * templates, where any authored scalar is fair game) and for
76
76
  * `derivePageInitialFormFields` (which has no document to scan and passes
77
77
  * `detectedFields=[]`).
78
+ *
79
+ * `canvasDocument`/`canvasRootId` (opt-in) — when both are supplied, the
80
+ * merged result is sorted to match canvas top-to-bottom order (the same
81
+ * order the Variables panel displays), so a newly-detected field lands
82
+ * between the fields around it instead of always at the end. Omitted by the
83
+ * one caller with no live document to rank against, in which case the
84
+ * merged order is returned unchanged (today's behavior).
78
85
  */
79
- export declare function buildTemplateFormFields(rootFormFields: FormField[], detectedFields: FormField[], blockIds: Set<string>, prefillDefaults?: boolean, scopeScalarsToDetected?: boolean): FormField[];
86
+ export declare function buildTemplateFormFields(rootFormFields: FormField[], detectedFields: FormField[], blockIds: Set<string>, prefillDefaults?: boolean, scopeScalarsToDetected?: boolean, canvasDocument?: BlockMap, canvasRootId?: string): FormField[];
80
87
  /** Pull color / font-size out of value HTML (`<font color>` or `style="font-size"`). */
81
88
  export declare function extractInlineStyle(html: string): {
82
89
  color?: string;
@@ -105,6 +112,27 @@ export declare function enrichTokenBlockStyleFromValue(block: AnyBlock, fields:
105
112
  * this false so authored templates stay default-empty.
106
113
  */
107
114
  export declare function buildBlockTemplateConfiguration(document: BlockMap, rootBlockId: string, liveFormFields: FormField[], prefillDefaults?: boolean): BlockTemplateConfiguration;
115
+ /**
116
+ * Inverse of `buildBlockTemplateConfiguration`: wraps a saved block template's
117
+ * `{ isIndividualBlock, rootBlockId, blocks }` into a normal editable document
118
+ * (`{ root: EmailLayout, ...blocks }`) so the block can be opened on the
119
+ * regular canvas for editing, the same way a page document is.
120
+ *
121
+ * Used when editing an existing "block" type template — without this, the
122
+ * editor's document-loading effect (which requires `doc.root` to exist) has
123
+ * nothing to load and falls back to a blank canvas.
124
+ */
125
+ export declare function wrapBlockConfigurationAsDocument(configuration: BlockTemplateConfiguration): BlockMap;
126
+ /**
127
+ * Inverse of `wrapBlockConfigurationAsDocument`: given a document that was
128
+ * loaded via that wrapper and then edited on the canvas, collect the (single)
129
+ * root child's subtree back into the `isIndividualBlock` save shape.
130
+ *
131
+ * `formFields` are carried over as-is (not re-derived) so authored field
132
+ * definitions (custom names/types/defaults) aren't clobbered by a blind
133
+ * token re-detection on every save.
134
+ */
135
+ export declare function unwrapDocumentToBlockConfiguration(document: BlockMap, formFields: FormField[]): BlockTemplateConfiguration | null;
108
136
  /**
109
137
  * True when the configuration has authored `formFields` embedded on one of its
110
138
  * document roots — meaning the record was already saved with the new
@@ -75,8 +75,6 @@ export declare function isItemsArrayBlockType(type: string | undefined): boolean
75
75
  * whether to show the items data-source controls for the selected block.
76
76
  */
77
77
  export declare function getItemsArrayInfo(documentTree: Record<string, any>, blockId: string): ItemsArrayInfo | null;
78
- /** Write an items-array block's `items` back onto the block. */
79
- export declare function writeItemsArray(block: any, items: Record<string, any>[]): any;
80
78
  export type VariableGroupKind = 'container' | 'itemsArray' | 'block' | 'page';
81
79
  export type VariableGroup = {
82
80
  /** Stable identity for selection — the owning block id, or `page` for page-level. */
@@ -104,38 +102,45 @@ export type VariableGroup = {
104
102
  */
105
103
  isCandidate?: boolean;
106
104
  };
105
+ export declare function getFieldOwnerBlockId(documentTree: Record<string, any>, field: {
106
+ id?: string;
107
+ containerId?: string;
108
+ sourceBlockId?: string;
109
+ itemsBlockId?: string;
110
+ }): string | null;
107
111
  /**
108
- * The block a field belongs to, or null when the field is page-level.
109
- *
110
- * `sourceBlockId` points at the template block sitting INSIDE a container slot,
111
- * not at the container itself — and in practice `containerId` is usually absent
112
- * (the repeat flow only ever writes `sourceBlockId`). So a source block is
113
- * walked UP to its owning repeatable container: that container is what the user
114
- * thinks of as "the group", and grouping by the raw `sourceBlockId` would both
115
- * split one grid into a row per slot and fail every `getRepeatableContainerInfo`
116
- * lookup downstream.
117
- *
118
- * A source block with no repeatable ancestor is a plain (non-repeatable) block
119
- * with variables — it stays its own group, keyed on itself.
112
+ * The block a field's `{{token}}` actually renders on — unlike
113
+ * `getFieldOwnerBlockId`, this resolves a plain scalar field (no explicit
114
+ * containerId/sourceBlockId/itemsBlockId) to the real block referencing its
115
+ * token instead of `null`. Used for canvas locate/highlight and row
116
+ * ordering, where the panel needs the field's true position even though it
117
+ * groups under the shared "General variables" bucket.
120
118
  */
121
- export declare function getFieldOwnerBlockId(documentTree: Record<string, any>, field: {
119
+ export declare function getFieldCanvasBlockId(documentTree: Record<string, any>, field: {
120
+ id?: string;
122
121
  containerId?: string;
123
122
  sourceBlockId?: string;
124
123
  itemsBlockId?: string;
125
124
  }): string | null;
126
125
  /**
127
- * Cheap structural fingerprint of everything `collectVariableGroups` actually
128
- * reads: each block's `type` + every child-id array (the `collectSubtreeIds`
129
- * walk) + the slot-count props Grid/Pagination use, plus each field's owner ids
130
- * / name / type. Text edits, colour/style tweaks, `data.style`, block `props`
131
- * that aren't structural — none of it moves this string. Memo the group list on
132
- * this instead of the whole `document` so ~90% of editor keystrokes skip the
133
- * full tree re-scan.
134
- *
135
- * Must list the SAME shapes `collectSubtreeIds` + `readContainerSlots` walk —
136
- * if a new container child-array is added there, mirror it here or the list can
137
- * go stale until an unrelated structural edit flushes it.
126
+ * Where a field's row should sort within an opened Variables-panel group, so
127
+ * rows read in the same top-to-bottom order as their tokens appear on the
128
+ * canvas instead of whatever order `formFields` happens to be authored in.
129
+ * `blockIndex` is the owner block's position in `collectSubtreeIds` (canvas
130
+ * order); `tokenIndex` breaks ties between multiple tokens on the same block
131
+ * (e.g. a Button's `text` vs `url`) using their first-appearance order from
132
+ * `getBlockScalarTokenIds`. Unresolvable fields rank last via `Infinity`
133
+ * rather than throwing off the whole group's order.
138
134
  */
135
+ export declare function getFieldCanvasRank(documentTree: Record<string, any>, field: {
136
+ id?: string;
137
+ containerId?: string;
138
+ sourceBlockId?: string;
139
+ itemsBlockId?: string;
140
+ }): {
141
+ blockIndex: number;
142
+ tokenIndex: number;
143
+ };
139
144
  export declare function variableGroupsStructuralKey(documentTree: Record<string, any>, fields: Array<{
140
145
  id?: string;
141
146
  name?: string;
@@ -153,6 +158,8 @@ export declare function collectVariableGroups(documentTree: Record<string, any>,
153
158
  sourceBlockId?: string;
154
159
  itemsBlockId?: string;
155
160
  }>): VariableGroup[];
161
+ /** Write an items-array block's `items` back onto the block. */
162
+ export declare function writeItemsArray(block: any, items: Record<string, any>[]): any;
156
163
  /**
157
164
  * Grow a repeatable container so it has at least `neededSlots` cells/columns/slides.
158
165
  *
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Scalar variable ids (`TemplateFormField.id`) referenced directly on this
3
+ * block's own props — the token shown by the tune menu's "highlight
4
+ * variable" icon. Distinct from `subtreeHasRowTokens`, which looks for
5
+ * `{{this.field}}` row tokens inside a repeatable container's subtree.
6
+ */
7
+ export declare function getBlockScalarTokenIds(block: any): string[];
8
+ /** Every token-bearing string on a single block. */
9
+ export declare function blockTokenStrings(block: any): string[];
1
10
  export declare function subtreeHasRowTokens(documentTree: Record<string, any>, rootId: string): boolean;
2
11
  /** True if the author has switched the block's Repeat toggle on. */
3
12
  export declare function hasRepeatEnabled(block: any): boolean;
@@ -4,13 +4,9 @@ type EditorBlockProps = {
4
4
  id: string;
5
5
  };
6
6
  /**
7
- * Loads a single block by id from the editor store and renders it. Subscribes
8
- * only to that block, so sibling edits don't re-render this subtree — the
9
- * per-block reference stays stable across setDocument calls that didn't
10
- * change this block (see _shallowBlockEqual in EditorContext).
11
7
  *
12
- * Memoized by id — React.memo + a stable id prop skips unchanged subtrees
13
- * entirely during diff.
8
+ * @param id - Block id
9
+ * @returns EditorBlock component that loads data from the EditorDocumentContext
14
10
  */
15
11
  declare function EditorBlock({ id }: EditorBlockProps): import("react/jsx-runtime").JSX.Element;
16
12
  declare const _default: React.MemoExoticComponent<typeof EditorBlock>;